System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 86ac0b0edb1f0ec93dc1041596ca2ee5d87b3e38:


0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  /***************
0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 20 2a 20 41 44  *********.. * AD
0040: 4f 2e 4e 45 54 20 32 2e 30 20 44 61 74 61 20 50  O.NET 2.0 Data P
0050: 72 6f 76 69 64 65 72 20 66 6f 72 20 53 51 4c 69  rovider for SQLi
0060: 74 65 20 56 65 72 73 69 6f 6e 20 33 2e 58 0d 0a  te Version 3.X..
0070: 20 2a 20 57 72 69 74 74 65 6e 20 62 79 20 4a 6f   * Written by Jo
0080: 65 20 4d 69 73 74 61 63 68 6b 69 6e 20 28 6a 6f  e Mistachkin (jo
0090: 65 40 6d 69 73 74 61 63 68 6b 69 6e 2e 63 6f 6d  e@mistachkin.com
00a0: 29 0d 0a 20 2a 0d 0a 20 2a 20 52 65 6c 65 61 73  ).. *.. * Releas
00b0: 65 64 20 74 6f 20 74 68 65 20 70 75 62 6c 69 63  ed to the public
00c0: 20 64 6f 6d 61 69 6e 2c 20 75 73 65 20 61 74 20   domain, use at 
00d0: 79 6f 75 72 20 6f 77 6e 20 72 69 73 6b 21 0d 0a  your own risk!..
00e0: 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a   ***************
00f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0100: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0110: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0d 0a 0d 0a 75 73  *********/....us
0120: 69 6e 67 20 53 79 73 74 65 6d 2e 43 6f 6c 6c 65  ing System.Colle
0130: 63 74 69 6f 6e 73 2e 47 65 6e 65 72 69 63 3b 0d  ctions.Generic;.
0140: 0a 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 47 6c  .using System.Gl
0150: 6f 62 61 6c 69 7a 61 74 69 6f 6e 3b 0d 0a 0d 0a  obalization;....
0160: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
0170: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
0180: 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 52 75 6e  using System.Run
0190: 74 69 6d 65 2e 43 6f 6d 70 69 6c 65 72 53 65 72  time.CompilerSer
01a0: 76 69 63 65 73 3b 0d 0a 23 65 6e 64 69 66 0d 0a  vices;..#endif..
01b0: 0d 0a 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 52  ..using System.R
01c0: 75 6e 74 69 6d 65 2e 49 6e 74 65 72 6f 70 53 65  untime.InteropSe
01d0: 72 76 69 63 65 73 3b 0d 0a 75 73 69 6e 67 20 53  rvices;..using S
01e0: 79 73 74 65 6d 2e 54 65 78 74 3b 0d 0a 0d 0a 6e  ystem.Text;....n
01f0: 61 6d 65 73 70 61 63 65 20 53 79 73 74 65 6d 2e  amespace System.
0200: 44 61 74 61 2e 53 51 4c 69 74 65 0d 0a 7b 0d 0a  Data.SQLite..{..
0210: 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69      #region SQLi
0220: 74 65 43 6f 6e 74 65 78 74 20 48 65 6c 70 65 72  teContext Helper
0230: 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20   Class..    /// 
0240: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
0250: 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20 72 65  // This class re
0260: 70 72 65 73 65 6e 74 73 20 61 20 63 6f 6e 74 65  presents a conte
0270: 78 74 20 66 72 6f 6d 20 74 68 65 20 53 51 4c 69  xt from the SQLi
0280: 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20  te core library 
0290: 74 68 61 74 20 63 61 6e 0d 0a 20 20 20 20 2f 2f  that can..    //
02a0: 2f 20 62 65 20 70 61 73 73 65 64 20 74 6f 20 74  / be passed to t
02b0: 68 65 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  he sqlite3_resul
02c0: 74 5f 2a 28 29 20 61 6e 64 20 61 73 73 6f 63 69  t_*() and associ
02d0: 61 74 65 64 20 66 75 6e 63 74 69 6f 6e 73 2e 0d  ated functions..
02e0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
02f0: 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  ry>..    public 
0300: 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c  sealed class SQL
0310: 69 74 65 43 6f 6e 74 65 78 74 20 3a 20 49 53 51  iteContext : ISQ
0320: 4c 69 74 65 4e 61 74 69 76 65 48 61 6e 64 6c 65  LiteNativeHandle
0330: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
0340: 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65   #region Private
0350: 20 44 61 74 61 0d 0a 20 20 20 20 20 20 20 20 2f   Data..        /
0360: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
0370: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
0380: 74 69 76 65 20 63 6f 6e 74 65 78 74 20 68 61 6e  tive context han
0390: 64 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  dle...        //
03a0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
03b0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 49 6e        private In
03c0: 74 50 74 72 20 70 43 6f 6e 74 65 78 74 3b 0d 0a  tPtr pContext;..
03d0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
03e0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
03f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0430: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
0440: 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65   #region Private
0450: 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20   Constructors.. 
0460: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
0470: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
0480: 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20  / Constructs an 
0490: 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73  instance of this
04a0: 20 63 6c 61 73 73 20 75 73 69 6e 67 20 74 68 65   class using the
04b0: 20 73 70 65 63 69 66 69 65 64 20 6e 61 74 69 76   specified nativ
04c0: 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  e..        /// c
04d0: 6f 6e 74 65 78 74 20 68 61 6e 64 6c 65 2e 0d 0a  ontext handle...
04e0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
04f0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
0500: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
0510: 22 70 43 6f 6e 74 65 78 74 22 3e 0d 0a 20 20 20  "pContext">..   
0520: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
0530: 69 76 65 20 63 6f 6e 74 65 78 74 20 68 61 6e 64  ive context hand
0540: 6c 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20  le to use...    
0550: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
0560: 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
0570: 61 6c 20 53 51 4c 69 74 65 43 6f 6e 74 65 78 74  al SQLiteContext
0580: 28 49 6e 74 50 74 72 20 70 43 6f 6e 74 65 78 74  (IntPtr pContext
0590: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
05a0: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 70            this.p
05b0: 43 6f 6e 74 65 78 74 20 3d 20 70 43 6f 6e 74 65  Context = pConte
05c0: 78 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  xt;..        }..
05d0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
05e0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
05f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0630: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
0640: 20 23 72 65 67 69 6f 6e 20 49 53 51 4c 69 74 65   #region ISQLite
0650: 4e 61 74 69 76 65 48 61 6e 64 6c 65 20 4d 65 6d  NativeHandle Mem
0660: 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  bers..        //
0670: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
0680: 20 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73       /// Returns
0690: 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20   the underlying 
06a0: 53 51 4c 69 74 65 20 6e 61 74 69 76 65 20 68 61  SQLite native ha
06b0: 6e 64 6c 65 20 61 73 73 6f 63 69 61 74 65 64 20  ndle associated 
06c0: 77 69 74 68 20 74 68 69 73 0d 0a 20 20 20 20 20  with this..     
06d0: 20 20 20 2f 2f 2f 20 6f 62 6a 65 63 74 20 69 6e     /// object in
06e0: 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20  stance...       
06f0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
0700: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
0710: 49 6e 74 50 74 72 20 4e 61 74 69 76 65 48 61 6e  IntPtr NativeHan
0720: 64 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  dle..        {..
0730: 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
0740: 7b 20 72 65 74 75 72 6e 20 70 43 6f 6e 74 65 78  { return pContex
0750: 74 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d  t; }..        }.
0760: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
0770: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
0780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
07a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
07b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
07c0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
07d0: 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63    #region Public
07e0: 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
07f0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
0800: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 74  .        /// Set
0810: 73 20 74 68 65 20 63 6f 6e 74 65 78 74 20 72 65  s the context re
0820: 73 75 6c 74 20 74 6f 20 4e 55 4c 4c 2e 0d 0a 20  sult to NULL... 
0830: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
0840: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
0850: 75 62 6c 69 63 20 76 6f 69 64 20 53 65 74 4e 75  ublic void SetNu
0860: 6c 6c 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ll()..        {.
0870: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
0880: 28 70 43 6f 6e 74 65 78 74 20 3d 3d 20 49 6e 74  (pContext == Int
0890: 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
08a0: 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
08b0: 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72   new InvalidOper
08c0: 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 29  ationException()
08d0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
08e0: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
08f0: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 72 65 73  hods.sqlite3_res
0900: 75 6c 74 5f 6e 75 6c 6c 28 70 43 6f 6e 74 65 78  ult_null(pContex
0910: 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  t);..        }..
0920: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
0930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0970: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
0980: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
0990: 20 20 20 20 2f 2f 2f 20 53 65 74 73 20 74 68 65      /// Sets the
09a0: 20 63 6f 6e 74 65 78 74 20 72 65 73 75 6c 74 20   context result 
09b0: 74 6f 20 74 68 65 20 73 70 65 63 69 66 69 65 64  to the specified
09c0: 20 3c 73 65 65 20 63 72 65 66 3d 22 44 6f 75 62   <see cref="Doub
09d0: 6c 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20  le" />..        
09e0: 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20  /// value...    
09f0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
0a00: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
0a10: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c  <param name="val
0a20: 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ue">..        //
0a30: 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
0a40: 22 44 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75  "Double" /> valu
0a50: 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20 20  e to use...     
0a60: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
0a70: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
0a80: 76 6f 69 64 20 53 65 74 44 6f 75 62 6c 65 28 64  void SetDouble(d
0a90: 6f 75 62 6c 65 20 76 61 6c 75 65 29 0d 0a 20 20  ouble value)..  
0aa0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
0ab0: 20 20 20 20 20 69 66 20 28 70 43 6f 6e 74 65 78       if (pContex
0ac0: 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  t == IntPtr.Zero
0ad0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
0ae0: 20 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76     throw new Inv
0af0: 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63  alidOperationExc
0b00: 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 23 69 66  eption();....#if
0b10: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
0b20: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
0b30: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
0b40: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
0b50: 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62  ite3_result_doub
0b60: 6c 65 28 70 43 6f 6e 74 65 78 74 2c 20 76 61 6c  le(pContext, val
0b70: 75 65 29 3b 0d 0a 23 65 6c 69 66 20 21 53 51 4c  ue);..#elif !SQL
0b80: 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20  ITE_STANDARD..  
0b90: 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
0ba0: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
0bb0: 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75  lite3_result_dou
0bc0: 62 6c 65 5f 69 6e 74 65 72 6f 70 28 70 43 6f 6e  ble_interop(pCon
0bd0: 74 65 78 74 2c 20 72 65 66 20 76 61 6c 75 65 29  text, ref value)
0be0: 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
0bf0: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
0c00: 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74 65 64 45 78  NotImplementedEx
0c10: 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 23 65 6e 64  ception();..#end
0c20: 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  if..        }...
0c30: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
0c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c80: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
0c90: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
0ca0: 20 20 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20     /// Sets the 
0cb0: 63 6f 6e 74 65 78 74 20 72 65 73 75 6c 74 20 74  context result t
0cc0: 6f 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  o the specified 
0cd0: 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 33 32  <see cref="Int32
0ce0: 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  " />..        //
0cf0: 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20  / value...      
0d00: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
0d10: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
0d20: 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65  aram name="value
0d30: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
0d40: 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  The <see cref="I
0d50: 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75 65 20 74  nt32" /> value t
0d60: 6f 20 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20  o use...        
0d70: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
0d80: 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69        public voi
0d90: 64 20 53 65 74 49 6e 74 28 69 6e 74 20 76 61 6c  d SetInt(int val
0da0: 75 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ue)..        {..
0db0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
0dc0: 70 43 6f 6e 74 65 78 74 20 3d 3d 20 49 6e 74 50  pContext == IntP
0dd0: 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
0de0: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
0df0: 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72 61  new InvalidOpera
0e00: 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 29 3b  tionException();
0e10: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
0e20: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
0e30: 6f 64 73 2e 73 71 6c 69 74 65 33 5f 72 65 73 75  ods.sqlite3_resu
0e40: 6c 74 5f 69 6e 74 28 70 43 6f 6e 74 65 78 74 2c  lt_int(pContext,
0e50: 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20   value);..      
0e60: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
0e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0eb0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
0ec0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
0ed0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 74  .        /// Set
0ee0: 73 20 74 68 65 20 63 6f 6e 74 65 78 74 20 72 65  s the context re
0ef0: 73 75 6c 74 20 74 6f 20 74 68 65 20 73 70 65 63  sult to the spec
0f00: 69 66 69 65 64 20 3c 73 65 65 20 63 72 65 66 3d  ified <see cref=
0f10: 22 49 6e 74 36 34 22 20 2f 3e 0d 0a 20 20 20 20  "Int64" />..    
0f20: 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a      /// value...
0f30: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
0f40: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
0f50: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
0f60: 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20  "value">..      
0f70: 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
0f80: 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e 20 76  ref="Int64" /> v
0f90: 61 6c 75 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20  alue to use...  
0fa0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
0fb0: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  m>..        publ
0fc0: 69 63 20 76 6f 69 64 20 53 65 74 49 6e 74 36 34  ic void SetInt64
0fd0: 28 6c 6f 6e 67 20 76 61 6c 75 65 29 0d 0a 20 20  (long value)..  
0fe0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
0ff0: 20 20 20 20 20 69 66 20 28 70 43 6f 6e 74 65 78       if (pContex
1000: 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  t == IntPtr.Zero
1010: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1020: 20 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76     throw new Inv
1030: 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63  alidOperationExc
1040: 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 23 69 66  eption();....#if
1050: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1060: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1070: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
1080: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
1090: 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36  ite3_result_int6
10a0: 34 28 70 43 6f 6e 74 65 78 74 2c 20 76 61 6c 75  4(pContext, valu
10b0: 65 29 3b 0d 0a 23 65 6c 69 66 20 21 53 51 4c 49  e);..#elif !SQLI
10c0: 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20  TE_STANDARD..   
10d0: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
10e0: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
10f0: 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36  ite3_result_int6
1100: 34 5f 69 6e 74 65 72 6f 70 28 70 43 6f 6e 74 65  4_interop(pConte
1110: 78 74 2c 20 72 65 66 20 76 61 6c 75 65 29 3b 0d  xt, ref value);.
1120: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
1130: 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 4e 6f      throw new No
1140: 74 49 6d 70 6c 65 6d 65 6e 74 65 64 45 78 63 65  tImplementedExce
1150: 70 74 69 6f 6e 28 29 3b 0d 0a 23 65 6e 64 69 66  ption();..#endif
1160: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
1170: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
11c0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
11d0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
11e0: 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20 63 6f   /// Sets the co
11f0: 6e 74 65 78 74 20 72 65 73 75 6c 74 20 74 6f 20  ntext result to 
1200: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 3c 73  the specified <s
1210: 65 65 20 63 72 65 66 3d 22 53 74 72 69 6e 67 22  ee cref="String"
1220: 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   />..        ///
1230: 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20   value...       
1240: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1250: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1260: 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22  ram name="value"
1270: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1280: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 74  he <see cref="St
1290: 72 69 6e 67 22 20 2f 3e 20 76 61 6c 75 65 20 74  ring" /> value t
12a0: 6f 20 75 73 65 2e 20 20 54 68 69 73 20 76 61 6c  o use.  This val
12b0: 75 65 20 77 69 6c 6c 20 62 65 0d 0a 20 20 20 20  ue will be..    
12c0: 20 20 20 20 2f 2f 2f 20 63 6f 6e 76 65 72 74 65      /// converte
12d0: 64 20 74 6f 20 74 68 65 20 55 54 46 2d 38 20 65  d to the UTF-8 e
12e0: 6e 63 6f 64 69 6e 67 20 70 72 69 6f 72 20 74 6f  ncoding prior to
12f0: 20 62 65 69 6e 67 20 75 73 65 64 2e 0d 0a 20 20   being used...  
1300: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1310: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  m>..        publ
1320: 69 63 20 76 6f 69 64 20 53 65 74 53 74 72 69 6e  ic void SetStrin
1330: 67 28 73 74 72 69 6e 67 20 76 61 6c 75 65 29 0d  g(string value).
1340: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
1350: 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f 6e          if (pCon
1360: 74 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  text == IntPtr.Z
1370: 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
1380: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
1390: 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e  InvalidOperation
13a0: 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a  Exception();....
13b0: 20 20 20 20 20 20 20 20 20 20 20 20 62 79 74 65              byte
13c0: 5b 5d 20 62 79 74 65 73 20 3d 20 53 51 4c 69 74  [] bytes = SQLit
13d0: 65 53 74 72 69 6e 67 2e 47 65 74 55 74 66 38 42  eString.GetUtf8B
13e0: 79 74 65 73 46 72 6f 6d 53 74 72 69 6e 67 28 76  ytesFromString(v
13f0: 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  alue);....      
1400: 20 20 20 20 20 20 69 66 20 28 62 79 74 65 73 20        if (bytes 
1410: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
1420: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
1430: 6e 65 77 20 41 72 67 75 6d 65 6e 74 4e 75 6c 6c  new ArgumentNull
1440: 45 78 63 65 70 74 69 6f 6e 28 22 76 61 6c 75 65  Exception("value
1450: 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ");....         
1460: 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
1470: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 72  ethods.sqlite3_r
1480: 65 73 75 6c 74 5f 74 65 78 74 28 0d 0a 20 20 20  esult_text(..   
1490: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 43 6f               pCo
14a0: 6e 74 65 78 74 2c 20 62 79 74 65 73 2c 20 62 79  ntext, bytes, by
14b0: 74 65 73 2e 4c 65 6e 67 74 68 2c 20 28 49 6e 74  tes.Length, (Int
14c0: 50 74 72 29 28 2d 31 29 29 3b 0d 0a 20 20 20 20  Ptr)(-1));..    
14d0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
14e0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
14f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1520: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1530: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1540: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53  >..        /// S
1550: 65 74 73 20 74 68 65 20 63 6f 6e 74 65 78 74 20  ets the context 
1560: 72 65 73 75 6c 74 20 74 6f 20 74 68 65 20 73 70  result to the sp
1570: 65 63 69 66 69 65 64 20 3c 73 65 65 20 63 72 65  ecified <see cre
1580: 66 3d 22 53 74 72 69 6e 67 22 20 2f 3e 0d 0a 20  f="String" />.. 
1590: 20 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65         /// value
15a0: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 6e 20 65   containing an e
15b0: 72 72 6f 72 20 6d 65 73 73 61 67 65 2e 0d 0a 20  rror message... 
15c0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
15d0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
15e0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
15f0: 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20  value">..       
1600: 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
1610: 65 66 3d 22 53 74 72 69 6e 67 22 20 2f 3e 20 76  ef="String" /> v
1620: 61 6c 75 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20  alue containing 
1630: 74 68 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67  the error messag
1640: 65 20 74 65 78 74 2e 0d 0a 20 20 20 20 20 20 20  e text...       
1650: 20 2f 2f 2f 20 54 68 69 73 20 76 61 6c 75 65 20   /// This value 
1660: 77 69 6c 6c 20 62 65 20 63 6f 6e 76 65 72 74 65  will be converte
1670: 64 20 74 6f 20 74 68 65 20 55 54 46 2d 38 20 65  d to the UTF-8 e
1680: 6e 63 6f 64 69 6e 67 20 70 72 69 6f 72 20 74 6f  ncoding prior to
1690: 20 62 65 69 6e 67 0d 0a 20 20 20 20 20 20 20 20   being..        
16a0: 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20 20 20 20 20  /// used...     
16b0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
16c0: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
16d0: 76 6f 69 64 20 53 65 74 45 72 72 6f 72 28 73 74  void SetError(st
16e0: 72 69 6e 67 20 76 61 6c 75 65 29 0d 0a 20 20 20  ring value)..   
16f0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1700: 20 20 20 20 69 66 20 28 70 43 6f 6e 74 65 78 74      if (pContext
1710: 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
1720: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1730: 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76 61    throw new Inva
1740: 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65  lidOperationExce
1750: 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20  ption();....    
1760: 20 20 20 20 20 20 20 20 62 79 74 65 5b 5d 20 62          byte[] b
1770: 79 74 65 73 20 3d 20 53 51 4c 69 74 65 53 74 72  ytes = SQLiteStr
1780: 69 6e 67 2e 47 65 74 55 74 66 38 42 79 74 65 73  ing.GetUtf8Bytes
1790: 46 72 6f 6d 53 74 72 69 6e 67 28 76 61 6c 75 65  FromString(value
17a0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
17b0: 20 20 69 66 20 28 62 79 74 65 73 20 3d 3d 20 6e    if (bytes == n
17c0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
17d0: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
17e0: 41 72 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65  ArgumentNullExce
17f0: 70 74 69 6f 6e 28 22 76 61 6c 75 65 22 29 3b 0d  ption("value");.
1800: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 55  ...            U
1810: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
1820: 64 73 2e 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  ds.sqlite3_resul
1830: 74 5f 65 72 72 6f 72 28 0d 0a 20 20 20 20 20 20  t_error(..      
1840: 20 20 20 20 20 20 20 20 20 20 70 43 6f 6e 74 65            pConte
1850: 78 74 2c 20 62 79 74 65 73 2c 20 62 79 74 65 73  xt, bytes, bytes
1860: 2e 4c 65 6e 67 74 68 29 3b 0d 0a 20 20 20 20 20  .Length);..     
1870: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
18d0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
18e0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65  ..        /// Se
18f0: 74 73 20 74 68 65 20 63 6f 6e 74 65 78 74 20 72  ts the context r
1900: 65 73 75 6c 74 20 74 6f 20 74 68 65 20 73 70 65  esult to the spe
1910: 63 69 66 69 65 64 20 3c 73 65 65 20 63 72 65 66  cified <see cref
1920: 3d 22 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  ="SQLiteErrorCod
1930: 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f  e" />..        /
1940: 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20  // value...     
1950: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1960: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1970: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75  param name="valu
1980: 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
1990: 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
19a0: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 22  SQLiteErrorCode"
19b0: 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 75 73 65   /> value to use
19c0: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
19d0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
19e0: 20 70 75 62 6c 69 63 20 76 6f 69 64 20 53 65 74   public void Set
19f0: 45 72 72 6f 72 43 6f 64 65 28 53 51 4c 69 74 65  ErrorCode(SQLite
1a00: 45 72 72 6f 72 43 6f 64 65 20 76 61 6c 75 65 29  ErrorCode value)
1a10: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
1a20: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f           if (pCo
1a30: 6e 74 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e  ntext == IntPtr.
1a40: 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
1a50: 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
1a60: 20 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f   InvalidOperatio
1a70: 6e 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d  nException();...
1a80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73  .            Uns
1a90: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
1aa0: 2e 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f  .sqlite3_result_
1ab0: 65 72 72 6f 72 5f 63 6f 64 65 28 70 43 6f 6e 74  error_code(pCont
1ac0: 65 78 74 2c 20 76 61 6c 75 65 29 3b 0d 0a 20 20  ext, value);..  
1ad0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1ae0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1b30: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
1b40: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1b50: 20 53 65 74 73 20 74 68 65 20 63 6f 6e 74 65 78   Sets the contex
1b60: 74 20 72 65 73 75 6c 74 20 74 6f 20 63 6f 6e 74  t result to cont
1b70: 61 69 6e 20 74 68 65 20 65 72 72 6f 72 20 63 6f  ain the error co
1b80: 64 65 20 53 51 4c 49 54 45 5f 54 4f 4f 42 49 47  de SQLITE_TOOBIG
1b90: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1ba0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1bb0: 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 53     public void S
1bc0: 65 74 45 72 72 6f 72 54 6f 6f 42 69 67 28 29 0d  etErrorTooBig().
1bd0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
1be0: 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f 6e          if (pCon
1bf0: 74 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  text == IntPtr.Z
1c00: 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
1c10: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
1c20: 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e  InvalidOperation
1c30: 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a  Exception();....
1c40: 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
1c50: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
1c60: 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65  sqlite3_result_e
1c70: 72 72 6f 72 5f 74 6f 6f 62 69 67 28 70 43 6f 6e  rror_toobig(pCon
1c80: 74 65 78 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  text);..        
1c90: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
1ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ce0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1cf0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1d00: 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 74 73 20         /// Sets 
1d10: 74 68 65 20 63 6f 6e 74 65 78 74 20 72 65 73 75  the context resu
1d20: 6c 74 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68  lt to contain th
1d30: 65 20 65 72 72 6f 72 20 63 6f 64 65 20 53 51 4c  e error code SQL
1d40: 49 54 45 5f 4e 4f 4d 45 4d 2e 0d 0a 20 20 20 20  ITE_NOMEM...    
1d50: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1d60: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
1d70: 69 63 20 76 6f 69 64 20 53 65 74 45 72 72 6f 72  ic void SetError
1d80: 4e 6f 4d 65 6d 6f 72 79 28 29 0d 0a 20 20 20 20  NoMemory()..    
1d90: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1da0: 20 20 20 69 66 20 28 70 43 6f 6e 74 65 78 74 20     if (pContext 
1db0: 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  == IntPtr.Zero).
1dc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1dd0: 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c   throw new Inval
1de0: 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70  idOperationExcep
1df0: 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  tion();....     
1e00: 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74         UnsafeNat
1e10: 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
1e20: 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f  e3_result_error_
1e30: 6e 6f 6d 65 6d 28 70 43 6f 6e 74 65 78 74 29 3b  nomem(pContext);
1e40: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
1e50: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1ea0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1eb0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1ec0: 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20 63 6f   /// Sets the co
1ed0: 6e 74 65 78 74 20 72 65 73 75 6c 74 20 74 6f 20  ntext result to 
1ee0: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 3c 73  the specified <s
1ef0: 65 65 20 63 72 65 66 3d 22 42 79 74 65 22 20 2f  ee cref="Byte" /
1f00: 3e 20 61 72 72 61 79 0d 0a 20 20 20 20 20 20 20  > array..       
1f10: 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20   /// value...   
1f20: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1f30: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1f40: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61   <param name="va
1f50: 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  lue">..        /
1f60: 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
1f70: 3d 22 42 79 74 65 22 20 2f 3e 20 61 72 72 61 79  ="Byte" /> array
1f80: 20 76 61 6c 75 65 20 74 6f 20 75 73 65 2e 0d 0a   value to use...
1f90: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1fa0: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ram>..        pu
1fb0: 62 6c 69 63 20 76 6f 69 64 20 53 65 74 42 6c 6f  blic void SetBlo
1fc0: 62 28 62 79 74 65 5b 5d 20 76 61 6c 75 65 29 0d  b(byte[] value).
1fd0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
1fe0: 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f 6e          if (pCon
1ff0: 74 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  text == IntPtr.Z
2000: 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
2010: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
2020: 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e  InvalidOperation
2030: 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a  Exception();....
2040: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2050: 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  value == null)..
2060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2070: 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65  throw new Argume
2080: 6e 74 4e 75 6c 6c 45 78 63 65 70 74 69 6f 6e 28  ntNullException(
2090: 22 76 61 6c 75 65 22 29 3b 0d 0a 0d 0a 20 20 20  "value");....   
20a0: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
20b0: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
20c0: 69 74 65 33 5f 72 65 73 75 6c 74 5f 62 6c 6f 62  ite3_result_blob
20d0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
20e0: 20 20 20 70 43 6f 6e 74 65 78 74 2c 20 76 61 6c     pContext, val
20f0: 75 65 2c 20 76 61 6c 75 65 2e 4c 65 6e 67 74 68  ue, value.Length
2100: 2c 20 28 49 6e 74 50 74 72 29 28 2d 31 29 29 3b  , (IntPtr)(-1));
2110: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
2120: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2170: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
2180: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2190: 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20 63 6f   /// Sets the co
21a0: 6e 74 65 78 74 20 72 65 73 75 6c 74 20 74 6f 20  ntext result to 
21b0: 61 20 42 4c 4f 42 20 6f 66 20 7a 65 72 6f 73 20  a BLOB of zeros 
21c0: 6f 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64  of the specified
21d0: 20 73 69 7a 65 2e 0d 0a 20 20 20 20 20 20 20 20   size...        
21e0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
21f0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
2200: 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e  am name="value">
2210: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
2220: 65 20 6e 75 6d 62 65 72 20 6f 66 20 7a 65 72 6f  e number of zero
2230: 20 62 79 74 65 73 20 74 6f 20 75 73 65 20 66 6f   bytes to use fo
2240: 72 20 74 68 65 20 42 4c 4f 42 20 63 6f 6e 74 65  r the BLOB conte
2250: 78 74 20 72 65 73 75 6c 74 2e 0d 0a 20 20 20 20  xt result...    
2260: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2270: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
2280: 20 76 6f 69 64 20 53 65 74 5a 65 72 6f 42 6c 6f   void SetZeroBlo
2290: 62 28 69 6e 74 20 76 61 6c 75 65 29 0d 0a 20 20  b(int value)..  
22a0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
22b0: 20 20 20 20 20 69 66 20 28 70 43 6f 6e 74 65 78       if (pContex
22c0: 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  t == IntPtr.Zero
22d0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
22e0: 20 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76     throw new Inv
22f0: 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63  alidOperationExc
2300: 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20  eption();....   
2310: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
2320: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
2330: 69 74 65 33 5f 72 65 73 75 6c 74 5f 7a 65 72 6f  ite3_result_zero
2340: 62 6c 6f 62 28 70 43 6f 6e 74 65 78 74 2c 20 76  blob(pContext, v
2350: 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  alue);..        
2360: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
2370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23b0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
23c0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
23d0: 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 74 73 20         /// Sets 
23e0: 74 68 65 20 63 6f 6e 74 65 78 74 20 72 65 73 75  the context resu
23f0: 6c 74 20 74 6f 20 74 68 65 20 73 70 65 63 69 66  lt to the specif
2400: 69 65 64 20 3c 73 65 65 20 63 72 65 66 3d 22 53  ied <see cref="S
2410: 51 4c 69 74 65 56 61 6c 75 65 22 20 2f 3e 2e 0d  QLiteValue" />..
2420: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
2430: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2440: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2450: 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20  ="value">..     
2460: 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
2470: 63 72 65 66 3d 22 53 51 4c 69 74 65 56 61 6c 75  cref="SQLiteValu
2480: 65 22 20 2f 3e 20 74 6f 20 75 73 65 2e 0d 0a 20  e" /> to use... 
2490: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
24a0: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  am>..        pub
24b0: 6c 69 63 20 76 6f 69 64 20 53 65 74 56 61 6c 75  lic void SetValu
24c0: 65 28 53 51 4c 69 74 65 56 61 6c 75 65 20 76 61  e(SQLiteValue va
24d0: 6c 75 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  lue)..        {.
24e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
24f0: 28 70 43 6f 6e 74 65 78 74 20 3d 3d 20 49 6e 74  (pContext == Int
2500: 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
2510: 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
2520: 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72   new InvalidOper
2530: 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 29  ationException()
2540: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2550: 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75   if (value == nu
2560: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
2570: 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 41       throw new A
2580: 72 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65 70  rgumentNullExcep
2590: 74 69 6f 6e 28 22 76 61 6c 75 65 22 29 3b 0d 0a  tion("value");..
25a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e  ..            Un
25b0: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
25c0: 73 2e 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  s.sqlite3_result
25d0: 5f 76 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20  _value(..       
25e0: 20 20 20 20 20 20 20 20 20 70 43 6f 6e 74 65 78           pContex
25f0: 74 2c 20 76 61 6c 75 65 2e 4e 61 74 69 76 65 48  t, value.NativeH
2600: 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20  andle);..       
2610: 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
2620: 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20  region..    }.. 
2630: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
2640: 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
2650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2690: 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
26a0: 53 51 4c 69 74 65 56 61 6c 75 65 20 48 65 6c 70  SQLiteValue Help
26b0: 65 72 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f  er Class..    //
26c0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
26d0: 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20   /// This class 
26e0: 72 65 70 72 65 73 65 6e 74 73 20 61 20 76 61 6c  represents a val
26f0: 75 65 20 66 72 6f 6d 20 74 68 65 20 53 51 4c 69  ue from the SQLi
2700: 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20  te core library 
2710: 74 68 61 74 20 63 61 6e 20 62 65 0d 0a 20 20 20  that can be..   
2720: 20 2f 2f 2f 20 70 61 73 73 65 64 20 74 6f 20 74   /// passed to t
2730: 68 65 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  he sqlite3_value
2740: 5f 2a 28 29 20 61 6e 64 20 61 73 73 6f 63 69 61  _*() and associa
2750: 74 65 64 20 66 75 6e 63 74 69 6f 6e 73 2e 0d 0a  ted functions...
2760: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2770: 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73  y>..    public s
2780: 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69  ealed class SQLi
2790: 74 65 56 61 6c 75 65 20 3a 20 49 53 51 4c 69 74  teValue : ISQLit
27a0: 65 4e 61 74 69 76 65 48 61 6e 64 6c 65 0d 0a 20  eNativeHandle.. 
27b0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72     {..        #r
27c0: 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61  egion Private Da
27d0: 74 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ta..        /// 
27e0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
27f0: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
2800: 65 20 76 61 6c 75 65 20 68 61 6e 64 6c 65 2e 0d  e value handle..
2810: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
2820: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2830: 20 70 72 69 76 61 74 65 20 49 6e 74 50 74 72 20   private IntPtr 
2840: 70 56 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20  pValue;..       
2850: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
2860: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
28b0: 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
28c0: 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74 72  n Private Constr
28d0: 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20  uctors..        
28e0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
28f0: 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74         /// Const
2900: 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63  ructs an instanc
2910: 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73 20  e of this class 
2920: 75 73 69 6e 67 20 74 68 65 20 73 70 65 63 69 66  using the specif
2930: 69 65 64 20 6e 61 74 69 76 65 0d 0a 20 20 20 20  ied native..    
2940: 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 20 68 61      /// value ha
2950: 6e 64 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ndle...        /
2960: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2970: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
2980: 6d 20 6e 61 6d 65 3d 22 70 56 61 6c 75 65 22 3e  m name="pValue">
2990: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
29a0: 65 20 6e 61 74 69 76 65 20 76 61 6c 75 65 20 68  e native value h
29b0: 61 6e 64 6c 65 20 74 6f 20 75 73 65 2e 0d 0a 20  andle to use... 
29c0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
29d0: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  am>..        pri
29e0: 76 61 74 65 20 53 51 4c 69 74 65 56 61 6c 75 65  vate SQLiteValue
29f0: 28 49 6e 74 50 74 72 20 70 56 61 6c 75 65 29 0d  (IntPtr pValue).
2a00: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
2a10: 20 20 20 20 20 20 20 20 74 68 69 73 2e 70 56 61          this.pVa
2a20: 6c 75 65 20 3d 20 70 56 61 6c 75 65 3b 0d 0a 20  lue = pValue;.. 
2a30: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2a40: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
2a50: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2a60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2aa0: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
2ab0: 6f 6e 20 50 72 69 76 61 74 65 20 4d 65 74 68 6f  on Private Metho
2ac0: 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
2ad0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2ae0: 20 20 20 2f 2f 2f 20 49 6e 76 61 6c 69 64 61 74     /// Invalidat
2af0: 65 73 20 74 68 65 20 6e 61 74 69 76 65 20 76 61  es the native va
2b00: 6c 75 65 20 68 61 6e 64 6c 65 2c 20 74 68 65 72  lue handle, ther
2b10: 65 62 79 20 70 72 65 76 65 6e 74 69 6e 67 20 66  eby preventing f
2b20: 75 72 74 68 65 72 0d 0a 20 20 20 20 20 20 20 20  urther..        
2b30: 2f 2f 2f 20 61 63 63 65 73 73 20 74 6f 20 69 74  /// access to it
2b40: 20 66 72 6f 6d 20 74 68 69 73 20 6f 62 6a 65 63   from this objec
2b50: 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  t instance...   
2b60: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
2b70: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
2b80: 76 61 74 65 20 76 6f 69 64 20 50 72 65 76 65 6e  vate void Preven
2b90: 74 4e 61 74 69 76 65 41 63 63 65 73 73 28 29 0d  tNativeAccess().
2ba0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
2bb0: 20 20 20 20 20 20 20 20 70 56 61 6c 75 65 20 3d          pValue =
2bc0: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20   IntPtr.Zero;.. 
2bd0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2be0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
2bf0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2c40: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
2c50: 6f 6e 20 49 6e 74 65 72 6e 61 6c 20 4d 61 72 73  on Internal Mars
2c60: 68 61 6c 20 48 65 6c 70 65 72 20 4d 65 74 68 6f  hal Helper Metho
2c70: 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
2c80: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2c90: 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20     /// Converts 
2ca0: 61 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  a native pointer
2cb0: 20 74 6f 20 61 20 6e 61 74 69 76 65 20 73 71 6c   to a native sql
2cc0: 69 74 65 33 5f 76 61 6c 75 65 20 73 74 72 75 63  ite3_value struc
2cd0: 74 75 72 65 20 69 6e 74 6f 0d 0a 20 20 20 20 20  ture into..     
2ce0: 20 20 20 2f 2f 2f 20 61 20 6d 61 6e 61 67 65 64     /// a managed
2cf0: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
2d00: 74 65 56 61 6c 75 65 22 20 2f 3e 20 6f 62 6a 65  teValue" /> obje
2d10: 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20  ct instance...  
2d20: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
2d30: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
2d40: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
2d50: 56 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20  Value">..       
2d60: 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
2d70: 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6e 61 74  pointer to a nat
2d80: 69 76 65 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  ive sqlite3_valu
2d90: 65 20 73 74 72 75 63 74 75 72 65 20 74 6f 20 63  e structure to c
2da0: 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 20  onvert...       
2db0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
2dc0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
2dd0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
2de0: 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20 3c 73  / The managed <s
2df0: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56  ee cref="SQLiteV
2e00: 61 6c 75 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20  alue" /> object 
2e10: 69 6e 73 74 61 6e 63 65 20 6f 72 20 6e 75 6c 6c  instance or null
2e20: 20 75 70 6f 6e 0d 0a 20 20 20 20 20 20 20 20 2f   upon..        /
2e30: 2f 2f 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20  // failure...   
2e40: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
2e50: 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ns>..        int
2e60: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 53 51 4c  ernal static SQL
2e70: 69 74 65 56 61 6c 75 65 20 46 72 6f 6d 49 6e 74  iteValue FromInt
2e80: 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Ptr(..          
2e90: 20 20 49 6e 74 50 74 72 20 70 56 61 6c 75 65 0d    IntPtr pValue.
2ea0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
2eb0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2ec0: 20 20 20 20 20 20 20 69 66 20 28 70 56 61 6c 75         if (pValu
2ed0: 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e == IntPtr.Zero
2ee0: 29 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a  ) return null;..
2ef0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2f00: 72 6e 20 6e 65 77 20 53 51 4c 69 74 65 56 61 6c  rn new SQLiteVal
2f10: 75 65 28 70 56 61 6c 75 65 29 3b 0d 0a 20 20 20  ue(pValue);..   
2f20: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2f30: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2f80: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
2f90: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
2fa0: 43 6f 6e 76 65 72 74 73 20 61 20 6c 6f 67 69 63  Converts a logic
2fb0: 61 6c 20 61 72 72 61 79 20 6f 66 20 6e 61 74 69  al array of nati
2fc0: 76 65 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 6e  ve pointers to n
2fd0: 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76 61  ative sqlite3_va
2fe0: 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  lue..        ///
2ff0: 20 73 74 72 75 63 74 75 72 65 73 20 69 6e 74 6f   structures into
3000: 20 61 20 6d 61 6e 61 67 65 64 20 61 72 72 61 79   a managed array
3010: 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53   of <see cref="S
3020: 51 4c 69 74 65 56 61 6c 75 65 22 20 2f 3e 0d 0a  QLiteValue" />..
3030: 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 62 6a 65          /// obje
3040: 63 74 20 69 6e 73 74 61 6e 63 65 73 2e 0d 0a 20  ct instances... 
3050: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
3060: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
3070: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
3080: 61 72 67 63 22 3e 0d 0a 20 20 20 20 20 20 20 20  argc">..        
3090: 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f  /// The number o
30a0: 66 20 65 6c 65 6d 65 6e 74 73 20 69 6e 20 74 68  f elements in th
30b0: 65 20 6c 6f 67 69 63 61 6c 20 61 72 72 61 79 20  e logical array 
30c0: 6f 66 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65  of native sqlite
30d0: 33 5f 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20  3_value..       
30e0: 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 73 2e   /// structures.
30f0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
3100: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
3110: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
3120: 22 61 72 67 76 22 3e 0d 0a 20 20 20 20 20 20 20  "argv">..       
3130: 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
3140: 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 6c  pointer to the l
3150: 6f 67 69 63 61 6c 20 61 72 72 61 79 20 6f 66 20  ogical array of 
3160: 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76  native sqlite3_v
3170: 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  alue..        //
3180: 2f 20 73 74 72 75 63 74 75 72 65 73 20 74 6f 20  / structures to 
3190: 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20  convert...      
31a0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
31b0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
31c0: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
31d0: 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20 61  // The managed a
31e0: 72 72 61 79 20 6f 66 20 3c 73 65 65 20 63 72 65  rray of <see cre
31f0: 66 3d 22 53 51 4c 69 74 65 56 61 6c 75 65 22 20  f="SQLiteValue" 
3200: 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
3210: 63 65 73 20 6f 72 0d 0a 20 20 20 20 20 20 20 20  ces or..        
3220: 2f 2f 2f 20 6e 75 6c 6c 20 75 70 6f 6e 20 66 61  /// null upon fa
3230: 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  ilure...        
3240: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
3250: 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
3260: 20 73 74 61 74 69 63 20 53 51 4c 69 74 65 56 61   static SQLiteVa
3270: 6c 75 65 5b 5d 20 41 72 72 61 79 46 72 6f 6d 53  lue[] ArrayFromS
3280: 69 7a 65 41 6e 64 49 6e 74 50 74 72 28 0d 0a 20  izeAndIntPtr(.. 
3290: 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 61             int a
32a0: 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  rgc,..          
32b0: 20 20 49 6e 74 50 74 72 20 61 72 67 76 0d 0a 20    IntPtr argv.. 
32c0: 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
32d0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
32e0: 20 20 20 20 20 69 66 20 28 61 72 67 63 20 3c 20       if (argc < 
32f0: 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  0)..            
3300: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
3310: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
3320: 69 66 20 28 61 72 67 76 20 3d 3d 20 49 6e 74 50  if (argv == IntP
3330: 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
3340: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
3350: 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20   null;....      
3360: 20 20 20 20 20 20 53 51 4c 69 74 65 56 61 6c 75        SQLiteValu
3370: 65 5b 5d 20 72 65 73 75 6c 74 20 3d 20 6e 65 77  e[] result = new
3380: 20 53 51 4c 69 74 65 56 61 6c 75 65 5b 61 72 67   SQLiteValue[arg
3390: 63 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  c];....         
33a0: 20 20 20 66 6f 72 20 28 69 6e 74 20 69 6e 64 65     for (int inde
33b0: 78 20 3d 20 30 2c 20 6f 66 66 73 65 74 20 3d 20  x = 0, offset = 
33c0: 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  0;..            
33d0: 20 20 20 20 20 20 20 20 69 6e 64 65 78 20 3c 20          index < 
33e0: 72 65 73 75 6c 74 2e 4c 65 6e 67 74 68 3b 0d 0a  result.Length;..
33f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3400: 20 20 20 20 69 6e 64 65 78 2b 2b 2c 20 6f 66 66      index++, off
3410: 73 65 74 20 2b 3d 20 49 6e 74 50 74 72 2e 53 69  set += IntPtr.Si
3420: 7a 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ze)..           
3430: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
3440: 20 20 20 20 49 6e 74 50 74 72 20 70 41 72 67 20      IntPtr pArg 
3450: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
3460: 52 65 61 64 49 6e 74 50 74 72 28 61 72 67 76 2c  ReadIntPtr(argv,
3470: 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20   offset);....   
3480: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73               res
3490: 75 6c 74 5b 69 6e 64 65 78 5d 20 3d 20 28 70 41  ult[index] = (pA
34a0: 72 67 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  rg != IntPtr.Zer
34b0: 6f 29 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20  o) ?..          
34c0: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
34d0: 4c 69 74 65 56 61 6c 75 65 28 70 41 72 67 29 20  LiteValue(pArg) 
34e0: 3a 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  : null;..       
34f0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
3500: 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73        return res
3510: 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ult;..        }.
3520: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
3530: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
3540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3550: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3580: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
3590: 20 20 23 72 65 67 69 6f 6e 20 49 53 51 4c 69 74    #region ISQLit
35a0: 65 4e 61 74 69 76 65 48 61 6e 64 6c 65 20 4d 65  eNativeHandle Me
35b0: 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 2f  mbers..        /
35c0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
35d0: 20 20 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e        /// Return
35e0: 73 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67  s the underlying
35f0: 20 53 51 4c 69 74 65 20 6e 61 74 69 76 65 20 68   SQLite native h
3600: 61 6e 64 6c 65 20 61 73 73 6f 63 69 61 74 65 64  andle associated
3610: 20 77 69 74 68 20 74 68 69 73 0d 0a 20 20 20 20   with this..    
3620: 20 20 20 20 2f 2f 2f 20 6f 62 6a 65 63 74 20 69      /// object i
3630: 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20  nstance...      
3640: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
3650: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
3660: 20 49 6e 74 50 74 72 20 4e 61 74 69 76 65 48 61   IntPtr NativeHa
3670: 6e 64 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ndle..        {.
3680: 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
3690: 20 7b 20 72 65 74 75 72 6e 20 70 56 61 6c 75 65   { return pValue
36a0: 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ; }..        }..
36b0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
36c0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
36d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3710: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
3720: 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
3730: 50 72 6f 70 65 72 74 69 65 73 0d 0a 20 20 20 20  Properties..    
3740: 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c      private bool
3750: 20 70 65 72 73 69 73 74 65 64 3b 0d 0a 20 20 20   persisted;..   
3760: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
3770: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
3780: 52 65 74 75 72 6e 73 20 6e 6f 6e 2d 7a 65 72 6f  Returns non-zero
3790: 20 69 66 20 74 68 65 20 6e 61 74 69 76 65 20 53   if the native S
37a0: 51 4c 69 74 65 20 76 61 6c 75 65 20 68 61 73 20  QLite value has 
37b0: 62 65 65 6e 20 73 75 63 63 65 73 73 66 75 6c 6c  been successfull
37c0: 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70  y..        /// p
37d0: 65 72 73 69 73 74 65 64 20 61 73 20 61 20 6d 61  ersisted as a ma
37e0: 6e 61 67 65 64 20 76 61 6c 75 65 20 77 69 74 68  naged value with
37f0: 69 6e 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69  in this object i
3800: 6e 73 74 61 6e 63 65 20 28 69 2e 65 2e 20 74 68  nstance (i.e. th
3810: 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
3820: 73 65 65 20 63 72 65 66 3d 22 56 61 6c 75 65 22  see cref="Value"
3830: 20 2f 3e 20 70 72 6f 70 65 72 74 79 20 6d 61 79   /> property may
3840: 20 74 68 65 6e 20 62 65 20 72 65 61 64 20 73 75   then be read su
3850: 63 63 65 73 73 66 75 6c 6c 79 29 2e 0d 0a 20 20  ccessfully)...  
3860: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
3870: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
3880: 62 6c 69 63 20 62 6f 6f 6c 20 50 65 72 73 69 73  blic bool Persis
3890: 74 65 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ted..        {..
38a0: 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
38b0: 7b 20 72 65 74 75 72 6e 20 70 65 72 73 69 73 74  { return persist
38c0: 65 64 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d  ed; }..        }
38d0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
38e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3920: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
3930: 72 69 76 61 74 65 20 6f 62 6a 65 63 74 20 76 61  rivate object va
3940: 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f  lue;..        //
3950: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
3960: 20 20 20 20 20 2f 2f 2f 20 49 66 20 74 68 65 20       /// If the 
3970: 6d 61 6e 61 67 65 64 20 76 61 6c 75 65 20 66 6f  managed value fo
3980: 72 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e  r this object in
3990: 73 74 61 6e 63 65 20 69 73 20 61 76 61 69 6c 61  stance is availa
39a0: 62 6c 65 20 28 69 2e 65 2e 20 69 74 0d 0a 20 20  ble (i.e. it..  
39b0: 20 20 20 20 20 20 2f 2f 2f 20 68 61 73 20 62 65        /// has be
39c0: 65 6e 20 70 72 65 76 69 6f 75 73 6c 79 20 70 65  en previously pe
39d0: 72 73 69 73 74 65 64 20 76 69 61 20 74 68 65 20  rsisted via the 
39e0: 3c 73 65 65 20 63 72 65 66 3d 22 50 65 72 73 69  <see cref="Persi
39f0: 73 74 22 20 2f 3e 29 20 6d 65 74 68 6f 64 2c 0d  st" />) method,.
3a00: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 61  .        /// tha
3a10: 74 20 76 61 6c 75 65 20 69 73 20 72 65 74 75 72  t value is retur
3a20: 6e 65 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 20  ned; otherwise, 
3a30: 61 6e 20 65 78 63 65 70 74 69 6f 6e 20 69 73 20  an exception is 
3a40: 74 68 72 6f 77 6e 2e 20 20 54 68 65 0d 0a 20 20  thrown.  The..  
3a50: 20 20 20 20 20 20 2f 2f 2f 20 72 65 74 75 72 6e        /// return
3a60: 65 64 20 76 61 6c 75 65 20 6d 61 79 20 62 65 20  ed value may be 
3a70: 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 20 20 2f  null...        /
3a80: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
3a90: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 62         public ob
3aa0: 6a 65 63 74 20 56 61 6c 75 65 0d 0a 20 20 20 20  ject Value..    
3ab0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
3ac0: 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20     get..        
3ad0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
3ae0: 20 20 20 20 20 20 20 69 66 20 28 21 70 65 72 73         if (!pers
3af0: 69 73 74 65 64 29 0d 0a 20 20 20 20 20 20 20 20  isted)..        
3b00: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
3b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
3b20: 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64  hrow new Invalid
3b30: 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69  OperationExcepti
3b40: 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on(..           
3b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 76 61               "va
3b60: 6c 75 65 20 77 61 73 20 6e 6f 74 20 70 65 72 73  lue was not pers
3b70: 69 73 74 65 64 22 29 3b 0d 0a 20 20 20 20 20 20  isted");..      
3b80: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
3b90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
3ba0: 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 20 20  eturn value;..  
3bb0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
3bc0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
3bd0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
3be0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
3bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
3c30: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
3c40: 20 50 75 62 6c 69 63 20 4d 65 74 68 6f 64 73 0d   Public Methods.
3c50: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
3c60: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
3c70: 2f 2f 2f 20 47 65 74 73 20 61 6e 64 20 72 65 74  /// Gets and ret
3c80: 75 72 6e 73 20 74 68 65 20 74 79 70 65 20 61 66  urns the type af
3c90: 66 69 6e 69 74 79 20 61 73 73 6f 63 69 61 74 65  finity associate
3ca0: 64 20 77 69 74 68 20 74 68 69 73 20 76 61 6c 75  d with this valu
3cb0: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
3cc0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
3cd0: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
3ce0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
3cf0: 68 65 20 74 79 70 65 20 61 66 66 69 6e 69 74 79  he type affinity
3d00: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
3d10: 20 74 68 69 73 20 76 61 6c 75 65 2e 0d 0a 20 20   this value...  
3d20: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
3d30: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  rns>..        pu
3d40: 62 6c 69 63 20 54 79 70 65 41 66 66 69 6e 69 74  blic TypeAffinit
3d50: 79 20 47 65 74 54 79 70 65 41 66 66 69 6e 69 74  y GetTypeAffinit
3d60: 79 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  y()..        {..
3d70: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
3d80: 70 56 61 6c 75 65 20 3d 3d 20 49 6e 74 50 74 72  pValue == IntPtr
3d90: 2e 5a 65 72 6f 29 20 72 65 74 75 72 6e 20 54 79  .Zero) return Ty
3da0: 70 65 41 66 66 69 6e 69 74 79 2e 4e 6f 6e 65 3b  peAffinity.None;
3db0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
3dc0: 74 75 72 6e 20 55 6e 73 61 66 65 4e 61 74 69 76  turn UnsafeNativ
3dd0: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
3de0: 5f 76 61 6c 75 65 5f 74 79 70 65 28 70 56 61 6c  _value_type(pVal
3df0: 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ue);..        }.
3e00: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
3e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3e30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3e40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3e50: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
3e60: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
3e70: 20 20 20 20 20 2f 2f 2f 20 47 65 74 73 20 61 6e       /// Gets an
3e80: 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 6e 75  d returns the nu
3e90: 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20 61 73  mber of bytes as
3ea0: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
3eb0: 69 73 20 76 61 6c 75 65 2c 20 69 66 0d 0a 20 20  is value, if..  
3ec0: 20 20 20 20 20 20 2f 2f 2f 20 69 74 20 72 65 66        /// it ref
3ed0: 65 72 73 20 74 6f 20 61 20 55 54 46 2d 38 20 65  ers to a UTF-8 e
3ee0: 6e 63 6f 64 65 64 20 73 74 72 69 6e 67 2e 0d 0a  ncoded string...
3ef0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
3f00: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
3f10: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
3f20: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
3f30: 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20 61  umber of bytes a
3f40: 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
3f50: 68 69 73 20 76 61 6c 75 65 2e 20 20 54 68 65 20  his value.  The 
3f60: 72 65 74 75 72 6e 65 64 20 76 61 6c 75 65 0d 0a  returned value..
3f70: 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 61 79 20          /// may 
3f80: 62 65 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20  be zero...      
3f90: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
3fa0: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
3fb0: 20 69 6e 74 20 47 65 74 42 79 74 65 73 28 29 0d   int GetBytes().
3fc0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
3fd0: 20 20 20 20 20 20 20 20 69 66 20 28 70 56 61 6c          if (pVal
3fe0: 75 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72  ue == IntPtr.Zer
3ff0: 6f 29 20 72 65 74 75 72 6e 20 30 3b 0d 0a 20 20  o) return 0;..  
4000: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
4010: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
4020: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76 61 6c  hods.sqlite3_val
4030: 75 65 5f 62 79 74 65 73 28 70 56 61 6c 75 65 29  ue_bytes(pValue)
4040: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
4050: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
4060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
40a0: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
40b0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
40c0: 20 20 2f 2f 2f 20 47 65 74 73 20 61 6e 64 20 72    /// Gets and r
40d0: 65 74 75 72 6e 73 20 74 68 65 20 3c 73 65 65 20  eturns the <see 
40e0: 63 72 65 66 3d 22 49 6e 74 33 32 22 20 2f 3e 20  cref="Int32" /> 
40f0: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
4100: 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  this..        //
4110: 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20  / value...      
4120: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
4130: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
4140: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
4150: 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
4160: 65 66 3d 22 49 6e 74 33 32 22 20 2f 3e 20 61 73  ef="Int32" /> as
4170: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
4180: 69 73 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20  is value...     
4190: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
41a0: 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
41b0: 63 20 69 6e 74 20 47 65 74 49 6e 74 28 29 0d 0a  c int GetInt()..
41c0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
41d0: 20 20 20 20 20 20 20 69 66 20 28 70 56 61 6c 75         if (pValu
41e0: 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e == IntPtr.Zero
41f0: 29 20 72 65 74 75 72 6e 20 64 65 66 61 75 6c 74  ) return default
4200: 28 69 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  (int);..        
4210: 20 20 20 20 72 65 74 75 72 6e 20 55 6e 73 61 66      return Unsaf
4220: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
4230: 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74  qlite3_value_int
4240: 28 70 56 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20  (pValue);..     
4250: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
4260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
42a0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
42b0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
42c0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 47 65  ..        /// Ge
42d0: 74 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74  ts and returns t
42e0: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  he <see cref="In
42f0: 74 36 34 22 20 2f 3e 20 61 73 73 6f 63 69 61 74  t64" /> associat
4300: 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20 20  ed with..       
4310: 20 2f 2f 2f 20 74 68 69 73 20 76 61 6c 75 65 2e   /// this value.
4320: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
4330: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
4340: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
4350: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
4360: 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 36   <see cref="Int6
4370: 34 22 20 2f 3e 20 61 73 73 6f 63 69 61 74 65 64  4" /> associated
4380: 20 77 69 74 68 20 74 68 69 73 20 76 61 6c 75 65   with this value
4390: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
43a0: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
43b0: 20 20 20 70 75 62 6c 69 63 20 6c 6f 6e 67 20 47     public long G
43c0: 65 74 49 6e 74 36 34 28 29 0d 0a 20 20 20 20 20  etInt64()..     
43d0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
43e0: 20 20 69 66 20 28 70 56 61 6c 75 65 20 3d 3d 20    if (pValue == 
43f0: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20 72 65 74  IntPtr.Zero) ret
4400: 75 72 6e 20 64 65 66 61 75 6c 74 28 6c 6f 6e 67  urn default(long
4410: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
4420: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
4430: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
4440: 20 20 72 65 74 75 72 6e 20 55 6e 73 61 66 65 4e    return UnsafeN
4450: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
4460: 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74 36 34  ite3_value_int64
4470: 28 70 56 61 6c 75 65 29 3b 0d 0a 23 65 6c 69 66  (pValue);..#elif
4480: 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52   !SQLITE_STANDAR
4490: 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  D..            l
44a0: 6f 6e 67 20 76 61 6c 75 65 20 3d 20 30 3b 0d 0a  ong value = 0;..
44b0: 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
44c0: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
44d0: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e  sqlite3_value_in
44e0: 74 36 34 5f 69 6e 74 65 72 6f 70 28 70 56 61 6c  t64_interop(pVal
44f0: 75 65 2c 20 72 65 66 20 76 61 6c 75 65 29 3b 0d  ue, ref value);.
4500: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
4510: 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 23 65 6c 73  urn value;..#els
4520: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  e..            t
4530: 68 72 6f 77 20 6e 65 77 20 4e 6f 74 49 6d 70 6c  hrow new NotImpl
4540: 65 6d 65 6e 74 65 64 45 78 63 65 70 74 69 6f 6e  ementedException
4550: 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ();..#endif..   
4560: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
4570: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
4580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
45a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
45b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
45c0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
45d0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
45e0: 47 65 74 73 20 61 6e 64 20 72 65 74 75 72 6e 73  Gets and returns
45f0: 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
4600: 44 6f 75 62 6c 65 22 20 2f 3e 20 61 73 73 6f 63  Double" /> assoc
4610: 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73 0d  iated with this.
4620: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c  .        /// val
4630: 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ue...        ///
4640: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
4650: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
4660: 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
4670: 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 44  The <see cref="D
4680: 6f 75 62 6c 65 22 20 2f 3e 20 61 73 73 6f 63 69  ouble" /> associ
4690: 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20 76  ated with this v
46a0: 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  alue...        /
46b0: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
46c0: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 64 6f         public do
46d0: 75 62 6c 65 20 47 65 74 44 6f 75 62 6c 65 28 29  uble GetDouble()
46e0: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
46f0: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 56 61           if (pVa
4700: 6c 75 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  lue == IntPtr.Ze
4710: 72 6f 29 20 72 65 74 75 72 6e 20 64 65 66 61 75  ro) return defau
4720: 6c 74 28 64 6f 75 62 6c 65 29 3b 0d 0a 0d 0a 23  lt(double);....#
4730: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
4740: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
4750: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
4760: 6e 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  n UnsafeNativeMe
4770: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76 61  thods.sqlite3_va
4780: 6c 75 65 5f 64 6f 75 62 6c 65 28 70 56 61 6c 75  lue_double(pValu
4790: 65 29 3b 0d 0a 23 65 6c 69 66 20 21 53 51 4c 49  e);..#elif !SQLI
47a0: 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20  TE_STANDARD..   
47b0: 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20           double 
47c0: 76 61 6c 75 65 20 3d 20 30 2e 30 3b 0d 0a 20 20  value = 0.0;..  
47d0: 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
47e0: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
47f0: 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62  lite3_value_doub
4800: 6c 65 5f 69 6e 74 65 72 6f 70 28 70 56 61 6c 75  le_interop(pValu
4810: 65 2c 20 72 65 66 20 76 61 6c 75 65 29 3b 0d 0a  e, ref value);..
4820: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
4830: 72 6e 20 76 61 6c 75 65 3b 0d 0a 23 65 6c 73 65  rn value;..#else
4840: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
4850: 72 6f 77 20 6e 65 77 20 4e 6f 74 49 6d 70 6c 65  row new NotImple
4860: 6d 65 6e 74 65 64 45 78 63 65 70 74 69 6f 6e 28  mentedException(
4870: 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
4880: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
4890: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
48a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
48b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
48c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
48d0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
48e0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
48f0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 47  >..        /// G
4900: 65 74 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20  ets and returns 
4910: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  the <see cref="S
4920: 74 72 69 6e 67 22 20 2f 3e 20 61 73 73 6f 63 69  tring" /> associ
4930: 61 74 65 64 20 77 69 74 68 20 74 68 69 73 0d 0a  ated with this..
4940: 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75          /// valu
4950: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
4960: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
4970: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
4980: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
4990: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 74  he <see cref="St
49a0: 72 69 6e 67 22 20 2f 3e 20 61 73 73 6f 63 69 61  ring" /> associa
49b0: 74 65 64 20 77 69 74 68 20 74 68 69 73 20 76 61  ted with this va
49c0: 6c 75 65 2e 20 20 54 68 65 20 76 61 6c 75 65 20  lue.  The value 
49d0: 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  is..        /// 
49e0: 63 6f 6e 76 65 72 74 65 64 20 66 72 6f 6d 20 74  converted from t
49f0: 68 65 20 55 54 46 2d 38 20 65 6e 63 6f 64 69 6e  he UTF-8 encodin
4a00: 67 20 70 72 69 6f 72 20 74 6f 20 62 65 69 6e 67  g prior to being
4a10: 20 72 65 74 75 72 6e 65 64 2e 0d 0a 20 20 20 20   returned...    
4a20: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
4a30: 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  s>..        publ
4a40: 69 63 20 73 74 72 69 6e 67 20 47 65 74 53 74 72  ic string GetStr
4a50: 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  ing()..        {
4a60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
4a70: 20 28 70 56 61 6c 75 65 20 3d 3d 20 49 6e 74 50   (pValue == IntP
4a80: 74 72 2e 5a 65 72 6f 29 20 72 65 74 75 72 6e 20  tr.Zero) return 
4a90: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
4aa0: 20 20 20 20 20 69 6e 74 20 6c 65 6e 67 74 68 3b       int length;
4ab0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
4ac0: 74 50 74 72 20 70 53 74 72 69 6e 67 3b 0d 0a 0d  tPtr pString;...
4ad0: 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e  .#if SQLITE_STAN
4ae0: 44 41 52 44 0d 0a 20 20 20 20 20 20 20 20 20 20  DARD..          
4af0: 20 20 6c 65 6e 67 74 68 20 3d 20 55 6e 73 61 66    length = Unsaf
4b00: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
4b10: 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 79 74  qlite3_value_byt
4b20: 65 73 28 70 56 61 6c 75 65 29 3b 0d 0a 20 20 20  es(pValue);..   
4b30: 20 20 20 20 20 20 20 20 20 70 53 74 72 69 6e 67           pString
4b40: 20 3d 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d   = UnsafeNativeM
4b50: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76  ethods.sqlite3_v
4b60: 61 6c 75 65 5f 74 65 78 74 28 70 56 61 6c 75 65  alue_text(pValue
4b70: 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  );..#else..     
4b80: 20 20 20 20 20 20 20 6c 65 6e 67 74 68 20 3d 20         length = 
4b90: 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  0;....          
4ba0: 20 20 70 53 74 72 69 6e 67 20 3d 20 55 6e 73 61    pString = Unsa
4bb0: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
4bc0: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65  sqlite3_value_te
4bd0: 78 74 5f 69 6e 74 65 72 6f 70 28 0d 0a 20 20 20  xt_interop(..   
4be0: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 56 61               pVa
4bf0: 6c 75 65 2c 20 72 65 66 20 6c 65 6e 67 74 68 29  lue, ref length)
4c00: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
4c10: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
4c20: 53 51 4c 69 74 65 53 74 72 69 6e 67 2e 53 74 72  SQLiteString.Str
4c30: 69 6e 67 46 72 6f 6d 55 74 66 38 49 6e 74 50 74  ingFromUtf8IntPt
4c40: 72 28 70 53 74 72 69 6e 67 2c 20 6c 65 6e 67 74  r(pString, lengt
4c50: 68 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  h);..        }..
4c60: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
4c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4cb0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
4cc0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
4cd0: 20 20 20 20 2f 2f 2f 20 47 65 74 73 20 61 6e 64      /// Gets and
4ce0: 20 72 65 74 75 72 6e 73 20 74 68 65 20 3c 73 65   returns the <se
4cf0: 65 20 63 72 65 66 3d 22 42 79 74 65 22 20 2f 3e  e cref="Byte" />
4d00: 20 61 72 72 61 79 20 61 73 73 6f 63 69 61 74 65   array associate
4d10: 64 20 77 69 74 68 20 74 68 69 73 0d 0a 20 20 20  d with this..   
4d20: 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d       /// value..
4d30: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
4d40: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
4d50: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
4d60: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
4d70: 3c 73 65 65 20 63 72 65 66 3d 22 42 79 74 65 22  <see cref="Byte"
4d80: 20 2f 3e 20 61 72 72 61 79 20 61 73 73 6f 63 69   /> array associ
4d90: 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20 76  ated with this v
4da0: 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  alue...        /
4db0: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
4dc0: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 79         public by
4dd0: 74 65 5b 5d 20 47 65 74 42 6c 6f 62 28 29 0d 0a  te[] GetBlob()..
4de0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
4df0: 20 20 20 20 20 20 20 69 66 20 28 70 56 61 6c 75         if (pValu
4e00: 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e == IntPtr.Zero
4e10: 29 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a  ) return null;..
4e20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
4e30: 74 75 72 6e 20 53 51 4c 69 74 65 42 79 74 65 73  turn SQLiteBytes
4e40: 2e 46 72 6f 6d 49 6e 74 50 74 72 28 0d 0a 20 20  .FromIntPtr(..  
4e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e                Un
4e60: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
4e70: 73 2e 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  s.sqlite3_value_
4e80: 62 6c 6f 62 28 70 56 61 6c 75 65 29 2c 20 47 65  blob(pValue), Ge
4e90: 74 42 79 74 65 73 28 29 29 3b 0d 0a 20 20 20 20  tBytes());..    
4ea0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
4eb0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
4ec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4ef0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
4f00: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
4f10: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 47  >..        /// G
4f20: 65 74 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20  ets and returns 
4f30: 61 6e 20 3c 73 65 65 20 63 72 65 66 3d 22 4f 62  an <see cref="Ob
4f40: 6a 65 63 74 22 20 2f 3e 20 69 6e 73 74 61 6e 63  ject" /> instanc
4f50: 65 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  e associated wit
4f60: 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  h..        /// t
4f70: 68 69 73 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20  his value...    
4f80: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
4f90: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
4fa0: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
4fb0: 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
4fc0: 63 72 65 66 3d 22 4f 62 6a 65 63 74 22 20 2f 3e  cref="Object" />
4fd0: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
4fe0: 20 74 68 69 73 20 76 61 6c 75 65 2e 20 20 49 66   this value.  If
4ff0: 20 74 68 65 20 74 79 70 65 0d 0a 20 20 20 20 20   the type..     
5000: 20 20 20 2f 2f 2f 20 61 66 66 69 6e 69 74 79 20     /// affinity 
5010: 6f 66 20 74 68 65 20 6f 62 6a 65 63 74 20 69 73  of the object is
5020: 20 75 6e 6b 6e 6f 77 6e 20 6f 72 20 63 61 6e 6e   unknown or cann
5030: 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64  ot be determined
5040: 2c 20 61 20 6e 75 6c 6c 0d 0a 20 20 20 20 20 20  , a null..      
5050: 20 20 2f 2f 2f 20 76 61 6c 75 65 20 77 69 6c 6c    /// value will
5060: 20 62 65 20 72 65 74 75 72 6e 65 64 2e 0d 0a 20   be returned... 
5070: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
5080: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
5090: 75 62 6c 69 63 20 6f 62 6a 65 63 74 20 47 65 74  ublic object Get
50a0: 4f 62 6a 65 63 74 28 29 0d 0a 20 20 20 20 20 20  Object()..      
50b0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
50c0: 20 73 77 69 74 63 68 20 28 47 65 74 54 79 70 65   switch (GetType
50d0: 41 66 66 69 6e 69 74 79 28 29 29 0d 0a 20 20 20  Affinity())..   
50e0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
50f0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
5100: 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 55 6e   TypeAffinity.Un
5110: 69 6e 69 74 69 61 6c 69 7a 65 64 3a 0d 0a 20 20  initialized:..  
5120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5130: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
5140: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
5150: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
5160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
5170: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5180: 20 20 63 61 73 65 20 54 79 70 65 41 66 66 69 6e    case TypeAffin
5190: 69 74 79 2e 49 6e 74 36 34 3a 0d 0a 20 20 20 20  ity.Int64:..    
51a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
51b0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
51c0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
51d0: 6e 20 47 65 74 49 6e 74 36 34 28 29 3b 0d 0a 20  n GetInt64();.. 
51e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
51f0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
5200: 20 20 20 20 20 20 63 61 73 65 20 54 79 70 65 41        case TypeA
5210: 66 66 69 6e 69 74 79 2e 44 6f 75 62 6c 65 3a 0d  ffinity.Double:.
5220: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5230: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
5240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5250: 72 65 74 75 72 6e 20 47 65 74 44 6f 75 62 6c 65  return GetDouble
5260: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
5270: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
5280: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
5290: 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 54 65   TypeAffinity.Te
52a0: 78 74 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  xt:..           
52b0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
52c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
52d0: 20 20 20 20 72 65 74 75 72 6e 20 47 65 74 53 74      return GetSt
52e0: 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20  ring();..       
52f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
5300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5310: 63 61 73 65 20 54 79 70 65 41 66 66 69 6e 69 74  case TypeAffinit
5320: 79 2e 42 6c 6f 62 3a 0d 0a 20 20 20 20 20 20 20  y.Blob:..       
5330: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
5340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5350: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 47          return G
5360: 65 74 42 79 74 65 73 28 29 3b 0d 0a 20 20 20 20  etBytes();..    
5370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5380: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
5390: 20 20 20 63 61 73 65 20 54 79 70 65 41 66 66 69     case TypeAffi
53a0: 6e 69 74 79 2e 4e 75 6c 6c 3a 0d 0a 20 20 20 20  nity.Null:..    
53b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
53c0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
53d0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
53e0: 6e 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 3b 0d  n DBNull.Value;.
53f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5400: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
5410: 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a          default:
5420: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5430: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
5440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5450: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20   return null;.. 
5460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5470: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
5480: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
5490: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
54a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54e0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
54f0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
5500: 20 20 20 20 2f 2f 2f 20 55 73 65 73 20 74 68 65      /// Uses the
5510: 20 6e 61 74 69 76 65 20 76 61 6c 75 65 20 68 61   native value ha
5520: 6e 64 6c 65 20 74 6f 20 6f 62 74 61 69 6e 20 61  ndle to obtain a
5530: 6e 64 20 73 74 6f 72 65 20 74 68 65 20 6d 61 6e  nd store the man
5540: 61 67 65 64 20 76 61 6c 75 65 0d 0a 20 20 20 20  aged value..    
5550: 20 20 20 20 2f 2f 2f 20 66 6f 72 20 74 68 69 73      /// for this
5560: 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
5570: 2c 20 74 68 75 73 20 73 61 76 69 6e 67 20 69 74  , thus saving it
5580: 20 66 6f 72 20 6c 61 74 65 72 20 75 73 65 2e 20   for later use. 
5590: 20 54 68 65 20 74 79 70 65 0d 0a 20 20 20 20 20   The type..     
55a0: 20 20 20 2f 2f 2f 20 6f 66 20 74 68 65 20 6d 61     /// of the ma
55b0: 6e 61 67 65 64 20 76 61 6c 75 65 20 69 73 20 64  naged value is d
55c0: 65 74 65 72 6d 69 6e 65 64 20 62 79 20 74 68 65  etermined by the
55d0: 20 74 79 70 65 20 61 66 66 69 6e 69 74 79 20 6f   type affinity o
55e0: 66 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  f the..        /
55f0: 2f 2f 20 6e 61 74 69 76 65 20 76 61 6c 75 65 2e  // native value.
5600: 20 20 49 66 20 74 68 65 20 74 79 70 65 20 61 66    If the type af
5610: 66 69 6e 69 74 79 20 69 73 20 6e 6f 74 20 72 65  finity is not re
5620: 63 6f 67 6e 69 7a 65 64 20 62 79 20 74 68 69 73  cognized by this
5630: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65  ..        /// me
5640: 74 68 6f 64 2c 20 6e 6f 20 77 6f 72 6b 20 69 73  thod, no work is
5650: 20 64 6f 6e 65 20 61 6e 64 20 66 61 6c 73 65 20   done and false 
5660: 69 73 20 72 65 74 75 72 6e 65 64 2e 0d 0a 20 20  is returned...  
5670: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
5680: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
5690: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
56a0: 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
56b0: 6f 20 69 66 20 74 68 65 20 6e 61 74 69 76 65 20  o if the native 
56c0: 76 61 6c 75 65 20 77 61 73 20 70 65 72 73 69 73  value was persis
56d0: 74 65 64 20 73 75 63 63 65 73 73 66 75 6c 6c 79  ted successfully
56e0: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
56f0: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
5700: 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 50     public bool P
5710: 65 72 73 69 73 74 28 29 0d 0a 20 20 20 20 20 20  ersist()..      
5720: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
5730: 20 73 77 69 74 63 68 20 28 47 65 74 54 79 70 65   switch (GetType
5740: 41 66 66 69 6e 69 74 79 28 29 29 0d 0a 20 20 20  Affinity())..   
5750: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
5760: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
5770: 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 55 6e   TypeAffinity.Un
5780: 69 6e 69 74 69 61 6c 69 7a 65 64 3a 0d 0a 20 20  initialized:..  
5790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
57a0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
57b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c               val
57c0: 75 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  ue = null;..    
57d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
57e0: 20 20 20 20 50 72 65 76 65 6e 74 4e 61 74 69 76      PreventNativ
57f0: 65 41 63 63 65 73 73 28 29 3b 0d 0a 20 20 20 20  eAccess();..    
5800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5810: 20 20 20 20 72 65 74 75 72 6e 20 28 70 65 72 73      return (pers
5820: 69 73 74 65 64 20 3d 20 74 72 75 65 29 3b 0d 0a  isted = true);..
5830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5840: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
5850: 20 20 20 20 20 20 20 63 61 73 65 20 54 79 70 65         case Type
5860: 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34 3a 0d  Affinity.Int64:.
5870: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5880: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
5890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
58a0: 76 61 6c 75 65 20 3d 20 47 65 74 49 6e 74 36 34  value = GetInt64
58b0: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
58c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 50 72 65               Pre
58d0: 76 65 6e 74 4e 61 74 69 76 65 41 63 63 65 73 73  ventNativeAccess
58e0: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
58f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
5900: 75 72 6e 20 28 70 65 72 73 69 73 74 65 64 20 3d  urn (persisted =
5910: 20 74 72 75 65 29 3b 0d 0a 20 20 20 20 20 20 20   true);..       
5920: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
5930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5940: 63 61 73 65 20 54 79 70 65 41 66 66 69 6e 69 74  case TypeAffinit
5950: 79 2e 44 6f 75 62 6c 65 3a 0d 0a 20 20 20 20 20  y.Double:..     
5960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
5970: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5980: 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20            value 
5990: 3d 20 47 65 74 44 6f 75 62 6c 65 28 29 3b 0d 0a  = GetDouble();..
59a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
59b0: 20 20 20 20 20 20 20 20 50 72 65 76 65 6e 74 4e          PreventN
59c0: 61 74 69 76 65 41 63 63 65 73 73 28 29 3b 0d 0a  ativeAccess();..
59d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
59e0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
59f0: 70 65 72 73 69 73 74 65 64 20 3d 20 74 72 75 65  persisted = true
5a00: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
5a10: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
5a20: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
5a30: 54 79 70 65 41 66 66 69 6e 69 74 79 2e 54 65 78  TypeAffinity.Tex
5a40: 74 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t:..            
5a50: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
5a60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5a70: 20 20 20 76 61 6c 75 65 20 3d 20 47 65 74 53 74     value = GetSt
5a80: 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20  ring();..       
5a90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5aa0: 20 50 72 65 76 65 6e 74 4e 61 74 69 76 65 41 63   PreventNativeAc
5ab0: 63 65 73 73 28 29 3b 0d 0a 20 20 20 20 20 20 20  cess();..       
5ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ad0: 20 72 65 74 75 72 6e 20 28 70 65 72 73 69 73 74   return (persist
5ae0: 65 64 20 3d 20 74 72 75 65 29 3b 0d 0a 20 20 20  ed = true);..   
5af0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b00: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
5b10: 20 20 20 20 63 61 73 65 20 54 79 70 65 41 66 66      case TypeAff
5b20: 69 6e 69 74 79 2e 42 6c 6f 62 3a 0d 0a 20 20 20  inity.Blob:..   
5b30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b40: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
5b50: 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75              valu
5b60: 65 20 3d 20 47 65 74 42 79 74 65 73 28 29 3b 0d  e = GetBytes();.
5b70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5b80: 20 20 20 20 20 20 20 20 20 50 72 65 76 65 6e 74           Prevent
5b90: 4e 61 74 69 76 65 41 63 63 65 73 73 28 29 3b 0d  NativeAccess();.
5ba0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5bb0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
5bc0: 28 70 65 72 73 69 73 74 65 64 20 3d 20 74 72 75  (persisted = tru
5bd0: 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
5be0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
5bf0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
5c00: 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 4e 75   TypeAffinity.Nu
5c10: 6c 6c 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll:..           
5c20: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
5c30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5c40: 20 20 20 20 76 61 6c 75 65 20 3d 20 44 42 4e 75      value = DBNu
5c50: 6c 6c 2e 56 61 6c 75 65 3b 0d 0a 20 20 20 20 20  ll.Value;..     
5c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5c70: 20 20 20 50 72 65 76 65 6e 74 4e 61 74 69 76 65     PreventNative
5c80: 41 63 63 65 73 73 28 29 3b 0d 0a 20 20 20 20 20  Access();..     
5c90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ca0: 20 20 20 72 65 74 75 72 6e 20 28 70 65 72 73 69     return (persi
5cb0: 73 74 65 64 20 3d 20 74 72 75 65 29 3b 0d 0a 20  sted = true);.. 
5cc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5cd0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
5ce0: 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a 0d 0a        default:..
5cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5d00: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
5d10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
5d20: 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
5d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5d40: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
5d50: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20   }..        }.. 
5d60: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
5d70: 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65  n..    }..    #e
5d80: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
5d90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5db0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5dd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
5de0: 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74     #region SQLit
5df0: 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74  eIndexConstraint
5e00: 4f 70 20 45 6e 75 6d 65 72 61 74 69 6f 6e 0d 0a  Op Enumeration..
5e10: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
5e20: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 73 65  >..    /// These
5e30: 20 61 72 65 20 74 68 65 20 61 6c 6c 6f 77 65 64   are the allowed
5e40: 20 76 61 6c 75 65 73 20 66 6f 72 20 74 68 65 20   values for the 
5e50: 6f 70 65 72 61 74 6f 72 73 20 74 68 61 74 20 61  operators that a
5e60: 72 65 20 70 61 72 74 20 6f 66 20 61 0d 0a 20 20  re part of a..  
5e70: 20 20 2f 2f 2f 20 63 6f 6e 73 74 72 61 69 6e 74    /// constraint
5e80: 20 74 65 72 6d 20 69 6e 20 74 68 65 20 57 48 45   term in the WHE
5e90: 52 45 20 63 6c 61 75 73 65 20 6f 66 20 61 20 71  RE clause of a q
5ea0: 75 65 72 79 20 74 68 61 74 20 75 73 65 73 20 61  uery that uses a
5eb0: 20 76 69 72 74 75 61 6c 0d 0a 20 20 20 20 2f 2f   virtual..    //
5ec0: 2f 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 2f 2f  / table...    //
5ed0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
5ee0: 20 20 70 75 62 6c 69 63 20 65 6e 75 6d 20 53 51    public enum SQ
5ef0: 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61  LiteIndexConstra
5f00: 69 6e 74 4f 70 20 3a 20 62 79 74 65 0d 0a 20 20  intOp : byte..  
5f10: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f    {..        ///
5f20: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
5f30: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 76 61 6c      /// This val
5f40: 75 65 20 72 65 70 72 65 73 65 6e 74 73 20 74 68  ue represents th
5f50: 65 20 65 71 75 61 6c 69 74 79 20 6f 70 65 72 61  e equality opera
5f60: 74 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tor...        //
5f70: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
5f80: 20 20 20 20 20 20 45 71 75 61 6c 54 6f 20 3d 20        EqualTo = 
5f90: 32 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  2,....        //
5fa0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
5fb0: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 76 61       /// This va
5fc0: 6c 75 65 20 72 65 70 72 65 73 65 6e 74 73 20 74  lue represents t
5fd0: 68 65 20 67 72 65 61 74 65 72 20 74 68 61 6e 20  he greater than 
5fe0: 6f 70 65 72 61 74 6f 72 2e 0d 0a 20 20 20 20 20  operator...     
5ff0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
6000: 3e 0d 0a 20 20 20 20 20 20 20 20 47 72 65 61 74  >..        Great
6010: 65 72 54 68 61 6e 20 3d 20 34 2c 0d 0a 0d 0a 20  erThan = 4,.... 
6020: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
6030: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
6040: 2f 20 54 68 69 73 20 76 61 6c 75 65 20 72 65 70  / This value rep
6050: 72 65 73 65 6e 74 73 20 74 68 65 20 6c 65 73 73  resents the less
6060: 20 74 68 61 6e 20 6f 72 20 65 71 75 61 6c 20 74   than or equal t
6070: 6f 20 6f 70 65 72 61 74 6f 72 2e 0d 0a 20 20 20  o operator...   
6080: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
6090: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 4c 65 73  ry>..        Les
60a0: 73 54 68 61 6e 4f 72 45 71 75 61 6c 54 6f 20 3d  sThanOrEqualTo =
60b0: 20 38 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   8,....        /
60c0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
60d0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 76        /// This v
60e0: 61 6c 75 65 20 72 65 70 72 65 73 65 6e 74 73 20  alue represents 
60f0: 74 68 65 20 6c 65 73 73 20 74 68 61 6e 20 6f 70  the less than op
6100: 65 72 61 74 6f 72 2e 0d 0a 20 20 20 20 20 20 20  erator...       
6110: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
6120: 0a 20 20 20 20 20 20 20 20 4c 65 73 73 54 68 61  .        LessTha
6130: 6e 20 3d 20 31 36 2c 0d 0a 0d 0a 20 20 20 20 20  n = 16,....     
6140: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
6150: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
6160: 69 73 20 76 61 6c 75 65 20 72 65 70 72 65 73 65  is value represe
6170: 6e 74 73 20 74 68 65 20 67 72 65 61 74 65 72 20  nts the greater 
6180: 74 68 61 6e 20 6f 72 20 65 71 75 61 6c 20 74 6f  than or equal to
6190: 20 6f 70 65 72 61 74 6f 72 2e 0d 0a 20 20 20 20   operator...    
61a0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
61b0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 47 72 65 61  y>..        Grea
61c0: 74 65 72 54 68 61 6e 4f 72 45 71 75 61 6c 54 6f  terThanOrEqualTo
61d0: 20 3d 20 33 32 2c 0d 0a 0d 0a 20 20 20 20 20 20   = 32,....      
61e0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
61f0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
6200: 73 20 76 61 6c 75 65 20 72 65 70 72 65 73 65 6e  s value represen
6210: 74 73 20 74 68 65 20 4d 41 54 43 48 20 6f 70 65  ts the MATCH ope
6220: 72 61 74 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20  rator...        
6230: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
6240: 20 20 20 20 20 20 20 20 4d 61 74 63 68 20 3d 20          Match = 
6250: 36 34 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  64,....        /
6260: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
6270: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 76        /// This v
6280: 61 6c 75 65 20 72 65 70 72 65 73 65 6e 74 73 20  alue represents 
6290: 74 68 65 20 4c 49 4b 45 20 6f 70 65 72 61 74 6f  the LIKE operato
62a0: 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
62b0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
62c0: 20 20 20 20 4c 69 6b 65 20 3d 20 36 35 2c 0d 0a      Like = 65,..
62d0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
62e0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
62f0: 20 2f 2f 2f 20 54 68 69 73 20 76 61 6c 75 65 20   /// This value 
6300: 72 65 70 72 65 73 65 6e 74 73 20 74 68 65 20 47  represents the G
6310: 4c 4f 42 20 6f 70 65 72 61 74 6f 72 2e 0d 0a 20  LOB operator... 
6320: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
6330: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 47  mary>..        G
6340: 6c 6f 62 20 3d 20 36 36 2c 0d 0a 0d 0a 20 20 20  lob = 66,....   
6350: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
6360: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
6370: 54 68 69 73 20 76 61 6c 75 65 20 72 65 70 72 65  This value repre
6380: 73 65 6e 74 73 20 74 68 65 20 52 45 47 45 58 50  sents the REGEXP
6390: 20 6f 70 65 72 61 74 6f 72 2e 0d 0a 20 20 20 20   operator...    
63a0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
63b0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 52 65 67 65  y>..        Rege
63c0: 78 70 20 3d 20 36 37 2c 0d 0a 0d 0a 20 20 20 20  xp = 67,....    
63d0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
63e0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
63f0: 68 69 73 20 76 61 6c 75 65 20 72 65 70 72 65 73  his value repres
6400: 65 6e 74 73 20 74 68 65 20 69 6e 65 71 75 61 6c  ents the inequal
6410: 69 74 79 20 6f 70 65 72 61 74 6f 72 2e 0d 0a 20  ity operator... 
6420: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
6430: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 4e  mary>..        N
6440: 6f 74 45 71 75 61 6c 54 6f 20 3d 20 36 38 2c 0d  otEqualTo = 68,.
6450: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
6460: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
6470: 20 20 2f 2f 2f 20 54 68 69 73 20 76 61 6c 75 65    /// This value
6480: 20 72 65 70 72 65 73 65 6e 74 73 20 74 68 65 20   represents the 
6490: 49 53 20 4e 4f 54 20 6f 70 65 72 61 74 6f 72 2e  IS NOT operator.
64a0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
64b0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
64c0: 20 20 49 73 4e 6f 74 20 3d 20 36 39 2c 0d 0a 0d    IsNot = 69,...
64d0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
64e0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
64f0: 2f 2f 2f 20 54 68 69 73 20 76 61 6c 75 65 20 72  /// This value r
6500: 65 70 72 65 73 65 6e 74 73 20 74 68 65 20 49 53  epresents the IS
6510: 20 4e 4f 54 20 4e 55 4c 4c 20 6f 70 65 72 61 74   NOT NULL operat
6520: 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  or...        ///
6530: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
6540: 20 20 20 20 20 49 73 4e 6f 74 4e 75 6c 6c 20 3d       IsNotNull =
6550: 20 37 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20   70,....        
6560: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
6570: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
6580: 76 61 6c 75 65 20 72 65 70 72 65 73 65 6e 74 73  value represents
6590: 20 74 68 65 20 49 53 20 4e 55 4c 4c 20 6f 70 65   the IS NULL ope
65a0: 72 61 74 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20  rator...        
65b0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
65c0: 20 20 20 20 20 20 20 20 49 73 4e 75 6c 6c 20 3d          IsNull =
65d0: 20 37 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20   71,....        
65e0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
65f0: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
6600: 76 61 6c 75 65 20 72 65 70 72 65 73 65 6e 74 73  value represents
6610: 20 74 68 65 20 49 53 20 6f 70 65 72 61 74 6f 72   the IS operator
6620: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
6630: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
6640: 20 20 20 49 73 20 3d 20 37 32 0d 0a 20 20 20 20     Is = 72..    
6650: 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  }..    #endregio
6660: 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  n....    ///////
6670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
66a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
66b0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
66c0: 69 6f 6e 20 53 51 4c 69 74 65 49 6e 64 65 78 46  ion SQLiteIndexF
66d0: 6c 61 67 73 20 45 6e 75 6d 65 72 61 74 69 6f 6e  lags Enumeration
66e0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
66f0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ry>..    /// The
6700: 73 65 20 61 72 65 20 74 68 65 20 61 6c 6c 6f 77  se are the allow
6710: 65 64 20 76 61 6c 75 65 73 20 66 6f 72 20 74 68  ed values for th
6720: 65 20 69 6e 64 65 78 20 66 6c 61 67 73 20 66 72  e index flags fr
6730: 6f 6d 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20  om the..    /// 
6740: 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
6750: 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e  teManagedModule.
6760: 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 20 6d 65  BestIndex" /> me
6770: 74 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  thod...    /// <
6780: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 5b  /summary>..    [
6790: 46 6c 61 67 73 28 29 5d 0d 0a 20 20 20 20 70 75  Flags()]..    pu
67a0: 62 6c 69 63 20 65 6e 75 6d 20 53 51 4c 69 74 65  blic enum SQLite
67b0: 49 6e 64 65 78 46 6c 61 67 73 0d 0a 20 20 20 20  IndexFlags..    
67c0: 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  {..        /// <
67d0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
67e0: 20 20 2f 2f 2f 20 4e 6f 20 73 70 65 63 69 61 6c    /// No special
67f0: 20 68 61 6e 64 6c 69 6e 67 2e 20 20 54 68 69 73   handling.  This
6800: 20 69 73 20 74 68 65 20 64 65 66 61 75 6c 74 2e   is the default.
6810: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
6820: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
6830: 20 20 4e 6f 6e 65 20 3d 20 30 78 30 2c 0d 0a 0d    None = 0x0,...
6840: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
6850: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
6860: 2f 2f 2f 20 54 68 69 73 20 76 61 6c 75 65 20 69  /// This value i
6870: 6e 64 69 63 61 74 65 73 20 74 68 61 74 20 74 68  ndicates that th
6880: 65 20 73 63 61 6e 20 6f 66 20 74 68 65 20 69 6e  e scan of the in
6890: 64 65 78 20 77 69 6c 6c 20 76 69 73 69 74 20 61  dex will visit a
68a0: 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d  t..        /// m
68b0: 6f 73 74 20 6f 6e 65 20 72 6f 77 2e 0d 0a 20 20  ost one row...  
68c0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
68d0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 53 63  ary>..        Sc
68e0: 61 6e 55 6e 69 71 75 65 20 3d 20 30 78 31 0d 0a  anUnique = 0x1..
68f0: 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72      }..    #endr
6900: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6950: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
6960: 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 49 6e  #region SQLiteIn
6970: 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 20 48 65  dexConstraint He
6980: 6c 70 65 72 20 43 6c 61 73 73 0d 0a 20 20 20 20  lper Class..    
6990: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
69a0: 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73     /// This clas
69b0: 73 20 72 65 70 72 65 73 65 6e 74 73 20 74 68 65  s represents the
69c0: 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f   native sqlite3_
69d0: 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74  index_constraint
69e0: 20 73 74 72 75 63 74 75 72 65 0d 0a 20 20 20 20   structure..    
69f0: 2f 2f 2f 20 66 72 6f 6d 20 74 68 65 20 53 51 4c  /// from the SQL
6a00: 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
6a10: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
6a20: 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69  mary>..    publi
6a30: 63 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53  c sealed class S
6a40: 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72  QLiteIndexConstr
6a50: 61 69 6e 74 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  aint..    {..   
6a60: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 6e 74       #region Int
6a70: 65 72 6e 61 6c 20 43 6f 6e 73 74 72 75 63 74 6f  ernal Constructo
6a80: 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  rs..        /// 
6a90: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
6aa0: 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74     /// Construct
6ab0: 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66  s an instance of
6ac0: 20 74 68 69 73 20 63 6c 61 73 73 20 75 73 69 6e   this class usin
6ad0: 67 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  g the specified 
6ae0: 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20  native..        
6af0: 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 69 6e 64 65  /// sqlite3_inde
6b00: 78 5f 63 6f 6e 73 74 72 61 69 6e 74 20 73 74 72  x_constraint str
6b10: 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ucture...       
6b20: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
6b30: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
6b40: 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 73 74 72  ram name="constr
6b50: 61 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20  aint">..        
6b60: 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 73  /// The native s
6b70: 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e  qlite3_index_con
6b80: 73 74 72 61 69 6e 74 20 73 74 72 75 63 74 75 72  straint structur
6b90: 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20 20  e to use...     
6ba0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
6bb0: 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61  .        interna
6bc0: 6c 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e  l SQLiteIndexCon
6bd0: 73 74 72 61 69 6e 74 28 0d 0a 20 20 20 20 20 20  straint(..      
6be0: 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69        UnsafeNati
6bf0: 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
6c00: 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69  3_index_constrai
6c10: 6e 74 20 63 6f 6e 73 74 72 61 69 6e 74 0d 0a 20  nt constraint.. 
6c20: 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
6c30: 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73            : this
6c40: 28 63 6f 6e 73 74 72 61 69 6e 74 2e 69 43 6f 6c  (constraint.iCol
6c50: 75 6d 6e 2c 20 63 6f 6e 73 74 72 61 69 6e 74 2e  umn, constraint.
6c60: 6f 70 2c 20 63 6f 6e 73 74 72 61 69 6e 74 2e 75  op, constraint.u
6c70: 73 61 62 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20  sable,..        
6c80: 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74             const
6c90: 72 61 69 6e 74 2e 69 54 65 72 6d 4f 66 66 73 65  raint.iTermOffse
6ca0: 74 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  t)..        {.. 
6cb0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
6cc0: 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
6cd0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
6ce0: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
6cf0: 20 20 20 20 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 2f 0d 0a 0d 0a 20 20  //////////....  
6d40: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
6d50: 69 76 61 74 65 20 43 6f 6e 73 74 72 75 63 74 6f  ivate Constructo
6d60: 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  rs..        /// 
6d70: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
6d80: 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74     /// Construct
6d90: 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66  s an instance of
6da0: 20 74 68 69 73 20 63 6c 61 73 73 20 75 73 69 6e   this class usin
6db0: 67 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  g the specified 
6dc0: 66 69 65 6c 64 0d 0a 20 20 20 20 20 20 20 20 2f  field..        /
6dd0: 2f 2f 20 76 61 6c 75 65 73 2e 0d 0a 20 20 20 20  // values...    
6de0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
6df0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
6e00: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 43 6f  <param name="iCo
6e10: 6c 75 6d 6e 22 3e 0d 0a 20 20 20 20 20 20 20 20  lumn">..        
6e20: 2f 2f 2f 20 43 6f 6c 75 6d 6e 20 6f 6e 20 6c 65  /// Column on le
6e30: 66 74 2d 68 61 6e 64 20 73 69 64 65 20 6f 66 20  ft-hand side of 
6e40: 63 6f 6e 73 74 72 61 69 6e 74 2e 0d 0a 20 20 20  constraint...   
6e50: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
6e60: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
6e70: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 70 22 3e  param name="op">
6e80: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f  ..        /// Co
6e90: 6e 73 74 72 61 69 6e 74 20 6f 70 65 72 61 74 6f  nstraint operato
6ea0: 72 20 28 3c 73 65 65 20 63 72 65 66 3d 22 53 51  r (<see cref="SQ
6eb0: 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61  LiteIndexConstra
6ec0: 69 6e 74 4f 70 22 20 2f 3e 29 2e 0d 0a 20 20 20  intOp" />)...   
6ed0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
6ee0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
6ef0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 75 73 61 62  param name="usab
6f00: 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  le">..        //
6f10: 2f 20 54 72 75 65 20 69 66 20 74 68 69 73 20 63  / True if this c
6f20: 6f 6e 73 74 72 61 69 6e 74 20 69 73 20 75 73 61  onstraint is usa
6f30: 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
6f40: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
6f50: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
6f60: 61 6d 65 3d 22 69 54 65 72 6d 4f 66 66 73 65 74  ame="iTermOffset
6f70: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
6f80: 55 73 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79 20  Used internally 
6f90: 2d 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  - <see cref="ISQ
6fa0: 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c  LiteManagedModul
6fb0: 65 2e 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 0d  e.BestIndex" />.
6fc0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 68 6f  .        /// sho
6fd0: 75 6c 64 20 69 67 6e 6f 72 65 2e 0d 0a 20 20 20  uld ignore...   
6fe0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
6ff0: 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
7000: 74 65 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f  te SQLiteIndexCo
7010: 6e 73 74 72 61 69 6e 74 28 0d 0a 20 20 20 20 20  nstraint(..     
7020: 20 20 20 20 20 20 20 69 6e 74 20 69 43 6f 6c 75         int iColu
7030: 6d 6e 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  mn,..           
7040: 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73   SQLiteIndexCons
7050: 74 72 61 69 6e 74 4f 70 20 6f 70 2c 0d 0a 20 20  traintOp op,..  
7060: 20 20 20 20 20 20 20 20 20 20 62 79 74 65 20 75            byte u
7070: 73 61 62 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20  sable,..        
7080: 20 20 20 20 69 6e 74 20 69 54 65 72 6d 4f 66 66      int iTermOff
7090: 73 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  set..           
70a0: 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
70b0: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
70c0: 69 43 6f 6c 75 6d 6e 20 3d 20 69 43 6f 6c 75 6d  iColumn = iColum
70d0: 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n;..            
70e0: 74 68 69 73 2e 6f 70 20 3d 20 6f 70 3b 0d 0a 20  this.op = op;.. 
70f0: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
7100: 75 73 61 62 6c 65 20 3d 20 75 73 61 62 6c 65 3b  usable = usable;
7110: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
7120: 69 73 2e 69 54 65 72 6d 4f 66 66 73 65 74 20 3d  is.iTermOffset =
7130: 20 69 54 65 72 6d 4f 66 66 73 65 74 3b 0d 0a 20   iTermOffset;.. 
7140: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
7150: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
7160: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
7170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
71a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
71b0: 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
71c0: 6e 20 50 75 62 6c 69 63 20 46 69 65 6c 64 73 0d  n Public Fields.
71d0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
71e0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
71f0: 2f 2f 2f 20 43 6f 6c 75 6d 6e 20 6f 6e 20 6c 65  /// Column on le
7200: 66 74 2d 68 61 6e 64 20 73 69 64 65 20 6f 66 20  ft-hand side of 
7210: 63 6f 6e 73 74 72 61 69 6e 74 2e 0d 0a 20 20 20  constraint...   
7220: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
7230: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ry>..        pub
7240: 6c 69 63 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b  lic int iColumn;
7250: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
7260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
72a0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
72b0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
72c0: 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 61       /// Constra
72d0: 69 6e 74 20 6f 70 65 72 61 74 6f 72 20 28 3c 73  int operator (<s
72e0: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49  ee cref="SQLiteI
72f0: 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 4f 70  ndexConstraintOp
7300: 22 20 2f 3e 29 2e 0d 0a 20 20 20 20 20 20 20 20  " />)...        
7310: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
7320: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53          public S
7330: 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72  QLiteIndexConstr
7340: 61 69 6e 74 4f 70 20 6f 70 3b 0d 0a 0d 0a 20 20  aintOp op;....  
7350: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
7360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
73a0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
73b0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
73c0: 2f 2f 20 54 72 75 65 20 69 66 20 74 68 69 73 20  // True if this 
73d0: 63 6f 6e 73 74 72 61 69 6e 74 20 69 73 20 75 73  constraint is us
73e0: 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  able...        /
73f0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
7400: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 79         public by
7410: 74 65 20 75 73 61 62 6c 65 3b 0d 0a 0d 0a 20 20  te usable;....  
7420: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
7430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
7470: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
7480: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
7490: 2f 2f 20 55 73 65 64 20 69 6e 74 65 72 6e 61 6c  // Used internal
74a0: 6c 79 20 2d 20 3c 73 65 65 20 63 72 65 66 3d 22  ly - <see cref="
74b0: 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f  ISQLiteManagedMo
74c0: 64 75 6c 65 2e 42 65 73 74 49 6e 64 65 78 22 20  dule.BestIndex" 
74d0: 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  />..        /// 
74e0: 73 68 6f 75 6c 64 20 69 67 6e 6f 72 65 2e 0d 0a  should ignore...
74f0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
7500: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
7510: 70 75 62 6c 69 63 20 69 6e 74 20 69 54 65 72 6d  public int iTerm
7520: 4f 66 66 73 65 74 3b 0d 0a 20 20 20 20 20 20 20  Offset;..       
7530: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20   #endregion..   
7540: 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69   }..    #endregi
7550: 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  on....    //////
7560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
75a0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65  /////....    #re
75b0: 67 69 6f 6e 20 53 51 4c 69 74 65 49 6e 64 65 78  gion SQLiteIndex
75c0: 4f 72 64 65 72 42 79 20 48 65 6c 70 65 72 20 43  OrderBy Helper C
75d0: 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  lass..    /// <s
75e0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
75f0: 20 54 68 69 73 20 63 6c 61 73 73 20 72 65 70 72   This class repr
7600: 65 73 65 6e 74 73 20 74 68 65 20 6e 61 74 69 76  esents the nativ
7610: 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  e sqlite3_index_
7620: 6f 72 64 65 72 62 79 20 73 74 72 75 63 74 75 72  orderby structur
7630: 65 20 66 72 6f 6d 0d 0a 20 20 20 20 2f 2f 2f 20  e from..    /// 
7640: 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
7650: 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 2f 2f  library...    //
7660: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
7670: 20 20 70 75 62 6c 69 63 20 73 65 61 6c 65 64 20    public sealed 
7680: 63 6c 61 73 73 20 53 51 4c 69 74 65 49 6e 64 65  class SQLiteInde
7690: 78 4f 72 64 65 72 42 79 0d 0a 20 20 20 20 7b 0d  xOrderBy..    {.
76a0: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
76b0: 20 49 6e 74 65 72 6e 61 6c 20 43 6f 6e 73 74 72   Internal Constr
76c0: 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20  uctors..        
76d0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
76e0: 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74         /// Const
76f0: 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63  ructs an instanc
7700: 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73 20  e of this class 
7710: 75 73 69 6e 67 20 74 68 65 20 73 70 65 63 69 66  using the specif
7720: 69 65 64 20 6e 61 74 69 76 65 0d 0a 20 20 20 20  ied native..    
7730: 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f      /// sqlite3_
7740: 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 20 73 74  index_orderby st
7750: 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  ructure...      
7760: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
7770: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
7780: 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 72 64 65 72  aram name="order
7790: 42 79 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  By">..        //
77a0: 2f 20 54 68 65 20 6e 61 74 69 76 65 20 73 71 6c  / The native sql
77b0: 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72  ite3_index_order
77c0: 62 79 20 73 74 72 75 63 74 75 72 65 20 74 6f 20  by structure to 
77d0: 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  use...        //
77e0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
77f0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c      internal SQL
7800: 69 74 65 49 6e 64 65 78 4f 72 64 65 72 42 79 28  iteIndexOrderBy(
7810: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e  ..            Un
7820: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
7830: 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  s.sqlite3_index_
7840: 6f 72 64 65 72 62 79 20 6f 72 64 65 72 42 79 0d  orderby orderBy.
7850: 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
7860: 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68              : th
7870: 69 73 28 6f 72 64 65 72 42 79 2e 69 43 6f 6c 75  is(orderBy.iColu
7880: 6d 6e 2c 20 6f 72 64 65 72 42 79 2e 64 65 73 63  mn, orderBy.desc
7890: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
78a0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20            // do 
78b0: 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20  nothing...      
78c0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
78d0: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
78e0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
78f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
7930: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69       #region Pri
7940: 76 61 74 65 20 43 6f 6e 73 74 72 75 63 74 6f 72  vate Constructor
7950: 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
7960: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
7970: 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73    /// Constructs
7980: 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20   an instance of 
7990: 74 68 69 73 20 63 6c 61 73 73 20 75 73 69 6e 67  this class using
79a0: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 66   the specified f
79b0: 69 65 6c 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ield..        //
79c0: 2f 20 76 61 6c 75 65 73 2e 0d 0a 20 20 20 20 20  / values...     
79d0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
79e0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
79f0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 43 6f 6c  param name="iCol
7a00: 75 6d 6e 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  umn">..        /
7a10: 2f 2f 20 43 6f 6c 75 6d 6e 20 6e 75 6d 62 65 72  // Column number
7a20: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
7a30: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
7a40: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
7a50: 3d 22 64 65 73 63 22 3e 0d 0a 20 20 20 20 20 20  ="desc">..      
7a60: 20 20 2f 2f 2f 20 54 72 75 65 20 66 6f 72 20 44    /// True for D
7a70: 45 53 43 2e 20 20 46 61 6c 73 65 20 66 6f 72 20  ESC.  False for 
7a80: 41 53 43 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ASC...        //
7a90: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
7aa0: 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69      private SQLi
7ab0: 74 65 49 6e 64 65 78 4f 72 64 65 72 42 79 28 0d  teIndexOrderBy(.
7ac0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
7ad0: 20 69 43 6f 6c 75 6d 6e 2c 0d 0a 20 20 20 20 20   iColumn,..     
7ae0: 20 20 20 20 20 20 20 62 79 74 65 20 64 65 73 63         byte desc
7af0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
7b00: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
7b10: 20 20 20 20 20 20 20 20 74 68 69 73 2e 69 43 6f          this.iCo
7b20: 6c 75 6d 6e 20 3d 20 69 43 6f 6c 75 6d 6e 3b 0d  lumn = iColumn;.
7b30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
7b40: 73 2e 64 65 73 63 20 3d 20 64 65 73 63 3b 0d 0a  s.desc = desc;..
7b50: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
7b60: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
7b70: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
7b80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
7bc0: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
7bd0: 6f 6e 20 50 75 62 6c 69 63 20 46 69 65 6c 64 73  on Public Fields
7be0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
7bf0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
7c00: 20 2f 2f 2f 20 43 6f 6c 75 6d 6e 20 6e 75 6d 62   /// Column numb
7c10: 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  er...        ///
7c20: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
7c30: 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
7c40: 69 43 6f 6c 75 6d 6e 3b 0d 0a 0d 0a 20 20 20 20  iColumn;....    
7c50: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
7c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
7ca0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
7cb0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
7cc0: 20 54 72 75 65 20 66 6f 72 20 44 45 53 43 2e 20   True for DESC. 
7cd0: 20 46 61 6c 73 65 20 66 6f 72 20 41 53 43 2e 0d   False for ASC..
7ce0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
7cf0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
7d00: 20 70 75 62 6c 69 63 20 62 79 74 65 20 64 65 73   public byte des
7d10: 63 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64  c;..        #end
7d20: 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20  region..    }.. 
7d30: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
7d40: 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
7d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d90: 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
7da0: 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74  SQLiteIndexConst
7db0: 72 61 69 6e 74 55 73 61 67 65 20 48 65 6c 70 65  raintUsage Helpe
7dc0: 72 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f  r Class..    ///
7dd0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
7de0: 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20 72  /// This class r
7df0: 65 70 72 65 73 65 6e 74 73 20 74 68 65 20 6e 61  epresents the na
7e00: 74 69 76 65 20 73 71 6c 69 74 65 33 5f 69 6e 64  tive sqlite3_ind
7e10: 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73  ex_constraint_us
7e20: 61 67 65 0d 0a 20 20 20 20 2f 2f 2f 20 73 74 72  age..    /// str
7e30: 75 63 74 75 72 65 20 66 72 6f 6d 20 74 68 65 20  ucture from the 
7e40: 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
7e50: 61 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ary...    /// </
7e60: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75  summary>..    pu
7e70: 62 6c 69 63 20 73 65 61 6c 65 64 20 63 6c 61 73  blic sealed clas
7e80: 73 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e  s SQLiteIndexCon
7e90: 73 74 72 61 69 6e 74 55 73 61 67 65 0d 0a 20 20  straintUsage..  
7ea0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65    {..        #re
7eb0: 67 69 6f 6e 20 49 6e 74 65 72 6e 61 6c 20 43 6f  gion Internal Co
7ec0: 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20  nstructors..    
7ed0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
7ee0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43  >..        /// C
7ef0: 6f 6e 73 74 72 75 63 74 73 20 61 20 64 65 66 61  onstructs a defa
7f00: 75 6c 74 20 69 6e 73 74 61 6e 63 65 20 6f 66 20  ult instance of 
7f10: 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20  this class...   
7f20: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
7f30: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ry>..        int
7f40: 65 72 6e 61 6c 20 53 51 4c 69 74 65 49 6e 64 65  ernal SQLiteInde
7f50: 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  xConstraintUsage
7f60: 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
7f70: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
7f80: 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
7f90: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
7fa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7fb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7fc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7fd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7fe0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
7ff0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
8000: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e  .        /// Con
8010: 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61  structs an insta
8020: 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73  nce of this clas
8030: 73 20 75 73 69 6e 67 20 74 68 65 20 73 70 65 63  s using the spec
8040: 69 66 69 65 64 20 6e 61 74 69 76 65 0d 0a 20 20  ified native..  
8050: 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65        /// sqlite
8060: 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69  3_index_constrai
8070: 6e 74 5f 75 73 61 67 65 20 73 74 72 75 63 74 75  nt_usage structu
8080: 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
8090: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
80a0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
80b0: 6e 61 6d 65 3d 22 63 6f 6e 73 74 72 61 69 6e 74  name="constraint
80c0: 55 73 61 67 65 22 3e 0d 0a 20 20 20 20 20 20 20  Usage">..       
80d0: 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
80e0: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
80f0: 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65 20 73  nstraint_usage s
8100: 74 72 75 63 74 75 72 65 20 74 6f 20 75 73 65 2e  tructure to use.
8110: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
8120: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
8130: 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 49  internal SQLiteI
8140: 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55 73  ndexConstraintUs
8150: 61 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  age(..          
8160: 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65    UnsafeNativeMe
8170: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e  thods.sqlite3_in
8180: 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75  dex_constraint_u
8190: 73 61 67 65 20 63 6f 6e 73 74 72 61 69 6e 74 55  sage constraintU
81a0: 73 61 67 65 0d 0a 20 20 20 20 20 20 20 20 20 20  sage..          
81b0: 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
81c0: 20 3a 20 74 68 69 73 28 63 6f 6e 73 74 72 61 69   : this(constrai
81d0: 6e 74 55 73 61 67 65 2e 61 72 67 76 49 6e 64 65  ntUsage.argvInde
81e0: 78 2c 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61  x, constraintUsa
81f0: 67 65 2e 6f 6d 69 74 29 0d 0a 20 20 20 20 20 20  ge.omit)..      
8200: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
8210: 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
8220: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
8230: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
8240: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
8250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8290: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
82a0: 69 6f 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73  ion Private Cons
82b0: 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20  tructors..      
82c0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
82d0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e  .        /// Con
82e0: 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61  structs an insta
82f0: 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73  nce of this clas
8300: 73 20 75 73 69 6e 67 20 74 68 65 20 73 70 65 63  s using the spec
8310: 69 66 69 65 64 20 66 69 65 6c 64 0d 0a 20 20 20  ified field..   
8320: 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 73 2e       /// values.
8330: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
8340: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
8350: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
8360: 65 3d 22 61 72 67 76 49 6e 64 65 78 22 3e 0d 0a  e="argvIndex">..
8370: 20 20 20 20 20 20 20 20 2f 2f 2f 20 49 66 20 67          /// If g
8380: 72 65 61 74 65 72 20 74 68 61 6e 20 30 2c 20 63  reater than 0, c
8390: 6f 6e 73 74 72 61 69 6e 74 20 69 73 20 70 61 72  onstraint is par
83a0: 74 20 6f 66 20 61 72 67 76 20 74 6f 20 78 46 69  t of argv to xFi
83b0: 6c 74 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f  lter...        /
83c0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
83d0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
83e0: 6e 61 6d 65 3d 22 6f 6d 69 74 22 3e 0d 0a 20 20  name="omit">..  
83f0: 20 20 20 20 20 20 2f 2f 2f 20 44 6f 20 6e 6f 74        /// Do not
8400: 20 63 6f 64 65 20 61 20 74 65 73 74 20 66 6f 72   code a test for
8410: 20 74 68 69 73 20 63 6f 6e 73 74 72 61 69 6e 74   this constraint
8420: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
8430: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
8440: 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 49   private SQLiteI
8450: 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55 73  ndexConstraintUs
8460: 61 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  age(..          
8470: 20 20 69 6e 74 20 61 72 67 76 49 6e 64 65 78 2c    int argvIndex,
8480: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 79  ..            by
8490: 74 65 20 6f 6d 69 74 0d 0a 20 20 20 20 20 20 20  te omit..       
84a0: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
84b0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  {..            t
84c0: 68 69 73 2e 61 72 67 76 49 6e 64 65 78 20 3d 20  his.argvIndex = 
84d0: 61 72 67 76 49 6e 64 65 78 3b 0d 0a 20 20 20 20  argvIndex;..    
84e0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f 6d 69          this.omi
84f0: 74 20 3d 20 6f 6d 69 74 3b 0d 0a 20 20 20 20 20  t = omit;..     
8500: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
8510: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
8520: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
8530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8550: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
8570: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
8580: 75 62 6c 69 63 20 46 69 65 6c 64 73 0d 0a 20 20  ublic Fields..  
8590: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
85a0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
85b0: 20 49 66 20 67 72 65 61 74 65 72 20 74 68 61 6e   If greater than
85c0: 20 30 2c 20 63 6f 6e 73 74 72 61 69 6e 74 20 69   0, constraint i
85d0: 73 20 70 61 72 74 20 6f 66 20 61 72 67 76 20 74  s part of argv t
85e0: 6f 20 78 46 69 6c 74 65 72 2e 0d 0a 20 20 20 20  o xFilter...    
85f0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
8600: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
8610: 69 63 20 69 6e 74 20 61 72 67 76 49 6e 64 65 78  ic int argvIndex
8620: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
8630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8670: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
8680: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
8690: 20 20 20 20 20 20 20 2f 2f 2f 20 44 6f 20 6e 6f         /// Do no
86a0: 74 20 63 6f 64 65 20 61 20 74 65 73 74 20 66 6f  t code a test fo
86b0: 72 20 74 68 69 73 20 63 6f 6e 73 74 72 61 69 6e  r this constrain
86c0: 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  t...        /// 
86d0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
86e0: 20 20 20 20 70 75 62 6c 69 63 20 62 79 74 65 20      public byte 
86f0: 6f 6d 69 74 3b 0d 0a 20 20 20 20 20 20 20 20 23  omit;..        #
8700: 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d  endregion..    }
8710: 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
8720: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
8730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8770: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69  ///....    #regi
8780: 6f 6e 20 53 51 4c 69 74 65 49 6e 64 65 78 49 6e  on SQLiteIndexIn
8790: 70 75 74 73 20 48 65 6c 70 65 72 20 43 6c 61 73  puts Helper Clas
87a0: 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  s..    /// <summ
87b0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
87c0: 69 73 20 63 6c 61 73 73 20 72 65 70 72 65 73 65  is class represe
87d0: 6e 74 73 20 74 68 65 20 76 61 72 69 6f 75 73 20  nts the various 
87e0: 69 6e 70 75 74 73 20 70 72 6f 76 69 64 65 64 20  inputs provided 
87f0: 62 79 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  by the SQLite co
8800: 72 65 0d 0a 20 20 20 20 2f 2f 2f 20 6c 69 62 72  re..    /// libr
8810: 61 72 79 20 74 6f 20 74 68 65 20 3c 73 65 65 20  ary to the <see 
8820: 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e  cref="ISQLiteMan
8830: 61 67 65 64 4d 6f 64 75 6c 65 2e 42 65 73 74 49  agedModule.BestI
8840: 6e 64 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  ndex" /> method.
8850: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
8860: 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63  ary>..    public
8870: 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51   sealed class SQ
8880: 4c 69 74 65 49 6e 64 65 78 49 6e 70 75 74 73 0d  LiteIndexInputs.
8890: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
88a0: 23 72 65 67 69 6f 6e 20 49 6e 74 65 72 6e 61 6c  #region Internal
88b0: 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20   Constructors.. 
88c0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
88d0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
88e0: 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20  / Constructs an 
88f0: 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73  instance of this
8900: 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20   class...       
8910: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
8920: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
8930: 72 61 6d 20 6e 61 6d 65 3d 22 6e 43 6f 6e 73 74  ram name="nConst
8940: 72 61 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20  raint">..       
8950: 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20   /// The number 
8960: 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  of <see cref="SQ
8970: 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61  LiteIndexConstra
8980: 69 6e 74 22 20 2f 3e 20 69 6e 73 74 61 6e 63 65  int" /> instance
8990: 73 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f  s to..        //
89a0: 2f 20 70 72 65 2d 61 6c 6c 6f 63 61 74 65 20 73  / pre-allocate s
89b0: 70 61 63 65 20 66 6f 72 2e 0d 0a 20 20 20 20 20  pace for...     
89c0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
89d0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
89e0: 72 61 6d 20 6e 61 6d 65 3d 22 6e 4f 72 64 65 72  ram name="nOrder
89f0: 42 79 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  By">..        //
8a00: 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  / The number of 
8a10: 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
8a20: 65 49 6e 64 65 78 4f 72 64 65 72 42 79 22 20 2f  eIndexOrderBy" /
8a30: 3e 20 69 6e 73 74 61 6e 63 65 73 20 74 6f 0d 0a  > instances to..
8a40: 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 72 65 2d          /// pre-
8a50: 61 6c 6c 6f 63 61 74 65 20 73 70 61 63 65 20 66  allocate space f
8a60: 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  or...        ///
8a70: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
8a80: 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69     internal SQLi
8a90: 74 65 49 6e 64 65 78 49 6e 70 75 74 73 28 69 6e  teIndexInputs(in
8aa0: 74 20 6e 43 6f 6e 73 74 72 61 69 6e 74 2c 20 69  t nConstraint, i
8ab0: 6e 74 20 6e 4f 72 64 65 72 42 79 29 0d 0a 20 20  nt nOrderBy)..  
8ac0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
8ad0: 20 20 20 20 20 63 6f 6e 73 74 72 61 69 6e 74 73       constraints
8ae0: 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 49 6e 64   = new SQLiteInd
8af0: 65 78 43 6f 6e 73 74 72 61 69 6e 74 5b 6e 43 6f  exConstraint[nCo
8b00: 6e 73 74 72 61 69 6e 74 5d 3b 0d 0a 20 20 20 20  nstraint];..    
8b10: 20 20 20 20 20 20 20 20 6f 72 64 65 72 42 79 73          orderBys
8b20: 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 49 6e 64   = new SQLiteInd
8b30: 65 78 4f 72 64 65 72 42 79 5b 6e 4f 72 64 65 72  exOrderBy[nOrder
8b40: 42 79 5d 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  By];..        }.
8b50: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
8b60: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
8b70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b80: 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
8bc0: 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63    #region Public
8bd0: 20 50 72 6f 70 65 72 74 69 65 73 0d 0a 20 20 20   Properties..   
8be0: 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c       private SQL
8bf0: 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69  iteIndexConstrai
8c00: 6e 74 5b 5d 20 63 6f 6e 73 74 72 61 69 6e 74 73  nt[] constraints
8c10: 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ;..        /// <
8c20: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
8c30: 20 20 2f 2f 2f 20 41 6e 20 61 72 72 61 79 20 6f    /// An array o
8c40: 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  f <see cref="SQL
8c50: 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69  iteIndexConstrai
8c60: 6e 74 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  nt" /> object in
8c70: 73 74 61 6e 63 65 73 2c 0d 0a 20 20 20 20 20 20  stances,..      
8c80: 20 20 2f 2f 2f 20 65 61 63 68 20 63 6f 6e 74 61    /// each conta
8c90: 69 6e 69 6e 67 20 69 6e 66 6f 72 6d 61 74 69 6f  ining informatio
8ca0: 6e 20 73 75 70 70 6c 69 65 64 20 62 79 20 74 68  n supplied by th
8cb0: 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69  e SQLite core li
8cc0: 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20  brary...        
8cd0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
8ce0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53          public S
8cf0: 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72  QLiteIndexConstr
8d00: 61 69 6e 74 5b 5d 20 43 6f 6e 73 74 72 61 69 6e  aint[] Constrain
8d10: 74 73 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ts..        {.. 
8d20: 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
8d30: 20 72 65 74 75 72 6e 20 63 6f 6e 73 74 72 61 69   return constrai
8d40: 6e 74 73 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  nts; }..        
8d50: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
8d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8d80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8d90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8da0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
8db0: 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 49 6e  private SQLiteIn
8dc0: 64 65 78 4f 72 64 65 72 42 79 5b 5d 20 6f 72 64  dexOrderBy[] ord
8dd0: 65 72 42 79 73 3b 0d 0a 20 20 20 20 20 20 20 20  erBys;..        
8de0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
8df0: 20 20 20 20 20 20 20 2f 2f 2f 20 41 6e 20 61 72         /// An ar
8e00: 72 61 79 20 6f 66 20 3c 73 65 65 20 63 72 65 66  ray of <see cref
8e10: 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64  ="SQLiteIndexOrd
8e20: 65 72 42 79 22 20 2f 3e 20 6f 62 6a 65 63 74 20  erBy" /> object 
8e30: 69 6e 73 74 61 6e 63 65 73 2c 0d 0a 20 20 20 20  instances,..    
8e40: 20 20 20 20 2f 2f 2f 20 65 61 63 68 20 63 6f 6e      /// each con
8e50: 74 61 69 6e 69 6e 67 20 69 6e 66 6f 72 6d 61 74  taining informat
8e60: 69 6f 6e 20 73 75 70 70 6c 69 65 64 20 62 79 20  ion supplied by 
8e70: 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
8e80: 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20  library...      
8e90: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
8ea0: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
8eb0: 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65   SQLiteIndexOrde
8ec0: 72 42 79 5b 5d 20 4f 72 64 65 72 42 79 73 0d 0a  rBy[] OrderBys..
8ed0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
8ee0: 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
8ef0: 75 72 6e 20 6f 72 64 65 72 42 79 73 3b 20 7d 0d  urn orderBys; }.
8f00: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
8f10: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
8f20: 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72      }..    #endr
8f30: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
8f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f80: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
8f90: 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 49 6e  #region SQLiteIn
8fa0: 64 65 78 4f 75 74 70 75 74 73 20 48 65 6c 70 65  dexOutputs Helpe
8fb0: 72 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f  r Class..    ///
8fc0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
8fd0: 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20 72  /// This class r
8fe0: 65 70 72 65 73 65 6e 74 73 20 74 68 65 20 76 61  epresents the va
8ff0: 72 69 6f 75 73 20 6f 75 74 70 75 74 73 20 70 72  rious outputs pr
9000: 6f 76 69 64 65 64 20 74 6f 20 74 68 65 20 53 51  ovided to the SQ
9010: 4c 69 74 65 20 63 6f 72 65 0d 0a 20 20 20 20 2f  Lite core..    /
9020: 2f 2f 20 6c 69 62 72 61 72 79 20 62 79 20 74 68  // library by th
9030: 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
9040: 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c  LiteManagedModul
9050: 65 2e 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 20  e.BestIndex" /> 
9060: 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f 2f  method...    ///
9070: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
9080: 20 70 75 62 6c 69 63 20 73 65 61 6c 65 64 20 63   public sealed c
9090: 6c 61 73 73 20 53 51 4c 69 74 65 49 6e 64 65 78  lass SQLiteIndex
90a0: 4f 75 74 70 75 74 73 0d 0a 20 20 20 20 7b 0d 0a  Outputs..    {..
90b0: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
90c0: 49 6e 74 65 72 6e 61 6c 20 43 6f 6e 73 74 72 75  Internal Constru
90d0: 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 2f  ctors..        /
90e0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
90f0: 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72        /// Constr
9100: 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63 65  ucts an instance
9110: 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73 2e 0d   of this class..
9120: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
9130: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
9140: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
9150: 3d 22 6e 43 6f 6e 73 74 72 61 69 6e 74 22 3e 0d  ="nConstraint">.
9160: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
9170: 20 6e 75 6d 62 65 72 20 6f 66 20 3c 73 65 65 20   number of <see 
9180: 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65  cref="SQLiteInde
9190: 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  xConstraintUsage
91a0: 22 20 2f 3e 20 69 6e 73 74 61 6e 63 65 73 0d 0a  " /> instances..
91b0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20 70          /// to p
91c0: 72 65 2d 61 6c 6c 6f 63 61 74 65 20 73 70 61 63  re-allocate spac
91d0: 65 20 66 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20  e for...        
91e0: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
91f0: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53        internal S
9200: 51 4c 69 74 65 49 6e 64 65 78 4f 75 74 70 75 74  QLiteIndexOutput
9210: 73 28 69 6e 74 20 6e 43 6f 6e 73 74 72 61 69 6e  s(int nConstrain
9220: 74 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  t)..        {.. 
9230: 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74             const
9240: 72 61 69 6e 74 55 73 61 67 65 73 20 3d 20 6e 65  raintUsages = ne
9250: 77 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e  w SQLiteIndexCon
9260: 73 74 72 61 69 6e 74 55 73 61 67 65 5b 6e 43 6f  straintUsage[nCo
9270: 6e 73 74 72 61 69 6e 74 5d 3b 0d 0a 0d 0a 20 20  nstraint];....  
9280: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
9290: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 42 55 47            // BUG
92a0: 46 49 58 3a 20 43 72 65 61 74 65 20 74 68 65 20  FIX: Create the 
92b0: 5b 65 6d 70 74 79 5d 20 63 6f 6e 73 74 72 61 69  [empty] constrai
92c0: 6e 74 20 75 73 61 67 65 73 20 6e 6f 77 20 73 6f  nt usages now so
92d0: 20 74 68 65 79 20 63 61 6e 20 62 65 0d 0a 20 20   they can be..  
92e0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
92f0: 20 20 20 20 20 75 73 65 64 20 62 79 20 74 68 65       used by the
9300: 20 78 42 65 73 74 49 6e 64 65 78 20 63 61 6c 6c   xBestIndex call
9310: 62 61 63 6b 2e 0d 0a 20 20 20 20 20 20 20 20 20  back...         
9320: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
9330: 20 20 20 66 6f 72 20 28 69 6e 74 20 69 43 6f 6e     for (int iCon
9340: 73 74 72 61 69 6e 74 20 3d 20 30 3b 20 69 43 6f  straint = 0; iCo
9350: 6e 73 74 72 61 69 6e 74 20 3c 20 6e 43 6f 6e 73  nstraint < nCons
9360: 74 72 61 69 6e 74 3b 20 69 43 6f 6e 73 74 72 61  traint; iConstra
9370: 69 6e 74 2b 2b 29 0d 0a 20 20 20 20 20 20 20 20  int++)..        
9380: 20 20 20 20 20 20 20 20 63 6f 6e 73 74 72 61 69          constrai
9390: 6e 74 55 73 61 67 65 73 5b 69 43 6f 6e 73 74 72  ntUsages[iConstr
93a0: 61 69 6e 74 5d 20 3d 20 6e 65 77 20 53 51 4c 69  aint] = new SQLi
93b0: 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
93c0: 74 55 73 61 67 65 28 29 3b 0d 0a 20 20 20 20 20  tUsage();..     
93d0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
93e0: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
93f0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
9400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
9440: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
9450: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
9460: 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20  / Determines if 
9470: 74 68 65 20 6e 61 74 69 76 65 20 65 73 74 69 6d  the native estim
9480: 61 74 65 64 52 6f 77 73 20 66 69 65 6c 64 20 63  atedRows field c
9490: 61 6e 20 62 65 20 75 73 65 64 2c 20 62 61 73 65  an be used, base
94a0: 64 20 6f 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  d on..        //
94b0: 2f 20 74 68 65 20 61 76 61 69 6c 61 62 6c 65 20  / the available 
94c0: 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 53  version of the S
94d0: 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
94e0: 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry...        ///
94f0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
9500: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
9510: 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
9520: 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20  Non-zero if the 
9530: 3c 73 65 65 20 63 72 65 66 3d 22 45 73 74 69 6d  <see cref="Estim
9540: 61 74 65 64 52 6f 77 73 22 20 2f 3e 20 70 72 6f  atedRows" /> pro
9550: 70 65 72 74 79 20 69 73 20 73 75 70 70 6f 72 74  perty is support
9560: 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
9570: 62 79 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  by the SQLite co
9580: 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  re library...   
9590: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
95a0: 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ns>..        pub
95b0: 6c 69 63 20 62 6f 6f 6c 20 43 61 6e 55 73 65 45  lic bool CanUseE
95c0: 73 74 69 6d 61 74 65 64 52 6f 77 73 28 29 0d 0a  stimatedRows()..
95d0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
95e0: 20 20 20 20 20 20 20 69 66 20 28 55 6e 73 61 66         if (Unsaf
95f0: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
9600: 71 6c 69 74 65 33 5f 6c 69 62 76 65 72 73 69 6f  qlite3_libversio
9610: 6e 5f 6e 75 6d 62 65 72 28 29 20 3e 3d 20 33 30  n_number() >= 30
9620: 30 38 30 30 32 29 0d 0a 20 20 20 20 20 20 20 20  08002)..        
9630: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
9640: 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  rue;....        
9650: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
9660: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
9670: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
9680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
96a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
96b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
96c0: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
96d0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
96e0: 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73    /// Determines
96f0: 20 69 66 20 74 68 65 20 6e 61 74 69 76 65 20 66   if the native f
9700: 6c 61 67 73 20 66 69 65 6c 64 20 63 61 6e 20 62  lags field can b
9710: 65 20 75 73 65 64 2c 20 62 61 73 65 64 20 6f 6e  e used, based on
9720: 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
9730: 2f 20 61 76 61 69 6c 61 62 6c 65 20 76 65 72 73  / available vers
9740: 69 6f 6e 20 6f 66 20 74 68 65 20 53 51 4c 69 74  ion of the SQLit
9750: 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d  e core library..
9760: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
9770: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
9780: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
9790: 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d          /// Non-
97a0: 7a 65 72 6f 20 69 66 20 74 68 65 20 3c 73 65 65  zero if the <see
97b0: 20 63 72 65 66 3d 22 49 6e 64 65 78 46 6c 61 67   cref="IndexFlag
97c0: 73 22 20 2f 3e 20 70 72 6f 70 65 72 74 79 20 69  s" /> property i
97d0: 73 20 73 75 70 70 6f 72 74 65 64 20 62 79 0d 0a  s supported by..
97e0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20          /// the 
97f0: 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
9800: 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary...        //
9810: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
9820: 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f        public boo
9830: 6c 20 43 61 6e 55 73 65 49 6e 64 65 78 46 6c 61  l CanUseIndexFla
9840: 67 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  gs()..        {.
9850: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
9860: 28 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74  (UnsafeNativeMet
9870: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6c 69 62  hods.sqlite3_lib
9880: 76 65 72 73 69 6f 6e 5f 6e 75 6d 62 65 72 28 29  version_number()
9890: 20 3e 3d 20 33 30 30 39 30 30 30 29 0d 0a 20 20   >= 3009000)..  
98a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
98b0: 74 75 72 6e 20 74 72 75 65 3b 0d 0a 0d 0a 20 20  turn true;....  
98c0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
98d0: 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
98e0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f  ////////////////
9930: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
9940: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
9950: 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65          /// Dete
9960: 72 6d 69 6e 65 73 20 69 66 20 74 68 65 20 6e 61  rmines if the na
9970: 74 69 76 65 20 66 6c 61 67 73 20 66 69 65 6c 64  tive flags field
9980: 20 63 61 6e 20 62 65 20 75 73 65 64 2c 20 62 61   can be used, ba
9990: 73 65 64 20 6f 6e 20 74 68 65 0d 0a 20 20 20 20  sed on the..    
99a0: 20 20 20 20 2f 2f 2f 20 61 76 61 69 6c 61 62 6c      /// availabl
99b0: 65 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65  e version of the
99c0: 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62   SQLite core lib
99d0: 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f  rary...        /
99e0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
99f0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
9a00: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
9a10: 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68  / Non-zero if th
9a20: 65 20 3c 73 65 65 20 63 72 65 66 3d 22 43 6f 6c  e <see cref="Col
9a30: 75 6d 6e 73 55 73 65 64 22 20 2f 3e 20 70 72 6f  umnsUsed" /> pro
9a40: 70 65 72 74 79 20 69 73 20 73 75 70 70 6f 72 74  perty is support
9a50: 65 64 20 62 79 0d 0a 20 20 20 20 20 20 20 20 2f  ed by..        /
9a60: 2f 2f 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  // the SQLite co
9a70: 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  re library...   
9a80: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
9a90: 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ns>..        pub
9aa0: 6c 69 63 20 62 6f 6f 6c 20 43 61 6e 55 73 65 43  lic bool CanUseC
9ab0: 6f 6c 75 6d 6e 73 55 73 65 64 28 29 0d 0a 20 20  olumnsUsed()..  
9ac0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
9ad0: 20 20 20 20 20 69 66 20 28 55 6e 73 61 66 65 4e       if (UnsafeN
9ae0: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
9af0: 69 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 5f  ite3_libversion_
9b00: 6e 75 6d 62 65 72 28 29 20 3e 3d 20 33 30 31 30  number() >= 3010
9b10: 30 30 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20  000)..          
9b20: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
9b30: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
9b40: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
9b50: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
9b60: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
9b70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9b80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
9bb0: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
9bc0: 20 50 75 62 6c 69 63 20 50 72 6f 70 65 72 74 69   Public Properti
9bd0: 65 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  es..        priv
9be0: 61 74 65 20 53 51 4c 69 74 65 49 6e 64 65 78 43  ate SQLiteIndexC
9bf0: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 5b 5d  onstraintUsage[]
9c00: 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65   constraintUsage
9c10: 73 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s;..        /// 
9c20: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
9c30: 20 20 20 2f 2f 2f 20 41 6e 20 61 72 72 61 79 20     /// An array 
9c40: 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  of <see cref="SQ
9c50: 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61  LiteIndexConstra
9c60: 69 6e 74 55 73 61 67 65 22 20 2f 3e 20 6f 62 6a  intUsage" /> obj
9c70: 65 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ect..        ///
9c80: 20 69 6e 73 74 61 6e 63 65 73 2c 20 65 61 63 68   instances, each
9c90: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 69 6e 66 6f   containing info
9ca0: 72 6d 61 74 69 6f 6e 20 74 6f 20 62 65 20 73 75  rmation to be su
9cb0: 70 70 6c 69 65 64 20 74 6f 20 74 68 65 20 53 51  pplied to the SQ
9cc0: 4c 69 74 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  Lite..        //
9cd0: 2f 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d  / core library..
9ce0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
9cf0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
9d00: 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 49 6e   public SQLiteIn
9d10: 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  dexConstraintUsa
9d20: 67 65 5b 5d 20 43 6f 6e 73 74 72 61 69 6e 74 55  ge[] ConstraintU
9d30: 73 61 67 65 73 0d 0a 20 20 20 20 20 20 20 20 7b  sages..        {
9d40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
9d50: 74 20 7b 20 72 65 74 75 72 6e 20 63 6f 6e 73 74  t { return const
9d60: 72 61 69 6e 74 55 73 61 67 65 73 3b 20 7d 0d 0a  raintUsages; }..
9d70: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
9d80: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
9d90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9db0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
9dd0: 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
9de0: 69 6e 74 20 69 6e 64 65 78 4e 75 6d 62 65 72 3b  int indexNumber;
9df0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
9e00: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
9e10: 20 2f 2f 2f 20 4e 75 6d 62 65 72 20 75 73 65 64   /// Number used
9e20: 20 74 6f 20 68 65 6c 70 20 69 64 65 6e 74 69 66   to help identif
9e30: 79 20 74 68 65 20 73 65 6c 65 63 74 65 64 20 69  y the selected i
9e40: 6e 64 65 78 2e 20 20 54 68 69 73 20 76 61 6c 75  ndex.  This valu
9e50: 65 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20  e will..        
9e60: 2f 2f 2f 20 6c 61 74 65 72 20 62 65 20 70 72 6f  /// later be pro
9e70: 76 69 64 65 64 20 74 6f 20 74 68 65 20 3c 73 65  vided to the <se
9e80: 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d  e cref="ISQLiteM
9e90: 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 46 69 6c  anagedModule.Fil
9ea0: 74 65 72 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20  ter" />..       
9eb0: 20 2f 2f 2f 20 6d 65 74 68 6f 64 2e 0d 0a 20 20   /// method...  
9ec0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
9ed0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
9ee0: 62 6c 69 63 20 69 6e 74 20 49 6e 64 65 78 4e 75  blic int IndexNu
9ef0: 6d 62 65 72 0d 0a 20 20 20 20 20 20 20 20 7b 0d  mber..        {.
9f00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
9f10: 20 7b 20 72 65 74 75 72 6e 20 69 6e 64 65 78 4e   { return indexN
9f20: 75 6d 62 65 72 3b 20 7d 0d 0a 20 20 20 20 20 20  umber; }..      
9f30: 20 20 20 20 20 20 73 65 74 20 7b 20 69 6e 64 65        set { inde
9f40: 78 4e 75 6d 62 65 72 20 3d 20 76 61 6c 75 65 3b  xNumber = value;
9f50: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
9f60: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
9f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9fa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9fb0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
9fc0: 61 74 65 20 73 74 72 69 6e 67 20 69 6e 64 65 78  ate string index
9fd0: 53 74 72 69 6e 67 3b 0d 0a 20 20 20 20 20 20 20  String;..       
9fe0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
9ff0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 74 72 69          /// Stri
a000: 6e 67 20 75 73 65 64 20 74 6f 20 68 65 6c 70 20  ng used to help 
a010: 69 64 65 6e 74 69 66 79 20 74 68 65 20 73 65 6c  identify the sel
a020: 65 63 74 65 64 20 69 6e 64 65 78 2e 20 20 54 68  ected index.  Th
a030: 69 73 20 76 61 6c 75 65 20 77 69 6c 6c 0d 0a 20  is value will.. 
a040: 20 20 20 20 20 20 20 2f 2f 2f 20 6c 61 74 65 72         /// later
a050: 20 62 65 20 70 72 6f 76 69 64 65 64 20 74 6f 20   be provided to 
a060: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
a070: 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64  SQLiteManagedMod
a080: 75 6c 65 2e 46 69 6c 74 65 72 22 20 2f 3e 0d 0a  ule.Filter" />..
a090: 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68          /// meth
a0a0: 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  od...        ///
a0b0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
a0c0: 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69       public stri
a0d0: 6e 67 20 49 6e 64 65 78 53 74 72 69 6e 67 0d 0a  ng IndexString..
a0e0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
a0f0: 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
a100: 75 72 6e 20 69 6e 64 65 78 53 74 72 69 6e 67 3b  urn indexString;
a110: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
a120: 73 65 74 20 7b 20 69 6e 64 65 78 53 74 72 69 6e  set { indexStrin
a130: 67 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20  g = value; }..  
a140: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
a150: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
a160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
a1a0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 69 6e        private in
a1b0: 74 20 6e 65 65 64 54 6f 46 72 65 65 49 6e 64 65  t needToFreeInde
a1c0: 78 53 74 72 69 6e 67 3b 0d 0a 20 20 20 20 20 20  xString;..      
a1d0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
a1e0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  .        /// Non
a1f0: 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 69 6e 64  -zero if the ind
a200: 65 78 20 73 74 72 69 6e 67 20 6d 75 73 74 20 62  ex string must b
a210: 65 20 66 72 65 65 64 20 62 79 20 74 68 65 20 53  e freed by the S
a220: 51 4c 69 74 65 20 63 6f 72 65 0d 0a 20 20 20 20  QLite core..    
a230: 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79 2e      /// library.
a240: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
a250: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
a260: 20 20 70 75 62 6c 69 63 20 69 6e 74 20 4e 65 65    public int Nee
a270: 64 54 6f 46 72 65 65 49 6e 64 65 78 53 74 72 69  dToFreeIndexStri
a280: 6e 67 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ng..        {.. 
a290: 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
a2a0: 20 72 65 74 75 72 6e 20 6e 65 65 64 54 6f 46 72   return needToFr
a2b0: 65 65 49 6e 64 65 78 53 74 72 69 6e 67 3b 20 7d  eeIndexString; }
a2c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65  ..            se
a2d0: 74 20 7b 20 6e 65 65 64 54 6f 46 72 65 65 49 6e  t { needToFreeIn
a2e0: 64 65 78 53 74 72 69 6e 67 20 3d 20 76 61 6c 75  dexString = valu
a2f0: 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d  e; }..        }.
a300: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
a310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a350: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
a360: 69 76 61 74 65 20 69 6e 74 20 6f 72 64 65 72 42  ivate int orderB
a370: 79 43 6f 6e 73 75 6d 65 64 3b 0d 0a 20 20 20 20  yConsumed;..    
a380: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
a390: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
a3a0: 72 75 65 20 69 66 20 6f 75 74 70 75 74 20 69 73  rue if output is
a3b0: 20 61 6c 72 65 61 64 79 20 6f 72 64 65 72 65 64   already ordered
a3c0: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
a3d0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
a3e0: 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 4f 72     public int Or
a3f0: 64 65 72 42 79 43 6f 6e 73 75 6d 65 64 0d 0a 20  derByConsumed.. 
a400: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
a410: 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75        get { retu
a420: 72 6e 20 6f 72 64 65 72 42 79 43 6f 6e 73 75 6d  rn orderByConsum
a430: 65 64 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  ed; }..         
a440: 20 20 20 73 65 74 20 7b 20 6f 72 64 65 72 42 79     set { orderBy
a450: 43 6f 6e 73 75 6d 65 64 20 3d 20 76 61 6c 75 65  Consumed = value
a460: 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ; }..        }..
a470: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
a480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a4a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a4b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a4c0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  /....        pri
a4d0: 76 61 74 65 20 64 6f 75 62 6c 65 3f 20 65 73 74  vate double? est
a4e0: 69 6d 61 74 65 64 43 6f 73 74 3b 0d 0a 20 20 20  imatedCost;..   
a4f0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
a500: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
a510: 45 73 74 69 6d 61 74 65 64 20 63 6f 73 74 20 6f  Estimated cost o
a520: 66 20 75 73 69 6e 67 20 74 68 69 73 20 69 6e 64  f using this ind
a530: 65 78 2e 20 20 55 73 69 6e 67 20 61 20 6e 75 6c  ex.  Using a nul
a540: 6c 20 76 61 6c 75 65 20 68 65 72 65 0d 0a 20 20  l value here..  
a550: 20 20 20 20 20 20 2f 2f 2f 20 69 6e 64 69 63 61        /// indica
a560: 74 65 73 20 74 68 61 74 20 61 20 64 65 66 61 75  tes that a defau
a570: 6c 74 20 65 73 74 69 6d 61 74 65 64 20 63 6f 73  lt estimated cos
a580: 74 20 76 61 6c 75 65 20 73 68 6f 75 6c 64 20 62  t value should b
a590: 65 20 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 20  e used...       
a5a0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
a5b0: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
a5c0: 64 6f 75 62 6c 65 3f 20 45 73 74 69 6d 61 74 65  double? Estimate
a5d0: 64 43 6f 73 74 0d 0a 20 20 20 20 20 20 20 20 7b  dCost..        {
a5e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
a5f0: 74 20 7b 20 72 65 74 75 72 6e 20 65 73 74 69 6d  t { return estim
a600: 61 74 65 64 43 6f 73 74 3b 20 7d 0d 0a 20 20 20  atedCost; }..   
a610: 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 65           set { e
a620: 73 74 69 6d 61 74 65 64 43 6f 73 74 20 3d 20 76  stimatedCost = v
a630: 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20  alue; }..       
a640: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
a650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a690: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
a6a0: 20 70 72 69 76 61 74 65 20 6c 6f 6e 67 3f 20 65   private long? e
a6b0: 73 74 69 6d 61 74 65 64 52 6f 77 73 3b 0d 0a 20  stimatedRows;.. 
a6c0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
a6d0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
a6e0: 2f 20 45 73 74 69 6d 61 74 65 64 20 6e 75 6d 62  / Estimated numb
a6f0: 65 72 20 6f 66 20 72 6f 77 73 20 72 65 74 75 72  er of rows retur
a700: 6e 65 64 2e 20 20 55 73 69 6e 67 20 61 20 6e 75  ned.  Using a nu
a710: 6c 6c 20 76 61 6c 75 65 20 68 65 72 65 0d 0a 20  ll value here.. 
a720: 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 64 69 63         /// indic
a730: 61 74 65 73 20 74 68 61 74 20 61 20 64 65 66 61  ates that a defa
a740: 75 6c 74 20 65 73 74 69 6d 61 74 65 64 20 72 6f  ult estimated ro
a750: 77 73 20 76 61 6c 75 65 20 73 68 6f 75 6c 64 20  ws value should 
a760: 62 65 20 75 73 65 64 2e 0d 0a 20 20 20 20 20 20  be used...      
a770: 20 20 2f 2f 2f 20 54 68 69 73 20 70 72 6f 70 65    /// This prope
a780: 72 74 79 20 68 61 73 20 6e 6f 20 65 66 66 65 63  rty has no effec
a790: 74 20 69 66 20 74 68 65 20 53 51 4c 69 74 65 20  t if the SQLite 
a7a0: 63 6f 72 65 20 6c 69 62 72 61 72 79 20 69 73 20  core library is 
a7b0: 6e 6f 74 20 61 74 0d 0a 20 20 20 20 20 20 20 20  not at..        
a7c0: 2f 2f 2f 20 6c 65 61 73 74 20 76 65 72 73 69 6f  /// least versio
a7d0: 6e 20 33 2e 38 2e 32 2e 0d 0a 20 20 20 20 20 20  n 3.8.2...      
a7e0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
a7f0: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
a800: 20 6c 6f 6e 67 3f 20 45 73 74 69 6d 61 74 65 64   long? Estimated
a810: 52 6f 77 73 0d 0a 20 20 20 20 20 20 20 20 7b 0d  Rows..        {.
a820: 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
a830: 20 7b 20 72 65 74 75 72 6e 20 65 73 74 69 6d 61   { return estima
a840: 74 65 64 52 6f 77 73 3b 20 7d 0d 0a 20 20 20 20  tedRows; }..    
a850: 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 65 73          set { es
a860: 74 69 6d 61 74 65 64 52 6f 77 73 20 3d 20 76 61  timatedRows = va
a870: 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
a880: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
a890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a8a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a8b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a8c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a8d0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
a8e0: 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 49 6e  private SQLiteIn
a8f0: 64 65 78 46 6c 61 67 73 3f 20 69 6e 64 65 78 46  dexFlags? indexF
a900: 6c 61 67 73 3b 0d 0a 20 20 20 20 20 20 20 20 2f  lags;..        /
a910: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
a920: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c        /// The fl
a930: 61 67 73 20 74 68 61 74 20 73 68 6f 75 6c 64 20  ags that should 
a940: 62 65 20 75 73 65 64 20 77 69 74 68 20 74 68 69  be used with thi
a950: 73 20 69 6e 64 65 78 2e 20 20 55 73 69 6e 67 20  s index.  Using 
a960: 61 20 6e 75 6c 6c 20 76 61 6c 75 65 0d 0a 20 20  a null value..  
a970: 20 20 20 20 20 20 2f 2f 2f 20 68 65 72 65 20 69        /// here i
a980: 6e 64 69 63 61 74 65 73 20 74 68 61 74 20 61 20  ndicates that a 
a990: 64 65 66 61 75 6c 74 20 66 6c 61 67 73 20 76 61  default flags va
a9a0: 6c 75 65 20 73 68 6f 75 6c 64 20 62 65 20 75 73  lue should be us
a9b0: 65 64 2e 20 20 54 68 69 73 0d 0a 20 20 20 20 20  ed.  This..     
a9c0: 20 20 20 2f 2f 2f 20 70 72 6f 70 65 72 74 79 20     /// property 
a9d0: 68 61 73 20 6e 6f 20 65 66 66 65 63 74 20 69 66  has no effect if
a9e0: 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
a9f0: 20 6c 69 62 72 61 72 79 20 69 73 20 6e 6f 74 20   library is not 
aa00: 61 74 20 6c 65 61 73 74 0d 0a 20 20 20 20 20 20  at least..      
aa10: 20 20 2f 2f 2f 20 76 65 72 73 69 6f 6e 20 33 2e    /// version 3.
aa20: 39 2e 30 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  9.0...        //
aa30: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
aa40: 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c        public SQL
aa50: 69 74 65 49 6e 64 65 78 46 6c 61 67 73 3f 20 49  iteIndexFlags? I
aa60: 6e 64 65 78 46 6c 61 67 73 0d 0a 20 20 20 20 20  ndexFlags..     
aa70: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
aa80: 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 69    get { return i
aa90: 6e 64 65 78 46 6c 61 67 73 3b 20 7d 0d 0a 20 20  ndexFlags; }..  
aaa0: 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20            set { 
aab0: 69 6e 64 65 78 46 6c 61 67 73 20 3d 20 76 61 6c  indexFlags = val
aac0: 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d  ue; }..        }
aad0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
aae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aaf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ab00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ab10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ab20: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
ab30: 72 69 76 61 74 65 20 6c 6f 6e 67 3f 20 63 6f 6c  rivate long? col
ab40: 75 6d 6e 73 55 73 65 64 3b 0d 0a 20 20 20 20 20  umnsUsed;..     
ab50: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
ab60: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
ab70: 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
ab80: 2f 20 49 6e 64 69 63 61 74 65 73 20 77 68 69 63  / Indicates whic
ab90: 68 20 63 6f 6c 75 6d 6e 73 20 6f 66 20 74 68 65  h columns of the
aba0: 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 6d   virtual table m
abb0: 61 79 20 62 65 20 72 65 71 75 69 72 65 64 20 62  ay be required b
abc0: 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  y the..        /
abd0: 2f 2f 20 63 75 72 72 65 6e 74 20 73 63 61 6e 2e  // current scan.
abe0: 20 20 56 69 72 74 75 61 6c 20 74 61 62 6c 65 20    Virtual table 
abf0: 63 6f 6c 75 6d 6e 73 20 61 72 65 20 6e 75 6d 62  columns are numb
ac00: 65 72 65 64 20 66 72 6f 6d 20 7a 65 72 6f 20 69  ered from zero i
ac10: 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  n the..        /
ac20: 2f 2f 20 6f 72 64 65 72 20 69 6e 20 77 68 69 63  // order in whic
ac30: 68 20 74 68 65 79 20 61 70 70 65 61 72 20 77 69  h they appear wi
ac40: 74 68 69 6e 20 74 68 65 20 43 52 45 41 54 45 20  thin the CREATE 
ac50: 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 20  TABLE statement 
ac60: 70 61 73 73 65 64 0d 0a 20 20 20 20 20 20 20 20  passed..        
ac70: 2f 2f 2f 20 74 6f 20 73 71 6c 69 74 65 33 5f 64  /// to sqlite3_d
ac80: 65 63 6c 61 72 65 5f 76 74 61 62 28 29 2e 20 20  eclare_vtab().  
ac90: 46 6f 72 20 74 68 65 20 66 69 72 73 74 20 36 33  For the first 63
aca0: 20 63 6f 6c 75 6d 6e 73 20 28 63 6f 6c 75 6d 6e   columns (column
acb0: 73 20 30 2d 36 32 29 2c 0d 0a 20 20 20 20 20 20  s 0-62),..      
acc0: 20 20 2f 2f 2f 20 74 68 65 20 63 6f 72 72 65 73    /// the corres
acd0: 70 6f 6e 64 69 6e 67 20 62 69 74 20 69 73 20 73  ponding bit is s
ace0: 65 74 20 77 69 74 68 69 6e 20 74 68 65 20 62 69  et within the bi
acf0: 74 20 6d 61 73 6b 20 69 66 20 74 68 65 20 63 6f  t mask if the co
ad00: 6c 75 6d 6e 20 6d 61 79 0d 0a 20 20 20 20 20 20  lumn may..      
ad10: 20 20 2f 2f 2f 20 62 65 20 72 65 71 75 69 72 65    /// be require
ad20: 64 20 62 79 20 53 51 4c 69 74 65 2e 20 20 49 66  d by SQLite.  If
ad30: 20 74 68 65 20 74 61 62 6c 65 20 68 61 73 20 61   the table has a
ad40: 74 20 6c 65 61 73 74 20 36 34 20 63 6f 6c 75 6d  t least 64 colum
ad50: 6e 73 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20  ns and..        
ad60: 2f 2f 2f 20 61 6e 79 20 63 6f 6c 75 6d 6e 20 74  /// any column t
ad70: 6f 20 74 68 65 20 72 69 67 68 74 20 6f 66 20 74  o the right of t
ad80: 68 65 20 66 69 72 73 74 20 36 33 20 69 73 20 72  he first 63 is r
ad90: 65 71 75 69 72 65 64 2c 20 74 68 65 6e 20 62 69  equired, then bi
ada0: 74 20 36 33 20 6f 66 0d 0a 20 20 20 20 20 20 20  t 63 of..       
adb0: 20 2f 2f 2f 20 63 6f 6c 55 73 65 64 20 69 73 20   /// colUsed is 
adc0: 61 6c 73 6f 20 73 65 74 2e 20 20 49 6e 20 6f 74  also set.  In ot
add0: 68 65 72 20 77 6f 72 64 73 2c 20 63 6f 6c 75 6d  her words, colum
ade0: 6e 20 69 43 6f 6c 20 6d 61 79 20 62 65 20 72 65  n iCol may be re
adf0: 71 75 69 72 65 64 0d 0a 20 20 20 20 20 20 20 20  quired..        
ae00: 2f 2f 2f 20 69 66 20 74 68 65 20 65 78 70 72 65  /// if the expre
ae10: 73 73 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 2f  ssion..        /
ae20: 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20  // </para>..    
ae30: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 3c 63      /// <para><c
ae40: 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode>..        //
ae50: 2f 20 28 63 6f 6c 55 73 65 64 20 26 61 6d 70 3b  / (colUsed &amp;
ae60: 20 28 28 73 71 6c 69 74 65 33 5f 75 69 6e 74 36   ((sqlite3_uint6
ae70: 34 29 31 20 26 6c 74 3b 26 6c 74 3b 20 28 69 43  4)1 &lt;&lt; (iC
ae80: 6f 6c 26 67 74 3b 3d 36 33 20 3f 20 36 33 20 3a  ol&gt;=63 ? 63 :
ae90: 20 69 43 6f 6c 29 29 29 0d 0a 20 20 20 20 20 20   iCol)))..      
aea0: 20 20 2f 2f 2f 20 3c 2f 63 6f 64 65 3e 3c 2f 70    /// </code></p
aeb0: 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
aec0: 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
aed0: 20 20 2f 2f 2f 20 65 76 61 6c 75 61 74 65 73 20    /// evaluates 
aee0: 74 6f 20 6e 6f 6e 2d 7a 65 72 6f 2e 20 20 55 73  to non-zero.  Us
aef0: 69 6e 67 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65  ing a null value
af00: 20 68 65 72 65 20 69 6e 64 69 63 61 74 65 73 20   here indicates 
af10: 74 68 61 74 20 61 0d 0a 20 20 20 20 20 20 20 20  that a..        
af20: 2f 2f 2f 20 64 65 66 61 75 6c 74 20 66 6c 61 67  /// default flag
af30: 73 20 76 61 6c 75 65 20 73 68 6f 75 6c 64 20 62  s value should b
af40: 65 20 75 73 65 64 2e 20 20 54 68 69 73 20 70 72  e used.  This pr
af50: 6f 70 65 72 74 79 20 68 61 73 20 6e 6f 20 65 66  operty has no ef
af60: 66 65 63 74 20 69 66 0d 0a 20 20 20 20 20 20 20  fect if..       
af70: 20 2f 2f 2f 20 74 68 65 20 53 51 4c 69 74 65 20   /// the SQLite 
af80: 63 6f 72 65 20 6c 69 62 72 61 72 79 20 69 73 20  core library is 
af90: 6e 6f 74 20 61 74 20 6c 65 61 73 74 20 76 65 72  not at least ver
afa0: 73 69 6f 6e 20 33 2e 31 30 2e 30 2e 0d 0a 20 20  sion 3.10.0...  
afb0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
afc0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
afd0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
afe0: 20 20 20 70 75 62 6c 69 63 20 6c 6f 6e 67 3f 20     public long? 
aff0: 43 6f 6c 75 6d 6e 73 55 73 65 64 0d 0a 20 20 20  ColumnsUsed..   
b000: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
b010: 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e      get { return
b020: 20 63 6f 6c 75 6d 6e 73 55 73 65 64 3b 20 7d 0d   columnsUsed; }.
b030: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74  .            set
b040: 20 7b 20 63 6f 6c 75 6d 6e 73 55 73 65 64 20 3d   { columnsUsed =
b050: 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20   value; }..     
b060: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
b070: 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d  ndregion..    }.
b080: 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
b090: 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
b0a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b0b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b0c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b0d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b0e0: 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
b0f0: 6e 20 53 51 4c 69 74 65 49 6e 64 65 78 20 48 65  n SQLiteIndex He
b100: 6c 70 65 72 20 43 6c 61 73 73 0d 0a 20 20 20 20  lper Class..    
b110: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
b120: 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73     /// This clas
b130: 73 20 72 65 70 72 65 73 65 6e 74 73 20 74 68 65  s represents the
b140: 20 76 61 72 69 6f 75 73 20 69 6e 70 75 74 73 20   various inputs 
b150: 61 6e 64 20 6f 75 74 70 75 74 73 20 75 73 65 64  and outputs used
b160: 20 77 69 74 68 20 74 68 65 0d 0a 20 20 20 20 2f   with the..    /
b170: 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  // <see cref="IS
b180: 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75  QLiteManagedModu
b190: 6c 65 2e 42 65 73 74 49 6e 64 65 78 22 20 2f 3e  le.BestIndex" />
b1a0: 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f   method...    //
b1b0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
b1c0: 20 20 70 75 62 6c 69 63 20 73 65 61 6c 65 64 20    public sealed 
b1d0: 63 6c 61 73 73 20 53 51 4c 69 74 65 49 6e 64 65  class SQLiteInde
b1e0: 78 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  x..    {..      
b1f0: 20 20 23 72 65 67 69 6f 6e 20 49 6e 74 65 72 6e    #region Intern
b200: 61 6c 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d  al Constructors.
b210: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
b220: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
b230: 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61  /// Constructs a
b240: 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68  n instance of th
b250: 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20  is class...     
b260: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
b270: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
b280: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 43 6f 6e  param name="nCon
b290: 73 74 72 61 69 6e 74 22 3e 0d 0a 20 20 20 20 20  straint">..     
b2a0: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65     /// The numbe
b2b0: 72 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22  r of <see cref="
b2c0: 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74  SQLiteIndexConst
b2d0: 72 61 69 6e 74 22 20 2f 3e 20 28 61 6e 64 0d 0a  raint" /> (and..
b2e0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
b2f0: 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64   cref="SQLiteInd
b300: 65 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  exConstraintUsag
b310: 65 22 20 2f 3e 29 20 69 6e 73 74 61 6e 63 65 73  e" />) instances
b320: 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   to..        ///
b330: 20 70 72 65 2d 61 6c 6c 6f 63 61 74 65 20 73 70   pre-allocate sp
b340: 61 63 65 20 66 6f 72 2e 0d 0a 20 20 20 20 20 20  ace for...      
b350: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
b360: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
b370: 61 6d 20 6e 61 6d 65 3d 22 6e 4f 72 64 65 72 42  am name="nOrderB
b380: 79 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  y">..        ///
b390: 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 3c   The number of <
b3a0: 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
b3b0: 49 6e 64 65 78 4f 72 64 65 72 42 79 22 20 2f 3e  IndexOrderBy" />
b3c0: 20 69 6e 73 74 61 6e 63 65 73 20 74 6f 0d 0a 20   instances to.. 
b3d0: 20 20 20 20 20 20 20 2f 2f 2f 20 70 72 65 2d 61         /// pre-a
b3e0: 6c 6c 6f 63 61 74 65 20 73 70 61 63 65 20 66 6f  llocate space fo
b3f0: 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
b400: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
b410: 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74    internal SQLit
b420: 65 49 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20  eIndex(..       
b430: 20 20 20 20 20 69 6e 74 20 6e 43 6f 6e 73 74 72       int nConstr
b440: 61 69 6e 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  aint,..         
b450: 20 20 20 69 6e 74 20 6e 4f 72 64 65 72 42 79 0d     int nOrderBy.
b460: 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
b470: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
b480: 20 20 20 20 20 20 20 69 6e 70 75 74 73 20 3d 20         inputs = 
b490: 6e 65 77 20 53 51 4c 69 74 65 49 6e 64 65 78 49  new SQLiteIndexI
b4a0: 6e 70 75 74 73 28 6e 43 6f 6e 73 74 72 61 69 6e  nputs(nConstrain
b4b0: 74 2c 20 6e 4f 72 64 65 72 42 79 29 3b 0d 0a 20  t, nOrderBy);.. 
b4c0: 20 20 20 20 20 20 20 20 20 20 20 6f 75 74 70 75             outpu
b4d0: 74 73 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 49  ts = new SQLiteI
b4e0: 6e 64 65 78 4f 75 74 70 75 74 73 28 6e 43 6f 6e  ndexOutputs(nCon
b4f0: 73 74 72 61 69 6e 74 29 3b 0d 0a 20 20 20 20 20  straint);..     
b500: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
b510: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
b520: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
b530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b550: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
b570: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
b580: 72 69 76 61 74 65 20 4d 61 72 73 68 61 6c 20 48  rivate Marshal H
b590: 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 20 28 46  elper Methods (F
b5a0: 6f 72 20 54 65 73 74 20 55 73 65 20 4f 6e 6c 79  or Test Use Only
b5b0: 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  )..        /// <
b5c0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
b5d0: 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74    /// Attempts t
b5e0: 6f 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20  o determine the 
b5f0: 73 74 72 75 63 74 75 72 65 20 73 69 7a 65 73 20  structure sizes 
b600: 6e 65 65 64 65 64 20 74 6f 20 63 72 65 61 74 65  needed to create
b610: 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f   and..        //
b620: 2f 20 70 6f 70 75 6c 61 74 65 20 61 20 6e 61 74  / populate a nat
b630: 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ive..        ///
b640: 20 3c 73 65 65 20 63 72 65 66 3d 22 55 6e 73 61   <see cref="Unsa
b650: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
b660: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e  sqlite3_index_in
b670: 66 6f 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20  fo" />..        
b680: 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  /// structure...
b690: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
b6a0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
b6b0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
b6c0: 22 73 69 7a 65 4f 66 49 6e 66 6f 54 79 70 65 22  "sizeOfInfoType"
b6d0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
b6e0: 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20 6e  he size of the n
b6f0: 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f  ative..        /
b700: 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 55 6e  // <see cref="Un
b710: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
b720: 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  s.sqlite3_index_
b730: 69 6e 66 6f 22 20 2f 3e 0d 0a 20 20 20 20 20 20  info" />..      
b740: 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 20    /// structure 
b750: 69 73 20 73 74 6f 72 65 64 20 68 65 72 65 2e 0d  is stored here..
b760: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
b770: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
b780: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
b790: 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74  sizeOfConstraint
b7a0: 54 79 70 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  Type">..        
b7b0: 2f 2f 2f 20 54 68 65 20 73 69 7a 65 20 6f 66 20  /// The size of 
b7c0: 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20  the native..    
b7d0: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
b7e0: 66 3d 22 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  f="UnsafeNativeM
b7f0: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69  ethods.sqlite3_i
b800: 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 22  ndex_constraint"
b810: 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   />..        ///
b820: 20 73 74 72 75 63 74 75 72 65 20 69 73 20 73 74   structure is st
b830: 6f 72 65 64 20 68 65 72 65 2e 0d 0a 20 20 20 20  ored here...    
b840: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
b850: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
b860: 61 72 61 6d 20 6e 61 6d 65 3d 22 73 69 7a 65 4f  aram name="sizeO
b870: 66 4f 72 64 65 72 42 79 54 79 70 65 22 3e 0d 0a  fOrderByType">..
b880: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
b890: 73 69 7a 65 20 6f 66 20 74 68 65 20 6e 61 74 69  size of the nati
b8a0: 76 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ve..        /// 
b8b0: 3c 73 65 65 20 63 72 65 66 3d 22 55 6e 73 61 66  <see cref="Unsaf
b8c0: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
b8d0: 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64  qlite3_index_ord
b8e0: 65 72 62 79 22 20 2f 3e 0d 0a 20 20 20 20 20 20  erby" />..      
b8f0: 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 20    /// structure 
b900: 69 73 20 73 74 6f 72 65 64 20 68 65 72 65 2e 0d  is stored here..
b910: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
b920: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
b930: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
b940: 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74  sizeOfConstraint
b950: 55 73 61 67 65 54 79 70 65 22 3e 0d 0a 20 20 20  UsageType">..   
b960: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 69 7a       /// The siz
b970: 65 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65 0d  e of the native.
b980: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
b990: 65 20 63 72 65 66 3d 22 55 6e 73 61 66 65 4e 61  e cref="UnsafeNa
b9a0: 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
b9b0: 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72  te3_index_constr
b9c0: 61 69 6e 74 5f 75 73 61 67 65 22 20 2f 3e 0d 0a  aint_usage" />..
b9d0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75          /// stru
b9e0: 63 74 75 72 65 20 69 73 20 73 74 6f 72 65 64 20  cture is stored 
b9f0: 68 65 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  here...        /
ba00: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
ba10: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
ba20: 74 69 63 20 76 6f 69 64 20 53 69 7a 65 4f 66 4e  tic void SizeOfN
ba30: 61 74 69 76 65 28 0d 0a 20 20 20 20 20 20 20 20  ative(..        
ba40: 20 20 20 20 6f 75 74 20 69 6e 74 20 73 69 7a 65      out int size
ba50: 4f 66 49 6e 66 6f 54 79 70 65 2c 0d 0a 20 20 20  OfInfoType,..   
ba60: 20 20 20 20 20 20 20 20 20 6f 75 74 20 69 6e 74           out int
ba70: 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e   sizeOfConstrain
ba80: 74 54 79 70 65 2c 0d 0a 20 20 20 20 20 20 20 20  tType,..        
ba90: 20 20 20 20 6f 75 74 20 69 6e 74 20 73 69 7a 65      out int size
baa0: 4f 66 4f 72 64 65 72 42 79 54 79 70 65 2c 0d 0a  OfOrderByType,..
bab0: 20 20 20 20 20 20 20 20 20 20 20 20 6f 75 74 20              out 
bac0: 69 6e 74 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72  int sizeOfConstr
bad0: 61 69 6e 74 55 73 61 67 65 54 79 70 65 0d 0a 20  aintUsageType.. 
bae0: 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
baf0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
bb00: 20 20 20 20 20 73 69 7a 65 4f 66 49 6e 66 6f 54       sizeOfInfoT
bb10: 79 70 65 20 3d 20 4d 61 72 73 68 61 6c 2e 53 69  ype = Marshal.Si
bb20: 7a 65 4f 66 28 74 79 70 65 6f 66 28 0d 0a 20 20  zeOf(typeof(..  
bb30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e                Un
bb40: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
bb50: 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  s.sqlite3_index_
bb60: 69 6e 66 6f 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  info));....     
bb70: 20 20 20 20 20 20 20 73 69 7a 65 4f 66 43 6f 6e         sizeOfCon
bb80: 73 74 72 61 69 6e 74 54 79 70 65 20 3d 20 4d 61  straintType = Ma
bb90: 72 73 68 61 6c 2e 53 69 7a 65 4f 66 28 74 79 70  rshal.SizeOf(typ
bba0: 65 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20  eof(..          
bbb0: 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69        UnsafeNati
bbc0: 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
bbd0: 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69  3_index_constrai
bbe0: 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  nt));....       
bbf0: 20 20 20 20 20 73 69 7a 65 4f 66 4f 72 64 65 72       sizeOfOrder
bc00: 42 79 54 79 70 65 20 3d 20 4d 61 72 73 68 61 6c  ByType = Marshal
bc10: 2e 53 69 7a 65 4f 66 28 74 79 70 65 6f 66 28 0d  .SizeOf(typeof(.
bc20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
bc30: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
bc40: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64  hods.sqlite3_ind
bc50: 65 78 5f 6f 72 64 65 72 62 79 29 29 3b 0d 0a 0d  ex_orderby));...
bc60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 69 7a  .            siz
bc70: 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  eOfConstraintUsa
bc80: 67 65 54 79 70 65 20 3d 20 4d 61 72 73 68 61 6c  geType = Marshal
bc90: 2e 53 69 7a 65 4f 66 28 74 79 70 65 6f 66 28 0d  .SizeOf(typeof(.
bca0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
bcb0: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
bcc0: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64  hods.sqlite3_ind
bcd0: 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73  ex_constraint_us
bce0: 61 67 65 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  age));..        
bcf0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
bd00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd40: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
bd50: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
bd60: 20 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d         /// Attem
bd70: 70 74 73 20 74 6f 20 61 6c 6c 6f 63 61 74 65 20  pts to allocate 
bd80: 61 6e 64 20 69 6e 69 74 69 61 6c 69 7a 65 20 61  and initialize a
bd90: 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20   native..       
bda0: 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
bdb0: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
bdc0: 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65  ods.sqlite3_inde
bdd0: 78 5f 69 6e 66 6f 22 20 2f 3e 0d 0a 20 20 20 20  x_info" />..    
bde0: 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72      /// structur
bdf0: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
be00: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
be10: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
be20: 61 6d 65 3d 22 6e 43 6f 6e 73 74 72 61 69 6e 74  ame="nConstraint
be30: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
be40: 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 3c 73  The number of <s
be50: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49  ee cref="SQLiteI
be60: 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 22 20  ndexConstraint" 
be70: 2f 3e 20 69 6e 73 74 61 6e 63 65 73 20 74 6f 0d  /> instances to.
be80: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 72 65  .        /// pre
be90: 2d 61 6c 6c 6f 63 61 74 65 20 73 70 61 63 65 20  -allocate space 
bea0: 66 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  for...        //
beb0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
bec0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
bed0: 61 6d 65 3d 22 6e 4f 72 64 65 72 42 79 22 3e 0d  ame="nOrderBy">.
bee0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
bef0: 20 6e 75 6d 62 65 72 20 6f 66 20 3c 73 65 65 20   number of <see 
bf00: 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65  cref="SQLiteInde
bf10: 78 4f 72 64 65 72 42 79 22 20 2f 3e 20 69 6e 73  xOrderBy" /> ins
bf20: 74 61 6e 63 65 73 20 74 6f 0d 0a 20 20 20 20 20  tances to..     
bf30: 20 20 20 2f 2f 2f 20 70 72 65 2d 61 6c 6c 6f 63     /// pre-alloc
bf40: 61 74 65 20 73 70 61 63 65 20 66 6f 72 2e 0d 0a  ate space for...
bf50: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
bf60: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
bf70: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
bf80: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65 77       /// The new
bf90: 6c 79 20 61 6c 6c 6f 63 61 74 65 64 20 6e 61 74  ly allocated nat
bfa0: 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ive..        ///
bfb0: 20 3c 73 65 65 20 63 72 65 66 3d 22 55 6e 73 61   <see cref="Unsa
bfc0: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
bfd0: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e  sqlite3_index_in
bfe0: 66 6f 22 20 2f 3e 20 73 74 72 75 63 74 75 72 65  fo" /> structure
bff0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 2d 4f  ..        /// -O
c000: 52 2d 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  R- <see cref="In
c010: 74 50 74 72 2e 5a 65 72 6f 22 20 2f 3e 20 69 66  tPtr.Zero" /> if
c020: 20 69 74 20 63 6f 75 6c 64 20 6e 6f 74 20 62 65   it could not be
c030: 20 66 75 6c 6c 79 20 61 6c 6c 6f 63 61 74 65 64   fully allocated
c040: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
c050: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
c060: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
c070: 63 20 49 6e 74 50 74 72 20 41 6c 6c 6f 63 61 74  c IntPtr Allocat
c080: 65 41 6e 64 49 6e 69 74 69 61 6c 69 7a 65 4e 61  eAndInitializeNa
c090: 74 69 76 65 28 0d 0a 20 20 20 20 20 20 20 20 20  tive(..         
c0a0: 20 20 20 69 6e 74 20 6e 43 6f 6e 73 74 72 61 69     int nConstrai
c0b0: 6e 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nt,..           
c0c0: 20 69 6e 74 20 6e 4f 72 64 65 72 42 79 0d 0a 20   int nOrderBy.. 
c0d0: 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
c0e0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
c0f0: 20 20 20 20 20 49 6e 74 50 74 72 20 70 49 6e 64       IntPtr pInd
c100: 65 78 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  ex = IntPtr.Zero
c110: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  ;..            I
c120: 6e 74 50 74 72 20 70 49 6e 66 6f 20 3d 20 49 6e  ntPtr pInfo = In
c130: 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20  tPtr.Zero;..    
c140: 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
c150: 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20 49 6e 74  Constraint = Int
c160: 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20  Ptr.Zero;..     
c170: 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 4f         IntPtr pO
c180: 72 64 65 72 42 79 20 3d 20 49 6e 74 50 74 72 2e  rderBy = IntPtr.
c190: 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20  Zero;..         
c1a0: 20 20 20 49 6e 74 50 74 72 20 70 43 6f 6e 73 74     IntPtr pConst
c1b0: 72 61 69 6e 74 55 73 61 67 65 20 3d 20 49 6e 74  raintUsage = Int
c1c0: 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20  Ptr.Zero;....   
c1d0: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
c1e0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
c1f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74               int
c200: 20 73 69 7a 65 4f 66 49 6e 66 6f 54 79 70 65 3b   sizeOfInfoType;
c210: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c220: 20 20 69 6e 74 20 73 69 7a 65 4f 66 4f 72 64 65    int sizeOfOrde
c230: 72 42 79 54 79 70 65 3b 0d 0a 20 20 20 20 20 20  rByType;..      
c240: 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 73 69            int si
c250: 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 54 79  zeOfConstraintTy
c260: 70 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  pe;..           
c270: 20 20 20 20 20 69 6e 74 20 73 69 7a 65 4f 66 43       int sizeOfC
c280: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 54 79  onstraintUsageTy
c290: 70 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  pe;....         
c2a0: 20 20 20 20 20 20 20 53 69 7a 65 4f 66 4e 61 74         SizeOfNat
c2b0: 69 76 65 28 6f 75 74 20 73 69 7a 65 4f 66 49 6e  ive(out sizeOfIn
c2c0: 66 6f 54 79 70 65 2c 20 6f 75 74 20 73 69 7a 65  foType, out size
c2d0: 4f 66 43 6f 6e 73 74 72 61 69 6e 74 54 79 70 65  OfConstraintType
c2e0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
c2f0: 20 20 20 20 20 20 20 6f 75 74 20 73 69 7a 65 4f         out sizeO
c300: 66 4f 72 64 65 72 42 79 54 79 70 65 2c 20 6f 75  fOrderByType, ou
c310: 74 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69  t sizeOfConstrai
c320: 6e 74 55 73 61 67 65 54 79 70 65 29 3b 0d 0a 0d  ntUsageType);...
c330: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c340: 20 69 66 20 28 28 73 69 7a 65 4f 66 49 6e 66 6f   if ((sizeOfInfo
c350: 54 79 70 65 20 3e 20 30 29 20 26 26 0d 0a 20 20  Type > 0) &&..  
c360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c370: 20 20 28 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61    (sizeOfConstra
c380: 69 6e 74 54 79 70 65 20 3e 20 30 29 20 26 26 0d  intType > 0) &&.
c390: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c3a0: 20 20 20 20 20 28 73 69 7a 65 4f 66 4f 72 64 65       (sizeOfOrde
c3b0: 72 42 79 54 79 70 65 20 3e 20 30 29 20 26 26 0d  rByType > 0) &&.
c3c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c3d0: 20 20 20 20 20 28 73 69 7a 65 4f 66 43 6f 6e 73       (sizeOfCons
c3e0: 74 72 61 69 6e 74 55 73 61 67 65 54 79 70 65 20  traintUsageType 
c3f0: 3e 20 30 29 29 0d 0a 20 20 20 20 20 20 20 20 20  > 0))..         
c400: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
c410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 49                pI
c420: 6e 66 6f 20 3d 20 53 51 4c 69 74 65 4d 65 6d 6f  nfo = SQLiteMemo
c430: 72 79 2e 41 6c 6c 6f 63 61 74 65 28 73 69 7a 65  ry.Allocate(size
c440: 4f 66 49 6e 66 6f 54 79 70 65 29 3b 0d 0a 0d 0a  OfInfoType);....
c450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c460: 20 20 20 20 70 43 6f 6e 73 74 72 61 69 6e 74 20      pConstraint 
c470: 3d 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 41  = SQLiteMemory.A
c480: 6c 6c 6f 63 61 74 65 28 0d 0a 20 20 20 20 20 20  llocate(..      
c490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c4a0: 20 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69    sizeOfConstrai
c4b0: 6e 74 54 79 70 65 20 2a 20 6e 43 6f 6e 73 74 72  ntType * nConstr
c4c0: 61 69 6e 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  aint);....      
c4d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 4f                pO
c4e0: 72 64 65 72 42 79 20 3d 20 53 51 4c 69 74 65 4d  rderBy = SQLiteM
c4f0: 65 6d 6f 72 79 2e 41 6c 6c 6f 63 61 74 65 28 0d  emory.Allocate(.
c500: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c510: 20 20 20 20 20 20 20 20 20 73 69 7a 65 4f 66 4f           sizeOfO
c520: 72 64 65 72 42 79 54 79 70 65 20 2a 20 6e 4f 72  rderByType * nOr
c530: 64 65 72 42 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  derBy);....     
c540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
c550: 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20  ConstraintUsage 
c560: 3d 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 41  = SQLiteMemory.A
c570: 6c 6c 6f 63 61 74 65 28 0d 0a 20 20 20 20 20 20  llocate(..      
c580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c590: 20 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69    sizeOfConstrai
c5a0: 6e 74 55 73 61 67 65 54 79 70 65 20 2a 20 6e 43  ntUsageType * nC
c5b0: 6f 6e 73 74 72 61 69 6e 74 29 3b 0d 0a 0d 0a 20  onstraint);.... 
c5c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c5d0: 20 20 20 69 66 20 28 28 70 49 6e 66 6f 20 21 3d     if ((pInfo !=
c5e0: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20 26 26   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 20 20 20 20 28 70 43 6f 6e 73            (pCons
c610: 74 72 61 69 6e 74 20 21 3d 20 49 6e 74 50 74 72  traint != IntPtr
c620: 2e 5a 65 72 6f 29 20 26 26 0d 0a 20 20 20 20 20  .Zero) &&..     
c630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c640: 20 20 20 28 70 4f 72 64 65 72 42 79 20 21 3d 20     (pOrderBy != 
c650: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20 26 26 0d  IntPtr.Zero) &&.
c660: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c670: 20 20 20 20 20 20 20 20 20 28 70 43 6f 6e 73 74           (pConst
c680: 72 61 69 6e 74 55 73 61 67 65 20 21 3d 20 49 6e  raintUsage != In
c690: 74 50 74 72 2e 5a 65 72 6f 29 29 0d 0a 20 20 20  tPtr.Zero))..   
c6a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c6b0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
c6c0: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
c6d0: 6f 66 66 73 65 74 20 3d 20 30 3b 0d 0a 0d 0a 20  offset = 0;.... 
c6e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c6f0: 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72         SQLiteMar
c700: 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 33 32 28  shal.WriteInt32(
c710: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 49                pI
c730: 6e 66 6f 2c 20 6f 66 66 73 65 74 2c 20 6e 43 6f  nfo, offset, nCo
c740: 6e 73 74 72 61 69 6e 74 29 3b 0d 0a 0d 0a 20 20  nstraint);....  
c750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c760: 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53        offset = S
c770: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78  QLiteMarshal.Nex
c780: 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20  tOffsetOf(..    
c790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c7a0: 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20          offset, 
c7b0: 73 69 7a 65 6f 66 28 69 6e 74 29 2c 20 49 6e 74  sizeof(int), Int
c7c0: 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20  Ptr.Size);....  
c7d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c7e0: 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73        SQLiteMars
c7f0: 68 61 6c 2e 57 72 69 74 65 49 6e 74 50 74 72 28  hal.WriteIntPtr(
c800: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 49                pI
c820: 6e 66 6f 2c 20 6f 66 66 73 65 74 2c 20 70 43 6f  nfo, offset, pCo
c830: 6e 73 74 72 61 69 6e 74 29 3b 0d 0a 0d 0a 20 20  nstraint);....  
c840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c850: 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53        offset = S
c860: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78  QLiteMarshal.Nex
c870: 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20  tOffsetOf(..    
c880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c890: 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20          offset, 
c8a0: 49 6e 74 50 74 72 2e 53 69 7a 65 2c 20 73 69 7a  IntPtr.Size, siz
c8b0: 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20  eof(int));....  
c8c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c8d0: 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73        SQLiteMars
c8e0: 68 61 6c 2e 57 72 69 74 65 49 6e 74 33 32 28 0d  hal.WriteInt32(.
c8f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c900: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 49 6e               pIn
c910: 66 6f 2c 20 6f 66 66 73 65 74 2c 20 6e 4f 72 64  fo, offset, nOrd
c920: 65 72 42 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  erBy);....      
c930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c940: 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74    offset = SQLit
c950: 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66  eMarshal.NextOff
c960: 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20  setOf(..        
c970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c980: 20 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65      offset, size
c990: 6f 66 28 69 6e 74 29 2c 20 49 6e 74 50 74 72 2e  of(int), IntPtr.
c9a0: 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Size);....      
c9b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c9c0: 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e    SQLiteMarshal.
c9d0: 57 72 69 74 65 49 6e 74 50 74 72 28 0d 0a 20 20  WriteIntPtr(..  
c9e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c9f0: 20 20 20 20 20 20 20 20 20 20 70 49 6e 66 6f 2c            pInfo,
ca00: 20 6f 66 66 73 65 74 2c 20 70 4f 72 64 65 72 42   offset, pOrderB
ca10: 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
ca20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
ca30: 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61  ffset = SQLiteMa
ca40: 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74  rshal.NextOffset
ca50: 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Of(..           
ca60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ca70: 20 6f 66 66 73 65 74 2c 20 49 6e 74 50 74 72 2e   offset, IntPtr.
ca80: 53 69 7a 65 2c 20 49 6e 74 50 74 72 2e 53 69 7a  Size, IntPtr.Siz
ca90: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
caa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
cab0: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57 72 69  QLiteMarshal.Wri
cac0: 74 65 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20  teIntPtr(..     
cad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cae0: 20 20 20 20 20 20 20 70 49 6e 66 6f 2c 20 6f 66         pInfo, of
caf0: 66 73 65 74 2c 20 70 43 6f 6e 73 74 72 61 69 6e  fset, pConstrain
cb00: 74 55 73 61 67 65 29 3b 0d 0a 0d 0a 20 20 20 20  tUsage);....    
cb10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cb20: 20 20 20 20 70 49 6e 64 65 78 20 3d 20 70 49 6e      pIndex = pIn
cb30: 66 6f 3b 20 2f 2a 20 4e 4f 54 45 3a 20 53 75 63  fo; /* NOTE: Suc
cb40: 63 65 73 73 2e 20 2a 2f 0d 0a 20 20 20 20 20 20  cess. */..      
cb50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
cb60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
cb70: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
cb80: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66  }..            f
cb90: 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20  inally..        
cba0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
cbb0: 20 20 20 20 20 20 20 69 66 20 28 70 49 6e 64 65         if (pInde
cbc0: 78 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  x == IntPtr.Zero
cbd0: 29 20 2f 2a 20 4e 4f 54 45 3a 20 46 61 69 6c 75  ) /* NOTE: Failu
cbe0: 72 65 3f 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  re? */..        
cbf0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
cc00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
cc10: 66 20 28 70 43 6f 6e 73 74 72 61 69 6e 74 55 73  f (pConstraintUs
cc20: 61 67 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  age != IntPtr.Ze
cc30: 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
cc40: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
cc50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cc60: 20 20 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79      SQLiteMemory
cc70: 2e 46 72 65 65 28 70 43 6f 6e 73 74 72 61 69 6e  .Free(pConstrain
cc80: 74 55 73 61 67 65 29 3b 0d 0a 20 20 20 20 20 20  tUsage);..      
cc90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cca0: 20 20 70 43 6f 6e 73 74 72 61 69 6e 74 55 73 61    pConstraintUsa
ccb0: 67 65 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  ge = IntPtr.Zero
ccc0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
ccd0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
cce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ccf0: 69 66 20 28 70 4f 72 64 65 72 42 79 20 21 3d 20  if (pOrderBy != 
cd00: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
cd10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cd20: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
cd30: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
cd40: 69 74 65 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70  iteMemory.Free(p
cd50: 4f 72 64 65 72 42 79 29 3b 0d 0a 20 20 20 20 20  OrderBy);..     
cd60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cd70: 20 20 20 70 4f 72 64 65 72 42 79 20 3d 20 49 6e     pOrderBy = In
cd80: 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20  tPtr.Zero;..    
cd90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cda0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
cdb0: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f           if (pCo
cdc0: 6e 73 74 72 61 69 6e 74 20 21 3d 20 49 6e 74 50  nstraint != IntP
cdd0: 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
cde0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
cdf0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ce00: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d           SQLiteM
ce10: 65 6d 6f 72 79 2e 46 72 65 65 28 70 43 6f 6e 73  emory.Free(pCons
ce20: 74 72 61 69 6e 74 29 3b 0d 0a 20 20 20 20 20 20  traint);..      
ce30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ce40: 20 20 70 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20    pConstraint = 
ce50: 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
ce60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ce70: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
ce80: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
ce90: 49 6e 66 6f 20 21 3d 20 49 6e 74 50 74 72 2e 5a  Info != IntPtr.Z
cea0: 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
ceb0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
cec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ced0: 20 20 20 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72       SQLiteMemor
cee0: 79 2e 46 72 65 65 28 70 49 6e 66 6f 29 3b 0d 0a  y.Free(pInfo);..
cef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cf00: 20 20 20 20 20 20 20 20 70 49 6e 66 6f 20 3d 20          pInfo = 
cf10: 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
cf20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cf30: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
cf40: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
cf50: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
cf60: 20 20 20 20 20 72 65 74 75 72 6e 20 70 49 6e 64       return pInd
cf70: 65 78 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ex;..        }..
cf80: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
cf90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cfa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cfb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cfc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cfd0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
cfe0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
cff0: 20 20 20 20 2f 2f 2f 20 46 72 65 65 73 20 61 6c      /// Frees al
d000: 6c 20 74 68 65 20 6d 65 6d 6f 72 79 20 61 73 73  l the memory ass
d010: 6f 63 69 61 74 65 64 20 77 69 74 68 20 61 20 6e  ociated with a n
d020: 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f  ative..        /
d030: 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 55 6e  // <see cref="Un
d040: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
d050: 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  s.sqlite3_index_
d060: 69 6e 66 6f 22 20 2f 3e 0d 0a 20 20 20 20 20 20  info" />..      
d070: 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 2e    /// structure.
d080: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
d090: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
d0a0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
d0b0: 65 3d 22 70 49 6e 64 65 78 22 3e 0d 0a 20 20 20  e="pIndex">..   
d0c0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
d0d0: 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  ive pointer to t
d0e0: 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65  he native sqlite
d0f0: 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 20 73 74 72  3_index_info str
d100: 75 63 74 75 72 65 20 74 6f 0d 0a 20 20 20 20 20  ucture to..     
d110: 20 20 20 2f 2f 2f 20 66 72 65 65 2e 0d 0a 20 20     /// free...  
d120: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
d130: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  m>..        priv
d140: 61 74 65 20 73 74 61 74 69 63 20 76 6f 69 64 20  ate static void 
d150: 46 72 65 65 4e 61 74 69 76 65 28 0d 0a 20 20 20  FreeNative(..   
d160: 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
d170: 70 49 6e 64 65 78 0d 0a 20 20 20 20 20 20 20 20  pIndex..        
d180: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
d190: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
d1a0: 20 28 70 49 6e 64 65 78 20 3d 3d 20 49 6e 74 50   (pIndex == IntP
d1b0: 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
d1c0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
d1d0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
d1e0: 20 69 6e 74 20 6f 66 66 73 65 74 20 3d 20 30 3b   int offset = 0;
d1f0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
d200: 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d  offset = SQLiteM
d210: 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65  arshal.NextOffse
d220: 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20  tOf(..          
d230: 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 73 69        offset, si
d240: 7a 65 6f 66 28 69 6e 74 29 2c 20 49 6e 74 50 74  zeof(int), IntPt
d250: 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20  r.Size);....    
d260: 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
d270: 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20 53 51 4c  Constraint = SQL
d280: 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49  iteMarshal.ReadI
d290: 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20  ntPtr(..        
d2a0: 20 20 20 20 20 20 20 20 70 49 6e 64 65 78 2c 20          pIndex, 
d2b0: 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20  offset);....    
d2c0: 20 20 20 20 20 20 20 20 69 6e 74 20 63 6f 6e 73          int cons
d2d0: 74 72 61 69 6e 74 4f 66 66 73 65 74 20 3d 20 6f  traintOffset = o
d2e0: 66 66 73 65 74 3b 0d 0a 0d 0a 20 20 20 20 20 20  ffset;....      
d2f0: 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53        offset = S
d300: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78  QLiteMarshal.Nex
d310: 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20  tOffsetOf(..    
d320: 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
d330: 65 74 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c  et, IntPtr.Size,
d340: 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a   sizeof(int));..
d350: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 66  ..            of
d360: 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72  fset = SQLiteMar
d370: 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f  shal.NextOffsetO
d380: 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f(..            
d390: 20 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65      offset, size
d3a0: 6f 66 28 69 6e 74 29 2c 20 49 6e 74 50 74 72 2e  of(int), IntPtr.
d3b0: 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Size);....      
d3c0: 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 4f 72        IntPtr pOr
d3d0: 64 65 72 42 79 20 3d 20 53 51 4c 69 74 65 4d 61  derBy = SQLiteMa
d3e0: 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 50 74 72  rshal.ReadIntPtr
d3f0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
d400: 20 20 20 70 49 6e 64 65 78 2c 20 6f 66 66 73 65     pIndex, offse
d410: 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  t);....         
d420: 20 20 20 69 6e 74 20 6f 72 64 65 72 42 79 4f 66     int orderByOf
d430: 66 73 65 74 20 3d 20 6f 66 66 73 65 74 3b 0d 0a  fset = offset;..
d440: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 66  ..            of
d450: 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72  fset = SQLiteMar
d460: 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f  shal.NextOffsetO
d470: 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f(..            
d480: 20 20 20 20 6f 66 66 73 65 74 2c 20 49 6e 74 50      offset, IntP
d490: 74 72 2e 53 69 7a 65 2c 20 49 6e 74 50 74 72 2e  tr.Size, IntPtr.
d4a0: 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Size);....      
d4b0: 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 6f        IntPtr pCo
d4c0: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20 3d 20  nstraintUsage = 
d4d0: 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65  SQLiteMarshal.Re
d4e0: 61 64 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20  adIntPtr(..     
d4f0: 20 20 20 20 20 20 20 20 20 20 20 70 49 6e 64 65             pInde
d500: 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20  x, offset);.... 
d510: 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 63             int c
d520: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 4f 66  onstraintUsageOf
d530: 66 73 65 74 20 3d 20 6f 66 66 73 65 74 3b 0d 0a  fset = offset;..
d540: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
d550: 20 28 70 43 6f 6e 73 74 72 61 69 6e 74 55 73 61   (pConstraintUsa
d560: 67 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  ge != IntPtr.Zer
d570: 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
d580: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
d590: 20 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e     SQLiteMemory.
d5a0: 46 72 65 65 28 70 43 6f 6e 73 74 72 61 69 6e 74  Free(pConstraint
d5b0: 55 73 61 67 65 29 3b 0d 0a 20 20 20 20 20 20 20  Usage);..       
d5c0: 20 20 20 20 20 20 20 20 20 70 43 6f 6e 73 74 72           pConstr
d5d0: 61 69 6e 74 55 73 61 67 65 20 3d 20 49 6e 74 50  aintUsage = IntP
d5e0: 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20  tr.Zero;....    
d5f0: 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
d600: 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49  teMarshal.WriteI
d610: 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20  ntPtr(..        
d620: 20 20 20 20 20 20 20 20 20 20 20 20 70 49 6e 64              pInd
d630: 65 78 2c 20 63 6f 6e 73 74 72 61 69 6e 74 55 73  ex, constraintUs
d640: 61 67 65 4f 66 66 73 65 74 2c 20 70 43 6f 6e 73  ageOffset, pCons
d650: 74 72 61 69 6e 74 55 73 61 67 65 29 3b 0d 0a 20  traintUsage);.. 
d660: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
d670: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
d680: 70 4f 72 64 65 72 42 79 20 21 3d 20 49 6e 74 50  pOrderBy != IntP
d690: 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
d6a0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
d6b0: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d           SQLiteM
d6c0: 65 6d 6f 72 79 2e 46 72 65 65 28 70 4f 72 64 65  emory.Free(pOrde
d6d0: 72 42 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  rBy);..         
d6e0: 20 20 20 20 20 20 20 70 4f 72 64 65 72 42 79 20         pOrderBy 
d6f0: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  = IntPtr.Zero;..
d700: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d710: 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e    SQLiteMarshal.
d720: 57 72 69 74 65 49 6e 74 50 74 72 28 0d 0a 20 20  WriteIntPtr(..  
d730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d740: 20 20 70 49 6e 64 65 78 2c 20 6f 72 64 65 72 42    pIndex, orderB
d750: 79 4f 66 66 73 65 74 2c 20 70 4f 72 64 65 72 42  yOffset, pOrderB
d760: 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y);..           
d770: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
d780: 20 20 69 66 20 28 70 43 6f 6e 73 74 72 61 69 6e    if (pConstrain
d790: 74 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  t != IntPtr.Zero
d7a0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
d7b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d7c0: 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46    SQLiteMemory.F
d7d0: 72 65 65 28 70 43 6f 6e 73 74 72 61 69 6e 74 29  ree(pConstraint)
d7e0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
d7f0: 20 20 20 70 43 6f 6e 73 74 72 61 69 6e 74 20 3d     pConstraint =
d800: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d   IntPtr.Zero;...
d810: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d820: 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57   SQLiteMarshal.W
d830: 72 69 74 65 49 6e 74 50 74 72 28 0d 0a 20 20 20  riteIntPtr(..   
d840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d850: 20 70 49 6e 64 65 78 2c 20 63 6f 6e 73 74 72 61   pIndex, constra
d860: 69 6e 74 4f 66 66 73 65 74 2c 20 70 43 6f 6e 73  intOffset, pCons
d870: 74 72 61 69 6e 74 29 3b 0d 0a 20 20 20 20 20 20  traint);..      
d880: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
d890: 20 20 20 20 20 20 20 69 66 20 28 70 49 6e 64 65         if (pInde
d8a0: 78 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  x != IntPtr.Zero
d8b0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
d8c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d8d0: 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46    SQLiteMemory.F
d8e0: 72 65 65 28 70 49 6e 64 65 78 29 3b 0d 0a 20 20  ree(pIndex);..  
d8f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 49                pI
d900: 6e 64 65 78 20 3d 20 49 6e 74 50 74 72 2e 5a 65  ndex = IntPtr.Ze
d910: 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro;..           
d920: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20   }..        }.. 
d930: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
d940: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
d950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d990: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
d9a0: 23 72 65 67 69 6f 6e 20 49 6e 74 65 72 6e 61 6c  #region Internal
d9b0: 20 4d 61 72 73 68 61 6c 20 48 65 6c 70 65 72 20   Marshal Helper 
d9c0: 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20  Methods..       
d9d0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
d9e0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76          /// Conv
d9f0: 65 72 74 73 20 61 20 6e 61 74 69 76 65 20 70 6f  erts a native po
da00: 69 6e 74 65 72 20 74 6f 20 61 20 6e 61 74 69 76  inter to a nativ
da10: 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  e sqlite3_index_
da20: 69 6e 66 6f 20 73 74 72 75 63 74 75 72 65 0d 0a  info structure..
da30: 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74 6f          /// into
da40: 20 61 20 6e 65 77 20 3c 73 65 65 20 63 72 65 66   a new <see cref
da50: 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 22 20 2f  ="SQLiteIndex" /
da60: 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
da70: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
da80: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
da90: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
daa0: 61 6d 65 3d 22 70 49 6e 64 65 78 22 3e 0d 0a 20  ame="pIndex">.. 
dab0: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
dac0: 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
dad0: 20 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69   the native sqli
dae0: 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 20 73  te3_index_info s
daf0: 74 72 75 63 74 75 72 65 20 74 6f 0d 0a 20 20 20  tructure to..   
db00: 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 76 65 72 74       /// convert
db10: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
db20: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
db30: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
db40: 3d 22 69 6e 63 6c 75 64 65 4f 75 74 70 75 74 22  ="includeOutput"
db50: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
db60: 6f 6e 2d 7a 65 72 6f 20 74 6f 20 69 6e 63 6c 75  on-zero to inclu
db70: 64 65 20 66 69 65 6c 64 73 20 66 72 6f 6d 20 74  de fields from t
db80: 68 65 20 6f 75 74 70 75 74 73 20 70 6f 72 74 69  he outputs porti
db90: 6f 6e 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65  on of the native
dba0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74  ..        /// st
dbb0: 72 75 63 74 75 72 65 3b 20 6f 74 68 65 72 77 69  ructure; otherwi
dbc0: 73 65 2c 20 74 68 65 20 22 6f 75 74 70 75 74 22  se, the "output"
dbd0: 20 66 69 65 6c 64 73 20 77 69 6c 6c 20 6e 6f 74   fields will not
dbe0: 20 62 65 20 72 65 61 64 2e 0d 0a 20 20 20 20 20   be read...     
dbf0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
dc00: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
dc10: 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78 22  ram name="index"
dc20: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55  >..        /// U
dc30: 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69  pon success, thi
dc40: 73 20 70 61 72 61 6d 65 74 65 72 20 77 69 6c 6c  s parameter will
dc50: 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20   be modified to 
dc60: 63 6f 6e 74 61 69 6e 20 74 68 65 20 6e 65 77 6c  contain the newl
dc70: 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  y..        /// c
dc80: 72 65 61 74 65 64 20 3c 73 65 65 20 63 72 65 66  reated <see cref
dc90: 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 22 20 2f  ="SQLiteIndex" /
dca0: 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
dcb0: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
dcc0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
dcd0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
dce0: 63 20 76 6f 69 64 20 46 72 6f 6d 49 6e 74 50 74  c void FromIntPt
dcf0: 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
dd00: 49 6e 74 50 74 72 20 70 49 6e 64 65 78 2c 0d 0a  IntPtr pIndex,..
dd10: 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
dd20: 20 69 6e 63 6c 75 64 65 4f 75 74 70 75 74 2c 0d   includeOutput,.
dd30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66  .            ref
dd40: 20 53 51 4c 69 74 65 49 6e 64 65 78 20 69 6e 64   SQLiteIndex ind
dd50: 65 78 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ex..            
dd60: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
dd70: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 49            if (pI
dd80: 6e 64 65 78 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  ndex == IntPtr.Z
dd90: 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
dda0: 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d        return;...
ddb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
ddc0: 20 6f 66 66 73 65 74 20 3d 20 30 3b 0d 0a 0d 0a   offset = 0;....
ddd0: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
dde0: 6e 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20 53 51  nConstraint = SQ
ddf0: 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64  LiteMarshal.Read
de00: 49 6e 74 33 32 28 0d 0a 20 20 20 20 20 20 20 20  Int32(..        
de10: 20 20 20 20 20 20 20 20 70 49 6e 64 65 78 2c 20          pIndex, 
de20: 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20  offset);....    
de30: 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d          offset =
de40: 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e   SQLiteMarshal.N
de50: 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20  extOffsetOf(..  
de60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66                of
de70: 66 73 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74  fset, sizeof(int
de80: 29 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b  ), IntPtr.Size);
de90: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
dea0: 49 6e 74 50 74 72 20 70 43 6f 6e 73 74 72 61 69  IntPtr pConstrai
deb0: 6e 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  nt = SQLiteMarsh
dec0: 61 6c 2e 52 65 61 64 49 6e 74 50 74 72 28 0d 0a  al.ReadIntPtr(..
ded0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dee0: 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b  pIndex, offset);
def0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
df00: 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d  offset = SQLiteM
df10: 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65  arshal.NextOffse
df20: 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20  tOf(..          
df30: 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 49 6e        offset, In
df40: 74 50 74 72 2e 53 69 7a 65 2c 20 73 69 7a 65 6f  tPtr.Size, sizeo
df50: 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20 20  f(int));....    
df60: 20 20 20 20 20 20 20 20 69 6e 74 20 6e 4f 72 64          int nOrd
df70: 65 72 42 79 20 3d 20 53 51 4c 69 74 65 4d 61 72  erBy = SQLiteMar
df80: 73 68 61 6c 2e 52 65 61 64 49 6e 74 33 32 28 0d  shal.ReadInt32(.
df90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
dfa0: 20 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29   pIndex, offset)
dfb0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
dfc0: 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65   offset = SQLite
dfd0: 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73  Marshal.NextOffs
dfe0: 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20  etOf(..         
dff0: 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 73         offset, s
e000: 69 7a 65 6f 66 28 69 6e 74 29 2c 20 49 6e 74 50  izeof(int), IntP
e010: 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20  tr.Size);....   
e020: 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
e030: 70 4f 72 64 65 72 42 79 20 3d 20 53 51 4c 69 74  pOrderBy = SQLit
e040: 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74  eMarshal.ReadInt
e050: 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Ptr(..          
e060: 20 20 20 20 20 20 70 49 6e 64 65 78 2c 20 6f 66        pIndex, of
e070: 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  fset);....      
e080: 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 6f        IntPtr pCo
e090: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20 3d 20  nstraintUsage = 
e0a0: 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a  IntPtr.Zero;....
e0b0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
e0c0: 69 6e 63 6c 75 64 65 4f 75 74 70 75 74 29 0d 0a  includeOutput)..
e0d0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
e0e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
e0f0: 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61  ffset = SQLiteMa
e100: 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74  rshal.NextOffset
e110: 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Of(..           
e120: 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c           offset,
e130: 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c 20 49 6e   IntPtr.Size, In
e140: 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20  tPtr.Size);.... 
e150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
e160: 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20  ConstraintUsage 
e170: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
e180: 52 65 61 64 49 6e 74 50 74 72 28 0d 0a 20 20 20  ReadIntPtr(..   
e190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e1a0: 20 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29   pIndex, offset)
e1b0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
e1c0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
e1d0: 69 6e 64 65 78 20 3d 20 6e 65 77 20 53 51 4c 69  index = new SQLi
e1e0: 74 65 49 6e 64 65 78 28 6e 43 6f 6e 73 74 72 61  teIndex(nConstra
e1f0: 69 6e 74 2c 20 6e 4f 72 64 65 72 42 79 29 3b 0d  int, nOrderBy);.
e200: 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
e210: 69 74 65 49 6e 64 65 78 49 6e 70 75 74 73 20 69  iteIndexInputs i
e220: 6e 70 75 74 73 20 3d 20 69 6e 64 65 78 2e 49 6e  nputs = index.In
e230: 70 75 74 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  puts;....       
e240: 20 20 20 20 20 69 66 20 28 69 6e 70 75 74 73 20       if (inputs 
e250: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
e260: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
e270: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
e280: 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73   SQLiteIndexCons
e290: 74 72 61 69 6e 74 5b 5d 20 63 6f 6e 73 74 72 61  traint[] constra
e2a0: 69 6e 74 73 20 3d 20 69 6e 70 75 74 73 2e 43 6f  ints = inputs.Co
e2b0: 6e 73 74 72 61 69 6e 74 73 3b 0d 0a 0d 0a 20 20  nstraints;....  
e2c0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f            if (co
e2d0: 6e 73 74 72 61 69 6e 74 73 20 3d 3d 20 6e 75 6c  nstraints == nul
e2e0: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
e2f0: 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20      return;.... 
e300: 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
e310: 65 49 6e 64 65 78 4f 72 64 65 72 42 79 5b 5d 20  eIndexOrderBy[] 
e320: 6f 72 64 65 72 42 79 73 20 3d 20 69 6e 70 75 74  orderBys = input
e330: 73 2e 4f 72 64 65 72 42 79 73 3b 0d 0a 0d 0a 20  s.OrderBys;.... 
e340: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f             if (o
e350: 72 64 65 72 42 79 73 20 3d 3d 20 6e 75 6c 6c 29  rderBys == null)
e360: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e370: 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20    return;....   
e380: 20 20 20 20 20 20 20 20 20 54 79 70 65 20 63 6f           Type co
e390: 6e 73 74 72 61 69 6e 74 54 79 70 65 20 3d 20 74  nstraintType = t
e3a0: 79 70 65 6f 66 28 0d 0a 20 20 20 20 20 20 20 20  ypeof(..        
e3b0: 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61          UnsafeNa
e3c0: 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
e3d0: 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72  te3_index_constr
e3e0: 61 69 6e 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  aint);....      
e3f0: 20 20 20 20 20 20 69 6e 74 20 73 69 7a 65 4f 66        int sizeOf
e400: 43 6f 6e 73 74 72 61 69 6e 74 54 79 70 65 20 3d  ConstraintType =
e410: 20 4d 61 72 73 68 61 6c 2e 53 69 7a 65 4f 66 28   Marshal.SizeOf(
e420: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e430: 20 20 63 6f 6e 73 74 72 61 69 6e 74 54 79 70 65    constraintType
e440: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
e450: 20 20 66 6f 72 20 28 69 6e 74 20 69 43 6f 6e 73    for (int iCons
e460: 74 72 61 69 6e 74 20 3d 20 30 3b 20 69 43 6f 6e  traint = 0; iCon
e470: 73 74 72 61 69 6e 74 20 3c 20 6e 43 6f 6e 73 74  straint < nConst
e480: 72 61 69 6e 74 3b 20 69 43 6f 6e 73 74 72 61 69  raint; iConstrai
e490: 6e 74 2b 2b 29 0d 0a 20 20 20 20 20 20 20 20 20  nt++)..         
e4a0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
e4b0: 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 4f 66        IntPtr pOf
e4c0: 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72  fset = SQLiteMar
e4d0: 73 68 61 6c 2e 49 6e 74 50 74 72 46 6f 72 4f 66  shal.IntPtrForOf
e4e0: 66 73 65 74 28 0d 0a 20 20 20 20 20 20 20 20 20  fset(..         
e4f0: 20 20 20 20 20 20 20 20 20 20 20 70 43 6f 6e 73             pCons
e500: 74 72 61 69 6e 74 2c 20 69 43 6f 6e 73 74 72 61  traint, iConstra
e510: 69 6e 74 20 2a 20 73 69 7a 65 4f 66 43 6f 6e 73  int * sizeOfCons
e520: 74 72 61 69 6e 74 54 79 70 65 29 3b 0d 0a 0d 0a  traintType);....
e530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e540: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
e550: 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65  ods.sqlite3_inde
e560: 78 5f 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e  x_constraint con
e570: 73 74 72 61 69 6e 74 20 3d 0d 0a 20 20 20 20 20  straint =..     
e580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
e590: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
e5a0: 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65  ods.sqlite3_inde
e5b0: 78 5f 63 6f 6e 73 74 72 61 69 6e 74 29 0d 0a 20  x_constraint).. 
e5c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e5d0: 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 50         Marshal.P
e5e0: 74 72 54 6f 53 74 72 75 63 74 75 72 65 28 70 4f  trToStructure(pO
e5f0: 66 66 73 65 74 2c 20 63 6f 6e 73 74 72 61 69 6e  ffset, constrain
e600: 74 54 79 70 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  tType);....     
e610: 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74             const
e620: 72 61 69 6e 74 73 5b 69 43 6f 6e 73 74 72 61 69  raints[iConstrai
e630: 6e 74 5d 20 3d 20 6e 65 77 20 53 51 4c 69 74 65  nt] = new SQLite
e640: 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 28  IndexConstraint(
e650: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e660: 20 20 20 20 20 20 63 6f 6e 73 74 72 61 69 6e 74        constraint
e670: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
e680: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
e690: 20 54 79 70 65 20 6f 72 64 65 72 42 79 54 79 70   Type orderByTyp
e6a0: 65 20 3d 20 74 79 70 65 6f 66 28 0d 0a 20 20 20  e = typeof(..   
e6b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73               Uns
e6c0: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
e6d0: 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f  .sqlite3_index_o
e6e0: 72 64 65 72 62 79 29 3b 0d 0a 0d 0a 20 20 20 20  rderby);....    
e6f0: 20 20 20 20 20 20 20 20 69 6e 74 20 73 69 7a 65          int size
e700: 4f 66 4f 72 64 65 72 42 79 54 79 70 65 20 3d 20  OfOrderByType = 
e710: 4d 61 72 73 68 61 6c 2e 53 69 7a 65 4f 66 28 6f  Marshal.SizeOf(o
e720: 72 64 65 72 42 79 54 79 70 65 29 3b 0d 0a 0d 0a  rderByType);....
e730: 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20              for 
e740: 28 69 6e 74 20 69 4f 72 64 65 72 42 79 20 3d 20  (int iOrderBy = 
e750: 30 3b 20 69 4f 72 64 65 72 42 79 20 3c 20 6e 4f  0; iOrderBy < nO
e760: 72 64 65 72 42 79 3b 20 69 4f 72 64 65 72 42 79  rderBy; iOrderBy
e770: 2b 2b 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ++)..           
e780: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
e790: 20 20 20 20 49 6e 74 50 74 72 20 70 4f 66 66 73      IntPtr pOffs
e7a0: 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  et = SQLiteMarsh
e7b0: 61 6c 2e 49 6e 74 50 74 72 46 6f 72 4f 66 66 73  al.IntPtrForOffs
e7c0: 65 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  et(..           
e7d0: 20 20 20 20 20 20 20 20 20 70 4f 72 64 65 72 42           pOrderB
e7e0: 79 2c 20 69 4f 72 64 65 72 42 79 20 2a 20 73 69  y, iOrderBy * si
e7f0: 7a 65 4f 66 4f 72 64 65 72 42 79 54 79 70 65 29  zeOfOrderByType)
e800: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
e810: 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
e820: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
e830: 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 20 6f  _index_orderby o
e840: 72 64 65 72 42 79 20 3d 0d 0a 20 20 20 20 20 20  rderBy =..      
e850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 55                (U
e860: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
e870: 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ds.sqlite3_index
e880: 5f 6f 72 64 65 72 62 79 29 0d 0a 20 20 20 20 20  _orderby)..     
e890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e8a0: 20 20 20 4d 61 72 73 68 61 6c 2e 50 74 72 54 6f     Marshal.PtrTo
e8b0: 53 74 72 75 63 74 75 72 65 28 70 4f 66 66 73 65  Structure(pOffse
e8c0: 74 2c 20 6f 72 64 65 72 42 79 54 79 70 65 29 3b  t, orderByType);
e8d0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
e8e0: 20 20 20 20 6f 72 64 65 72 42 79 73 5b 69 4f 72      orderBys[iOr
e8f0: 64 65 72 42 79 5d 20 3d 20 6e 65 77 20 53 51 4c  derBy] = new SQL
e900: 69 74 65 49 6e 64 65 78 4f 72 64 65 72 42 79 28  iteIndexOrderBy(
e910: 6f 72 64 65 72 42 79 29 3b 0d 0a 20 20 20 20 20  orderBy);..     
e920: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
e930: 20 20 20 20 20 20 20 20 69 66 20 28 69 6e 63 6c          if (incl
e940: 75 64 65 4f 75 74 70 75 74 29 0d 0a 20 20 20 20  udeOutput)..    
e950: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
e960: 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
e970: 65 49 6e 64 65 78 4f 75 74 70 75 74 73 20 6f 75  eIndexOutputs ou
e980: 74 70 75 74 73 20 3d 20 69 6e 64 65 78 2e 4f 75  tputs = index.Ou
e990: 74 70 75 74 73 3b 0d 0a 0d 0a 20 20 20 20 20 20  tputs;....      
e9a0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 75            if (ou
e9b0: 74 70 75 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  tputs == null)..
e9c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e9d0: 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20      return;.... 
e9e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
e9f0: 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72  QLiteIndexConstr
ea00: 61 69 6e 74 55 73 61 67 65 5b 5d 20 63 6f 6e 73  aintUsage[] cons
ea10: 74 72 61 69 6e 74 55 73 61 67 65 73 20 3d 0d 0a  traintUsages =..
ea20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ea30: 20 20 20 20 6f 75 74 70 75 74 73 2e 43 6f 6e 73      outputs.Cons
ea40: 74 72 61 69 6e 74 55 73 61 67 65 73 3b 0d 0a 0d  traintUsages;...
ea50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ea60: 20 69 66 20 28 63 6f 6e 73 74 72 61 69 6e 74 55   if (constraintU
ea70: 73 61 67 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  sages == null)..
ea80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ea90: 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20      return;.... 
eaa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
eab0: 79 70 65 20 63 6f 6e 73 74 72 61 69 6e 74 55 73  ype constraintUs
eac0: 61 67 65 54 79 70 65 20 3d 20 74 79 70 65 6f 66  ageType = typeof
ead0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
eae0: 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74         UnsafeNat
eaf0: 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
eb00: 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61  e3_index_constra
eb10: 69 6e 74 5f 75 73 61 67 65 29 3b 0d 0a 0d 0a 20  int_usage);.... 
eb20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
eb30: 6e 74 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61  nt sizeOfConstra
eb40: 69 6e 74 55 73 61 67 65 54 79 70 65 20 3d 20 4d  intUsageType = M
eb50: 61 72 73 68 61 6c 2e 53 69 7a 65 4f 66 28 0d 0a  arshal.SizeOf(..
eb60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eb70: 20 20 20 20 63 6f 6e 73 74 72 61 69 6e 74 55 73      constraintUs
eb80: 61 67 65 54 79 70 65 29 3b 0d 0a 0d 0a 20 20 20  ageType);....   
eb90: 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72               for
eba0: 20 28 69 6e 74 20 69 43 6f 6e 73 74 72 61 69 6e   (int iConstrain
ebb0: 74 20 3d 20 30 3b 20 69 43 6f 6e 73 74 72 61 69  t = 0; iConstrai
ebc0: 6e 74 20 3c 20 6e 43 6f 6e 73 74 72 61 69 6e 74  nt < nConstraint
ebd0: 3b 20 69 43 6f 6e 73 74 72 61 69 6e 74 2b 2b 29  ; iConstraint++)
ebe0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ebf0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
ec00: 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
ec10: 70 4f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65  pOffset = SQLite
ec20: 4d 61 72 73 68 61 6c 2e 49 6e 74 50 74 72 46 6f  Marshal.IntPtrFo
ec30: 72 4f 66 66 73 65 74 28 0d 0a 20 20 20 20 20 20  rOffset(..      
ec40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ec50: 20 20 70 43 6f 6e 73 74 72 61 69 6e 74 55 73 61    pConstraintUsa
ec60: 67 65 2c 20 69 43 6f 6e 73 74 72 61 69 6e 74 20  ge, iConstraint 
ec70: 2a 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69  * sizeOfConstrai
ec80: 6e 74 55 73 61 67 65 54 79 70 65 29 3b 0d 0a 0d  ntUsageType);...
ec90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
eca0: 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
ecb0: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
ecc0: 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e  _index_constrain
ecd0: 74 5f 75 73 61 67 65 20 63 6f 6e 73 74 72 61 69  t_usage constrai
ece0: 6e 74 55 73 61 67 65 20 3d 0d 0a 20 20 20 20 20  ntUsage =..     
ecf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ed00: 20 20 20 28 55 6e 73 61 66 65 4e 61 74 69 76 65     (UnsafeNative
ed10: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
ed20: 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74  index_constraint
ed30: 5f 75 73 61 67 65 29 0d 0a 20 20 20 20 20 20 20  _usage)..       
ed40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ed50: 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 50 74 72       Marshal.Ptr
ed60: 54 6f 53 74 72 75 63 74 75 72 65 28 70 4f 66 66  ToStructure(pOff
ed70: 73 65 74 2c 20 63 6f 6e 73 74 72 61 69 6e 74 55  set, constraintU
ed80: 73 61 67 65 54 79 70 65 29 3b 0d 0a 0d 0a 20 20  sageType);....  
ed90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eda0: 20 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67    constraintUsag
edb0: 65 73 5b 69 43 6f 6e 73 74 72 61 69 6e 74 5d 20  es[iConstraint] 
edc0: 3d 20 6e 65 77 20 53 51 4c 69 74 65 49 6e 64 65  = new SQLiteInde
edd0: 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  xConstraintUsage
ede0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
edf0: 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74             const
ee00: 72 61 69 6e 74 55 73 61 67 65 29 3b 0d 0a 20 20  raintUsage);..  
ee10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
ee20: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
ee30: 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69     offset = SQLi
ee40: 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66  teMarshal.NextOf
ee50: 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20  fsetOf(..       
ee60: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66               off
ee70: 73 65 74 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65  set, IntPtr.Size
ee80: 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d  , sizeof(int));.
ee90: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
eea0: 20 20 20 6f 75 74 70 75 74 73 2e 49 6e 64 65 78     outputs.Index
eeb0: 4e 75 6d 62 65 72 20 3d 20 53 51 4c 69 74 65 4d  Number = SQLiteM
eec0: 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 33 32  arshal.ReadInt32
eed0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
eee0: 20 20 20 20 20 20 20 70 49 6e 64 65 78 2c 20 6f         pIndex, o
eef0: 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  ffset);....     
ef00: 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
ef10: 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61  t = SQLiteMarsha
ef20: 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d  l.NextOffsetOf(.
ef30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ef40: 20 20 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a       offset, siz
ef50: 65 6f 66 28 69 6e 74 29 2c 20 49 6e 74 50 74 72  eof(int), IntPtr
ef60: 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  .Size);....     
ef70: 20 20 20 20 20 20 20 20 20 20 20 6f 75 74 70 75             outpu
ef80: 74 73 2e 49 6e 64 65 78 53 74 72 69 6e 67 20 3d  ts.IndexString =
ef90: 20 53 51 4c 69 74 65 53 74 72 69 6e 67 2e 53 74   SQLiteString.St
efa0: 72 69 6e 67 46 72 6f 6d 55 74 66 38 49 6e 74 50  ringFromUtf8IntP
efb0: 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tr(..           
efc0: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d           SQLiteM
efd0: 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 50 74  arshal.ReadIntPt
efe0: 72 28 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74  r(pIndex, offset
eff0: 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ));....         
f000: 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20         offset = 
f010: 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65  SQLiteMarshal.Ne
f020: 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20  xtOffsetOf(..   
f030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f040: 20 6f 66 66 73 65 74 2c 20 49 6e 74 50 74 72 2e   offset, IntPtr.
f050: 53 69 7a 65 2c 20 73 69 7a 65 6f 66 28 69 6e 74  Size, sizeof(int
f060: 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ));....         
f070: 20 20 20 20 20 20 20 6f 75 74 70 75 74 73 2e 4e         outputs.N
f080: 65 65 64 54 6f 46 72 65 65 49 6e 64 65 78 53 74  eedToFreeIndexSt
f090: 72 69 6e 67 20 3d 20 53 51 4c 69 74 65 4d 61 72  ring = SQLiteMar
f0a0: 73 68 61 6c 2e 52 65 61 64 49 6e 74 33 32 28 0d  shal.ReadInt32(.
f0b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f0c0: 20 20 20 20 20 70 49 6e 64 65 78 2c 20 6f 66 66       pIndex, off
f0d0: 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  set);....       
f0e0: 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20           offset 
f0f0: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
f100: 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20  NextOffsetOf(.. 
f110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f120: 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f     offset, sizeo
f130: 66 28 69 6e 74 29 2c 20 73 69 7a 65 6f 66 28 69  f(int), sizeof(i
f140: 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  nt));....       
f150: 20 20 20 20 20 20 20 20 20 6f 75 74 70 75 74 73           outputs
f160: 2e 4f 72 64 65 72 42 79 43 6f 6e 73 75 6d 65 64  .OrderByConsumed
f170: 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c   = SQLiteMarshal
f180: 2e 52 65 61 64 49 6e 74 33 32 28 0d 0a 20 20 20  .ReadInt32(..   
f190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f1a0: 20 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29   pIndex, offset)
f1b0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
f1c0: 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51       offset = SQ
f1d0: 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74  LiteMarshal.Next
f1e0: 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20  OffsetOf(..     
f1f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
f200: 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e  ffset, sizeof(in
f210: 74 29 2c 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c  t), sizeof(doubl
f220: 65 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  e));....        
f230: 20 20 20 20 20 20 20 20 6f 75 74 70 75 74 73 2e          outputs.
f240: 45 73 74 69 6d 61 74 65 64 43 6f 73 74 20 3d 20  EstimatedCost = 
f250: 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65  SQLiteMarshal.Re
f260: 61 64 44 6f 75 62 6c 65 28 0d 0a 20 20 20 20 20  adDouble(..     
f270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
f280: 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d  Index, offset);.
f290: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
f2a0: 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69     offset = SQLi
f2b0: 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66  teMarshal.NextOf
f2c0: 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20  fsetOf(..       
f2d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66               off
f2e0: 73 65 74 2c 20 73 69 7a 65 6f 66 28 64 6f 75 62  set, sizeof(doub
f2f0: 6c 65 29 2c 20 73 69 7a 65 6f 66 28 6c 6f 6e 67  le), sizeof(long
f300: 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ));....         
f310: 20 20 20 20 20 20 20 69 66 20 28 6f 75 74 70 75         if (outpu
f320: 74 73 2e 43 61 6e 55 73 65 45 73 74 69 6d 61 74  ts.CanUseEstimat
f330: 65 64 52 6f 77 73 28 29 29 0d 0a 20 20 20 20 20  edRows())..     
f340: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
f350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f360: 20 20 6f 75 74 70 75 74 73 2e 45 73 74 69 6d 61    outputs.Estima
f370: 74 65 64 52 6f 77 73 20 3d 20 53 51 4c 69 74 65  tedRows = SQLite
f380: 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 36  Marshal.ReadInt6
f390: 34 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  4(..            
f3a0: 20 20 20 20 20 20 20 20 20 20 20 20 70 49 6e 64              pInd
f3b0: 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 20 20  ex, offset);..  
f3c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
f3d0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
f3e0: 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69     offset = SQLi
f3f0: 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66  teMarshal.NextOf
f400: 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20  fsetOf(..       
f410: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66               off
f420: 73 65 74 2c 20 73 69 7a 65 6f 66 28 6c 6f 6e 67  set, sizeof(long
f430: 29 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b  ), sizeof(int));
f440: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
f450: 20 20 20 20 69 66 20 28 6f 75 74 70 75 74 73 2e      if (outputs.
f460: 43 61 6e 55 73 65 49 6e 64 65 78 46 6c 61 67 73  CanUseIndexFlags
f470: 28 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ())..           
f480: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
f490: 20 20 20 20 20 20 20 20 20 20 20 20 6f 75 74 70              outp
f4a0: 75 74 73 2e 49 6e 64 65 78 46 6c 61 67 73 20 3d  uts.IndexFlags =
f4b0: 20 28 53 51 4c 69 74 65 49 6e 64 65 78 46 6c 61   (SQLiteIndexFla
f4c0: 67 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  gs)..           
f4d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
f4e0: 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49  iteMarshal.ReadI
f4f0: 6e 74 33 32 28 70 49 6e 64 65 78 2c 20 6f 66 66  nt32(pIndex, off
f500: 73 65 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  set);..         
f510: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
f520: 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
f530: 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  et = SQLiteMarsh
f540: 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28  al.NextOffsetOf(
f550: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f560: 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 73 69        offset, si
f570: 7a 65 6f 66 28 69 6e 74 29 2c 20 73 69 7a 65 6f  zeof(int), sizeo
f580: 66 28 6c 6f 6e 67 29 29 3b 0d 0a 0d 0a 20 20 20  f(long));....   
f590: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
f5a0: 28 6f 75 74 70 75 74 73 2e 43 61 6e 55 73 65 43  (outputs.CanUseC
f5b0: 6f 6c 75 6d 6e 73 55 73 65 64 28 29 29 0d 0a 20  olumnsUsed()).. 
f5c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
f5d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f5e0: 20 20 20 20 20 20 6f 75 74 70 75 74 73 2e 43 6f        outputs.Co
f5f0: 6c 75 6d 6e 73 55 73 65 64 20 3d 20 53 51 4c 69  lumnsUsed = SQLi
f600: 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e  teMarshal.ReadIn
f610: 74 36 34 28 0d 0a 20 20 20 20 20 20 20 20 20 20  t64(..          
f620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 49                pI
f630: 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a  ndex, offset);..
f640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f650: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
f660: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
f670: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
f680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f6a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f6b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
f6c0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
f6d0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
f6e0: 20 2f 2f 2f 20 50 6f 70 75 6c 61 74 65 73 20 74   /// Populates t
f6f0: 68 65 20 6f 75 74 70 75 74 73 20 6f 66 20 61 20  he outputs of a 
f700: 70 72 65 2d 61 6c 6c 6f 63 61 74 65 64 20 6e 61  pre-allocated na
f710: 74 69 76 65 20 73 71 6c 69 74 65 33 5f 69 6e 64  tive sqlite3_ind
f720: 65 78 5f 69 6e 66 6f 0d 0a 20 20 20 20 20 20 20  ex_info..       
f730: 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 20 75   /// structure u
f740: 73 69 6e 67 20 61 6e 20 65 78 69 73 74 69 6e 67  sing an existing
f750: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
f760: 74 65 49 6e 64 65 78 22 20 2f 3e 20 6f 62 6a 65  teIndex" /> obje
f770: 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ct..        /// 
f780: 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20  instance...     
f790: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
f7a0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
f7b0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65  param name="inde
f7c0: 78 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  x">..        ///
f7d0: 20 54 68 65 20 65 78 69 73 74 69 6e 67 20 3c 73   The existing <s
f7e0: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49  ee cref="SQLiteI
f7f0: 6e 64 65 78 22 20 2f 3e 20 6f 62 6a 65 63 74 20  ndex" /> object 
f800: 69 6e 73 74 61 6e 63 65 20 63 6f 6e 74 61 69 6e  instance contain
f810: 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ing..        ///
f820: 20 74 68 65 20 6f 75 74 70 75 74 20 64 61 74 61   the output data
f830: 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20 20 20   to use...      
f840: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
f850: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
f860: 61 6d 20 6e 61 6d 65 3d 22 70 49 6e 64 65 78 22  am name="pIndex"
f870: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
f880: 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
f890: 72 20 74 6f 20 74 68 65 20 70 72 65 2d 61 6c 6c  r to the pre-all
f8a0: 6f 63 61 74 65 64 20 6e 61 74 69 76 65 20 73 71  ocated native sq
f8b0: 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f  lite3_index_info
f8c0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74  ..        /// st
f8d0: 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  ructure...      
f8e0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
f8f0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
f900: 61 6d 20 6e 61 6d 65 3d 22 69 6e 63 6c 75 64 65  am name="include
f910: 49 6e 70 75 74 22 3e 0d 0a 20 20 20 20 20 20 20  Input">..       
f920: 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 74 6f   /// Non-zero to
f930: 20 69 6e 63 6c 75 64 65 20 66 69 65 6c 64 73 20   include fields 
f940: 66 72 6f 6d 20 74 68 65 20 69 6e 70 75 74 73 20  from the inputs 
f950: 70 6f 72 74 69 6f 6e 20 6f 66 20 74 68 65 20 6e  portion of the n
f960: 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f  ative..        /
f970: 2f 2f 20 73 74 72 75 63 74 75 72 65 3b 20 6f 74  // structure; ot
f980: 68 65 72 77 69 73 65 2c 20 74 68 65 20 22 69 6e  herwise, the "in
f990: 70 75 74 22 20 66 69 65 6c 64 73 20 77 69 6c 6c  put" fields will
f9a0: 20 6e 6f 74 20 62 65 20 77 72 69 74 74 65 6e 2e   not be written.
f9b0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
f9c0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
f9d0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
f9e0: 76 6f 69 64 20 54 6f 49 6e 74 50 74 72 28 0d 0a  void ToIntPtr(..
f9f0: 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
fa00: 74 65 49 6e 64 65 78 20 69 6e 64 65 78 2c 0d 0a  teIndex index,..
fa10: 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
fa20: 74 72 20 70 49 6e 64 65 78 2c 0d 0a 20 20 20 20  tr pIndex,..    
fa30: 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 69 6e 63          bool inc
fa40: 6c 75 64 65 49 6e 70 75 74 0d 0a 20 20 20 20 20  ludeInput..     
fa50: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
fa60: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
fa70: 20 69 66 20 28 69 6e 64 65 78 20 3d 3d 20 6e 75   if (index == nu
fa80: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
fa90: 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a       return;....
faa0: 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
fab0: 74 65 49 6e 64 65 78 4f 75 74 70 75 74 73 20 6f  teIndexOutputs o
fac0: 75 74 70 75 74 73 20 3d 20 69 6e 64 65 78 2e 4f  utputs = index.O
fad0: 75 74 70 75 74 73 3b 0d 0a 0d 0a 20 20 20 20 20  utputs;....     
fae0: 20 20 20 20 20 20 20 69 66 20 28 6f 75 74 70 75         if (outpu
faf0: 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ts == null)..   
fb00: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
fb10: 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  urn;....        
fb20: 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78 43      SQLiteIndexC
fb30: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 5b 5d  onstraintUsage[]
fb40: 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65   constraintUsage
fb50: 73 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  s =..           
fb60: 20 20 20 20 20 6f 75 74 70 75 74 73 2e 43 6f 6e       outputs.Con
fb70: 73 74 72 61 69 6e 74 55 73 61 67 65 73 3b 0d 0a  straintUsages;..
fb80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
fb90: 20 28 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67   (constraintUsag
fba0: 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  es == null)..   
fbb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
fbc0: 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  urn;....        
fbd0: 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78 49      SQLiteIndexI
fbe0: 6e 70 75 74 73 20 69 6e 70 75 74 73 20 3d 20 6e  nputs inputs = n
fbf0: 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ull;..          
fc00: 20 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e    SQLiteIndexCon
fc10: 73 74 72 61 69 6e 74 5b 5d 20 63 6f 6e 73 74 72  straint[] constr
fc20: 61 69 6e 74 73 20 3d 20 6e 75 6c 6c 3b 0d 0a 20  aints = null;.. 
fc30: 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
fc40: 65 49 6e 64 65 78 4f 72 64 65 72 42 79 5b 5d 20  eIndexOrderBy[] 
fc50: 6f 72 64 65 72 42 79 73 20 3d 20 6e 75 6c 6c 3b  orderBys = null;
fc60: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
fc70: 69 66 20 28 69 6e 63 6c 75 64 65 49 6e 70 75 74  if (includeInput
fc80: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
fc90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
fca0: 20 20 69 6e 70 75 74 73 20 3d 20 69 6e 64 65 78    inputs = index
fcb0: 2e 49 6e 70 75 74 73 3b 0d 0a 0d 0a 20 20 20 20  .Inputs;....    
fcc0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
fcd0: 69 6e 70 75 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d  inputs == null).
fce0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
fcf0: 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a       return;....
fd00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fd10: 63 6f 6e 73 74 72 61 69 6e 74 73 20 3d 20 69 6e  constraints = in
fd20: 70 75 74 73 2e 43 6f 6e 73 74 72 61 69 6e 74 73  puts.Constraints
fd30: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
fd40: 20 20 20 20 20 69 66 20 28 63 6f 6e 73 74 72 61       if (constra
fd50: 69 6e 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  ints == null).. 
fd60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fd70: 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20     return;....  
fd80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 72                or
fd90: 64 65 72 42 79 73 20 3d 20 69 6e 70 75 74 73 2e  derBys = inputs.
fda0: 4f 72 64 65 72 42 79 73 3b 0d 0a 0d 0a 20 20 20  OrderBys;....   
fdb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
fdc0: 28 6f 72 64 65 72 42 79 73 20 3d 3d 20 6e 75 6c  (orderBys == nul
fdd0: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
fde0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d          return;.
fdf0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
fe00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
fe10: 20 28 70 49 6e 64 65 78 20 3d 3d 20 49 6e 74 50   (pIndex == IntP
fe20: 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
fe30: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
fe40: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
fe50: 20 69 6e 74 20 6f 66 66 73 65 74 20 3d 20 30 3b   int offset = 0;
fe60: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
fe70: 69 6e 74 20 6e 43 6f 6e 73 74 72 61 69 6e 74 20  int nConstraint 
fe80: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
fe90: 52 65 61 64 49 6e 74 33 32 28 70 49 6e 64 65 78  ReadInt32(pIndex
fea0: 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20  , offset);....  
feb0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69 6e            if (in
fec0: 63 6c 75 64 65 49 6e 70 75 74 20 26 26 20 28 6e  cludeInput && (n
fed0: 43 6f 6e 73 74 72 61 69 6e 74 20 21 3d 20 63 6f  Constraint != co
fee0: 6e 73 74 72 61 69 6e 74 73 2e 4c 65 6e 67 74 68  nstraints.Length
fef0: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
ff00: 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20      return;.... 
ff10: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e             if (n
ff20: 43 6f 6e 73 74 72 61 69 6e 74 20 21 3d 20 63 6f  Constraint != co
ff30: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 73 2e 4c  nstraintUsages.L
ff40: 65 6e 67 74 68 29 0d 0a 20 20 20 20 20 20 20 20  ength)..        
ff50: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d          return;.
ff60: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f  ...            o
ff70: 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61  ffset = SQLiteMa
ff80: 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74  rshal.NextOffset
ff90: 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Of(..           
ffa0: 20 20 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a       offset, siz
ffb0: 65 6f 66 28 69 6e 74 29 2c 20 49 6e 74 50 74 72  eof(int), IntPtr
ffc0: 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  .Size);....     
ffd0: 20 20 20 20 20 20 20 69 66 20 28 69 6e 63 6c 75         if (inclu
ffe0: 64 65 49 6e 70 75 74 29 0d 0a 20 20 20 20 20 20  deInput)..      
fff0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
10000 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
10010 70 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20 53 51  pConstraint = SQ
10020 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64  LiteMarshal.Read
10030 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20  IntPtr(..       
10040 20 20 20 20 20 20 20 20 20 20 20 20 20 70 49 6e               pIn
10050 64 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d  dex, offset);...
10060 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10070 20 69 6e 74 20 73 69 7a 65 4f 66 43 6f 6e 73 74   int sizeOfConst
10080 72 61 69 6e 74 54 79 70 65 20 3d 20 4d 61 72 73  raintType = Mars
10090 68 61 6c 2e 53 69 7a 65 4f 66 28 74 79 70 65 6f  hal.SizeOf(typeo
100a0 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f(..            
100b0 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61          UnsafeNa
100c0 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
100d0 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72  te3_index_constr
100e0 61 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  aint));....     
100f0 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28             for (
10100 69 6e 74 20 69 43 6f 6e 73 74 72 61 69 6e 74 20  int iConstraint 
10110 3d 20 30 3b 20 69 43 6f 6e 73 74 72 61 69 6e 74  = 0; iConstraint
10120 20 3c 20 6e 43 6f 6e 73 74 72 61 69 6e 74 3b 20   < nConstraint; 
10130 69 43 6f 6e 73 74 72 61 69 6e 74 2b 2b 29 0d 0a  iConstraint++)..
10140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10150 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
10160 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74         UnsafeNat
10170 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
10180 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61  e3_index_constra
10190 69 6e 74 20 63 6f 6e 73 74 72 61 69 6e 74 20 3d  int constraint =
101a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
101b0 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 55 6e            new Un
101c0 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
101d0 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  s.sqlite3_index_
101e0 63 6f 6e 73 74 72 61 69 6e 74 28 0d 0a 20 20 20  constraint(..   
101f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10200 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74 72 61           constra
10210 69 6e 74 73 5b 69 43 6f 6e 73 74 72 61 69 6e 74  ints[iConstraint
10220 5d 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ]);....         
10230 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68             Marsh
10240 61 6c 2e 53 74 72 75 63 74 75 72 65 54 6f 50 74  al.StructureToPt
10250 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
10260 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73              cons
10270 74 72 61 69 6e 74 2c 20 53 51 4c 69 74 65 4d 61  traint, SQLiteMa
10280 72 73 68 61 6c 2e 49 6e 74 50 74 72 46 6f 72 4f  rshal.IntPtrForO
10290 66 66 73 65 74 28 0d 0a 20 20 20 20 20 20 20 20  ffset(..        
102a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
102b0 70 43 6f 6e 73 74 72 61 69 6e 74 2c 20 69 43 6f  pConstraint, iCo
102c0 6e 73 74 72 61 69 6e 74 20 2a 20 73 69 7a 65 4f  nstraint * sizeO
102d0 66 43 6f 6e 73 74 72 61 69 6e 74 54 79 70 65 29  fConstraintType)
102e0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
102f0 20 20 20 20 20 20 20 20 20 20 20 66 61 6c 73 65             false
10300 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
10310 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
10320 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
10330 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c      offset = SQL
10340 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f  iteMarshal.NextO
10350 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20  ffsetOf(..      
10360 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
10370 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c 20 73  , IntPtr.Size, s
10380 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a  izeof(int));....
10390 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
103a0 6e 4f 72 64 65 72 42 79 20 3d 20 69 6e 63 6c 75  nOrderBy = inclu
103b0 64 65 49 6e 70 75 74 20 3f 0d 0a 20 20 20 20 20  deInput ?..     
103c0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
103d0 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74  eMarshal.ReadInt
103e0 33 32 28 70 49 6e 64 65 78 2c 20 6f 66 66 73 65  32(pIndex, offse
103f0 74 29 20 3a 20 30 3b 0d 0a 0d 0a 20 20 20 20 20  t) : 0;....     
10400 20 20 20 20 20 20 20 69 66 20 28 69 6e 63 6c 75         if (inclu
10410 64 65 49 6e 70 75 74 20 26 26 20 28 6e 4f 72 64  deInput && (nOrd
10420 65 72 42 79 20 21 3d 20 6f 72 64 65 72 42 79 73  erBy != orderBys
10430 2e 4c 65 6e 67 74 68 29 29 0d 0a 20 20 20 20 20  .Length))..     
10440 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
10450 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  n;....          
10460 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74    offset = SQLit
10470 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66  eMarshal.NextOff
10480 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20  setOf(..        
10490 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20          offset, 
104a0 73 69 7a 65 6f 66 28 69 6e 74 29 2c 20 49 6e 74  sizeof(int), Int
104b0 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20  Ptr.Size);....  
104c0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69 6e            if (in
104d0 63 6c 75 64 65 49 6e 70 75 74 29 0d 0a 20 20 20  cludeInput)..   
104e0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
104f0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
10500 74 72 20 70 4f 72 64 65 72 42 79 20 3d 20 53 51  tr pOrderBy = SQ
10510 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64  LiteMarshal.Read
10520 49 6e 74 50 74 72 28 70 49 6e 64 65 78 2c 20 6f  IntPtr(pIndex, o
10530 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  ffset);....     
10540 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 73             int s
10550 69 7a 65 4f 66 4f 72 64 65 72 42 79 54 79 70 65  izeOfOrderByType
10560 20 3d 20 4d 61 72 73 68 61 6c 2e 53 69 7a 65 4f   = Marshal.SizeO
10570 66 28 74 79 70 65 6f 66 28 0d 0a 20 20 20 20 20  f(typeof(..     
10580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55                 U
10590 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
105a0 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ds.sqlite3_index
105b0 5f 6f 72 64 65 72 62 79 29 29 3b 0d 0a 0d 0a 20  _orderby));.... 
105c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
105d0 6f 72 20 28 69 6e 74 20 69 4f 72 64 65 72 42 79  or (int iOrderBy
105e0 20 3d 20 30 3b 20 69 4f 72 64 65 72 42 79 20 3c   = 0; iOrderBy <
105f0 20 6e 4f 72 64 65 72 42 79 3b 20 69 4f 72 64 65   nOrderBy; iOrde
10600 72 42 79 2b 2b 29 0d 0a 20 20 20 20 20 20 20 20  rBy++)..        
10610 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
10620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55                 U
10630 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
10640 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ds.sqlite3_index
10650 5f 6f 72 64 65 72 62 79 20 6f 72 64 65 72 42 79  _orderby orderBy
10660 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   =..            
10670 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
10680 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
10690 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65  ods.sqlite3_inde
106a0 78 5f 6f 72 64 65 72 62 79 28 0d 0a 20 20 20 20  x_orderby(..    
106b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
106c0 20 20 20 20 20 20 20 20 6f 72 64 65 72 42 79 73          orderBys
106d0 5b 69 4f 72 64 65 72 42 79 5d 29 3b 0d 0a 0d 0a  [iOrderBy]);....
106e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
106f0 20 20 20 20 4d 61 72 73 68 61 6c 2e 53 74 72 75      Marshal.Stru
10700 63 74 75 72 65 54 6f 50 74 72 28 0d 0a 20 20 20  ctureToPtr(..   
10710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10720 20 20 20 20 20 6f 72 64 65 72 42 79 2c 20 53 51       orderBy, SQ
10730 4c 69 74 65 4d 61 72 73 68 61 6c 2e 49 6e 74 50  LiteMarshal.IntP
10740 74 72 46 6f 72 4f 66 66 73 65 74 28 0d 0a 20 20  trForOffset(..  
10750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10760 20 20 20 20 20 20 70 4f 72 64 65 72 42 79 2c 20        pOrderBy, 
10770 69 4f 72 64 65 72 42 79 20 2a 20 73 69 7a 65 4f  iOrderBy * sizeO
10780 66 4f 72 64 65 72 42 79 54 79 70 65 29 2c 0d 0a  fOrderByType),..
10790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
107a0 20 20 20 20 20 20 20 20 66 61 6c 73 65 29 3b 0d          false);.
107b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
107c0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
107d0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
107e0 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65   offset = SQLite
107f0 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73  Marshal.NextOffs
10800 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20  etOf(..         
10810 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 49         offset, I
10820 6e 74 50 74 72 2e 53 69 7a 65 2c 20 49 6e 74 50  ntPtr.Size, IntP
10830 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20  tr.Size);....   
10840 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
10850 70 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  pConstraintUsage
10860 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c   = SQLiteMarshal
10870 2e 52 65 61 64 49 6e 74 50 74 72 28 0d 0a 20 20  .ReadIntPtr(..  
10880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 49                pI
10890 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a  ndex, offset);..
108a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
108b0 74 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69  t sizeOfConstrai
108c0 6e 74 55 73 61 67 65 54 79 70 65 20 3d 20 4d 61  ntUsageType = Ma
108d0 72 73 68 61 6c 2e 53 69 7a 65 4f 66 28 74 79 70  rshal.SizeOf(typ
108e0 65 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20  eof(..          
108f0 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69        UnsafeNati
10900 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
10910 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69  3_index_constrai
10920 6e 74 5f 75 73 61 67 65 29 29 3b 0d 0a 0d 0a 20  nt_usage));.... 
10930 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28             for (
10940 69 6e 74 20 69 43 6f 6e 73 74 72 61 69 6e 74 20  int iConstraint 
10950 3d 20 30 3b 20 69 43 6f 6e 73 74 72 61 69 6e 74  = 0; iConstraint
10960 20 3c 20 6e 43 6f 6e 73 74 72 61 69 6e 74 3b 20   < nConstraint; 
10970 69 43 6f 6e 73 74 72 61 69 6e 74 2b 2b 29 0d 0a  iConstraint++)..
10980 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
10990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55                 U
109a0 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
109b0 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ds.sqlite3_index
109c0 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61 67  _constraint_usag
109d0 65 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  e constraintUsag
109e0 65 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e =..           
109f0 20 20 20 20 20 20 20 20 20 6e 65 77 20 55 6e 73           new Uns
10a00 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
10a10 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63  .sqlite3_index_c
10a20 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65 28  onstraint_usage(
10a30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10a40 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74 72            constr
10a50 61 69 6e 74 55 73 61 67 65 73 5b 69 43 6f 6e 73  aintUsages[iCons
10a60 74 72 61 69 6e 74 5d 29 3b 0d 0a 0d 0a 20 20 20  traint]);....   
10a70 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72               Mar
10a80 73 68 61 6c 2e 53 74 72 75 63 74 75 72 65 54 6f  shal.StructureTo
10a90 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Ptr(..          
10aa0 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74 72            constr
10ab0 61 69 6e 74 55 73 61 67 65 2c 20 53 51 4c 69 74  aintUsage, SQLit
10ac0 65 4d 61 72 73 68 61 6c 2e 49 6e 74 50 74 72 46  eMarshal.IntPtrF
10ad0 6f 72 4f 66 66 73 65 74 28 0d 0a 20 20 20 20 20  orOffset(..     
10ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
10af0 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 2c  ConstraintUsage,
10b00 20 69 43 6f 6e 73 74 72 61 69 6e 74 20 2a 20 73   iConstraint * s
10b10 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 55  izeOfConstraintU
10b20 73 61 67 65 54 79 70 65 29 2c 0d 0a 20 20 20 20  sageType),..    
10b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10b40 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20 20  false);..       
10b50 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
10b60 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53        offset = S
10b70 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78  QLiteMarshal.Nex
10b80 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20  tOffsetOf(..    
10b90 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
10ba0 65 74 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c  et, IntPtr.Size,
10bb0 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a   sizeof(int));..
10bc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
10bd0 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74  LiteMarshal.Writ
10be0 65 49 6e 74 33 32 28 70 49 6e 64 65 78 2c 20 6f  eInt32(pIndex, o
10bf0 66 66 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20  ffset,..        
10c00 20 20 20 20 20 20 20 20 6f 75 74 70 75 74 73 2e          outputs.
10c10 49 6e 64 65 78 4e 75 6d 62 65 72 29 3b 0d 0a 0d  IndexNumber);...
10c20 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66  .            off
10c30 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73  set = SQLiteMars
10c40 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66  hal.NextOffsetOf
10c50 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
10c60 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f     offset, sizeo
10c70 66 28 69 6e 74 29 2c 20 49 6e 74 50 74 72 2e 53  f(int), IntPtr.S
10c80 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ize);....       
10c90 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68       SQLiteMarsh
10ca0 61 6c 2e 57 72 69 74 65 49 6e 74 50 74 72 28 70  al.WriteIntPtr(p
10cb0 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 2c 0d 0a  Index, offset,..
10cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10cd0 53 51 4c 69 74 65 53 74 72 69 6e 67 2e 55 74 66  SQLiteString.Utf
10ce0 38 49 6e 74 50 74 72 46 72 6f 6d 53 74 72 69 6e  8IntPtrFromStrin
10cf0 67 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g(..            
10d00 20 20 20 20 20 20 20 20 6f 75 74 70 75 74 73 2e          outputs.
10d10 49 6e 64 65 78 53 74 72 69 6e 67 2c 20 66 61 6c  IndexString, fal
10d20 73 65 29 29 3b 20 2f 2a 20 4f 4b 3a 20 46 52 45  se)); /* OK: FRE
10d30 45 44 20 42 59 20 43 4f 52 45 2a 2f 0d 0a 0d 0a  ED BY CORE*/....
10d40 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
10d50 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  et = SQLiteMarsh
10d60 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28  al.NextOffsetOf(
10d70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10d80 20 20 6f 66 66 73 65 74 2c 20 49 6e 74 50 74 72    offset, IntPtr
10d90 2e 53 69 7a 65 2c 20 73 69 7a 65 6f 66 28 69 6e  .Size, sizeof(in
10da0 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  t));....        
10db0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
10dc0 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 65 20      // NOTE: We 
10dd0 6a 75 73 74 20 61 6c 6c 6f 63 61 74 65 64 20 74  just allocated t
10de0 68 65 20 49 6e 64 65 78 53 74 72 69 6e 67 20 66  he IndexString f
10df0 69 65 6c 64 3b 20 74 68 65 72 65 66 6f 72 65 2c  ield; therefore,
10e00 20 77 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20   we..           
10e10 20 2f 2f 20 20 20 20 20 20 20 6e 65 65 64 20 74   //       need t
10e20 6f 20 73 65 74 20 6d 61 6b 65 20 73 75 72 65 20  o set make sure 
10e30 74 68 65 20 4e 65 65 64 54 6f 46 72 65 65 49 6e  the NeedToFreeIn
10e40 64 65 78 53 74 72 69 6e 67 20 66 69 65 6c 64 0d  dexString field.
10e50 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  .            // 
10e60 20 20 20 20 20 20 69 73 20 6e 6f 6e 2d 7a 65 72        is non-zer
10e70 6f 3b 20 68 6f 77 65 76 65 72 2c 20 77 65 20 61  o; however, we a
10e80 72 65 20 6e 6f 74 20 70 69 63 6b 79 20 61 62 6f  re not picky abo
10e90 75 74 20 74 68 65 20 65 78 61 63 74 0d 0a 20 20  ut the exact..  
10ea0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
10eb0 20 20 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20     value...     
10ec0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
10ed0 20 20 20 20 20 20 20 69 6e 74 20 6e 65 65 64 54         int needT
10ee0 6f 46 72 65 65 49 6e 64 65 78 53 74 72 69 6e 67  oFreeIndexString
10ef0 20 3d 20 6f 75 74 70 75 74 73 2e 4e 65 65 64 54   = outputs.NeedT
10f00 6f 46 72 65 65 49 6e 64 65 78 53 74 72 69 6e 67  oFreeIndexString
10f10 20 21 3d 20 30 20 3f 0d 0a 20 20 20 20 20 20 20   != 0 ?..       
10f20 20 20 20 20 20 20 20 20 20 6f 75 74 70 75 74 73           outputs
10f30 2e 4e 65 65 64 54 6f 46 72 65 65 49 6e 64 65 78  .NeedToFreeIndex
10f40 53 74 72 69 6e 67 20 3a 20 31 3b 0d 0a 0d 0a 20  String : 1;.... 
10f50 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
10f60 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e  eMarshal.WriteIn
10f70 74 33 32 28 70 49 6e 64 65 78 2c 20 6f 66 66 73  t32(pIndex, offs
10f80 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  et,..           
10f90 20 20 20 20 20 6e 65 65 64 54 6f 46 72 65 65 49       needToFreeI
10fa0 6e 64 65 78 53 74 72 69 6e 67 29 3b 0d 0a 0d 0a  ndexString);....
10fb0 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
10fc0 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  et = SQLiteMarsh
10fd0 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28  al.NextOffsetOf(
10fe0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10ff0 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66    offset, sizeof
11000 28 69 6e 74 29 2c 20 73 69 7a 65 6f 66 28 69 6e  (int), sizeof(in
11010 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  t));....        
11020 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61      SQLiteMarsha
11030 6c 2e 57 72 69 74 65 49 6e 74 33 32 28 70 49 6e  l.WriteInt32(pIn
11040 64 65 78 2c 20 6f 66 66 73 65 74 2c 0d 0a 20 20  dex, offset,..  
11050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 75                ou
11060 74 70 75 74 73 2e 4f 72 64 65 72 42 79 43 6f 6e  tputs.OrderByCon
11070 73 75 6d 65 64 29 3b 0d 0a 0d 0a 20 20 20 20 20  sumed);....     
11080 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20         offset = 
11090 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65  SQLiteMarshal.Ne
110a0 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20  xtOffsetOf(..   
110b0 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66               off
110c0 73 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29  set, sizeof(int)
110d0 2c 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29  , sizeof(double)
110e0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
110f0 20 20 69 66 20 28 6f 75 74 70 75 74 73 2e 45 73    if (outputs.Es
11100 74 69 6d 61 74 65 64 43 6f 73 74 2e 48 61 73 56  timatedCost.HasV
11110 61 6c 75 65 29 0d 0a 20 20 20 20 20 20 20 20 20  alue)..         
11120 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
11130 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73        SQLiteMars
11140 68 61 6c 2e 57 72 69 74 65 44 6f 75 62 6c 65 28  hal.WriteDouble(
11150 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 2c 0d  pIndex, offset,.
11160 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11170 20 20 20 20 20 6f 75 74 70 75 74 73 2e 45 73 74       outputs.Est
11180 69 6d 61 74 65 64 43 6f 73 74 2e 47 65 74 56 61  imatedCost.GetVa
11190 6c 75 65 4f 72 44 65 66 61 75 6c 74 28 29 29 3b  lueOrDefault());
111a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
111b0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f  ...            o
111c0 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61  ffset = SQLiteMa
111d0 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74  rshal.NextOffset
111e0 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Of(..           
111f0 20 20 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a       offset, siz
11200 65 6f 66 28 64 6f 75 62 6c 65 29 2c 20 73 69 7a  eof(double), siz
11210 65 6f 66 28 6c 6f 6e 67 29 29 3b 0d 0a 0d 0a 20  eof(long));.... 
11220 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f             if (o
11230 75 74 70 75 74 73 2e 43 61 6e 55 73 65 45 73 74  utputs.CanUseEst
11240 69 6d 61 74 65 64 52 6f 77 73 28 29 20 26 26 0d  imatedRows() &&.
11250 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11260 20 6f 75 74 70 75 74 73 2e 45 73 74 69 6d 61 74   outputs.Estimat
11270 65 64 52 6f 77 73 2e 48 61 73 56 61 6c 75 65 29  edRows.HasValue)
11280 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
11290 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
112a0 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57   SQLiteMarshal.W
112b0 72 69 74 65 49 6e 74 36 34 28 70 49 6e 64 65 78  riteInt64(pIndex
112c0 2c 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20 20  , offset,..     
112d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
112e0 75 74 70 75 74 73 2e 45 73 74 69 6d 61 74 65 64  utputs.Estimated
112f0 52 6f 77 73 2e 47 65 74 56 61 6c 75 65 4f 72 44  Rows.GetValueOrD
11300 65 66 61 75 6c 74 28 29 29 3b 0d 0a 20 20 20 20  efault());..    
11310 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
11320 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20           offset 
11330 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
11340 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20  NextOffsetOf(.. 
11350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
11360 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28 6c 6f  ffset, sizeof(lo
11370 6e 67 29 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29  ng), sizeof(int)
11380 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
11390 20 20 69 66 20 28 6f 75 74 70 75 74 73 2e 43 61    if (outputs.Ca
113a0 6e 55 73 65 49 6e 64 65 78 46 6c 61 67 73 28 29  nUseIndexFlags()
113b0 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20   &&..           
113c0 20 20 20 20 20 6f 75 74 70 75 74 73 2e 49 6e 64       outputs.Ind
113d0 65 78 46 6c 61 67 73 2e 48 61 73 56 61 6c 75 65  exFlags.HasValue
113e0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
113f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11400 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e    SQLiteMarshal.
11410 57 72 69 74 65 49 6e 74 33 32 28 70 49 6e 64 65  WriteInt32(pInde
11420 78 2c 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20  x, offset,..    
11430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
11440 69 6e 74 29 6f 75 74 70 75 74 73 2e 49 6e 64 65  int)outputs.Inde
11450 78 46 6c 61 67 73 2e 47 65 74 56 61 6c 75 65 4f  xFlags.GetValueO
11460 72 44 65 66 61 75 6c 74 28 29 29 3b 0d 0a 20 20  rDefault());..  
11470 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
11480 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
11490 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61  t = SQLiteMarsha
114a0 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d  l.NextOffsetOf(.
114b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
114c0 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28   offset, sizeof(
114d0 69 6e 74 29 2c 20 73 69 7a 65 6f 66 28 6c 6f 6e  int), sizeof(lon
114e0 67 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  g));....        
114f0 20 20 20 20 69 66 20 28 6f 75 74 70 75 74 73 2e      if (outputs.
11500 43 61 6e 55 73 65 43 6f 6c 75 6d 6e 73 55 73 65  CanUseColumnsUse
11510 64 28 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20  d() &&..        
11520 20 20 20 20 20 20 20 20 6f 75 74 70 75 74 73 2e          outputs.
11530 43 6f 6c 75 6d 6e 73 55 73 65 64 2e 48 61 73 56  ColumnsUsed.HasV
11540 61 6c 75 65 29 0d 0a 20 20 20 20 20 20 20 20 20  alue)..         
11550 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
11560 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73        SQLiteMars
11570 68 61 6c 2e 57 72 69 74 65 49 6e 74 36 34 28 70  hal.WriteInt64(p
11580 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 2c 0d 0a  Index, offset,..
11590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
115a0 20 20 20 20 6f 75 74 70 75 74 73 2e 43 6f 6c 75      outputs.Colu
115b0 6d 6e 73 55 73 65 64 2e 47 65 74 56 61 6c 75 65  mnsUsed.GetValue
115c0 4f 72 44 65 66 61 75 6c 74 28 29 29 3b 0d 0a 20  OrDefault());.. 
115d0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
115e0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
115f0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
11600 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
11610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
11650 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
11660 6e 20 50 75 62 6c 69 63 20 50 72 6f 70 65 72 74  n Public Propert
11670 69 65 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ies..        pri
11680 76 61 74 65 20 53 51 4c 69 74 65 49 6e 64 65 78  vate SQLiteIndex
11690 49 6e 70 75 74 73 20 69 6e 70 75 74 73 3b 0d 0a  Inputs inputs;..
116a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
116b0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
116c0 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
116d0 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 49 6e 70  ="SQLiteIndexInp
116e0 75 74 73 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  uts" /> object i
116f0 6e 73 74 61 6e 63 65 20 63 6f 6e 74 61 69 6e 69  nstance containi
11700 6e 67 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ng..        /// 
11710 74 68 65 20 69 6e 70 75 74 73 20 74 6f 20 74 68  the inputs to th
11720 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
11730 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c  LiteManagedModul
11740 65 2e 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 0d  e.BestIndex" />.
11750 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74  .        /// met
11760 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
11770 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
11780 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c        public SQL
11790 69 74 65 49 6e 64 65 78 49 6e 70 75 74 73 20 49  iteIndexInputs I
117a0 6e 70 75 74 73 0d 0a 20 20 20 20 20 20 20 20 7b  nputs..        {
117b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
117c0 74 20 7b 20 72 65 74 75 72 6e 20 69 6e 70 75 74  t { return input
117d0 73 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d  s; }..        }.
117e0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
117f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11830 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
11840 69 76 61 74 65 20 53 51 4c 69 74 65 49 6e 64 65  ivate SQLiteInde
11850 78 4f 75 74 70 75 74 73 20 6f 75 74 70 75 74 73  xOutputs outputs
11860 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ;..        /// <
11870 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
11880 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
11890 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78  ref="SQLiteIndex
118a0 4f 75 74 70 75 74 73 22 20 2f 3e 20 6f 62 6a 65  Outputs" /> obje
118b0 63 74 20 69 6e 73 74 61 6e 63 65 20 63 6f 6e 74  ct instance cont
118c0 61 69 6e 69 6e 67 0d 0a 20 20 20 20 20 20 20 20  aining..        
118d0 2f 2f 2f 20 74 68 65 20 6f 75 74 70 75 74 73 20  /// the outputs 
118e0 66 72 6f 6d 20 74 68 65 20 3c 73 65 65 20 63 72  from the <see cr
118f0 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67  ef="ISQLiteManag
11900 65 64 4d 6f 64 75 6c 65 2e 42 65 73 74 49 6e 64  edModule.BestInd
11910 65 78 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20  ex" />..        
11920 2f 2f 2f 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20  /// method...   
11930 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
11940 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ry>..        pub
11950 6c 69 63 20 53 51 4c 69 74 65 49 6e 64 65 78 4f  lic SQLiteIndexO
11960 75 74 70 75 74 73 20 4f 75 74 70 75 74 73 0d 0a  utputs Outputs..
11970 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
11980 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
11990 75 72 6e 20 6f 75 74 70 75 74 73 3b 20 7d 0d 0a  urn outputs; }..
119a0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
119b0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20     #endregion.. 
119c0 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65     }..    #endre
119d0 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  gion....    ////
119e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
119f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11a20 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23  ///////....    #
11a30 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 56 69 72  region SQLiteVir
11a40 74 75 61 6c 54 61 62 6c 65 20 42 61 73 65 20 43  tualTable Base C
11a50 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  lass..    /// <s
11a60 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
11a70 20 54 68 69 73 20 63 6c 61 73 73 20 72 65 70 72   This class repr
11a80 65 73 65 6e 74 73 20 61 20 6d 61 6e 61 67 65 64  esents a managed
11a90 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 69   virtual table i
11aa0 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 20 20  mplementation.  
11ab0 49 74 20 69 73 0d 0a 20 20 20 20 2f 2f 2f 20 6e  It is..    /// n
11ac0 6f 74 20 73 65 61 6c 65 64 20 61 6e 64 20 73 68  ot sealed and sh
11ad0 6f 75 6c 64 20 62 65 20 75 73 65 64 20 61 73 20  ould be used as 
11ae0 74 68 65 20 62 61 73 65 20 63 6c 61 73 73 20 66  the base class f
11af0 6f 72 20 61 6e 79 20 75 73 65 72 2d 64 65 66 69  or any user-defi
11b00 6e 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 76 69 72  ned..    /// vir
11b10 74 75 61 6c 20 74 61 62 6c 65 20 63 6c 61 73 73  tual table class
11b20 65 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 69  es implemented i
11b30 6e 20 6d 61 6e 61 67 65 64 20 63 6f 64 65 2e 0d  n managed code..
11b40 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
11b50 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  ry>..    public 
11b60 63 6c 61 73 73 20 53 51 4c 69 74 65 56 69 72 74  class SQLiteVirt
11b70 75 61 6c 54 61 62 6c 65 20 3a 0d 0a 20 20 20 20  ualTable :..    
11b80 20 20 20 20 20 20 20 20 49 53 51 4c 69 74 65 4e          ISQLiteN
11b90 61 74 69 76 65 48 61 6e 64 6c 65 2c 20 49 44 69  ativeHandle, IDi
11ba0 73 70 6f 73 61 62 6c 65 20 2f 2a 20 4e 4f 54 20  sposable /* NOT 
11bb0 53 45 41 4c 45 44 20 2a 2f 0d 0a 20 20 20 20 7b  SEALED */..    {
11bc0 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
11bd0 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74 61  n Private Consta
11be0 6e 74 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  nts..        ///
11bf0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
11c00 20 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 64 65      /// The inde
11c10 78 20 77 69 74 68 69 6e 20 74 68 65 20 61 72 72  x within the arr
11c20 61 79 20 6f 66 20 73 74 72 69 6e 67 73 20 70 72  ay of strings pr
11c30 6f 76 69 64 65 64 20 74 6f 20 74 68 65 0d 0a 20  ovided to the.. 
11c40 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
11c50 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e  cref="ISQLiteMan
11c60 61 67 65 64 4d 6f 64 75 6c 65 2e 43 72 65 61 74  agedModule.Creat
11c70 65 22 20 2f 3e 20 61 6e 64 0d 0a 20 20 20 20 20  e" /> and..     
11c80 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
11c90 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64  ="ISQLiteManaged
11ca0 4d 6f 64 75 6c 65 2e 43 6f 6e 6e 65 63 74 22 20  Module.Connect" 
11cb0 2f 3e 20 6d 65 74 68 6f 64 73 20 63 6f 6e 74 61  /> methods conta
11cc0 69 6e 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20  ining the..     
11cd0 20 20 20 2f 2f 2f 20 6e 61 6d 65 20 6f 66 20 74     /// name of t
11ce0 68 65 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65 6d  he module implem
11cf0 65 6e 74 69 6e 67 20 74 68 69 73 20 76 69 72 74  enting this virt
11d00 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
11d10 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
11d20 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  y>..        priv
11d30 61 74 65 20 63 6f 6e 73 74 20 69 6e 74 20 4d 6f  ate const int Mo
11d40 64 75 6c 65 4e 61 6d 65 49 6e 64 65 78 20 3d 20  duleNameIndex = 
11d50 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  0;....        //
11d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11da0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
11db0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
11dc0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
11dd0 69 6e 64 65 78 20 77 69 74 68 69 6e 20 74 68 65  index within the
11de0 20 61 72 72 61 79 20 6f 66 20 73 74 72 69 6e 67   array of string
11df0 73 20 70 72 6f 76 69 64 65 64 20 74 6f 20 74 68  s provided to th
11e00 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
11e10 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
11e20 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43  eManagedModule.C
11e30 72 65 61 74 65 22 20 2f 3e 20 61 6e 64 0d 0a 20  reate" /> and.. 
11e40 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
11e50 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e  cref="ISQLiteMan
11e60 61 67 65 64 4d 6f 64 75 6c 65 2e 43 6f 6e 6e 65  agedModule.Conne
11e70 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 73 20 63  ct" /> methods c
11e80 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 0d 0a 20  ontaining the.. 
11e90 20 20 20 20 20 20 20 2f 2f 2f 20 6e 61 6d 65 20         /// name 
11ea0 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20  of the database 
11eb0 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 69 73 20  containing this 
11ec0 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a  virtual table...
11ed0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
11ee0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
11ef0 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 69 6e  private const in
11f00 74 20 44 61 74 61 62 61 73 65 4e 61 6d 65 49 6e  t DatabaseNameIn
11f10 64 65 78 20 3d 20 31 3b 0d 0a 0d 0a 20 20 20 20  dex = 1;....    
11f20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
11f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
11f70 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
11f80 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
11f90 2f 20 54 68 65 20 69 6e 64 65 78 20 77 69 74 68  / The index with
11fa0 69 6e 20 74 68 65 20 61 72 72 61 79 20 6f 66 20  in the array of 
11fb0 73 74 72 69 6e 67 73 20 70 72 6f 76 69 64 65 64  strings provided
11fc0 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20   to the..       
11fd0 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
11fe0 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f  ISQLiteManagedMo
11ff0 64 75 6c 65 2e 43 72 65 61 74 65 22 20 2f 3e 20  dule.Create" /> 
12000 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  and..        ///
12010 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
12020 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65  iteManagedModule
12030 2e 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74  .Connect" /> met
12040 68 6f 64 73 20 63 6f 6e 74 61 69 6e 69 6e 67 20  hods containing 
12050 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
12060 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 76 69 72   name of the vir
12070 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20  tual table...   
12080 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
12090 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
120a0 76 61 74 65 20 63 6f 6e 73 74 20 69 6e 74 20 54  vate const int T
120b0 61 62 6c 65 4e 61 6d 65 49 6e 64 65 78 20 3d 20  ableNameIndex = 
120c0 32 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64  2;..        #end
120d0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
120e0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
120f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12120 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
12130 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62       #region Pub
12140 6c 69 63 20 43 6f 6e 73 74 72 75 63 74 6f 72 73  lic Constructors
12150 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
12160 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
12170 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20   /// Constructs 
12180 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74  an instance of t
12190 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20  his class...    
121a0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
121b0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
121c0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67  <param name="arg
121d0 75 6d 65 6e 74 73 22 3e 0d 0a 20 20 20 20 20 20  uments">..      
121e0 20 20 2f 2f 2f 20 54 68 65 20 6f 72 69 67 69 6e    /// The origin
121f0 61 6c 20 61 72 72 61 79 20 6f 66 20 73 74 72 69  al array of stri
12200 6e 67 73 20 70 72 6f 76 69 64 65 64 20 74 6f 20  ngs provided to 
12210 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
12220 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
12230 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65  iteManagedModule
12240 2e 43 72 65 61 74 65 22 20 2f 3e 20 61 6e 64 0d  .Create" /> and.
12250 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
12260 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d  e cref="ISQLiteM
12270 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43 6f 6e  anagedModule.Con
12280 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 73  nect" /> methods
12290 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
122a0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
122b0 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 56 69   public SQLiteVi
122c0 72 74 75 61 6c 54 61 62 6c 65 28 0d 0a 20 20 20  rtualTable(..   
122d0 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b           string[
122e0 5d 20 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20  ] arguments..   
122f0 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
12300 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
12310 20 20 20 74 68 69 73 2e 61 72 67 75 6d 65 6e 74     this.argument
12320 73 20 3d 20 61 72 67 75 6d 65 6e 74 73 3b 0d 0a  s = arguments;..
12330 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
12340 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
12350 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
12360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
123a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
123b0 69 6f 6e 20 50 75 62 6c 69 63 20 50 72 6f 70 65  ion Public Prope
123c0 72 74 69 65 73 0d 0a 20 20 20 20 20 20 20 20 70  rties..        p
123d0 72 69 76 61 74 65 20 73 74 72 69 6e 67 5b 5d 20  rivate string[] 
123e0 61 72 67 75 6d 65 6e 74 73 3b 0d 0a 20 20 20 20  arguments;..    
123f0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
12400 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
12410 68 65 20 6f 72 69 67 69 6e 61 6c 20 61 72 72 61  he original arra
12420 79 20 6f 66 20 73 74 72 69 6e 67 73 20 70 72 6f  y of strings pro
12430 76 69 64 65 64 20 74 6f 20 74 68 65 0d 0a 20 20  vided to the..  
12440 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
12450 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61  ref="ISQLiteMana
12460 67 65 64 4d 6f 64 75 6c 65 2e 43 72 65 61 74 65  gedModule.Create
12470 22 20 2f 3e 20 61 6e 64 0d 0a 20 20 20 20 20 20  " /> and..      
12480 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
12490 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d  "ISQLiteManagedM
124a0 6f 64 75 6c 65 2e 43 6f 6e 6e 65 63 74 22 20 2f  odule.Connect" /
124b0 3e 20 6d 65 74 68 6f 64 73 2e 0d 0a 20 20 20 20  > methods...    
124c0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
124d0 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
124e0 69 63 20 76 69 72 74 75 61 6c 20 73 74 72 69 6e  ic virtual strin
124f0 67 5b 5d 20 41 72 67 75 6d 65 6e 74 73 0d 0a 20  g[] Arguments.. 
12500 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
12510 20 20 20 20 20 20 67 65 74 20 7b 20 43 68 65 63        get { Chec
12520 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74  kDisposed(); ret
12530 75 72 6e 20 61 72 67 75 6d 65 6e 74 73 3b 20 7d  urn arguments; }
12540 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
12550 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
12560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
125a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
125b0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
125c0 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66   /// The name of
125d0 20 74 68 65 20 6d 6f 64 75 6c 65 20 69 6d 70 6c   the module impl
125e0 65 6d 65 6e 74 69 6e 67 20 74 68 69 73 20 76 69  ementing this vi
125f0 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20  rtual table...  
12600 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
12610 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
12620 62 6c 69 63 20 76 69 72 74 75 61 6c 20 73 74 72  blic virtual str
12630 69 6e 67 20 4d 6f 64 75 6c 65 4e 61 6d 65 0d 0a  ing ModuleName..
12640 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
12650 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20         get..    
12660 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
12670 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b             Check
12680 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20  Disposed();.... 
12690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
126a0 74 72 69 6e 67 5b 5d 20 61 72 67 75 6d 65 6e 74  tring[] argument
126b0 73 20 3d 20 41 72 67 75 6d 65 6e 74 73 3b 0d 0a  s = Arguments;..
126c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
126d0 20 20 69 66 20 28 28 61 72 67 75 6d 65 6e 74 73    if ((arguments
126e0 20 21 3d 20 6e 75 6c 6c 29 20 26 26 0d 0a 20 20   != null) &&..  
126f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12700 20 20 28 61 72 67 75 6d 65 6e 74 73 2e 4c 65 6e    (arguments.Len
12710 67 74 68 20 3e 20 4d 6f 64 75 6c 65 4e 61 6d 65  gth > ModuleName
12720 49 6e 64 65 78 29 29 0d 0a 20 20 20 20 20 20 20  Index))..       
12730 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
12740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12750 72 65 74 75 72 6e 20 61 72 67 75 6d 65 6e 74 73  return arguments
12760 5b 4d 6f 64 75 6c 65 4e 61 6d 65 49 6e 64 65 78  [ModuleNameIndex
12770 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ];..            
12780 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
12790 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20         else..   
127a0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
127b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
127c0 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
127d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
127e0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
127f0 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
12800 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
12810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12850 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
12860 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
12870 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20     /// The name 
12880 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20  of the database 
12890 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 69 73 20  containing this 
128a0 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a  virtual table...
128b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
128c0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
128d0 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 73  public virtual s
128e0 74 72 69 6e 67 20 44 61 74 61 62 61 73 65 4e 61  tring DatabaseNa
128f0 6d 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  me..        {.. 
12900 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a             get..
12910 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
12920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
12930 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d  heckDisposed();.
12940 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
12950 20 20 20 73 74 72 69 6e 67 5b 5d 20 61 72 67 75     string[] argu
12960 6d 65 6e 74 73 20 3d 20 41 72 67 75 6d 65 6e 74  ments = Argument
12970 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  s;....          
12980 20 20 20 20 20 20 69 66 20 28 28 61 72 67 75 6d        if ((argum
12990 65 6e 74 73 20 21 3d 20 6e 75 6c 6c 29 20 26 26  ents != null) &&
129a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
129b0 20 20 20 20 20 20 28 61 72 67 75 6d 65 6e 74 73        (arguments
129c0 2e 4c 65 6e 67 74 68 20 3e 20 44 61 74 61 62 61  .Length > Databa
129d0 73 65 4e 61 6d 65 49 6e 64 65 78 29 29 0d 0a 20  seNameIndex)).. 
129e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
129f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12a00 20 20 20 20 20 20 72 65 74 75 72 6e 20 61 72 67        return arg
12a10 75 6d 65 6e 74 73 5b 44 61 74 61 62 61 73 65 4e  uments[DatabaseN
12a20 61 6d 65 49 6e 64 65 78 5d 3b 0d 0a 20 20 20 20  ameIndex];..    
12a30 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
12a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
12a50 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
12a60 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
12a70 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
12a80 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20  rn null;..      
12a90 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
12aa0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
12ab0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
12ac0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
12ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12b00 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
12b10 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
12b20 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
12b30 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 76  he name of the v
12b40 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20  irtual table... 
12b50 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
12b60 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
12b70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 73 74  ublic virtual st
12b80 72 69 6e 67 20 54 61 62 6c 65 4e 61 6d 65 0d 0a  ring TableName..
12b90 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
12ba0 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20         get..    
12bb0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
12bc0 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b             Check
12bd0 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20  Disposed();.... 
12be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
12bf0 74 72 69 6e 67 5b 5d 20 61 72 67 75 6d 65 6e 74  tring[] argument
12c00 73 20 3d 20 41 72 67 75 6d 65 6e 74 73 3b 0d 0a  s = Arguments;..
12c10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12c20 20 20 69 66 20 28 28 61 72 67 75 6d 65 6e 74 73    if ((arguments
12c30 20 21 3d 20 6e 75 6c 6c 29 20 26 26 0d 0a 20 20   != null) &&..  
12c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12c50 20 20 28 61 72 67 75 6d 65 6e 74 73 2e 4c 65 6e    (arguments.Len
12c60 67 74 68 20 3e 20 54 61 62 6c 65 4e 61 6d 65 49  gth > TableNameI
12c70 6e 64 65 78 29 29 0d 0a 20 20 20 20 20 20 20 20  ndex))..        
12c80 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
12c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
12ca0 65 74 75 72 6e 20 61 72 67 75 6d 65 6e 74 73 5b  eturn arguments[
12cb0 54 61 62 6c 65 4e 61 6d 65 49 6e 64 65 78 5d 3b  TableNameIndex];
12cc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12cd0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
12ce0 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20       else..     
12cf0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
12d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12d10 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
12d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12d30 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
12d40 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
12d50 20 20 20 20 20 20 20 2f 2f 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 0d 0a  //////////////..
12da0 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
12db0 65 20 53 51 4c 69 74 65 49 6e 64 65 78 20 69 6e  e SQLiteIndex in
12dc0 64 65 78 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f  dex;..        //
12dd0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
12de0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
12df0 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e  e cref="SQLiteIn
12e00 64 65 78 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  dex" /> object i
12e10 6e 73 74 61 6e 63 65 20 63 6f 6e 74 61 69 6e 69  nstance containi
12e20 6e 67 20 61 6c 6c 20 74 68 65 0d 0a 20 20 20 20  ng all the..    
12e30 20 20 20 20 2f 2f 2f 20 64 61 74 61 20 66 6f 72      /// data for
12e40 20 74 68 65 20 69 6e 70 75 74 73 20 61 6e 64 20   the inputs and 
12e50 6f 75 74 70 75 74 73 20 72 65 6c 61 74 69 6e 67  outputs relating
12e60 20 74 6f 20 74 68 65 20 6d 6f 73 74 20 72 65 63   to the most rec
12e70 65 6e 74 20 69 6e 64 65 78 0d 0a 20 20 20 20 20  ent index..     
12e80 20 20 20 2f 2f 2f 20 73 65 6c 65 63 74 69 6f 6e     /// selection
12e90 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
12ea0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
12eb0 20 20 20 70 75 62 6c 69 63 20 76 69 72 74 75 61     public virtua
12ec0 6c 20 53 51 4c 69 74 65 49 6e 64 65 78 20 49 6e  l SQLiteIndex In
12ed0 64 65 78 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  dex..        {..
12ee0 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
12ef0 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  { CheckDisposed(
12f00 29 3b 20 72 65 74 75 72 6e 20 69 6e 64 65 78 3b  ); return index;
12f10 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20   }..        }.. 
12f20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
12f30 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
12f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12f60 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
12f90 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 4d  #region Public M
12fa0 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
12fb0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
12fc0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
12fd0 6d 65 74 68 6f 64 20 73 68 6f 75 6c 64 20 6e 6f  method should no
12fe0 72 6d 61 6c 6c 79 20 62 65 20 75 73 65 64 20 62  rmally be used b
12ff0 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  y the..        /
13000 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  // <see cref="IS
13010 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75  QLiteManagedModu
13020 6c 65 2e 42 65 73 74 49 6e 64 65 78 22 20 2f 3e  le.BestIndex" />
13030 20 6d 65 74 68 6f 64 20 69 6e 20 6f 72 64 65 72   method in order
13040 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   to..        ///
13050 20 70 65 72 66 6f 72 6d 20 69 6e 64 65 78 20 73   perform index s
13060 65 6c 65 63 74 69 6f 6e 20 62 61 73 65 64 20 6f  election based o
13070 6e 20 74 68 65 20 63 6f 6e 73 74 72 61 69 6e 74  n the constraint
13080 73 20 70 72 6f 76 69 64 65 64 20 62 79 20 74 68  s provided by th
13090 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53  e..        /// S
130a0 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
130b0 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry...        ///
130c0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
130d0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
130e0 6e 61 6d 65 3d 22 69 6e 64 65 78 22 3e 0d 0a 20  name="index">.. 
130f0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
13100 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
13110 49 6e 64 65 78 22 20 2f 3e 20 6f 62 6a 65 63 74  Index" /> object
13120 20 69 6e 73 74 61 6e 63 65 20 63 6f 6e 74 61 69   instance contai
13130 6e 69 6e 67 20 61 6c 6c 20 74 68 65 0d 0a 20 20  ning all the..  
13140 20 20 20 20 20 20 2f 2f 2f 20 64 61 74 61 20 66        /// data f
13150 6f 72 20 74 68 65 20 69 6e 70 75 74 73 20 61 6e  or the inputs an
13160 64 20 6f 75 74 70 75 74 73 20 72 65 6c 61 74 69  d outputs relati
13170 6e 67 20 74 6f 20 69 6e 64 65 78 20 73 65 6c 65  ng to index sele
13180 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ction...        
13190 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
131a0 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
131b0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
131c0 20 4e 6f 6e 2d 7a 65 72 6f 20 75 70 6f 6e 20 73   Non-zero upon s
131d0 75 63 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 20  uccess...       
131e0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
131f0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
13200 76 69 72 74 75 61 6c 20 62 6f 6f 6c 20 42 65 73  virtual bool Bes
13210 74 49 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20  tIndex(..       
13220 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78       SQLiteIndex
13230 20 69 6e 64 65 78 0d 0a 20 20 20 20 20 20 20 20   index..        
13240 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
13250 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 43 68  ..            Ch
13260 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a  eckDisposed();..
13270 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
13280 69 73 2e 69 6e 64 65 78 20 3d 20 69 6e 64 65 78  is.index = index
13290 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
132a0 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20   return true;.. 
132b0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
132c0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
132d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
132e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
132f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
13310 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
13320 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
13330 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20 72 65  / Attempts to re
13340 63 6f 72 64 20 74 68 65 20 72 65 6e 61 6d 69 6e  cord the renamin
13350 67 20 6f 66 20 74 68 65 20 76 69 72 74 75 61 6c  g of the virtual
13360 20 74 61 62 6c 65 20 61 73 73 6f 63 69 61 74 65   table associate
13370 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77  d..        /// w
13380 69 74 68 20 74 68 69 73 20 6f 62 6a 65 63 74 20  ith this object 
13390 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20  instance...     
133a0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
133b0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
133c0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65  param name="name
133d0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
133e0 54 68 65 20 6e 65 77 20 6e 61 6d 65 20 66 6f 72  The new name for
133f0 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
13400 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le...        ///
13410 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
13420 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
13430 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  ..        /// No
13440 6e 2d 7a 65 72 6f 20 75 70 6f 6e 20 73 75 63 63  n-zero upon succ
13450 65 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ess...        //
13460 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
13470 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 69 72        public vir
13480 74 75 61 6c 20 62 6f 6f 6c 20 52 65 6e 61 6d 65  tual bool Rename
13490 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  (..            s
134a0 74 72 69 6e 67 20 6e 61 6d 65 0d 0a 20 20 20 20  tring name..    
134b0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
134c0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
134d0 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28    CheckDisposed(
134e0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
134f0 20 20 69 66 20 28 28 61 72 67 75 6d 65 6e 74 73    if ((arguments
13500 20 21 3d 20 6e 75 6c 6c 29 20 26 26 0d 0a 20 20   != null) &&..  
13510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61                (a
13520 72 67 75 6d 65 6e 74 73 2e 4c 65 6e 67 74 68 20  rguments.Length 
13530 3e 20 54 61 62 6c 65 4e 61 6d 65 49 6e 64 65 78  > TableNameIndex
13540 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
13550 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
13560 20 20 20 61 72 67 75 6d 65 6e 74 73 5b 54 61 62     arguments[Tab
13570 6c 65 4e 61 6d 65 49 6e 64 65 78 5d 20 3d 20 6e  leNameIndex] = n
13580 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ame;..          
13590 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
135a0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
135b0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
135c0 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
135d0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
135e0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
135f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
13600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13640 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
13650 69 6f 6e 20 49 53 51 4c 69 74 65 4e 61 74 69 76  ion ISQLiteNativ
13660 65 48 61 6e 64 6c 65 20 4d 65 6d 62 65 72 73 0d  eHandle Members.
13670 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
13680 20 49 6e 74 50 74 72 20 6e 61 74 69 76 65 48 61   IntPtr nativeHa
13690 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f  ndle;..        /
136a0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
136b0 20 20 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e        /// Return
136c0 73 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67  s the underlying
136d0 20 53 51 4c 69 74 65 20 6e 61 74 69 76 65 20 68   SQLite native h
136e0 61 6e 64 6c 65 20 61 73 73 6f 63 69 61 74 65 64  andle associated
136f0 20 77 69 74 68 20 74 68 69 73 0d 0a 20 20 20 20   with this..    
13700 20 20 20 20 2f 2f 2f 20 6f 62 6a 65 63 74 20 69      /// object i
13710 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20  nstance...      
13720 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
13730 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
13740 20 76 69 72 74 75 61 6c 20 49 6e 74 50 74 72 20   virtual IntPtr 
13750 4e 61 74 69 76 65 48 61 6e 64 6c 65 0d 0a 20 20  NativeHandle..  
13760 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
13770 20 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b       get { Check
13780 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75  Disposed(); retu
13790 72 6e 20 6e 61 74 69 76 65 48 61 6e 64 6c 65 3b  rn nativeHandle;
137a0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
137b0 69 6e 74 65 72 6e 61 6c 20 73 65 74 20 7b 20 6e  internal set { n
137c0 61 74 69 76 65 48 61 6e 64 6c 65 20 3d 20 76 61  ativeHandle = va
137d0 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
137e0 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
137f0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
13800 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
13810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13840 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
13850 20 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73      #region IDis
13860 70 6f 73 61 62 6c 65 20 4d 65 6d 62 65 72 73 0d  posable Members.
13870 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
13880 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
13890 2f 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f 66 20  /// Disposes of 
138a0 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74  this object inst
138b0 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ance...        /
138c0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
138d0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f         public vo
138e0 69 64 20 44 69 73 70 6f 73 65 28 29 0d 0a 20 20  id Dispose()..  
138f0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
13900 20 20 20 20 20 44 69 73 70 6f 73 65 28 74 72 75       Dispose(tru
13910 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
13920 20 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61   GC.SuppressFina
13930 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20  lize(this);..   
13940 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
13950 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
13960 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
13970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
139a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
139b0 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
139c0 20 49 44 69 73 70 6f 73 61 62 6c 65 20 22 50 61   IDisposable "Pa
139d0 74 74 65 72 6e 22 20 4d 65 6d 62 65 72 73 0d 0a  ttern" Members..
139e0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
139f0 62 6f 6f 6c 20 64 69 73 70 6f 73 65 64 3b 0d 0a  bool disposed;..
13a00 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
13a10 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
13a20 2f 2f 20 54 68 72 6f 77 73 20 61 6e 20 3c 73 65  // Throws an <se
13a30 65 20 63 72 65 66 3d 22 4f 62 6a 65 63 74 44 69  e cref="ObjectDi
13a40 73 70 6f 73 65 64 45 78 63 65 70 74 69 6f 6e 22  sposedException"
13a50 20 2f 3e 20 69 66 20 74 68 69 73 20 6f 62 6a 65   /> if this obje
13a60 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ct..        /// 
13a70 69 6e 73 74 61 6e 63 65 20 68 61 73 20 62 65 65  instance has bee
13a80 6e 20 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20  n disposed...   
13a90 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
13aa0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
13ab0 76 61 74 65 20 76 6f 69 64 20 43 68 65 63 6b 44  vate void CheckD
13ac0 69 73 70 6f 73 65 64 28 29 20 2f 2a 20 74 68 72  isposed() /* thr
13ad0 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 7b  ow */..        {
13ae0 0d 0a 23 69 66 20 54 48 52 4f 57 5f 4f 4e 5f 44  ..#if THROW_ON_D
13af0 49 53 50 4f 53 45 44 0d 0a 20 20 20 20 20 20 20  ISPOSED..       
13b00 20 20 20 20 20 69 66 20 28 64 69 73 70 6f 73 65       if (dispose
13b10 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d)..            
13b20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
13b30 20 20 20 74 68 72 6f 77 20 6e 65 77 20 4f 62 6a     throw new Obj
13b40 65 63 74 44 69 73 70 6f 73 65 64 45 78 63 65 70  ectDisposedExcep
13b50 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20  tion(..         
13b60 20 20 20 20 20 20 20 20 20 20 20 74 79 70 65 6f             typeo
13b70 66 28 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  f(SQLiteVirtualT
13b80 61 62 6c 65 29 2e 4e 61 6d 65 29 3b 0d 0a 20 20  able).Name);..  
13b90 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
13ba0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
13bb0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
13bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13c00 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
13c10 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
13c20 20 20 20 20 2f 2f 2f 20 44 69 73 70 6f 73 65 73      /// Disposes
13c30 20 6f 66 20 74 68 69 73 20 6f 62 6a 65 63 74 20   of this object 
13c40 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20  instance...     
13c50 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
13c60 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
13c70 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 69 73 70  param name="disp
13c80 6f 73 69 6e 67 22 3e 0d 0a 20 20 20 20 20 20 20  osing">..       
13c90 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66   /// Non-zero if
13ca0 20 74 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20   this method is 
13cb0 62 65 69 6e 67 20 63 61 6c 6c 65 64 20 66 72 6f  being called fro
13cc0 6d 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  m the..        /
13cd0 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 44 69  // <see cref="Di
13ce0 73 70 6f 73 65 28 29 22 20 2f 3e 20 6d 65 74 68  spose()" /> meth
13cf0 6f 64 2e 20 20 5a 65 72 6f 20 69 66 20 74 68 69  od.  Zero if thi
13d00 73 20 6d 65 74 68 6f 64 20 69 73 20 62 65 69 6e  s method is bein
13d10 67 20 63 61 6c 6c 65 64 0d 0a 20 20 20 20 20 20  g called..      
13d20 20 20 2f 2f 2f 20 66 72 6f 6d 20 74 68 65 20 66    /// from the f
13d30 69 6e 61 6c 69 7a 65 72 2e 0d 0a 20 20 20 20 20  inalizer...     
13d40 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
13d50 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74  .        protect
13d60 65 64 20 76 69 72 74 75 61 6c 20 76 6f 69 64 20  ed virtual void 
13d70 44 69 73 70 6f 73 65 28 62 6f 6f 6c 20 64 69 73  Dispose(bool dis
13d80 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20 20 20  posing)..       
13d90 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
13da0 69 66 20 28 21 64 69 73 70 6f 73 65 64 29 0d 0a  if (!disposed)..
13db0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
13dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
13dd0 2f 69 66 20 28 64 69 73 70 6f 73 69 6e 67 29 0d  /if (disposing).
13de0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13df0 20 2f 2f 7b 0d 0a 20 20 20 20 20 20 20 20 20 20   //{..          
13e00 20 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f        //    ////
13e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13e30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13e40 20 20 2f 2f 20 20 20 20 2f 2f 20 64 69 73 70 6f    //    // dispo
13e50 73 65 20 6d 61 6e 61 67 65 64 20 72 65 73 6f 75  se managed resou
13e60 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20  rces here.....  
13e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
13e80 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
13e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ea0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
13eb0 20 20 20 20 20 20 20 20 20 20 2f 2f 7d 0d 0a 0d            //}...
13ec0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13ed0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
13ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ef0 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20  ///////..       
13f00 20 20 20 20 20 20 20 20 20 2f 2f 20 72 65 6c 65           // rele
13f10 61 73 65 20 75 6e 6d 61 6e 61 67 65 64 20 72 65  ase unmanaged re
13f20 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d  sources here....
13f30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13f40 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
13f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13f60 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
13f70 20 20 20 20 20 20 20 20 20 20 20 64 69 73 70 6f             dispo
13f80 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20  sed = true;..   
13f90 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
13fa0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
13fb0 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
13fc0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
13fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
14010 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
14020 44 65 73 74 72 75 63 74 6f 72 0d 0a 20 20 20 20  Destructor..    
14030 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
14040 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 46  >..        /// F
14050 69 6e 61 6c 69 7a 65 73 20 74 68 69 73 20 6f 62  inalizes this ob
14060 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a  ject instance...
14070 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
14080 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
14090 7e 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  ~SQLiteVirtualTa
140a0 62 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  ble()..        {
140b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 44 69  ..            Di
140c0 73 70 6f 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20  spose(false);.. 
140d0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
140e0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20    #endregion..  
140f0 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67    }..    #endreg
14100 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
14110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14150 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
14160 65 67 69 6f 6e 20 53 51 4c 69 74 65 56 69 72 74  egion SQLiteVirt
14170 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 20 42  ualTableCursor B
14180 61 73 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f  ase Class..    /
14190 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
141a0 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73    /// This class
141b0 20 72 65 70 72 65 73 65 6e 74 73 20 61 20 6d 61   represents a ma
141c0 6e 61 67 65 64 20 76 69 72 74 75 61 6c 20 74 61  naged virtual ta
141d0 62 6c 65 20 63 75 72 73 6f 72 20 69 6d 70 6c 65  ble cursor imple
141e0 6d 65 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20  mentation...    
141f0 2f 2f 2f 20 49 74 20 69 73 20 6e 6f 74 20 73 65  /// It is not se
14200 61 6c 65 64 20 61 6e 64 20 73 68 6f 75 6c 64 20  aled and should 
14210 62 65 20 75 73 65 64 20 61 73 20 74 68 65 20 62  be used as the b
14220 61 73 65 20 63 6c 61 73 73 20 66 6f 72 20 61 6e  ase class for an
14230 79 0d 0a 20 20 20 20 2f 2f 2f 20 75 73 65 72 2d  y..    /// user-
14240 64 65 66 69 6e 65 64 20 76 69 72 74 75 61 6c 20  defined virtual 
14250 74 61 62 6c 65 20 63 75 72 73 6f 72 20 63 6c 61  table cursor cla
14260 73 73 65 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64  sses implemented
14270 20 69 6e 20 6d 61 6e 61 67 65 64 20 63 6f 64 65   in managed code
14280 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
14290 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69  mary>..    publi
142a0 63 20 63 6c 61 73 73 20 53 51 4c 69 74 65 56 69  c class SQLiteVi
142b0 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72  rtualTableCursor
142c0 20 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   :..            
142d0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 48 61 6e  ISQLiteNativeHan
142e0 64 6c 65 2c 20 49 44 69 73 70 6f 73 61 62 6c 65  dle, IDisposable
142f0 20 2f 2a 20 4e 4f 54 20 53 45 41 4c 45 44 20 2a   /* NOT SEALED *
14300 2f 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  /..    {..      
14310 20 20 23 72 65 67 69 6f 6e 20 50 72 6f 74 65 63    #region Protec
14320 74 65 64 20 43 6f 6e 73 74 61 6e 74 73 0d 0a 20  ted Constants.. 
14330 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
14340 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
14350 2f 20 54 68 69 73 20 76 61 6c 75 65 20 72 65 70  / This value rep
14360 72 65 73 65 6e 74 73 20 61 6e 20 69 6e 76 61 6c  resents an inval
14370 69 64 20 69 6e 74 65 67 65 72 20 72 6f 77 20 73  id integer row s
14380 65 71 75 65 6e 63 65 20 6e 75 6d 62 65 72 2e 0d  equence number..
14390 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
143a0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
143b0 20 70 72 6f 74 65 63 74 65 64 20 73 74 61 74 69   protected stati
143c0 63 20 72 65 61 64 6f 6e 6c 79 20 69 6e 74 20 49  c readonly int I
143d0 6e 76 61 6c 69 64 52 6f 77 49 6e 64 65 78 20 3d  nvalidRowIndex =
143e0 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e   0;..        #en
143f0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
14400 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
14410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
14450 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
14460 69 76 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20  ivate Data..    
14470 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
14480 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
14490 68 65 20 66 69 65 6c 64 20 68 6f 6c 64 73 20 74  he field holds t
144a0 68 65 20 69 6e 74 65 67 65 72 20 72 6f 77 20 73  he integer row s
144b0 65 71 75 65 6e 63 65 20 6e 75 6d 62 65 72 20 66  equence number f
144c0 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 72  or the current r
144d0 6f 77 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ow..        /// 
144e0 70 6f 69 6e 74 65 64 20 74 6f 20 62 79 20 74 68  pointed to by th
144f0 69 73 20 63 75 72 73 6f 72 20 6f 62 6a 65 63 74  is cursor object
14500 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20   instance...    
14510 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
14520 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  y>..        priv
14530 61 74 65 20 69 6e 74 20 72 6f 77 49 6e 64 65 78  ate int rowIndex
14540 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  ;..        #endr
14550 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
14560 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
14570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20  ////////....    
145b0 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c      #region Publ
145c0 69 63 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d  ic Constructors.
145d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
145e0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
145f0 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61  /// Constructs a
14600 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68  n instance of th
14610 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20  is class...     
14620 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
14630 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
14640 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c  param name="tabl
14650 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
14660 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
14670 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
14680 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  le" /> object in
14690 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65  stance associate
146a0 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77  d..        /// w
146b0 69 74 68 20 74 68 69 73 20 6f 62 6a 65 63 74 20  ith this object 
146c0 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20  instance...     
146d0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
146e0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
146f0 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
14700 6c 65 43 75 72 73 6f 72 28 0d 0a 20 20 20 20 20  leCursor(..     
14710 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72         SQLiteVir
14720 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 0d  tualTable table.
14730 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
14740 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68              : th
14750 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  is()..        {.
14760 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
14770 73 2e 74 61 62 6c 65 20 3d 20 74 61 62 6c 65 3b  s.table = table;
14780 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
14790 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
147a0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
147b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
147c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
147d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
147e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
147f0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
14800 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43 6f  egion Private Co
14810 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20  nstructors..    
14820 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
14830 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43  >..        /// C
14840 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73  onstructs an ins
14850 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c  tance of this cl
14860 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ass...        //
14870 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
14880 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51        private SQ
14890 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
148a0 43 75 72 73 6f 72 28 29 0d 0a 20 20 20 20 20 20  Cursor()..      
148b0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
148c0 20 72 6f 77 49 6e 64 65 78 20 3d 20 49 6e 76 61   rowIndex = Inva
148d0 6c 69 64 52 6f 77 49 6e 64 65 78 3b 0d 0a 20 20  lidRowIndex;..  
148e0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
148f0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
14900 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
14910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
14950 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
14960 6e 20 50 75 62 6c 69 63 20 50 72 6f 70 65 72 74  n Public Propert
14970 69 65 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ies..        pri
14980 76 61 74 65 20 53 51 4c 69 74 65 56 69 72 74 75  vate SQLiteVirtu
14990 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 3b 0d 0a  alTable table;..
149a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
149b0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
149c0 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
149d0 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  ="SQLiteVirtualT
149e0 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20  able" /> object 
149f0 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61  instance associa
14a00 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ted..        ///
14a10 20 77 69 74 68 20 74 68 69 73 20 6f 62 6a 65 63   with this objec
14a20 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  t instance...   
14a30 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
14a40 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ry>..        pub
14a50 6c 69 63 20 76 69 72 74 75 61 6c 20 53 51 4c 69  lic virtual SQLi
14a60 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 54  teVirtualTable T
14a70 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d  able..        {.
14a80 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
14a90 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64   { CheckDisposed
14aa0 28 29 3b 20 72 65 74 75 72 6e 20 74 61 62 6c 65  (); return table
14ab0 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ; }..        }..
14ac0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
14ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14b10 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  /....        pri
14b20 76 61 74 65 20 69 6e 74 20 69 6e 64 65 78 4e 75  vate int indexNu
14b30 6d 62 65 72 3b 0d 0a 20 20 20 20 20 20 20 20 2f  mber;..        /
14b40 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
14b50 20 20 20 20 20 20 2f 2f 2f 20 4e 75 6d 62 65 72        /// Number
14b60 20 75 73 65 64 20 74 6f 20 68 65 6c 70 20 69 64   used to help id
14b70 65 6e 74 69 66 79 20 74 68 65 20 73 65 6c 65 63  entify the selec
14b80 74 65 64 20 69 6e 64 65 78 2e 20 20 54 68 69 73  ted index.  This
14b90 20 76 61 6c 75 65 20 77 69 6c 6c 0d 0a 20 20 20   value will..   
14ba0 20 20 20 20 20 2f 2f 2f 20 62 65 20 73 65 74 20       /// be set 
14bb0 76 69 61 20 74 68 65 20 3c 73 65 65 20 63 72 65  via the <see cre
14bc0 66 3d 22 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65  f="Filter" /> me
14bd0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  thod...        /
14be0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
14bf0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 69         public vi
14c00 72 74 75 61 6c 20 69 6e 74 20 49 6e 64 65 78 4e  rtual int IndexN
14c10 75 6d 62 65 72 0d 0a 20 20 20 20 20 20 20 20 7b  umber..        {
14c20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
14c30 74 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65  t { CheckDispose
14c40 64 28 29 3b 20 72 65 74 75 72 6e 20 69 6e 64 65  d(); return inde
14c50 78 4e 75 6d 62 65 72 3b 20 7d 0d 0a 20 20 20 20  xNumber; }..    
14c60 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
14c70 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
14c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14cb0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
14cc0 20 20 20 20 70 72 69 76 61 74 65 20 73 74 72 69      private stri
14cd0 6e 67 20 69 6e 64 65 78 53 74 72 69 6e 67 3b 0d  ng indexString;.
14ce0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
14cf0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
14d00 2f 2f 2f 20 53 74 72 69 6e 67 20 75 73 65 64 20  /// String used 
14d10 74 6f 20 68 65 6c 70 20 69 64 65 6e 74 69 66 79  to help identify
14d20 20 74 68 65 20 73 65 6c 65 63 74 65 64 20 69 6e   the selected in
14d30 64 65 78 2e 20 20 54 68 69 73 20 76 61 6c 75 65  dex.  This value
14d40 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f   will..        /
14d50 2f 2f 20 62 65 20 73 65 74 20 76 69 61 20 74 68  // be set via th
14d60 65 20 3c 73 65 65 20 63 72 65 66 3d 22 46 69 6c  e <see cref="Fil
14d70 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ter" /> method..
14d80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
14d90 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
14da0 20 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20   public virtual 
14db0 73 74 72 69 6e 67 20 49 6e 64 65 78 53 74 72 69  string IndexStri
14dc0 6e 67 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ng..        {.. 
14dd0 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
14de0 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
14df0 3b 20 72 65 74 75 72 6e 20 69 6e 64 65 78 53 74  ; return indexSt
14e00 72 69 6e 67 3b 20 7d 0d 0a 20 20 20 20 20 20 20  ring; }..       
14e10 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
14e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e60 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
14e70 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 56   private SQLiteV
14e80 61 6c 75 65 5b 5d 20 76 61 6c 75 65 73 3b 0d 0a  alue[] values;..
14e90 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
14ea0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
14eb0 2f 2f 20 54 68 65 20 76 61 6c 75 65 73 20 75 73  // The values us
14ec0 65 64 20 74 6f 20 66 69 6c 74 65 72 20 74 68 65  ed to filter the
14ed0 20 72 6f 77 73 20 72 65 74 75 72 6e 65 64 20 76   rows returned v
14ee0 69 61 20 74 68 69 73 20 63 75 72 73 6f 72 20 6f  ia this cursor o
14ef0 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20 2f  bject..        /
14f00 2f 2f 20 69 6e 73 74 61 6e 63 65 2e 20 20 54 68  // instance.  Th
14f10 69 73 20 76 61 6c 75 65 20 77 69 6c 6c 20 62 65  is value will be
14f20 20 73 65 74 20 76 69 61 20 74 68 65 20 3c 73 65   set via the <se
14f30 65 20 63 72 65 66 3d 22 46 69 6c 74 65 72 22 20  e cref="Filter" 
14f40 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  />..        /// 
14f50 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
14f60 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
14f70 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
14f80 76 69 72 74 75 61 6c 20 53 51 4c 69 74 65 56 61  virtual SQLiteVa
14f90 6c 75 65 5b 5d 20 56 61 6c 75 65 73 0d 0a 20 20  lue[] Values..  
14fa0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
14fb0 20 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b       get { Check
14fc0 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75  Disposed(); retu
14fd0 72 6e 20 76 61 6c 75 65 73 3b 20 7d 0d 0a 20 20  rn values; }..  
14fe0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
14ff0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
15000 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
15010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
15050 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
15060 6e 20 50 72 6f 74 65 63 74 65 64 20 4d 65 74 68  n Protected Meth
15070 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ods..        ///
15080 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
15090 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73      /// Attempts
150a0 20 74 6f 20 70 65 72 73 69 73 74 20 74 68 65 20   to persist the 
150b0 73 70 65 63 69 66 69 65 64 20 3c 73 65 65 20 63  specified <see c
150c0 72 65 66 3d 22 53 51 4c 69 74 65 56 61 6c 75 65  ref="SQLiteValue
150d0 22 20 2f 3e 20 6f 62 6a 65 63 74 0d 0a 20 20 20  " /> object..   
150e0 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63       /// instanc
150f0 65 73 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 6d  es in order to m
15100 61 6b 65 20 74 68 65 6d 20 61 76 61 69 6c 61 62  ake them availab
15110 6c 65 20 61 66 74 65 72 20 74 68 65 0d 0a 20 20  le after the..  
15120 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
15130 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61  ref="ISQLiteMana
15140 67 65 64 4d 6f 64 75 6c 65 2e 46 69 6c 74 65 72  gedModule.Filter
15150 22 20 2f 3e 20 6d 65 74 68 6f 64 20 72 65 74 75  " /> method retu
15160 72 6e 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns...        //
15170 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
15180 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
15190 20 6e 61 6d 65 3d 22 76 61 6c 75 65 73 22 3e 0d   name="values">.
151a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
151b0 20 61 72 72 61 79 20 6f 66 20 3c 73 65 65 20 63   array of <see c
151c0 72 65 66 3d 22 53 51 4c 69 74 65 56 61 6c 75 65  ref="SQLiteValue
151d0 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
151e0 61 6e 63 65 73 20 74 6f 20 62 65 0d 0a 20 20 20  ances to be..   
151f0 20 20 20 20 20 2f 2f 2f 20 70 65 72 73 69 73 74       /// persist
15200 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
15210 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
15220 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
15230 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
15240 65 20 6e 75 6d 62 65 72 20 6f 66 20 3c 73 65 65  e number of <see
15250 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 61 6c   cref="SQLiteVal
15260 75 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  ue" /> object in
15270 73 74 61 6e 63 65 73 20 74 68 61 74 20 77 65 72  stances that wer
15280 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  e..        /// s
15290 75 63 63 65 73 73 66 75 6c 6c 79 20 70 65 72 73  uccessfully pers
152a0 69 73 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20  isted...        
152b0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
152c0 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65          protecte
152d0 64 20 76 69 72 74 75 61 6c 20 69 6e 74 20 54 72  d virtual int Tr
152e0 79 50 65 72 73 69 73 74 56 61 6c 75 65 73 28 0d  yPersistValues(.
152f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
15300 69 74 65 56 61 6c 75 65 5b 5d 20 76 61 6c 75 65  iteValue[] value
15310 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  s..            )
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 69 6e 74 20 72 65 73           int res
15340 75 6c 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20  ult = 0;....    
15350 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75          if (valu
15360 65 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  es != null)..   
15370 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
15380 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 65              fore
15390 61 63 68 20 28 53 51 4c 69 74 65 56 61 6c 75 65  ach (SQLiteValue
153a0 20 76 61 6c 75 65 20 69 6e 20 76 61 6c 75 65 73   value in values
153b0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
153c0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
153d0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61            if (va
153e0 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  lue == null)..  
153f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15400 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d        continue;.
15410 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
15420 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65         if (value
15430 2e 50 65 72 73 69 73 74 28 29 29 0d 0a 20 20 20  .Persist())..   
15440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15450 20 20 20 20 20 72 65 73 75 6c 74 2b 2b 3b 0d 0a       result++;..
15460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15470 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
15480 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
15490 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a  return result;..
154a0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
154b0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
154c0 0a 20 20 20 20 20 20 20 20 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 2f  ////////////////
15500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15510 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
15520 69 6f 6e 20 50 75 62 6c 69 63 20 4d 65 74 68 6f  ion Public Metho
15530 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
15540 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
15550 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68     /// This meth
15560 6f 64 20 73 68 6f 75 6c 64 20 6e 6f 72 6d 61 6c  od should normal
15570 6c 79 20 62 65 20 75 73 65 64 20 62 79 20 74 68  ly be used by th
15580 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
15590 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
155a0 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 46  eManagedModule.F
155b0 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64  ilter" /> method
155c0 20 69 6e 20 6f 72 64 65 72 20 74 6f 0d 0a 20 20   in order to..  
155d0 20 20 20 20 20 20 2f 2f 2f 20 70 65 72 66 6f 72        /// perfor
155e0 6d 20 66 69 6c 74 65 72 69 6e 67 20 6f 66 20 74  m filtering of t
155f0 68 65 20 72 65 73 75 6c 74 20 72 6f 77 73 20 61  he result rows a
15600 6e 64 2f 6f 72 20 74 6f 20 72 65 63 6f 72 64 20  nd/or to record 
15610 74 68 65 20 66 69 6c 74 65 72 69 6e 67 0d 0a 20  the filtering.. 
15620 20 20 20 20 20 20 20 2f 2f 2f 20 63 72 69 74 65         /// crite
15630 72 69 61 20 70 72 6f 76 69 64 65 64 20 62 79 20  ria provided by 
15640 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
15650 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20  library...      
15660 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
15670 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
15680 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78  aram name="index
15690 4e 75 6d 62 65 72 22 3e 0d 0a 20 20 20 20 20 20  Number">..      
156a0 20 20 2f 2f 2f 20 4e 75 6d 62 65 72 20 75 73 65    /// Number use
156b0 64 20 74 6f 20 68 65 6c 70 20 69 64 65 6e 74 69  d to help identi
156c0 66 79 20 74 68 65 20 73 65 6c 65 63 74 65 64 20  fy the selected 
156d0 69 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20 20 20  index...        
156e0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
156f0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
15700 20 6e 61 6d 65 3d 22 69 6e 64 65 78 53 74 72 69   name="indexStri
15710 6e 67 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ng">..        //
15720 2f 20 53 74 72 69 6e 67 20 75 73 65 64 20 74 6f  / String used to
15730 20 68 65 6c 70 20 69 64 65 6e 74 69 66 79 20 74   help identify t
15740 68 65 20 73 65 6c 65 63 74 65 64 20 69 6e 64 65  he selected inde
15750 78 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  x...        /// 
15760 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
15770 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
15780 65 3d 22 76 61 6c 75 65 73 22 3e 0d 0a 20 20 20  e="values">..   
15790 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c       /// The val
157a0 75 65 73 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e  ues correspondin
157b0 67 20 74 6f 20 65 61 63 68 20 63 6f 6c 75 6d 6e  g to each column
157c0 20 69 6e 20 74 68 65 20 73 65 6c 65 63 74 65 64   in the selected
157d0 20 69 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20 20   index...       
157e0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
157f0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 69         public vi
15800 72 74 75 61 6c 20 76 6f 69 64 20 46 69 6c 74 65  rtual void Filte
15810 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
15820 69 6e 74 20 69 6e 64 65 78 4e 75 6d 62 65 72 2c  int indexNumber,
15830 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74  ..            st
15840 72 69 6e 67 20 69 6e 64 65 78 53 74 72 69 6e 67  ring indexString
15850 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  ,..            S
15860 51 4c 69 74 65 56 61 6c 75 65 5b 5d 20 76 61 6c  QLiteValue[] val
15870 75 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ues..           
15880 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
15890 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b             Check
158a0 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20  Disposed();.... 
158b0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28             if ((
158c0 76 61 6c 75 65 73 20 21 3d 20 6e 75 6c 6c 29 20  values != null) 
158d0 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  &&..            
158e0 20 20 20 20 28 54 72 79 50 65 72 73 69 73 74 56      (TryPersistV
158f0 61 6c 75 65 73 28 76 61 6c 75 65 73 29 20 21 3d  alues(values) !=
15900 20 76 61 6c 75 65 73 2e 4c 65 6e 67 74 68 29 29   values.Length))
15910 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
15920 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15930 20 74 68 72 6f 77 20 6e 65 77 20 53 51 4c 69 74   throw new SQLit
15940 65 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20 20  eException(..   
15950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15960 20 22 66 61 69 6c 65 64 20 74 6f 20 70 65 72 73   "failed to pers
15970 69 73 74 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20  ist one or more 
15980 76 61 6c 75 65 73 22 29 3b 0d 0a 20 20 20 20 20  values");..     
15990 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
159a0 20 20 20 20 20 20 20 20 74 68 69 73 2e 69 6e 64          this.ind
159b0 65 78 4e 75 6d 62 65 72 20 3d 20 69 6e 64 65 78  exNumber = index
159c0 4e 75 6d 62 65 72 3b 0d 0a 20 20 20 20 20 20 20  Number;..       
159d0 20 20 20 20 20 74 68 69 73 2e 69 6e 64 65 78 53       this.indexS
159e0 74 72 69 6e 67 20 3d 20 69 6e 64 65 78 53 74 72  tring = indexStr
159f0 69 6e 67 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ing;..          
15a00 20 20 74 68 69 73 2e 76 61 6c 75 65 73 20 3d 20    this.values = 
15a10 76 61 6c 75 65 73 3b 0d 0a 20 20 20 20 20 20 20  values;..       
15a20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
15a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15a70 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
15a80 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
15a90 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65          /// Dete
15aa0 72 6d 69 6e 65 73 20 74 68 65 20 69 6e 74 65 67  rmines the integ
15ab0 65 72 20 72 6f 77 20 73 65 71 75 65 6e 63 65 20  er row sequence 
15ac0 6e 75 6d 62 65 72 20 66 6f 72 20 74 68 65 20 63  number for the c
15ad0 75 72 72 65 6e 74 20 72 6f 77 2e 0d 0a 20 20 20  urrent row...   
15ae0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
15af0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
15b00 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
15b10 20 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65      /// The inte
15b20 67 65 72 20 72 6f 77 20 73 65 71 75 65 6e 63 65  ger row sequence
15b30 20 6e 75 6d 62 65 72 20 66 6f 72 20 74 68 65 20   number for the 
15b40 63 75 72 72 65 6e 74 20 72 6f 77 20 2d 4f 52 2d  current row -OR-
15b50 20 7a 65 72 6f 20 69 66 0d 0a 20 20 20 20 20 20   zero if..      
15b60 20 20 2f 2f 2f 20 69 74 20 63 61 6e 6e 6f 74 20    /// it cannot 
15b70 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a  be determined...
15b80 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
15b90 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
15ba0 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 69  public virtual i
15bb0 6e 74 20 47 65 74 52 6f 77 49 6e 64 65 78 28 29  nt GetRowIndex()
15bc0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
15bd0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
15be0 72 6f 77 49 6e 64 65 78 3b 0d 0a 20 20 20 20 20  rowIndex;..     
15bf0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
15c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15c40 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
15c50 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
15c60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 64  ..        /// Ad
15c70 6a 75 73 74 73 20 74 68 65 20 69 6e 74 65 67 65  justs the intege
15c80 72 20 72 6f 77 20 73 65 71 75 65 6e 63 65 20 6e  r row sequence n
15c90 75 6d 62 65 72 20 73 6f 20 74 68 61 74 20 69 74  umber so that it
15ca0 20 72 65 66 65 72 73 20 74 6f 20 74 68 65 0d 0a   refers to the..
15cb0 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 65 78 74          /// next
15cc0 20 72 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 2f   row...        /
15cd0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
15ce0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 69         public vi
15cf0 72 74 75 61 6c 20 76 6f 69 64 20 4e 65 78 74 52  rtual void NextR
15d00 6f 77 49 6e 64 65 78 28 29 0d 0a 20 20 20 20 20  owIndex()..     
15d10 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
15d20 20 20 72 6f 77 49 6e 64 65 78 2b 2b 3b 0d 0a 20    rowIndex++;.. 
15d30 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
15d40 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
15d50 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
15d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
15da0 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
15db0 6f 6e 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65  on ISQLiteNative
15dc0 48 61 6e 64 6c 65 20 4d 65 6d 62 65 72 73 0d 0a  Handle Members..
15dd0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
15de0 49 6e 74 50 74 72 20 6e 61 74 69 76 65 48 61 6e  IntPtr nativeHan
15df0 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f  dle;..        //
15e00 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
15e10 20 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73       /// Returns
15e20 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20   the underlying 
15e30 53 51 4c 69 74 65 20 6e 61 74 69 76 65 20 68 61  SQLite native ha
15e40 6e 64 6c 65 20 61 73 73 6f 63 69 61 74 65 64 20  ndle associated 
15e50 77 69 74 68 20 74 68 69 73 0d 0a 20 20 20 20 20  with this..     
15e60 20 20 20 2f 2f 2f 20 6f 62 6a 65 63 74 20 69 6e     /// object in
15e70 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20  stance...       
15e80 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
15e90 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
15ea0 76 69 72 74 75 61 6c 20 49 6e 74 50 74 72 20 4e  virtual IntPtr N
15eb0 61 74 69 76 65 48 61 6e 64 6c 65 0d 0a 20 20 20  ativeHandle..   
15ec0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
15ed0 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44      get { CheckD
15ee0 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75 72  isposed(); retur
15ef0 6e 20 6e 61 74 69 76 65 48 61 6e 64 6c 65 3b 20  n nativeHandle; 
15f00 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  }..            i
15f10 6e 74 65 72 6e 61 6c 20 73 65 74 20 7b 20 6e 61  nternal set { na
15f20 74 69 76 65 48 61 6e 64 6c 65 20 3d 20 76 61 6c  tiveHandle = val
15f30 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d  ue; }..        }
15f40 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
15f50 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
15f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15fa0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
15fb0 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73 70     #region IDisp
15fc0 6f 73 61 62 6c 65 20 4d 65 6d 62 65 72 73 0d 0a  osable Members..
15fd0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
15fe0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
15ff0 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f 66 20 74  // Disposes of t
16000 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  his object insta
16010 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nce...        //
16020 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
16030 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69        public voi
16040 64 20 44 69 73 70 6f 73 65 28 29 0d 0a 20 20 20  d Dispose()..   
16050 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
16060 20 20 20 20 44 69 73 70 6f 73 65 28 74 72 75 65      Dispose(true
16070 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
16080 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61 6c  GC.SuppressFinal
16090 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20  ize(this);..    
160a0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
160b0 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
160c0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
160d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
160e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
160f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
16110 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
16120 49 44 69 73 70 6f 73 61 62 6c 65 20 22 50 61 74  IDisposable "Pat
16130 74 65 72 6e 22 20 4d 65 6d 62 65 72 73 0d 0a 20  tern" Members.. 
16140 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62         private b
16150 6f 6f 6c 20 64 69 73 70 6f 73 65 64 3b 0d 0a 20  ool disposed;.. 
16160 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
16170 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
16180 2f 20 54 68 72 6f 77 73 20 61 6e 20 3c 73 65 65  / Throws an <see
16190 20 63 72 65 66 3d 22 4f 62 6a 65 63 74 44 69 73   cref="ObjectDis
161a0 70 6f 73 65 64 45 78 63 65 70 74 69 6f 6e 22 20  posedException" 
161b0 2f 3e 20 69 66 20 74 68 69 73 20 6f 62 6a 65 63  /> if this objec
161c0 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  t..        /// i
161d0 6e 73 74 61 6e 63 65 20 68 61 73 20 62 65 65 6e  nstance has been
161e0 20 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20 20   disposed...    
161f0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
16200 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  y>..        priv
16210 61 74 65 20 76 6f 69 64 20 43 68 65 63 6b 44 69  ate void CheckDi
16220 73 70 6f 73 65 64 28 29 20 2f 2a 20 74 68 72 6f  sposed() /* thro
16230 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 7b 0d  w */..        {.
16240 0a 23 69 66 20 54 48 52 4f 57 5f 4f 4e 5f 44 49  .#if THROW_ON_DI
16250 53 50 4f 53 45 44 0d 0a 20 20 20 20 20 20 20 20  SPOSED..        
16260 20 20 20 20 69 66 20 28 64 69 73 70 6f 73 65 64      if (disposed
16270 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
16280 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16290 20 20 74 68 72 6f 77 20 6e 65 77 20 4f 62 6a 65    throw new Obje
162a0 63 74 44 69 73 70 6f 73 65 64 45 78 63 65 70 74  ctDisposedExcept
162b0 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ion(..          
162c0 20 20 20 20 20 20 20 20 20 20 74 79 70 65 6f 66            typeof
162d0 28 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  (SQLiteVirtualTa
162e0 62 6c 65 43 75 72 73 6f 72 29 2e 4e 61 6d 65 29  bleCursor).Name)
162f0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
16300 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
16310 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
16320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16360 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
16370 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
16380 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 69 73  .        /// Dis
16390 70 6f 73 65 73 20 6f 66 20 74 68 69 73 20 6f 62  poses of this ob
163a0 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a  ject instance...
163b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
163c0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
163d0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
163e0 22 64 69 73 70 6f 73 69 6e 67 22 3e 0d 0a 20 20  "disposing">..  
163f0 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65        /// Non-ze
16400 72 6f 20 69 66 20 74 68 69 73 20 6d 65 74 68 6f  ro if this metho
16410 64 20 69 73 20 62 65 69 6e 67 20 63 61 6c 6c 65  d is being calle
16420 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20  d from the..    
16430 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
16440 66 3d 22 44 69 73 70 6f 73 65 28 29 22 20 2f 3e  f="Dispose()" />
16450 20 6d 65 74 68 6f 64 2e 20 20 5a 65 72 6f 20 69   method.  Zero i
16460 66 20 74 68 69 73 20 6d 65 74 68 6f 64 20 69 73  f this method is
16470 20 62 65 69 6e 67 20 63 61 6c 6c 65 64 0d 0a 20   being called.. 
16480 20 20 20 20 20 20 20 2f 2f 2f 20 66 72 6f 6d 20         /// from 
16490 74 68 65 20 66 69 6e 61 6c 69 7a 65 72 2e 0d 0a  the finalizer...
164a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
164b0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  ram>..        pr
164c0 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20  otected virtual 
164d0 76 6f 69 64 20 44 69 73 70 6f 73 65 28 62 6f 6f  void Dispose(boo
164e0 6c 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20  l disposing)..  
164f0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
16500 20 20 20 20 20 69 66 20 28 21 64 69 73 70 6f 73       if (!dispos
16510 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ed)..           
16520 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
16530 20 20 20 20 2f 2f 69 66 20 28 64 69 73 70 6f 73      //if (dispos
16540 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ing)..          
16550 20 20 20 20 20 20 2f 2f 7b 0d 0a 20 20 20 20 20        //{..     
16560 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
16570 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
16580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16590 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20  /////..         
165a0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 20         //    // 
165b0 64 69 73 70 6f 73 65 20 6d 61 6e 61 67 65 64 20  dispose managed 
165c0 72 65 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e  resources here..
165d0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
165e0 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f     //    ///////
165f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
16610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
16620 2f 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  /}....          
16630 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
16640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
16660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
16670 20 72 65 6c 65 61 73 65 20 75 6e 6d 61 6e 61 67   release unmanag
16680 65 64 20 72 65 73 6f 75 72 63 65 73 20 68 65 72  ed resources her
16690 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  e.....          
166a0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
166b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
166c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
166d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
166e0 64 69 73 70 6f 73 65 64 20 3d 20 74 72 75 65 3b  disposed = true;
166f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
16700 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
16710 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
16720 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
16730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16770 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
16780 67 69 6f 6e 20 44 65 73 74 72 75 63 74 6f 72 0d  gion Destructor.
16790 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
167a0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
167b0 2f 2f 2f 20 46 69 6e 61 6c 69 7a 65 73 20 74 68  /// Finalizes th
167c0 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  is object instan
167d0 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ce...        ///
167e0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
167f0 20 20 20 20 20 7e 53 51 4c 69 74 65 56 69 72 74       ~SQLiteVirt
16800 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 28 29  ualTableCursor()
16810 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
16820 20 20 20 20 20 20 20 20 20 44 69 73 70 6f 73 65           Dispose
16830 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20  (false);..      
16840 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
16850 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a  dregion..    }..
16860 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
16870 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
16880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
168a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
168b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
168c0 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
168d0 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65 48 61   ISQLiteNativeHa
168e0 6e 64 6c 65 20 49 6e 74 65 72 66 61 63 65 0d 0a  ndle Interface..
168f0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
16900 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  >..    /// This 
16910 69 6e 74 65 72 66 61 63 65 20 72 65 70 72 65 73  interface repres
16920 65 6e 74 73 20 61 20 6e 61 74 69 76 65 20 68 61  ents a native ha
16930 6e 64 6c 65 20 70 72 6f 76 69 64 65 64 20 62 79  ndle provided by
16940 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
16950 0d 0a 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72  ..    /// librar
16960 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  y...    /// </su
16970 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c  mmary>..    publ
16980 69 63 20 69 6e 74 65 72 66 61 63 65 20 49 53 51  ic interface ISQ
16990 4c 69 74 65 4e 61 74 69 76 65 48 61 6e 64 6c 65  LiteNativeHandle
169a0 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
169b0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
169c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
169d0 6e 61 74 69 76 65 20 68 61 6e 64 6c 65 20 76 61  native handle va
169e0 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  lue...        //
169f0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
16a00 20 20 20 20 20 20 49 6e 74 50 74 72 20 4e 61 74        IntPtr Nat
16a10 69 76 65 48 61 6e 64 6c 65 20 7b 20 67 65 74 3b  iveHandle { get;
16a20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23   }..    }..    #
16a30 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
16a40 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
16a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
16a90 20 20 20 20 23 72 65 67 69 6f 6e 20 49 53 51 4c      #region ISQL
16aa0 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65  iteManagedModule
16ab0 20 49 6e 74 65 72 66 61 63 65 0d 0a 20 20 20 20   Interface..    
16ac0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
16ad0 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 6e 74 65     /// This inte
16ae0 72 66 61 63 65 20 72 65 70 72 65 73 65 6e 74 73  rface represents
16af0 20 61 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65   a virtual table
16b00 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20   implementation 
16b10 77 72 69 74 74 65 6e 20 69 6e 0d 0a 20 20 20 20  written in..    
16b20 2f 2f 2f 20 6d 61 6e 61 67 65 64 20 63 6f 64 65  /// managed code
16b30 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
16b40 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69  mary>..    publi
16b50 63 20 69 6e 74 65 72 66 61 63 65 20 49 53 51 4c  c interface ISQL
16b60 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65  iteManagedModule
16b70 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
16b80 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
16b90 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65 74 75          /// Retu
16ba0 72 6e 73 20 6e 6f 6e 2d 7a 65 72 6f 20 69 66 20  rns non-zero if 
16bb0 74 68 65 20 73 63 68 65 6d 61 20 66 6f 72 20 74  the schema for t
16bc0 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
16bd0 20 68 61 73 20 62 65 65 6e 0d 0a 20 20 20 20 20   has been..     
16be0 20 20 20 2f 2f 2f 20 64 65 63 6c 61 72 65 64 2e     /// declared.
16bf0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
16c00 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
16c10 20 20 62 6f 6f 6c 20 44 65 63 6c 61 72 65 64 20    bool Declared 
16c20 7b 20 67 65 74 3b 20 7d 0d 0a 0d 0a 20 20 20 20  { get; }....    
16c30 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
16c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
16c80 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
16c90 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
16ca0 2f 20 52 65 74 75 72 6e 73 20 74 68 65 20 6e 61  / Returns the na
16cb0 6d 65 20 6f 66 20 74 68 65 20 6d 6f 64 75 6c 65  me of the module
16cc0 20 61 73 20 69 74 20 77 61 73 20 72 65 67 69 73   as it was regis
16cd0 74 65 72 65 64 20 77 69 74 68 20 74 68 65 20 53  tered with the S
16ce0 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 20 20 2f  QLite..        /
16cf0 2f 2f 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e  // core library.
16d00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
16d10 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
16d20 20 20 73 74 72 69 6e 67 20 4e 61 6d 65 20 7b 20    string Name { 
16d30 67 65 74 3b 20 7d 0d 0a 0d 0a 20 20 20 20 20 20  get; }....      
16d40 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
16d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
16d90 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
16da0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
16db0 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63  This method is c
16dc0 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73  alled in respons
16dd0 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  e to the..      
16de0 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
16df0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
16e00 64 75 6c 65 2e 78 43 72 65 61 74 65 22 20 2f 3e  dule.xCreate" />
16e10 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
16e20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
16e30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
16e40 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65  aram name="conne
16e50 63 74 69 6f 6e 22 3e 0d 0a 20 20 20 20 20 20 20  ction">..       
16e60 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
16e70 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ef="SQLiteConnec
16e80 74 69 6f 6e 22 20 2f 3e 20 6f 62 6a 65 63 74 20  tion" /> object 
16e90 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61  instance associa
16ea0 74 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20  ted with..      
16eb0 20 20 2f 2f 2f 20 74 68 65 20 76 69 72 74 75 61    /// the virtua
16ec0 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  l table...      
16ed0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
16ee0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
16ef0 61 6d 20 6e 61 6d 65 3d 22 70 43 6c 69 65 6e 74  am name="pClient
16f00 44 61 74 61 22 3e 0d 0a 20 20 20 20 20 20 20 20  Data">..        
16f10 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 75  /// The native u
16f20 73 65 72 2d 64 61 74 61 20 70 6f 69 6e 74 65 72  ser-data pointer
16f30 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
16f40 20 74 68 69 73 20 6d 6f 64 75 6c 65 2c 20 61 73   this module, as
16f50 20 69 74 20 77 61 73 0d 0a 20 20 20 20 20 20 20   it was..       
16f60 20 2f 2f 2f 20 70 72 6f 76 69 64 65 64 20 74 6f   /// provided to
16f70 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
16f80 20 6c 69 62 72 61 72 79 20 77 68 65 6e 20 74 68   library when th
16f90 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20  e native module 
16fa0 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20 20 20  instance..      
16fb0 20 20 2f 2f 2f 20 77 61 73 20 63 72 65 61 74 65    /// was create
16fc0 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
16fd0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
16fe0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
16ff0 65 3d 22 61 72 67 75 6d 65 6e 74 73 22 3e 0d 0a  e="arguments">..
17000 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
17010 6d 6f 64 75 6c 65 20 6e 61 6d 65 2c 20 64 61 74  module name, dat
17020 61 62 61 73 65 20 6e 61 6d 65 2c 20 76 69 72 74  abase name, virt
17030 75 61 6c 20 74 61 62 6c 65 20 6e 61 6d 65 2c 20  ual table name, 
17040 61 6e 64 20 61 6c 6c 20 6f 74 68 65 72 0d 0a 20  and all other.. 
17050 20 20 20 20 20 20 20 2f 2f 2f 20 61 72 67 75 6d         /// argum
17060 65 6e 74 73 20 70 61 73 73 65 64 20 74 6f 20 74  ents passed to t
17070 68 65 20 43 52 45 41 54 45 20 56 49 52 54 55 41  he CREATE VIRTUA
17080 4c 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e  L TABLE statemen
17090 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  t...        /// 
170a0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
170b0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
170c0 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20  e="table">..    
170d0 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63      /// Upon suc
170e0 63 65 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d  cess, this param
170f0 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64  eter must be mod
17100 69 66 69 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e  ified to contain
17110 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
17120 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  / <see cref="SQL
17130 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22  iteVirtualTable"
17140 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
17150 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 20 77  nce associated w
17160 69 74 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ith..        ///
17170 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
17180 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le...        ///
17190 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
171a0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
171b0 6d 65 3d 22 65 72 72 6f 72 22 3e 0d 0a 20 20 20  me="error">..   
171c0 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 66 61       /// Upon fa
171d0 69 6c 75 72 65 2c 20 74 68 69 73 20 70 61 72 61  ilure, this para
171e0 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f  meter must be mo
171f0 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74 61 69  dified to contai
17200 6e 20 61 6e 20 65 72 72 6f 72 0d 0a 20 20 20 20  n an error..    
17210 20 20 20 20 2f 2f 2f 20 6d 65 73 73 61 67 65 2e      /// message.
17220 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
17230 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
17240 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
17250 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61         /// A sta
17260 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74  ndard SQLite ret
17270 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  urn code...     
17280 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
17290 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  >..        SQLit
172a0 65 45 72 72 6f 72 43 6f 64 65 20 43 72 65 61 74  eErrorCode Creat
172b0 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
172c0 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
172d0 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 20 2f 2a   connection,  /*
172e0 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
172f0 20 20 20 20 49 6e 74 50 74 72 20 70 43 6c 69 65      IntPtr pClie
17300 6e 74 44 61 74 61 2c 20 20 20 20 20 20 20 20 20  ntData,         
17310 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
17320 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d          string[]
17330 20 61 72 67 75 6d 65 6e 74 73 2c 20 20 20 20 20   arguments,     
17340 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a        /* in */..
17350 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
17360 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
17370 6c 65 20 74 61 62 6c 65 2c 20 2f 2a 20 6f 75 74  le table, /* out
17380 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
17390 20 72 65 66 20 73 74 72 69 6e 67 20 65 72 72 6f   ref string erro
173a0 72 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  r              /
173b0 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20  * out */..      
173c0 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20        );....    
173d0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
173e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
173f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
17420 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
17430 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
17440 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73  / This method is
17450 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f   called in respo
17460 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20  nse to the..    
17470 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
17480 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
17490 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 22  Module.xConnect"
174a0 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
174b0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
174c0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
174d0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f   <param name="co
174e0 6e 6e 65 63 74 69 6f 6e 22 3e 0d 0a 20 20 20 20  nnection">..    
174f0 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
17500 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e   cref="SQLiteCon
17510 6e 65 63 74 69 6f 6e 22 20 2f 3e 20 6f 62 6a 65  nection" /> obje
17520 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f  ct instance asso
17530 63 69 61 74 65 64 20 77 69 74 68 0d 0a 20 20 20  ciated with..   
17540 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 76 69 72       /// the vir
17550 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20  tual table...   
17560 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
17570 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
17580 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 6c 69  param name="pCli
17590 65 6e 74 44 61 74 61 22 3e 0d 0a 20 20 20 20 20  entData">..     
175a0 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
175b0 65 20 75 73 65 72 2d 64 61 74 61 20 70 6f 69 6e  e user-data poin
175c0 74 65 72 20 61 73 73 6f 63 69 61 74 65 64 20 77  ter associated w
175d0 69 74 68 20 74 68 69 73 20 6d 6f 64 75 6c 65 2c  ith this module,
175e0 20 61 73 20 69 74 20 77 61 73 0d 0a 20 20 20 20   as it was..    
175f0 20 20 20 20 2f 2f 2f 20 70 72 6f 76 69 64 65 64      /// provided
17600 20 74 6f 20 74 68 65 20 53 51 4c 69 74 65 20 63   to the SQLite c
17610 6f 72 65 20 6c 69 62 72 61 72 79 20 77 68 65 6e  ore library when
17620 20 74 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75   the native modu
17630 6c 65 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20  le instance..   
17640 20 20 20 20 20 2f 2f 2f 20 77 61 73 20 63 72 65       /// was cre
17650 61 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ated...        /
17660 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
17670 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
17680 6e 61 6d 65 3d 22 61 72 67 75 6d 65 6e 74 73 22  name="arguments"
17690 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
176a0 68 65 20 6d 6f 64 75 6c 65 20 6e 61 6d 65 2c 20  he module name, 
176b0 64 61 74 61 62 61 73 65 20 6e 61 6d 65 2c 20 76  database name, v
176c0 69 72 74 75 61 6c 20 74 61 62 6c 65 20 6e 61 6d  irtual table nam
176d0 65 2c 20 61 6e 64 20 61 6c 6c 20 6f 74 68 65 72  e, and all other
176e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 72  ..        /// ar
176f0 67 75 6d 65 6e 74 73 20 70 61 73 73 65 64 20 74  guments passed t
17700 6f 20 74 68 65 20 43 52 45 41 54 45 20 56 49 52  o the CREATE VIR
17710 54 55 41 4c 20 54 41 42 4c 45 20 73 74 61 74 65  TUAL TABLE state
17720 6d 65 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ment...        /
17730 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
17740 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
17750 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20  name="table">.. 
17760 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20         /// Upon 
17770 73 75 63 63 65 73 73 2c 20 74 68 69 73 20 70 61  success, this pa
17780 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20  rameter must be 
17790 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74  modified to cont
177a0 61 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ain the..       
177b0 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
177c0 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
177d0 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  le" /> object in
177e0 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65  stance associate
177f0 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20 20 20  d with..        
17800 2f 2f 2f 20 74 68 65 20 76 69 72 74 75 61 6c 20  /// the virtual 
17810 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20  table...        
17820 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
17830 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
17840 20 6e 61 6d 65 3d 22 65 72 72 6f 72 22 3e 0d 0a   name="error">..
17850 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e          /// Upon
17860 20 66 61 69 6c 75 72 65 2c 20 74 68 69 73 20 70   failure, this p
17870 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65  arameter must be
17880 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e   modified to con
17890 74 61 69 6e 20 61 6e 20 65 72 72 6f 72 0d 0a 20  tain an error.. 
178a0 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 73 73 61         /// messa
178b0 67 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ge...        ///
178c0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
178d0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
178e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20  ..        /// A 
178f0 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20  standard SQLite 
17900 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20  return code...  
17910 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
17920 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51  rns>..        SQ
17930 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 43 6f  LiteErrorCode Co
17940 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20  nnect(..        
17950 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63      SQLiteConnec
17960 74 69 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c  tion connection,
17970 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
17980 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
17990 43 6c 69 65 6e 74 44 61 74 61 2c 20 20 20 20 20  ClientData,     
179a0 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a        /* in */..
179b0 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
179c0 6e 67 5b 5d 20 61 72 67 75 6d 65 6e 74 73 2c 20  ng[] arguments, 
179d0 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20            /* in 
179e0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
179f0 72 65 66 20 53 51 4c 69 74 65 56 69 72 74 75 61  ref SQLiteVirtua
17a00 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c 20 2f 2a  lTable table, /*
17a10 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20   out */..       
17a20 20 20 20 20 20 72 65 66 20 73 74 72 69 6e 67 20       ref string 
17a30 65 72 72 6f 72 20 20 20 20 20 20 20 20 20 20 20  error           
17a40 20 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20     /* out */..  
17a50 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a            );....
17a60 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
17a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
17ab0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
17ac0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
17ad0 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
17ae0 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72  d is called in r
17af0 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a  esponse to the..
17b00 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
17b10 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
17b20 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 73 74  tiveModule.xBest
17b30 49 6e 64 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64  Index" /> method
17b40 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
17b50 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
17b60 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
17b70 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20  me="table">..   
17b80 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
17b90 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69  e cref="SQLiteVi
17ba0 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f  rtualTable" /> o
17bb0 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61  bject instance a
17bc0 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20  ssociated..     
17bd0 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73     /// with this
17be0 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d   virtual table..
17bf0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
17c00 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
17c10 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
17c20 69 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20 20 20  index">..       
17c30 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
17c40 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 22  ef="SQLiteIndex"
17c50 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
17c60 6e 63 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61  nce containing a
17c70 6c 6c 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  ll the..        
17c80 2f 2f 2f 20 64 61 74 61 20 66 6f 72 20 74 68 65  /// data for the
17c90 20 69 6e 70 75 74 73 20 61 6e 64 20 6f 75 74 70   inputs and outp
17ca0 75 74 73 20 72 65 6c 61 74 69 6e 67 20 74 6f 20  uts relating to 
17cb0 69 6e 64 65 78 20 73 65 6c 65 63 74 69 6f 6e 2e  index selection.
17cc0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
17cd0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
17ce0 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
17cf0 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61         /// A sta
17d00 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74  ndard SQLite ret
17d10 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  urn code...     
17d20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
17d30 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  >..        SQLit
17d40 65 45 72 72 6f 72 43 6f 64 65 20 42 65 73 74 49  eErrorCode BestI
17d50 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20 20 20  ndex(..         
17d60 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c     SQLiteVirtual
17d70 54 61 62 6c 65 20 74 61 62 6c 65 2c 20 2f 2a 20  Table table, /* 
17d80 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
17d90 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78 20 69     SQLiteIndex i
17da0 6e 64 65 78 20 20 20 20 20 20 20 20 20 2f 2a 20  ndex         /* 
17db0 69 6e 2c 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20  in, out */..    
17dc0 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20          );....  
17dd0 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
17e20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
17e30 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
17e40 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20  /// This method 
17e50 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73  is called in res
17e60 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20  ponse to the..  
17e70 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
17e80 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
17e90 76 65 4d 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e  veModule.xDiscon
17ea0 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  nect" /> method.
17eb0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
17ec0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
17ed0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
17ee0 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20  e="table">..    
17ef0 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
17f00 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72   cref="SQLiteVir
17f10 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62  tualTable" /> ob
17f20 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73  ject instance as
17f30 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20  sociated..      
17f40 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20    /// with this 
17f50 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a  virtual table...
17f60 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
17f70 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
17f80 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
17f90 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64       /// A stand
17fa0 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72  ard SQLite retur
17fb0 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  n code...       
17fc0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
17fd0 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45  .        SQLiteE
17fe0 72 72 6f 72 43 6f 64 65 20 44 69 73 63 6f 6e 6e  rrorCode Disconn
17ff0 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ect(..          
18000 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54    SQLiteVirtualT
18010 61 62 6c 65 20 74 61 62 6c 65 20 2f 2a 20 69 6e  able table /* in
18020 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
18030 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   );....        /
18040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18080 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
18090 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
180a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
180b0 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c  s method is call
180c0 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74  ed in response t
180d0 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  o the..        /
180e0 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  // <see cref="IS
180f0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
18100 65 2e 78 44 65 73 74 72 6f 79 22 20 2f 3e 20 6d  e.xDestroy" /> m
18110 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
18120 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
18130 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
18140 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e  am name="table">
18150 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
18160 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
18170 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22  iteVirtualTable"
18180 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
18190 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a  nce associated..
181a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68          /// with
181b0 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61   this virtual ta
181c0 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
181d0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
181e0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
181f0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
18200 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
18210 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
18220 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
18230 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53  urns>..        S
18240 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 44  QLiteErrorCode D
18250 65 73 74 72 6f 79 28 0d 0a 20 20 20 20 20 20 20  estroy(..       
18260 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75       SQLiteVirtu
18270 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 20 2f 2a  alTable table /*
18280 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
18290 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20      );....      
182a0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
182b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
182c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
182d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
182e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
182f0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
18300 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
18310 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63  This method is c
18320 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73  alled in respons
18330 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  e to the..      
18340 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
18350 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
18360 64 75 6c 65 2e 78 4f 70 65 6e 22 20 2f 3e 20 6d  dule.xOpen" /> m
18370 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
18380 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
18390 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
183a0 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e  am name="table">
183b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
183c0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
183d0 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22  iteVirtualTable"
183e0 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
183f0 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a  nce associated..
18400 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68          /// with
18410 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61   this virtual ta
18420 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
18430 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
18440 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
18450 61 6d 65 3d 22 63 75 72 73 6f 72 22 3e 0d 0a 20  ame="cursor">.. 
18460 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20         /// Upon 
18470 73 75 63 63 65 73 73 2c 20 74 68 69 73 20 70 61  success, this pa
18480 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20  rameter must be 
18490 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74  modified to cont
184a0 61 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ain the..       
184b0 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
184c0 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
184d0 6c 65 43 75 72 73 6f 72 22 20 2f 3e 20 6f 62 6a  leCursor" /> obj
184e0 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73  ect instance ass
184f0 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20  ociated..       
18500 20 2f 2f 2f 20 77 69 74 68 20 74 68 65 20 6e 65   /// with the ne
18510 77 6c 79 20 6f 70 65 6e 65 64 20 76 69 72 74 75  wly opened virtu
18520 61 6c 20 74 61 62 6c 65 20 63 75 72 73 6f 72 2e  al table cursor.
18530 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
18540 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
18550 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
18560 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61         /// A sta
18570 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74  ndard SQLite ret
18580 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  urn code...     
18590 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
185a0 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  >..        SQLit
185b0 65 45 72 72 6f 72 43 6f 64 65 20 4f 70 65 6e 28  eErrorCode Open(
185c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
185d0 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
185e0 20 74 61 62 6c 65 2c 20 20 20 20 20 20 20 20 20   table,         
185f0 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
18600 20 20 20 20 20 20 20 20 72 65 66 20 53 51 4c 69          ref SQLi
18610 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75  teVirtualTableCu
18620 72 73 6f 72 20 63 75 72 73 6f 72 20 2f 2a 20 6f  rsor cursor /* o
18630 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ut */..         
18640 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20     );....       
18650 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
18660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18690 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
186a0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
186b0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
186c0 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61  his method is ca
186d0 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65  lled in response
186e0 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20   to the..       
186f0 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
18700 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
18710 75 6c 65 2e 78 43 6c 6f 73 65 22 20 2f 3e 20 6d  ule.xClose" /> m
18720 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
18730 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
18740 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
18750 61 6d 20 6e 61 6d 65 3d 22 63 75 72 73 6f 72 22  am name="cursor"
18760 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
18770 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
18780 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
18790 43 75 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65 63  Cursor" /> objec
187a0 74 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20  t instance..    
187b0 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74      /// associat
187c0 65 64 20 77 69 74 68 20 74 68 65 20 70 72 65 76  ed with the prev
187d0 69 6f 75 73 6c 79 20 6f 70 65 6e 65 64 20 76 69  iously opened vi
187e0 72 74 75 61 6c 20 74 61 62 6c 65 20 63 75 72 73  rtual table curs
187f0 6f 72 20 74 6f 20 62 65 0d 0a 20 20 20 20 20 20  or to be..      
18800 20 20 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20 20 20    /// used...   
18810 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
18820 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
18830 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
18840 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64    /// A standard
18850 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63   SQLite return c
18860 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode...        //
18870 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
18880 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f        SQLiteErro
18890 72 43 6f 64 65 20 43 6c 6f 73 65 28 0d 0a 20 20  rCode Close(..  
188a0 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
188b0 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73  VirtualTableCurs
188c0 6f 72 20 63 75 72 73 6f 72 20 2f 2a 20 69 6e 20  or cursor /* in 
188d0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
188e0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  );....        //
188f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18930 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
18940 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
18950 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
18960 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65   method is calle
18970 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f  d in response to
18980 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
18990 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  / <see cref="ISQ
189a0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
189b0 2e 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74  .xFilter" /> met
189c0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
189d0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
189e0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
189f0 20 6e 61 6d 65 3d 22 63 75 72 73 6f 72 22 3e 0d   name="cursor">.
18a00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
18a10 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
18a20 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75  teVirtualTableCu
18a30 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20  rsor" /> object 
18a40 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20 20 20  instance..      
18a50 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64    /// associated
18a60 20 77 69 74 68 20 74 68 65 20 70 72 65 76 69 6f   with the previo
18a70 75 73 6c 79 20 6f 70 65 6e 65 64 20 76 69 72 74  usly opened virt
18a80 75 61 6c 20 74 61 62 6c 65 20 63 75 72 73 6f 72  ual table cursor
18a90 20 74 6f 20 62 65 0d 0a 20 20 20 20 20 20 20 20   to be..        
18aa0 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20 20 20 20 20  /// used...     
18ab0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
18ac0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
18ad0 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78 4e  ram name="indexN
18ae0 75 6d 62 65 72 22 3e 0d 0a 20 20 20 20 20 20 20  umber">..       
18af0 20 2f 2f 2f 20 4e 75 6d 62 65 72 20 75 73 65 64   /// Number used
18b00 20 74 6f 20 68 65 6c 70 20 69 64 65 6e 74 69 66   to help identif
18b10 79 20 74 68 65 20 73 65 6c 65 63 74 65 64 20 69  y the selected i
18b20 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ndex...        /
18b30 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
18b40 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
18b50 6e 61 6d 65 3d 22 69 6e 64 65 78 53 74 72 69 6e  name="indexStrin
18b60 67 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  g">..        ///
18b70 20 53 74 72 69 6e 67 20 75 73 65 64 20 74 6f 20   String used to 
18b80 68 65 6c 70 20 69 64 65 6e 74 69 66 79 20 74 68  help identify th
18b90 65 20 73 65 6c 65 63 74 65 64 20 69 6e 64 65 78  e selected index
18ba0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
18bb0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
18bc0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
18bd0 3d 22 76 61 6c 75 65 73 22 3e 0d 0a 20 20 20 20  ="values">..    
18be0 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75      /// The valu
18bf0 65 73 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67  es corresponding
18c00 20 74 6f 20 65 61 63 68 20 63 6f 6c 75 6d 6e 20   to each column 
18c10 69 6e 20 74 68 65 20 73 65 6c 65 63 74 65 64 20  in the selected 
18c20 69 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20 20 20  index...        
18c30 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
18c40 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
18c50 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
18c60 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69   A standard SQLi
18c70 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d  te return code..
18c80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
18c90 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
18ca0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
18cb0 20 46 69 6c 74 65 72 28 0d 0a 20 20 20 20 20 20   Filter(..      
18cc0 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74        SQLiteVirt
18cd0 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 20 63  ualTableCursor c
18ce0 75 72 73 6f 72 2c 20 2f 2a 20 69 6e 20 2a 2f 0d  ursor, /* in */.
18cf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
18d00 20 69 6e 64 65 78 4e 75 6d 62 65 72 2c 20 20 20   indexNumber,   
18d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a                /*
18d20 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
18d30 20 20 20 20 73 74 72 69 6e 67 20 69 6e 64 65 78      string index
18d40 53 74 72 69 6e 67 2c 20 20 20 20 20 20 20 20 20  String,         
18d50 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20       /* in */.. 
18d60 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
18d70 65 56 61 6c 75 65 5b 5d 20 76 61 6c 75 65 73 20  eValue[] values 
18d80 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69              /* i
18d90 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
18da0 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    );....        
18db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18df0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
18e00 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
18e10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
18e20 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c  is method is cal
18e30 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20  led in response 
18e40 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
18e50 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
18e60 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
18e70 6c 65 2e 78 4e 65 78 74 22 20 2f 3e 20 6d 65 74  le.xNext" /> met
18e80 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
18e90 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
18ea0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
18eb0 20 6e 61 6d 65 3d 22 63 75 72 73 6f 72 22 3e 0d   name="cursor">.
18ec0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
18ed0 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
18ee0 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75  teVirtualTableCu
18ef0 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20  rsor" /> object 
18f00 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20 20 20  instance..      
18f10 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64    /// associated
18f20 20 77 69 74 68 20 74 68 65 20 70 72 65 76 69 6f   with the previo
18f30 75 73 6c 79 20 6f 70 65 6e 65 64 20 76 69 72 74  usly opened virt
18f40 75 61 6c 20 74 61 62 6c 65 20 63 75 72 73 6f 72  ual table cursor
18f50 20 74 6f 20 62 65 0d 0a 20 20 20 20 20 20 20 20   to be..        
18f60 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20 20 20 20 20  /// used...     
18f70 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
18f80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
18f90 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
18fa0 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53  /// A standard S
18fb0 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64  QLite return cod
18fc0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
18fd0 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
18fe0 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43      SQLiteErrorC
18ff0 6f 64 65 20 4e 65 78 74 28 0d 0a 20 20 20 20 20  ode Next(..     
19000 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72         SQLiteVir
19010 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 20  tualTableCursor 
19020 63 75 72 73 6f 72 20 2f 2a 20 69 6e 20 2a 2f 0d  cursor /* in */.
19030 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d  .            );.
19040 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
19050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19090 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
190a0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
190b0 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65       /// This me
190c0 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69  thod is called i
190d0 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68  n response to th
190e0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
190f0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
19100 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 45  eNativeModule.xE
19110 6f 66 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  of" /> method...
19120 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
19130 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
19140 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
19150 22 63 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20  "cursor">..     
19160 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
19170 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74  cref="SQLiteVirt
19180 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 22 20  ualTableCursor" 
19190 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
191a0 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ce..        /// 
191b0 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
191c0 74 68 65 20 70 72 65 76 69 6f 75 73 6c 79 20 6f  the previously o
191d0 70 65 6e 65 64 20 76 69 72 74 75 61 6c 20 74 61  pened virtual ta
191e0 62 6c 65 20 63 75 72 73 6f 72 20 74 6f 20 62 65  ble cursor to be
191f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 75 73  ..        /// us
19200 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
19210 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
19220 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
19230 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  ..        /// No
19240 6e 2d 7a 65 72 6f 20 69 66 20 6e 6f 20 6d 6f 72  n-zero if no mor
19250 65 20 72 6f 77 73 20 61 72 65 20 61 76 61 69 6c  e rows are avail
19260 61 62 6c 65 3b 20 7a 65 72 6f 20 6f 74 68 65 72  able; zero other
19270 77 69 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  wise...        /
19280 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
19290 20 20 20 20 20 20 20 62 6f 6f 6c 20 45 6f 66 28         bool Eof(
192a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
192b0 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
192c0 43 75 72 73 6f 72 20 63 75 72 73 6f 72 20 2f 2a  Cursor cursor /*
192d0 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
192e0 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20      );....      
192f0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
19300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19330 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
19340 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
19350 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
19360 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63  This method is c
19370 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73  alled in respons
19380 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  e to the..      
19390 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
193a0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
193b0 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 22 20 2f 3e  dule.xColumn" />
193c0 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
193d0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
193e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
193f0 61 72 61 6d 20 6e 61 6d 65 3d 22 63 75 72 73 6f  aram name="curso
19400 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  r">..        ///
19410 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
19420 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
19430 6c 65 43 75 72 73 6f 72 22 20 2f 3e 20 6f 62 6a  leCursor" /> obj
19440 65 63 74 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20  ect instance..  
19450 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69        /// associ
19460 61 74 65 64 20 77 69 74 68 20 74 68 65 20 70 72  ated with the pr
19470 65 76 69 6f 75 73 6c 79 20 6f 70 65 6e 65 64 20  eviously opened 
19480 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 63 75  virtual table cu
19490 72 73 6f 72 20 74 6f 20 62 65 0d 0a 20 20 20 20  rsor to be..    
194a0 20 20 20 20 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20      /// used... 
194b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
194c0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
194d0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f   <param name="co
194e0 6e 74 65 78 74 22 3e 0d 0a 20 20 20 20 20 20 20  ntext">..       
194f0 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
19500 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 74 65 78  ef="SQLiteContex
19510 74 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  t" /> object ins
19520 74 61 6e 63 65 20 74 6f 20 62 65 20 75 73 65 64  tance to be used
19530 20 66 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f   for..        //
19540 2f 20 72 65 74 75 72 6e 69 6e 67 20 74 68 65 20  / returning the 
19550 73 70 65 63 69 66 69 65 64 20 63 6f 6c 75 6d 6e  specified column
19560 20 76 61 6c 75 65 20 74 6f 20 74 68 65 20 53 51   value to the SQ
19570 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
19580 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y...        /// 
19590 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
195a0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
195b0 65 3d 22 69 6e 64 65 78 22 3e 0d 0a 20 20 20 20  e="index">..    
195c0 20 20 20 20 2f 2f 2f 20 54 68 65 20 7a 65 72 6f      /// The zero
195d0 2d 62 61 73 65 64 20 69 6e 64 65 78 20 63 6f 72  -based index cor
195e0 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 74 68  responding to th
195f0 65 20 63 6f 6c 75 6d 6e 20 63 6f 6e 74 61 69 6e  e column contain
19600 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ing the..       
19610 20 2f 2f 2f 20 76 61 6c 75 65 20 74 6f 20 62 65   /// value to be
19620 20 72 65 74 75 72 6e 65 64 2e 0d 0a 20 20 20 20   returned...    
19630 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
19640 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
19650 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
19660 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20   /// A standard 
19670 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f  SQLite return co
19680 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de...        ///
19690 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
196a0 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72       SQLiteError
196b0 43 6f 64 65 20 43 6f 6c 75 6d 6e 28 0d 0a 20 20  Code Column(..  
196c0 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
196d0 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73  VirtualTableCurs
196e0 6f 72 20 63 75 72 73 6f 72 2c 20 2f 2a 20 69 6e  or cursor, /* in
196f0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
19700 20 53 51 4c 69 74 65 43 6f 6e 74 65 78 74 20 63   SQLiteContext c
19710 6f 6e 74 65 78 74 2c 20 20 20 20 20 20 20 20 20  ontext,         
19720 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
19730 20 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65          int inde
19740 78 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  x               
19750 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a           /* in *
19760 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  /..            )
19770 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
19780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
197a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
197b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
197c0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
197d0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
197e0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
197f0 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64  method is called
19800 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20   in response to 
19810 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
19820 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
19830 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
19840 78 52 6f 77 49 64 22 20 2f 3e 20 6d 65 74 68 6f  xRowId" /> metho
19850 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
19860 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
19870 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
19880 61 6d 65 3d 22 63 75 72 73 6f 72 22 3e 0d 0a 20  ame="cursor">.. 
19890 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
198a0 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
198b0 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73  VirtualTableCurs
198c0 6f 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  or" /> object in
198d0 73 74 61 6e 63 65 0d 0a 20 20 20 20 20 20 20 20  stance..        
198e0 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77  /// associated w
198f0 69 74 68 20 74 68 65 20 70 72 65 76 69 6f 75 73  ith the previous
19900 6c 79 20 6f 70 65 6e 65 64 20 76 69 72 74 75 61  ly opened virtua
19910 6c 20 74 61 62 6c 65 20 63 75 72 73 6f 72 20 74  l table cursor t
19920 6f 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  o be..        //
19930 2f 20 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 20  / used...       
19940 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
19950 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
19960 6d 20 6e 61 6d 65 3d 22 72 6f 77 49 64 22 3e 0d  m name="rowId">.
19970 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f  .        /// Upo
19980 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69 73 20  n success, this 
19990 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62  parameter must b
199a0 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f  e modified to co
199b0 6e 74 61 69 6e 20 74 68 65 20 75 6e 69 71 75 65  ntain the unique
199c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e  ..        /// in
199d0 74 65 67 65 72 20 72 6f 77 20 69 64 65 6e 74 69  teger row identi
199e0 66 69 65 72 20 66 6f 72 20 74 68 65 20 63 75 72  fier for the cur
199f0 72 65 6e 74 20 72 6f 77 20 66 6f 72 20 74 68 65  rent row for the
19a00 20 73 70 65 63 69 66 69 65 64 20 63 75 72 73 6f   specified curso
19a10 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
19a20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
19a30 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
19a40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73  .        /// A s
19a50 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72  tandard SQLite r
19a60 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20  eturn code...   
19a70 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
19a80 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c  ns>..        SQL
19a90 69 74 65 45 72 72 6f 72 43 6f 64 65 20 52 6f 77  iteErrorCode Row
19aa0 49 64 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Id(..           
19ab0 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
19ac0 62 6c 65 43 75 72 73 6f 72 20 63 75 72 73 6f 72  bleCursor cursor
19ad0 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20  , /* in */..    
19ae0 20 20 20 20 20 20 20 20 72 65 66 20 6c 6f 6e 67          ref long
19af0 20 72 6f 77 49 64 20 20 20 20 20 20 20 20 20 20   rowId          
19b00 20 20 20 20 20 20 20 20 20 2f 2a 20 6f 75 74 20           /* out 
19b10 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
19b20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  );....        //
19b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19b70 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
19b80 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
19b90 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
19ba0 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65   method is calle
19bb0 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f  d in response to
19bc0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
19bd0 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  / <see cref="ISQ
19be0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
19bf0 2e 78 55 70 64 61 74 65 22 20 2f 3e 20 6d 65 74  .xUpdate" /> met
19c00 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
19c10 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
19c20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
19c30 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a   name="table">..
19c40 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
19c50 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
19c60 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f  eVirtualTable" /
19c70 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
19c80 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20  e associated..  
19c90 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74        /// with t
19ca0 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c  his virtual tabl
19cb0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
19cc0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
19cd0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
19ce0 65 3d 22 76 61 6c 75 65 73 22 3e 0d 0a 20 20 20  e="values">..   
19cf0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 72 72       /// The arr
19d00 61 79 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d  ay of <see cref=
19d10 22 53 51 4c 69 74 65 56 61 6c 75 65 22 20 2f 3e  "SQLiteValue" />
19d20 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
19d30 73 20 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20  s containing..  
19d40 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 6e 65        /// the ne
19d50 77 20 6f 72 20 6d 6f 64 69 66 69 65 64 20 63 6f  w or modified co
19d60 6c 75 6d 6e 20 76 61 6c 75 65 73 2c 20 69 66 20  lumn values, if 
19d70 61 6e 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  any...        //
19d80 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
19d90 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
19da0 61 6d 65 3d 22 72 6f 77 49 64 22 3e 0d 0a 20 20  ame="rowId">..  
19db0 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73        /// Upon s
19dc0 75 63 63 65 73 73 2c 20 74 68 69 73 20 70 61 72  uccess, this par
19dd0 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d  ameter must be m
19de0 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74 61  odified to conta
19df0 69 6e 20 74 68 65 20 75 6e 69 71 75 65 0d 0a 20  in the unique.. 
19e00 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65 67         /// integ
19e10 65 72 20 72 6f 77 20 69 64 65 6e 74 69 66 69 65  er row identifie
19e20 72 20 66 6f 72 20 74 68 65 20 72 6f 77 20 74 68  r for the row th
19e30 61 74 20 77 61 73 20 69 6e 73 65 72 74 65 64 2c  at was inserted,
19e40 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20 20 20   if any...      
19e50 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
19e60 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
19e70 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
19e80 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51  // A standard SQ
19e90 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65  Lite return code
19ea0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
19eb0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
19ec0 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f     SQLiteErrorCo
19ed0 64 65 20 55 70 64 61 74 65 28 0d 0a 20 20 20 20  de Update(..    
19ee0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69          SQLiteVi
19ef0 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65  rtualTable table
19f00 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20  , /* in */..    
19f10 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 61          SQLiteVa
19f20 6c 75 65 5b 5d 20 76 61 6c 75 65 73 2c 20 20 20  lue[] values,   
19f30 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
19f40 20 20 20 20 20 20 20 20 72 65 66 20 6c 6f 6e 67          ref long
19f50 20 72 6f 77 49 64 20 20 20 20 20 20 20 20 20 20   rowId          
19f60 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20    /* out */..   
19f70 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20           );.... 
19f80 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
19f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
19fd0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
19fe0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
19ff0 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64   /// This method
1a000 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65   is called in re
1a010 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20  sponse to the.. 
1a020 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
1a030 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
1a040 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 67 69 6e  iveModule.xBegin
1a050 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
1a060 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
1a070 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1a080 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74  / <param name="t
1a090 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  able">..        
1a0a0 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
1a0b0 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c  f="SQLiteVirtual
1a0c0 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74  Table" /> object
1a0d0 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69   instance associ
1a0e0 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ated..        //
1a0f0 2f 20 77 69 74 68 20 74 68 69 73 20 76 69 72 74  / with this virt
1a100 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
1a110 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1a120 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
1a130 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1a140 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20   /// A standard 
1a150 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f  SQLite return co
1a160 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de...        ///
1a170 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
1a180 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72       SQLiteError
1a190 43 6f 64 65 20 42 65 67 69 6e 28 0d 0a 20 20 20  Code Begin(..   
1a1a0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56           SQLiteV
1a1b0 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c  irtualTable tabl
1a1c0 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20  e /* in */..    
1a1d0 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20          );....  
1a1e0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1a1f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1a230 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
1a240 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1a250 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20  /// This method 
1a260 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73  is called in res
1a270 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20  ponse to the..  
1a280 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
1a290 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
1a2a0 76 65 4d 6f 64 75 6c 65 2e 78 53 79 6e 63 22 20  veModule.xSync" 
1a2b0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
1a2c0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1a2d0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1a2e0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62  <param name="tab
1a2f0 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  le">..        //
1a300 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
1a310 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  "SQLiteVirtualTa
1a320 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  ble" /> object i
1a330 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74  nstance associat
1a340 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
1a350 77 69 74 68 20 74 68 69 73 20 76 69 72 74 75 61  with this virtua
1a360 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  l table...      
1a370 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
1a380 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
1a390 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
1a3a0 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51  // A standard SQ
1a3b0 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65  Lite return code
1a3c0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1a3d0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
1a3e0 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f     SQLiteErrorCo
1a3f0 64 65 20 53 79 6e 63 28 0d 0a 20 20 20 20 20 20  de Sync(..      
1a400 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74        SQLiteVirt
1a410 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 20 2f  ualTable table /
1a420 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
1a430 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20       );....     
1a440 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1a450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1a490 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
1a4a0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1a4b0 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20   This method is 
1a4c0 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e  called in respon
1a4d0 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20  se to the..     
1a4e0 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
1a4f0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
1a500 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 22 20 2f  odule.xCommit" /
1a510 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
1a520 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1a530 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1a540 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c  param name="tabl
1a550 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
1a560 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
1a570 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
1a580 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  le" /> object in
1a590 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65  stance associate
1a5a0 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77  d..        /// w
1a5b0 69 74 68 20 74 68 69 73 20 76 69 72 74 75 61 6c  ith this virtual
1a5c0 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20   table...       
1a5d0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1a5e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
1a5f0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
1a600 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c  / A standard SQL
1a610 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e  ite return code.
1a620 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1a630 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1a640 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64    SQLiteErrorCod
1a650 65 20 43 6f 6d 6d 69 74 28 0d 0a 20 20 20 20 20  e Commit(..     
1a660 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72         SQLiteVir
1a670 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 20  tualTable table 
1a680 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
1a690 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20        );....    
1a6a0 20 20 20 20 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 2f 2f 2f 2f  ////////////////
1a6e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1a6f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
1a700 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1a710 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73  / This method is
1a720 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f   called in respo
1a730 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20  nse to the..    
1a740 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
1a750 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
1a760 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b  Module.xRollback
1a770 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
1a780 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
1a790 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1a7a0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74  / <param name="t
1a7b0 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  able">..        
1a7c0 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
1a7d0 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c  f="SQLiteVirtual
1a7e0 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74  Table" /> object
1a7f0 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69   instance associ
1a800 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ated..        //
1a810 2f 20 77 69 74 68 20 74 68 69 73 20 76 69 72 74  / with this virt
1a820 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
1a830 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1a840 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
1a850 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1a860 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20   /// A standard 
1a870 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f  SQLite return co
1a880 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de...        ///
1a890 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
1a8a0 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72       SQLiteError
1a8b0 43 6f 64 65 20 52 6f 6c 6c 62 61 63 6b 28 0d 0a  Code Rollback(..
1a8c0 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
1a8d0 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74  teVirtualTable t
1a8e0 61 62 6c 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  able /* in */.. 
1a8f0 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d             );...
1a900 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1a910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a950 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
1a960 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1a970 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68     /// This meth
1a980 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20  od is called in 
1a990 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d  response to the.
1a9a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
1a9b0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
1a9c0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e  ativeModule.xFin
1a9d0 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6d 65  dFunction" /> me
1a9e0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  thod...        /
1a9f0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1aa00 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1aa10 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d  m name="table">.
1aa20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1aa30 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
1aa40 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20  teVirtualTable" 
1aa50 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
1aa60 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20  ce associated.. 
1aa70 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20         /// with 
1aa80 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62  this virtual tab
1aa90 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le...        ///
1aaa0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1aab0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1aac0 6d 65 3d 22 61 72 67 75 6d 65 6e 74 43 6f 75 6e  me="argumentCoun
1aad0 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  t">..        ///
1aae0 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 61   The number of a
1aaf0 72 67 75 6d 65 6e 74 73 20 74 6f 20 74 68 65 20  rguments to the 
1ab00 66 75 6e 63 74 69 6f 6e 20 62 65 69 6e 67 20 73  function being s
1ab10 6f 75 67 68 74 2e 0d 0a 20 20 20 20 20 20 20 20  ought...        
1ab20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1ab30 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1ab40 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20   name="name">.. 
1ab50 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
1ab60 61 6d 65 20 6f 66 20 74 68 65 20 66 75 6e 63 74  ame of the funct
1ab70 69 6f 6e 20 62 65 69 6e 67 20 73 6f 75 67 68 74  ion being sought
1ab80 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1ab90 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1aba0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1abb0 3d 22 66 75 6e 63 74 69 6f 6e 22 3e 0d 0a 20 20  ="function">..  
1abc0 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73        /// Upon s
1abd0 75 63 63 65 73 73 2c 20 74 68 69 73 20 70 61 72  uccess, this par
1abe0 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d  ameter must be m
1abf0 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74 61  odified to conta
1ac00 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  in the..        
1ac10 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53  /// <see cref="S
1ac20 51 4c 69 74 65 46 75 6e 63 74 69 6f 6e 22 20 2f  QLiteFunction" /
1ac30 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
1ac40 65 20 72 65 73 70 6f 6e 73 69 62 6c 65 20 66 6f  e responsible fo
1ac50 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  r..        /// i
1ac60 6d 70 6c 65 6d 65 6e 74 69 6e 67 20 74 68 65 20  mplementing the 
1ac70 73 70 65 63 69 66 69 65 64 20 66 75 6e 63 74 69  specified functi
1ac80 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  on...        ///
1ac90 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1aca0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1acb0 6d 65 3d 22 70 43 6c 69 65 6e 74 44 61 74 61 22  me="pClientData"
1acc0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55  >..        /// U
1acd0 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69  pon success, thi
1ace0 73 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74  s parameter must
1acf0 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20   be modified to 
1ad00 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20 20  contain the..   
1ad10 20 20 20 20 20 2f 2f 2f 20 6e 61 74 69 76 65 20       /// native 
1ad20 75 73 65 72 2d 64 61 74 61 20 70 6f 69 6e 74 65  user-data pointe
1ad30 72 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  r associated wit
1ad40 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  h..        /// <
1ad50 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 66  paramref name="f
1ad60 75 6e 63 74 69 6f 6e 22 20 2f 3e 2e 0d 0a 20 20  unction" />...  
1ad70 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1ad80 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
1ad90 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
1ada0 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
1adb0 69 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64  if the specified
1adc0 20 66 75 6e 63 74 69 6f 6e 20 77 61 73 20 66 6f   function was fo
1add0 75 6e 64 3b 20 7a 65 72 6f 20 6f 74 68 65 72 77  und; zero otherw
1ade0 69 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ise...        //
1adf0 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
1ae00 20 20 20 20 20 20 62 6f 6f 6c 20 46 69 6e 64 46        bool FindF
1ae10 75 6e 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20  unction(..      
1ae20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74        SQLiteVirt
1ae30 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c 20  ualTable table, 
1ae40 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20     /* in */..   
1ae50 20 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67           int arg
1ae60 75 6d 65 6e 74 43 6f 75 6e 74 2c 20 20 20 20 20  umentCount,     
1ae70 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a        /* in */..
1ae80 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
1ae90 6e 67 20 6e 61 6d 65 2c 20 20 20 20 20 20 20 20  ng name,        
1aea0 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a           /* in *
1aeb0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  /..            r
1aec0 65 66 20 53 51 4c 69 74 65 46 75 6e 63 74 69 6f  ef SQLiteFunctio
1aed0 6e 20 66 75 6e 63 74 69 6f 6e 2c 20 2f 2a 20 6f  n function, /* o
1aee0 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ut */..         
1aef0 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 43     ref IntPtr pC
1af00 6c 69 65 6e 74 44 61 74 61 20 20 20 20 20 20 20  lientData       
1af10 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20  /* out */..     
1af20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20         );....   
1af30 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1af40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1af50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1af60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1af70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1af80 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
1af90 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1afa0 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69  // This method i
1afb0 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70  s called in resp
1afc0 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20  onse to the..   
1afd0 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
1afe0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
1aff0 65 4d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65 22  eModule.xRename"
1b000 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
1b010 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1b020 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1b030 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61   <param name="ta
1b040 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ble">..        /
1b050 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
1b060 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  ="SQLiteVirtualT
1b070 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20  able" /> object 
1b080 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61  instance associa
1b090 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ted..        ///
1b0a0 20 77 69 74 68 20 74 68 69 73 20 76 69 72 74 75   with this virtu
1b0b0 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20  al table...     
1b0c0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1b0d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1b0e0 72 61 6d 20 6e 61 6d 65 3d 22 6e 65 77 4e 61 6d  ram name="newNam
1b0f0 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
1b100 20 54 68 65 20 6e 65 77 20 6e 61 6d 65 20 66 6f   The new name fo
1b110 72 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  r the virtual ta
1b120 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
1b130 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1b140 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
1b150 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
1b160 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
1b170 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
1b180 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
1b190 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53  urns>..        S
1b1a0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 52  QLiteErrorCode R
1b1b0 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20  ename(..        
1b1c0 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61      SQLiteVirtua
1b1d0 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c 20 2f 2a  lTable table, /*
1b1e0 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
1b1f0 20 20 20 20 73 74 72 69 6e 67 20 6e 65 77 4e 61      string newNa
1b200 6d 65 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a  me            /*
1b210 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
1b220 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20      );....      
1b230 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1b240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b270 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1b280 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
1b290 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1b2a0 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63  This method is c
1b2b0 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73  alled in respons
1b2c0 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  e to the..      
1b2d0 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
1b2e0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
1b2f0 64 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74 22  dule.xSavepoint"
1b300 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
1b310 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1b320 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1b330 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61   <param name="ta
1b340 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ble">..        /
1b350 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
1b360 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  ="SQLiteVirtualT
1b370 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20  able" /> object 
1b380 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61  instance associa
1b390 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ted..        ///
1b3a0 20 77 69 74 68 20 74 68 69 73 20 76 69 72 74 75   with this virtu
1b3b0 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20  al table...     
1b3c0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1b3d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1b3e0 72 61 6d 20 6e 61 6d 65 3d 22 73 61 76 65 70 6f  ram name="savepo
1b3f0 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  int">..        /
1b400 2f 2f 20 54 68 69 73 20 69 73 20 61 6e 20 69 6e  // This is an in
1b410 74 65 67 65 72 20 69 64 65 6e 74 69 66 69 65 72  teger identifier
1b420 20 75 6e 64 65 72 20 77 68 69 63 68 20 74 68 65   under which the
1b430 20 74 68 65 20 63 75 72 72 65 6e 74 20 73 74 61   the current sta
1b440 74 65 20 6f 66 0d 0a 20 20 20 20 20 20 20 20 2f  te of..        /
1b450 2f 2f 20 74 68 65 20 76 69 72 74 75 61 6c 20 74  // the virtual t
1b460 61 62 6c 65 20 73 68 6f 75 6c 64 20 62 65 20 73  able should be s
1b470 61 76 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  aved...        /
1b480 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1b490 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
1b4a0 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
1b4b0 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74  A standard SQLit
1b4c0 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a  e return code...
1b4d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
1b4e0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
1b4f0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1b500 53 61 76 65 70 6f 69 6e 74 28 0d 0a 20 20 20 20  Savepoint(..    
1b510 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69          SQLiteVi
1b520 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65  rtualTable table
1b530 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20  , /* in */..    
1b540 20 20 20 20 20 20 20 20 69 6e 74 20 73 61 76 65          int save
1b550 70 6f 69 6e 74 20 20 20 20 20 20 20 20 20 20 20  point           
1b560 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
1b570 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20          );....  
1b580 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1b590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b5a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b5b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1b5d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
1b5e0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1b5f0 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20  /// This method 
1b600 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73  is called in res
1b610 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20  ponse to the..  
1b620 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
1b630 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
1b640 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73  veModule.xReleas
1b650 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
1b660 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
1b670 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1b680 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1b690 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20  table">..       
1b6a0 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
1b6b0 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61  ef="SQLiteVirtua
1b6c0 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63  lTable" /> objec
1b6d0 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63  t instance assoc
1b6e0 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f  iated..        /
1b6f0 2f 2f 20 77 69 74 68 20 74 68 69 73 20 76 69 72  // with this vir
1b700 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20  tual table...   
1b710 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
1b720 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1b730 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 61 76 65  param name="save
1b740 70 6f 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20  point">..       
1b750 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 61 6e 20   /// This is an 
1b760 69 6e 74 65 67 65 72 20 75 73 65 64 20 74 6f 20  integer used to 
1b770 69 6e 64 69 63 61 74 65 20 74 68 61 74 20 61 6e  indicate that an
1b780 79 20 73 61 76 65 64 20 73 74 61 74 65 73 20 77  y saved states w
1b790 69 74 68 20 61 6e 0d 0a 20 20 20 20 20 20 20 20  ith an..        
1b7a0 2f 2f 2f 20 69 64 65 6e 74 69 66 69 65 72 20 67  /// identifier g
1b7b0 72 65 61 74 65 72 20 74 68 61 6e 20 6f 72 20 65  reater than or e
1b7c0 71 75 61 6c 20 74 6f 20 74 68 69 73 20 73 68 6f  qual to this sho
1b7d0 75 6c 64 20 62 65 20 64 65 6c 65 74 65 64 20 62  uld be deleted b
1b7e0 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  y the..        /
1b7f0 2f 2f 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  // virtual table
1b800 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1b810 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1b820 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
1b830 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74          /// A st
1b840 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65  andard SQLite re
1b850 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20  turn code...    
1b860 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
1b870 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69  s>..        SQLi
1b880 74 65 45 72 72 6f 72 43 6f 64 65 20 52 65 6c 65  teErrorCode Rele
1b890 61 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ase(..          
1b8a0 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54    SQLiteVirtualT
1b8b0 61 62 6c 65 20 74 61 62 6c 65 2c 20 2f 2a 20 69  able table, /* i
1b8c0 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
1b8d0 20 20 69 6e 74 20 73 61 76 65 70 6f 69 6e 74 20    int savepoint 
1b8e0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69              /* i
1b8f0 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
1b900 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    );....        
1b910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b950 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1b960 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1b970 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1b980 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c  is method is cal
1b990 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20  led in response 
1b9a0 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
1b9b0 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
1b9c0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
1b9d0 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 22 20  le.xRollbackTo" 
1b9e0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
1b9f0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1ba00 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1ba10 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62  <param name="tab
1ba20 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  le">..        //
1ba30 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
1ba40 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  "SQLiteVirtualTa
1ba50 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  ble" /> object i
1ba60 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74  nstance associat
1ba70 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
1ba80 77 69 74 68 20 74 68 69 73 20 76 69 72 74 75 61  with this virtua
1ba90 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  l table...      
1baa0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
1bab0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1bac0 61 6d 20 6e 61 6d 65 3d 22 73 61 76 65 70 6f 69  am name="savepoi
1bad0 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nt">..        //
1bae0 2f 20 54 68 69 73 20 69 73 20 61 6e 20 69 6e 74  / This is an int
1baf0 65 67 65 72 20 69 64 65 6e 74 69 66 69 65 72 20  eger identifier 
1bb00 75 73 65 64 20 74 6f 20 73 70 65 63 69 66 79 20  used to specify 
1bb10 61 20 73 70 65 63 69 66 69 63 20 73 61 76 65 64  a specific saved
1bb20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74  ..        /// st
1bb30 61 74 65 20 66 6f 72 20 74 68 65 20 76 69 72 74  ate for the virt
1bb40 75 61 6c 20 74 61 62 6c 65 20 66 6f 72 20 69 74  ual table for it
1bb50 20 74 6f 20 72 65 73 74 6f 72 65 20 69 74 73 65   to restore itse
1bb60 6c 66 20 62 61 63 6b 20 74 6f 2c 20 77 68 69 63  lf back to, whic
1bb70 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  h..        /// s
1bb80 68 6f 75 6c 64 20 61 6c 73 6f 20 68 61 76 65 20  hould also have 
1bb90 74 68 65 20 65 66 66 65 63 74 20 6f 66 20 64 65  the effect of de
1bba0 6c 65 74 69 6e 67 20 61 6c 6c 20 73 61 76 65 64  leting all saved
1bbb0 20 73 74 61 74 65 73 20 77 69 74 68 20 61 6e 0d   states with an.
1bbc0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74  .        /// int
1bbd0 65 67 65 72 20 69 64 65 6e 74 69 66 69 65 72 20  eger identifier 
1bbe0 67 72 65 61 74 65 72 20 74 68 61 6e 20 74 68 69  greater than thi
1bbf0 73 20 6f 6e 65 2e 0d 0a 20 20 20 20 20 20 20 20  s one...        
1bc00 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1bc10 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
1bc20 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
1bc30 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69   A standard SQLi
1bc40 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d  te return code..
1bc50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
1bc60 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1bc70 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1bc80 20 52 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20 20   RollbackTo(..  
1bc90 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
1bca0 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62  VirtualTable tab
1bcb0 6c 65 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20  le, /* in */..  
1bcc0 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 73 61            int sa
1bcd0 76 65 70 6f 69 6e 74 20 20 20 20 20 20 20 20 20  vepoint         
1bce0 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20      /* in */..  
1bcf0 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 20 20            );..  
1bd00 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67    }..    #endreg
1bd10 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
1bd20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bd30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bd40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bd50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bd60 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
1bd70 65 67 69 6f 6e 20 53 51 4c 69 74 65 4d 65 6d 6f  egion SQLiteMemo
1bd80 72 79 20 53 74 61 74 69 63 20 43 6c 61 73 73 0d  ry Static Class.
1bd90 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
1bda0 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73  y>..    /// This
1bdb0 20 63 6c 61 73 73 20 63 6f 6e 74 61 69 6e 73 20   class contains 
1bdc0 73 74 61 74 69 63 20 6d 65 74 68 6f 64 73 20 74  static methods t
1bdd0 68 61 74 20 61 72 65 20 75 73 65 64 20 74 6f 20  hat are used to 
1bde0 61 6c 6c 6f 63 61 74 65 2c 0d 0a 20 20 20 20 2f  allocate,..    /
1bdf0 2f 2f 20 6d 61 6e 69 70 75 6c 61 74 65 2c 20 61  // manipulate, a
1be00 6e 64 20 66 72 65 65 20 6e 61 74 69 76 65 20 6d  nd free native m
1be10 65 6d 6f 72 79 20 70 72 6f 76 69 64 65 64 20 62  emory provided b
1be20 79 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  y the SQLite cor
1be30 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20  e library...    
1be40 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1be50 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1be60 74 69 63 20 63 6c 61 73 73 20 53 51 4c 69 74 65  tic class SQLite
1be70 4d 65 6d 6f 72 79 0d 0a 20 20 20 20 7b 0d 0a 20  Memory..    {.. 
1be80 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
1be90 72 69 76 61 74 65 20 44 61 74 61 0d 0a 23 69 66  rivate Data..#if
1bea0 20 54 52 41 43 4b 5f 4d 45 4d 4f 52 59 5f 42 59   TRACK_MEMORY_BY
1beb0 54 45 53 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  TES..        ///
1bec0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
1bed0 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6f 62 6a      /// This obj
1bee0 65 63 74 20 69 6e 73 74 61 6e 63 65 20 69 73 20  ect instance is 
1bef0 75 73 65 64 20 74 6f 20 73 79 6e 63 68 72 6f 6e  used to synchron
1bf00 69 7a 65 20 61 63 63 65 73 73 20 74 6f 20 74 68  ize access to th
1bf10 65 20 6f 74 68 65 72 0d 0a 20 20 20 20 20 20 20  e other..       
1bf20 20 2f 2f 2f 20 73 74 61 74 69 63 20 66 69 65 6c   /// static fiel
1bf30 64 73 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73  ds of this class
1bf40 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1bf50 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1bf60 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
1bf70 63 20 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f  c object syncRoo
1bf80 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29  t = new object()
1bf90 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
1bfa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bfb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bfc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bfd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bfe0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1bff0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1c000 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 74         /// The t
1c010 6f 74 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20 6f  otal number of o
1c020 75 74 73 74 61 6e 64 69 6e 67 20 6d 65 6d 6f 72  utstanding memor
1c030 79 20 62 79 74 65 73 20 61 6c 6c 6f 63 61 74 65  y bytes allocate
1c040 64 20 62 79 20 74 68 69 73 0d 0a 20 20 20 20 20  d by this..     
1c050 20 20 20 2f 2f 2f 20 63 6c 61 73 73 20 75 73 69     /// class usi
1c060 6e 67 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  ng the SQLite co
1c070 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  re library...   
1c080 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1c090 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
1c0a0 76 61 74 65 20 73 74 61 74 69 63 20 69 6e 74 20  vate static int 
1c0b0 62 79 74 65 73 41 6c 6c 6f 63 61 74 65 64 3b 0d  bytesAllocated;.
1c0c0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1c0d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c0e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c0f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c110 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
1c120 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1c130 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61 78       /// The max
1c140 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20 6f  imum number of o
1c150 75 74 73 74 61 6e 64 69 6e 67 20 6d 65 6d 6f 72  utstanding memor
1c160 79 20 62 79 74 65 73 20 65 76 65 72 20 61 6c 6c  y bytes ever all
1c170 6f 63 61 74 65 64 20 62 79 0d 0a 20 20 20 20 20  ocated by..     
1c180 20 20 20 2f 2f 2f 20 74 68 69 73 20 63 6c 61 73     /// this clas
1c190 73 20 75 73 69 6e 67 20 74 68 65 20 53 51 4c 69  s using the SQLi
1c1a0 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e  te core library.
1c1b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1c1c0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1c1d0 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
1c1e0 20 69 6e 74 20 6d 61 78 69 6d 75 6d 42 79 74 65   int maximumByte
1c1f0 73 41 6c 6c 6f 63 61 74 65 64 3b 0d 0a 23 65 6e  sAllocated;..#en
1c200 64 69 66 0d 0a 20 20 20 20 20 20 20 20 23 65 6e  dif..        #en
1c210 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
1c220 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1c230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1c270 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 4d 65        #region Me
1c280 6d 6f 72 79 20 41 6c 6c 6f 63 61 74 69 6f 6e 20  mory Allocation 
1c290 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a  Helper Methods..
1c2a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
1c2b0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1c2c0 2f 2f 20 41 6c 6c 6f 63 61 74 65 73 20 61 74 20  // Allocates at 
1c2d0 6c 65 61 73 74 20 74 68 65 20 73 70 65 63 69 66  least the specif
1c2e0 69 65 64 20 6e 75 6d 62 65 72 20 6f 66 20 62 79  ied number of by
1c2f0 74 65 73 20 6f 66 20 6e 61 74 69 76 65 20 6d 65  tes of native me
1c300 6d 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f  mory..        //
1c310 2f 20 76 69 61 20 74 68 65 20 53 51 4c 69 74 65  / via the SQLite
1c320 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 73 71   core library sq
1c330 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 20 66  lite3_malloc() f
1c340 75 6e 63 74 69 6f 6e 20 61 6e 64 20 72 65 74 75  unction and retu
1c350 72 6e 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  rns..        ///
1c360 20 74 68 65 20 72 65 73 75 6c 74 69 6e 67 20 6e   the resulting n
1c370 61 74 69 76 65 20 70 6f 69 6e 74 65 72 2e 20 20  ative pointer.  
1c380 49 66 20 74 68 65 20 54 52 41 43 4b 5f 4d 45 4d  If the TRACK_MEM
1c390 4f 52 59 5f 42 59 54 45 53 20 6f 70 74 69 6f 6e  ORY_BYTES option
1c3a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 61  ..        /// wa
1c3b0 73 20 65 6e 61 62 6c 65 64 20 61 74 20 63 6f 6d  s enabled at com
1c3c0 70 69 6c 65 2d 74 69 6d 65 2c 20 61 64 6a 75 73  pile-time, adjus
1c3d0 74 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  ts the number of
1c3e0 20 62 79 74 65 73 20 63 75 72 72 65 6e 74 6c 79   bytes currently
1c3f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 6c  ..        /// al
1c400 6c 6f 63 61 74 65 64 20 62 79 20 74 68 69 73 20  located by this 
1c410 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20  class...        
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 73 69 7a 65 22 3e 0d  am name="size">.
1c450 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1c460 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73   number of bytes
1c470 20 74 6f 20 61 6c 6c 6f 63 61 74 65 2e 0d 0a 20   to allocate... 
1c480 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1c490 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1c4a0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
1c4b0 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
1c4c0 76 65 20 70 6f 69 6e 74 65 72 20 74 68 61 74 20  ve pointer that 
1c4d0 70 6f 69 6e 74 73 20 74 6f 20 61 20 62 6c 6f 63  points to a bloc
1c4e0 6b 20 6f 66 20 6d 65 6d 6f 72 79 20 6f 66 20 61  k of memory of a
1c4f0 74 20 6c 65 61 73 74 20 74 68 65 0d 0a 20 20 20  t least the..   
1c500 20 20 20 20 20 2f 2f 2f 20 73 70 65 63 69 66 69       /// specifi
1c510 65 64 20 73 69 7a 65 20 2d 4f 52 2d 20 3c 73 65  ed size -OR- <se
1c520 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 2e 5a  e cref="IntPtr.Z
1c530 65 72 6f 22 20 2f 3e 20 69 66 20 74 68 65 20 6d  ero" /> if the m
1c540 65 6d 6f 72 79 20 63 6f 75 6c 64 0d 0a 20 20 20  emory could..   
1c550 20 20 20 20 20 2f 2f 2f 20 6e 6f 74 20 62 65 20       /// not be 
1c560 61 6c 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20  allocated...    
1c570 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
1c580 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  s>..        publ
1c590 69 63 20 73 74 61 74 69 63 20 49 6e 74 50 74 72  ic static IntPtr
1c5a0 20 41 6c 6c 6f 63 61 74 65 28 69 6e 74 20 73 69   Allocate(int si
1c5b0 7a 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ze)..        {..
1c5c0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
1c5d0 74 72 20 70 4d 65 6d 6f 72 79 20 3d 20 55 6e 73  tr pMemory = Uns
1c5e0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
1c5f0 2e 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28  .sqlite3_malloc(
1c600 73 69 7a 65 29 3b 0d 0a 0d 0a 23 69 66 20 54 52  size);....#if TR
1c610 41 43 4b 5f 4d 45 4d 4f 52 59 5f 42 59 54 45 53  ACK_MEMORY_BYTES
1c620 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
1c630 20 28 70 4d 65 6d 6f 72 79 20 21 3d 20 49 6e 74   (pMemory != Int
1c640 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
1c650 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1c660 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 62 6c            int bl
1c670 6f 63 6b 53 69 7a 65 20 3d 20 53 69 7a 65 28 70  ockSize = Size(p
1c680 4d 65 6d 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20  Memory);....    
1c690 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1c6a0 62 6c 6f 63 6b 53 69 7a 65 20 3e 20 30 29 0d 0a  blockSize > 0)..
1c6b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c6c0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1c6d0 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
1c6e0 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
1c6f0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1c700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c710 20 20 20 20 20 20 20 62 79 74 65 73 41 6c 6c 6f         bytesAllo
1c720 63 61 74 65 64 20 2b 3d 20 62 6c 6f 63 6b 53 69  cated += blockSi
1c730 7a 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ze;....         
1c740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1c750 66 20 28 62 79 74 65 73 41 6c 6c 6f 63 61 74 65  f (bytesAllocate
1c760 64 20 3e 20 6d 61 78 69 6d 75 6d 42 79 74 65 73  d > maximumBytes
1c770 41 6c 6c 6f 63 61 74 65 64 29 0d 0a 20 20 20 20  Allocated)..    
1c780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c790 20 20 20 20 20 20 20 20 6d 61 78 69 6d 75 6d 42          maximumB
1c7a0 79 74 65 73 41 6c 6c 6f 63 61 74 65 64 20 3d 20  ytesAllocated = 
1c7b0 62 79 74 65 73 41 6c 6c 6f 63 61 74 65 64 3b 0d  bytesAllocated;.
1c7c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1c7d0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1c7e0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1c7f0 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
1c800 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1c810 72 65 74 75 72 6e 20 70 4d 65 6d 6f 72 79 3b 0d  return pMemory;.
1c820 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
1c830 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1c840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1c880 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
1c890 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1c8a0 2f 2f 2f 20 41 6c 6c 6f 63 61 74 65 73 20 61 74  /// Allocates at
1c8b0 20 6c 65 61 73 74 20 74 68 65 20 73 70 65 63 69   least the speci
1c8c0 66 69 65 64 20 6e 75 6d 62 65 72 20 6f 66 20 62  fied number of b
1c8d0 79 74 65 73 20 6f 66 20 6e 61 74 69 76 65 20 6d  ytes of native m
1c8e0 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 2f  emory..        /
1c8f0 2f 2f 20 76 69 61 20 74 68 65 20 53 51 4c 69 74  // via the SQLit
1c900 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 73  e core library s
1c910 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 20  qlite3_malloc() 
1c920 66 75 6e 63 74 69 6f 6e 20 61 6e 64 20 72 65 74  function and ret
1c930 75 72 6e 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  urns..        //
1c940 2f 20 74 68 65 20 72 65 73 75 6c 74 69 6e 67 20  / the resulting 
1c950 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 77  native pointer w
1c960 69 74 68 6f 75 74 20 61 64 6a 75 73 74 69 6e 67  ithout adjusting
1c970 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 0d 0a   the number of..
1c980 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 6c 6c 6f          /// allo
1c990 63 61 74 65 64 20 62 79 74 65 73 20 63 75 72 72  cated bytes curr
1c9a0 65 6e 74 6c 79 20 74 72 61 63 6b 65 64 20 62 79  ently tracked by
1c9b0 20 74 68 69 73 20 63 6c 61 73 73 2e 20 20 54 68   this class.  Th
1c9c0 69 73 20 69 73 20 75 73 65 66 75 6c 0d 0a 20 20  is is useful..  
1c9d0 20 20 20 20 20 20 2f 2f 2f 20 77 68 65 6e 20 64        /// when d
1c9e0 65 61 6c 69 6e 67 20 77 69 74 68 20 62 6c 6f 63  ealing with bloc
1c9f0 6b 73 20 6f 66 20 6d 65 6d 6f 72 79 20 74 68 61  ks of memory tha
1ca00 74 20 77 69 6c 6c 20 62 65 20 66 72 65 65 64 20  t will be freed 
1ca10 64 69 72 65 63 74 6c 79 20 62 79 0d 0a 20 20 20  directly by..   
1ca20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 53 51 4c       /// the SQL
1ca30 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
1ca40 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1ca50 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1ca60 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1ca70 6d 65 3d 22 73 69 7a 65 22 3e 0d 0a 20 20 20 20  me="size">..    
1ca80 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62      /// The numb
1ca90 65 72 20 6f 66 20 62 79 74 65 73 20 74 6f 20 61  er of bytes to a
1caa0 6c 6c 6f 63 61 74 65 2e 0d 0a 20 20 20 20 20 20  llocate...      
1cab0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
1cac0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
1cad0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
1cae0 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f  // The native po
1caf0 69 6e 74 65 72 20 74 68 61 74 20 70 6f 69 6e 74  inter that point
1cb00 73 20 74 6f 20 61 20 62 6c 6f 63 6b 20 6f 66 20  s to a block of 
1cb10 6d 65 6d 6f 72 79 20 6f 66 20 61 74 20 6c 65 61  memory of at lea
1cb20 73 74 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  st the..        
1cb30 2f 2f 2f 20 73 70 65 63 69 66 69 65 64 20 73 69  /// specified si
1cb40 7a 65 20 2d 4f 52 2d 20 3c 73 65 65 20 63 72 65  ze -OR- <see cre
1cb50 66 3d 22 49 6e 74 50 74 72 2e 5a 65 72 6f 22 20  f="IntPtr.Zero" 
1cb60 2f 3e 20 69 66 20 74 68 65 20 6d 65 6d 6f 72 79  /> if the memory
1cb70 20 63 6f 75 6c 64 0d 0a 20 20 20 20 20 20 20 20   could..        
1cb80 2f 2f 2f 20 6e 6f 74 20 62 65 20 61 6c 6c 6f 63  /// not be alloc
1cb90 61 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ated...        /
1cba0 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
1cbb0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
1cbc0 61 74 69 63 20 49 6e 74 50 74 72 20 41 6c 6c 6f  atic IntPtr Allo
1cbd0 63 61 74 65 55 6e 74 72 61 63 6b 65 64 28 69 6e  cateUntracked(in
1cbe0 74 20 73 69 7a 65 29 0d 0a 20 20 20 20 20 20 20  t size)..       
1cbf0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1cc00 72 65 74 75 72 6e 20 55 6e 73 61 66 65 4e 61 74  return UnsafeNat
1cc10 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
1cc20 65 33 5f 6d 61 6c 6c 6f 63 28 73 69 7a 65 29 3b  e3_malloc(size);
1cc30 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
1cc40 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1cc50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cc60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cc70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cc80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1cc90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1cca0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1ccb0 20 2f 2f 2f 20 47 65 74 73 20 61 6e 64 20 72 65   /// Gets and re
1ccc0 74 75 72 6e 73 20 74 68 65 20 61 63 74 75 61 6c  turns the actual
1ccd0 20 73 69 7a 65 20 6f 66 20 74 68 65 20 73 70 65   size of the spe
1cce0 63 69 66 69 65 64 20 6d 65 6d 6f 72 79 20 62 6c  cified memory bl
1ccf0 6f 63 6b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ock..        ///
1cd00 20 74 68 61 74 20 77 61 73 20 70 72 65 76 69 6f   that was previo
1cd10 75 73 6c 79 20 6f 62 74 61 69 6e 65 64 20 66 72  usly obtained fr
1cd20 6f 6d 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  om the <see cref
1cd30 3d 22 41 6c 6c 6f 63 61 74 65 22 20 2f 3e 20 6f  ="Allocate" /> o
1cd40 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  r..        /// <
1cd50 73 65 65 20 63 72 65 66 3d 22 41 6c 6c 6f 63 61  see cref="Alloca
1cd60 74 65 55 6e 74 72 61 63 6b 65 64 22 20 2f 3e 20  teUntracked" /> 
1cd70 6d 65 74 68 6f 64 73 20 6f 72 20 64 69 72 65 63  methods or direc
1cd80 74 6c 79 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20  tly from the..  
1cd90 20 20 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74 65        /// SQLite
1cda0 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a   core library...
1cdb0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
1cdc0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1cdd0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1cde0 22 70 4d 65 6d 6f 72 79 22 3e 0d 0a 20 20 20 20  "pMemory">..    
1cdf0 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
1ce00 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
1ce10 65 20 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b 20 70  e memory block p
1ce20 72 65 76 69 6f 75 73 6c 79 20 6f 62 74 61 69 6e  reviously obtain
1ce30 65 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20  ed from the..   
1ce40 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
1ce50 65 66 3d 22 41 6c 6c 6f 63 61 74 65 22 20 2f 3e  ef="Allocate" />
1ce60 20 6f 72 20 3c 73 65 65 20 63 72 65 66 3d 22 41   or <see cref="A
1ce70 6c 6c 6f 63 61 74 65 55 6e 74 72 61 63 6b 65 64  llocateUntracked
1ce80 22 20 2f 3e 20 6d 65 74 68 6f 64 73 0d 0a 20 20  " /> methods..  
1ce90 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20 64 69 72        /// or dir
1cea0 65 63 74 6c 79 20 66 72 6f 6d 20 74 68 65 20 53  ectly from the S
1ceb0 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
1cec0 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry...        ///
1ced0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1cee0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
1cef0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1cf00 65 20 61 63 74 75 61 6c 20 73 69 7a 65 2c 20 69  e actual size, i
1cf10 6e 20 62 79 74 65 73 2c 20 6f 66 20 74 68 65 20  n bytes, of the 
1cf20 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b 20 73 70 65  memory block spe
1cf30 63 69 66 69 65 64 20 76 69 61 20 74 68 65 0d 0a  cified via the..
1cf40 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 61 74 69          /// nati
1cf50 76 65 20 70 6f 69 6e 74 65 72 2e 0d 0a 20 20 20  ve pointer...   
1cf60 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
1cf70 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ns>..        pub
1cf80 6c 69 63 20 73 74 61 74 69 63 20 69 6e 74 20 53  lic static int S
1cf90 69 7a 65 28 49 6e 74 50 74 72 20 70 4d 65 6d 6f  ize(IntPtr pMemo
1cfa0 72 79 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ry)..        {..
1cfb0 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
1cfc0 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72         SQLiteMar
1cfd0 73 68 61 6c 2e 43 68 65 63 6b 41 6c 69 67 6e 6d  shal.CheckAlignm
1cfe0 65 6e 74 28 22 53 69 7a 65 22 2c 20 70 4d 65 6d  ent("Size", pMem
1cff0 6f 72 79 2c 20 30 2c 20 49 6e 74 50 74 72 2e 53  ory, 0, IntPtr.S
1d000 69 7a 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  ize);..#endif...
1d010 0a 23 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41  .#if !SQLITE_STA
1d020 4e 44 41 52 44 0d 0a 20 20 20 20 20 20 20 20 20  NDARD..         
1d030 20 20 20 72 65 74 75 72 6e 20 55 6e 73 61 66 65     return Unsafe
1d040 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
1d050 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 5f 73 69 7a  lite3_malloc_siz
1d060 65 5f 69 6e 74 65 72 6f 70 28 70 4d 65 6d 6f 72  e_interop(pMemor
1d070 79 29 3b 0d 0a 23 65 6c 69 66 20 54 52 41 43 4b  y);..#elif TRACK
1d080 5f 4d 45 4d 4f 52 59 5f 42 59 54 45 53 0d 0a 20  _MEMORY_BYTES.. 
1d090 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
1d0a0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 48 41             // HA
1d0b0 43 4b 3a 20 4f 6b 2c 20 77 65 20 63 61 6e 6e 6f  CK: Ok, we canno
1d0c0 74 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20  t determine the 
1d0d0 73 69 7a 65 20 6f 66 20 74 68 65 20 6d 65 6d 6f  size of the memo
1d0e0 72 79 20 62 6c 6f 63 6b 3b 0d 0a 20 20 20 20 20  ry block;..     
1d0f0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
1d100 74 68 65 72 65 66 6f 72 65 2c 20 6a 75 73 74 20  therefore, just 
1d110 74 72 61 63 6b 20 6e 75 6d 62 65 72 20 6f 66 20  track number of 
1d120 61 6c 6c 6f 63 61 74 69 6f 6e 73 20 69 6e 73 74  allocations inst
1d130 65 61 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ead...          
1d140 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
1d150 20 20 72 65 74 75 72 6e 20 28 70 4d 65 6d 6f 72    return (pMemor
1d160 79 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  y != IntPtr.Zero
1d170 29 20 3f 20 31 20 3a 20 30 3b 0d 0a 23 65 6c 73  ) ? 1 : 0;..#els
1d180 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  e..            r
1d190 65 74 75 72 6e 20 30 3b 0d 0a 23 65 6e 64 69 66  eturn 0;..#endif
1d1a0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
1d1b0 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d1e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d1f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1d200 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1d210 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1d220 20 2f 2f 2f 20 46 72 65 65 73 20 61 20 6d 65 6d   /// Frees a mem
1d230 6f 72 79 20 62 6c 6f 63 6b 20 70 72 65 76 69 6f  ory block previo
1d240 75 73 6c 79 20 6f 62 74 61 69 6e 65 64 20 66 72  usly obtained fr
1d250 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  om the..        
1d260 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 41  /// <see cref="A
1d270 6c 6c 6f 63 61 74 65 22 20 2f 3e 20 6d 65 74 68  llocate" /> meth
1d280 6f 64 2e 20 20 49 66 20 74 68 65 20 54 52 41 43  od.  If the TRAC
1d290 4b 5f 4d 45 4d 4f 52 59 5f 42 59 54 45 53 20 6f  K_MEMORY_BYTES o
1d2a0 70 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 2f  ption..        /
1d2b0 2f 2f 20 77 61 73 20 65 6e 61 62 6c 65 64 20 61  // was enabled a
1d2c0 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2c 20  t compile-time, 
1d2d0 61 64 6a 75 73 74 73 20 74 68 65 20 6e 75 6d 62  adjusts the numb
1d2e0 65 72 20 6f 66 20 62 79 74 65 73 20 63 75 72 72  er of bytes curr
1d2f0 65 6e 74 6c 79 0d 0a 20 20 20 20 20 20 20 20 2f  ently..        /
1d300 2f 2f 20 61 6c 6c 6f 63 61 74 65 64 20 62 79 20  // allocated by 
1d310 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20  this class...   
1d320 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1d330 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1d340 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 4d   <param name="pM
1d350 65 6d 6f 72 79 22 3e 0d 0a 20 20 20 20 20 20 20  emory">..       
1d360 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
1d370 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 6d  pointer to the m
1d380 65 6d 6f 72 79 20 62 6c 6f 63 6b 20 70 72 65 76  emory block prev
1d390 69 6f 75 73 6c 79 20 6f 62 74 61 69 6e 65 64 20  iously obtained 
1d3a0 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20 20  from the..      
1d3b0 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
1d3c0 22 41 6c 6c 6f 63 61 74 65 22 20 2f 3e 20 6d 65  "Allocate" /> me
1d3d0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  thod...        /
1d3e0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1d3f0 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
1d400 69 63 20 76 6f 69 64 20 46 72 65 65 28 49 6e 74  ic void Free(Int
1d410 50 74 72 20 70 4d 65 6d 6f 72 79 29 0d 0a 20 20  Ptr pMemory)..  
1d420 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 44 45 42        {..#if DEB
1d430 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  UG..            
1d440 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 43 68  SQLiteMarshal.Ch
1d450 65 63 6b 41 6c 69 67 6e 6d 65 6e 74 28 22 46 72  eckAlignment("Fr
1d460 65 65 22 2c 20 70 4d 65 6d 6f 72 79 2c 20 30 2c  ee", pMemory, 0,
1d470 20 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a   IntPtr.Size);..
1d480 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 54 52  #endif....#if TR
1d490 41 43 4b 5f 4d 45 4d 4f 52 59 5f 42 59 54 45 53  ACK_MEMORY_BYTES
1d4a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
1d4b0 20 28 70 4d 65 6d 6f 72 79 20 21 3d 20 49 6e 74   (pMemory != Int
1d4c0 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
1d4d0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1d4e0 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 62 6c            int bl
1d4f0 6f 63 6b 53 69 7a 65 20 3d 20 53 69 7a 65 28 70  ockSize = Size(p
1d500 4d 65 6d 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20  Memory);....    
1d510 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1d520 62 6c 6f 63 6b 53 69 7a 65 20 3e 20 30 29 0d 0a  blockSize > 0)..
1d530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d540 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1d550 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
1d560 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
1d570 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1d580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d590 20 20 20 20 20 20 20 62 79 74 65 73 41 6c 6c 6f         bytesAllo
1d5a0 63 61 74 65 64 20 2d 3d 20 62 6c 6f 63 6b 53 69  cated -= blockSi
1d5b0 7a 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ze;..           
1d5c0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1d5d0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1d5e0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
1d5f0 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
1d600 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65      UnsafeNative
1d610 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
1d620 66 72 65 65 28 70 4d 65 6d 6f 72 79 29 3b 0d 0a  free(pMemory);..
1d630 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
1d640 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1d650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1d690 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
1d6a0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1d6b0 2f 2f 20 46 72 65 65 73 20 61 20 6d 65 6d 6f 72  // Frees a memor
1d6c0 79 20 62 6c 6f 63 6b 20 70 72 65 76 69 6f 75 73  y block previous
1d6d0 6c 79 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d  ly obtained from
1d6e0 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
1d6f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 69  ..        /// li
1d700 62 72 61 72 79 20 77 69 74 68 6f 75 74 20 61 64  brary without ad
1d710 6a 75 73 74 69 6e 67 20 74 68 65 20 6e 75 6d 62  justing the numb
1d720 65 72 20 6f 66 20 61 6c 6c 6f 63 61 74 65 64 20  er of allocated 
1d730 62 79 74 65 73 20 63 75 72 72 65 6e 74 6c 79 0d  bytes currently.
1d740 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 72 61  .        /// tra
1d750 63 6b 65 64 20 62 79 20 74 68 69 73 20 63 6c 61  cked by this cla
1d760 73 73 2e 20 20 54 68 69 73 20 69 73 20 75 73 65  ss.  This is use
1d770 66 75 6c 20 77 68 65 6e 20 64 65 61 6c 69 6e 67  ful when dealing
1d780 20 77 69 74 68 20 62 6c 6f 63 6b 73 20 6f 66 0d   with blocks of.
1d790 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 6d  .        /// mem
1d7a0 6f 72 79 20 74 68 61 74 20 77 65 72 65 20 6e 6f  ory that were no
1d7b0 74 20 61 6c 6c 6f 63 61 74 65 64 20 75 73 69 6e  t allocated usin
1d7c0 67 20 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20  g this class... 
1d7d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
1d7e0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1d7f0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1d800 70 4d 65 6d 6f 72 79 22 3e 0d 0a 20 20 20 20 20  pMemory">..     
1d810 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
1d820 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
1d830 20 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b 20 70 72   memory block pr
1d840 65 76 69 6f 75 73 6c 79 20 6f 62 74 61 69 6e 65  eviously obtaine
1d850 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20  d from the..    
1d860 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 63      /// SQLite c
1d870 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ore library...  
1d880 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1d890 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  m>..        publ
1d8a0 69 63 20 73 74 61 74 69 63 20 76 6f 69 64 20 46  ic static void F
1d8b0 72 65 65 55 6e 74 72 61 63 6b 65 64 28 49 6e 74  reeUntracked(Int
1d8c0 50 74 72 20 70 4d 65 6d 6f 72 79 29 0d 0a 20 20  Ptr pMemory)..  
1d8d0 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 44 45 42        {..#if DEB
1d8e0 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  UG..            
1d8f0 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 43 68  SQLiteMarshal.Ch
1d900 65 63 6b 41 6c 69 67 6e 6d 65 6e 74 28 0d 0a 20  eckAlignment(.. 
1d910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
1d920 46 72 65 65 55 6e 74 72 61 63 6b 65 64 22 2c 20  FreeUntracked", 
1d930 70 4d 65 6d 6f 72 79 2c 20 30 2c 20 49 6e 74 50  pMemory, 0, IntP
1d940 74 72 2e 53 69 7a 65 29 3b 0d 0a 23 65 6e 64 69  tr.Size);..#endi
1d950 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  f....           
1d960 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
1d970 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 66 72 65  hods.sqlite3_fre
1d980 65 28 70 4d 65 6d 6f 72 79 29 3b 0d 0a 20 20 20  e(pMemory);..   
1d990 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1d9a0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20  #endregion..    
1d9b0 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  }..    #endregio
1d9c0 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  n....    ///////
1d9d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d9e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d9f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1da00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1da10 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
1da20 69 6f 6e 20 53 51 4c 69 74 65 53 74 72 69 6e 67  ion SQLiteString
1da30 20 53 74 61 74 69 63 20 43 6c 61 73 73 0d 0a 20   Static Class.. 
1da40 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1da50 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63  ..    /// This c
1da60 6c 61 73 73 20 63 6f 6e 74 61 69 6e 73 20 73 74  lass contains st
1da70 61 74 69 63 20 6d 65 74 68 6f 64 73 20 74 68 61  atic methods tha
1da80 74 20 61 72 65 20 75 73 65 64 20 74 6f 20 64 65  t are used to de
1da90 61 6c 20 77 69 74 68 20 6e 61 74 69 76 65 0d 0a  al with native..
1daa0 20 20 20 20 2f 2f 2f 20 55 54 46 2d 38 20 73 74      /// UTF-8 st
1dab0 72 69 6e 67 20 70 6f 69 6e 74 65 72 73 20 74 6f  ring pointers to
1dac0 20 62 65 20 75 73 65 64 20 77 69 74 68 20 74 68   be used with th
1dad0 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69  e SQLite core li
1dae0 62 72 61 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20  brary...    /// 
1daf0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1db00 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
1db10 63 6c 61 73 73 20 53 51 4c 69 74 65 53 74 72 69  class SQLiteStri
1db20 6e 67 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ng..    {..     
1db30 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
1db40 74 65 20 43 6f 6e 73 74 61 6e 74 73 0d 0a 20 20  te Constants..  
1db50 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
1db60 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1db70 20 54 68 69 73 20 69 73 20 74 68 65 20 6d 61 78   This is the max
1db80 69 6d 75 6d 20 70 6f 73 73 69 62 6c 65 20 6c 65  imum possible le
1db90 6e 67 74 68 20 66 6f 72 20 74 68 65 20 6e 61 74  ngth for the nat
1dba0 69 76 65 20 55 54 46 2d 38 20 65 6e 63 6f 64 65  ive UTF-8 encode
1dbb0 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  d..        /// s
1dbc0 74 72 69 6e 67 73 20 75 73 65 64 20 77 69 74 68  trings used with
1dbd0 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
1dbe0 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20   library...     
1dbf0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1dc00 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
1dc10 74 65 20 73 74 61 74 69 63 20 69 6e 74 20 54 68  te static int Th
1dc20 69 72 74 79 42 69 74 73 20 3d 20 30 78 33 66 66  irtyBits = 0x3ff
1dc30 66 66 66 66 66 3b 0d 0a 0d 0a 20 20 20 20 20 20  fffff;....      
1dc40 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1dc50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dc60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dc70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dc80 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1dc90 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
1dca0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1dcb0 54 68 69 73 20 69 73 20 74 68 65 20 3c 73 65 65  This is the <see
1dcc0 20 63 72 65 66 3d 22 45 6e 63 6f 64 69 6e 67 22   cref="Encoding"
1dcd0 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
1dce0 6e 63 65 20 75 73 65 64 20 74 6f 20 68 61 6e 64  nce used to hand
1dcf0 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  le..        /// 
1dd00 63 6f 6e 76 65 72 73 69 6f 6e 73 20 66 72 6f 6d  conversions from
1dd10 2f 74 6f 20 55 54 46 2d 38 2e 0d 0a 20 20 20 20  /to UTF-8...    
1dd20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1dd30 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  y>..        priv
1dd40 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f  ate static reado
1dd50 6e 6c 79 20 45 6e 63 6f 64 69 6e 67 20 55 74 66  nly Encoding Utf
1dd60 38 45 6e 63 6f 64 69 6e 67 20 3d 20 45 6e 63 6f  8Encoding = Enco
1dd70 64 69 6e 67 2e 55 54 46 38 3b 0d 0a 20 20 20 20  ding.UTF8;..    
1dd80 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
1dd90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
1dda0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ddb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ddc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ddd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dde0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
1ddf0 67 69 6f 6e 20 55 54 46 2d 38 20 45 6e 63 6f 64  gion UTF-8 Encod
1de00 69 6e 67 20 48 65 6c 70 65 72 20 4d 65 74 68 6f  ing Helper Metho
1de10 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
1de20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1de30 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20     /// Converts 
1de40 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6d 61  the specified ma
1de50 6e 61 67 65 64 20 73 74 72 69 6e 67 20 69 6e 74  naged string int
1de60 6f 20 74 68 65 20 55 54 46 2d 38 20 65 6e 63 6f  o the UTF-8 enco
1de70 64 69 6e 67 20 61 6e 64 0d 0a 20 20 20 20 20 20  ding and..      
1de80 20 20 2f 2f 2f 20 72 65 74 75 72 6e 73 20 74 68    /// returns th
1de90 65 20 61 72 72 61 79 20 6f 66 20 62 79 74 65 73  e array of bytes
1dea0 20 63 6f 6e 74 61 69 6e 69 6e 67 20 69 74 73 20   containing its 
1deb0 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 69  representation i
1dec0 6e 20 74 68 61 74 0d 0a 20 20 20 20 20 20 20 20  n that..        
1ded0 2f 2f 2f 20 65 6e 63 6f 64 69 6e 67 2e 0d 0a 20  /// encoding... 
1dee0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
1def0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1df00 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1df10 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20  value">..       
1df20 20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64   /// The managed
1df30 20 73 74 72 69 6e 67 20 74 6f 20 63 6f 6e 76 65   string to conve
1df40 72 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  rt...        ///
1df50 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1df60 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
1df70 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1df80 65 20 61 72 72 61 79 20 6f 66 20 62 79 74 65 73  e array of bytes
1df90 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20   containing the 
1dfa0 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f  representation o
1dfb0 66 20 74 68 65 20 6d 61 6e 61 67 65 64 0d 0a 20  f the managed.. 
1dfc0 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 69 6e         /// strin
1dfd0 67 20 69 6e 20 74 68 65 20 55 54 46 2d 38 20 65  g in the UTF-8 e
1dfe0 6e 63 6f 64 69 6e 67 20 6f 72 20 6e 75 6c 6c 20  ncoding or null 
1dff0 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20  upon failure... 
1e000 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
1e010 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
1e020 75 62 6c 69 63 20 73 74 61 74 69 63 20 62 79 74  ublic static byt
1e030 65 5b 5d 20 47 65 74 55 74 66 38 42 79 74 65 73  e[] GetUtf8Bytes
1e040 46 72 6f 6d 53 74 72 69 6e 67 28 0d 0a 20 20 20  FromString(..   
1e050 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
1e060 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20  value..         
1e070 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
1e080 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
1e090 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d  (value == null).
1e0a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e0b0 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d   return null;...
1e0c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
1e0d0 75 72 6e 20 55 74 66 38 45 6e 63 6f 64 69 6e 67  urn Utf8Encoding
1e0e0 2e 47 65 74 42 79 74 65 73 28 76 61 6c 75 65 29  .GetBytes(value)
1e0f0 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
1e100 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1e110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1e150 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1e160 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1e170 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 74    /// Converts t
1e180 68 65 20 73 70 65 63 69 66 69 65 64 20 61 72 72  he specified arr
1e190 61 79 20 6f 66 20 62 79 74 65 73 20 72 65 70 72  ay of bytes repr
1e1a0 65 73 65 6e 74 69 6e 67 20 61 20 73 74 72 69 6e  esenting a strin
1e1b0 67 20 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20  g in the..      
1e1c0 20 20 2f 2f 2f 20 55 54 46 2d 38 20 65 6e 63 6f    /// UTF-8 enco
1e1d0 64 69 6e 67 20 61 6e 64 20 72 65 74 75 72 6e 73  ding and returns
1e1e0 20 61 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e   a managed strin
1e1f0 67 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  g...        /// 
1e200 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1e210 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1e220 61 6d 65 3d 22 62 79 74 65 73 22 3e 0d 0a 20 20  ame="bytes">..  
1e230 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 72        /// The ar
1e240 72 61 79 20 6f 66 20 62 79 74 65 73 20 74 6f 20  ray of bytes to 
1e250 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20  convert...      
1e260 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
1e270 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
1e280 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
1e290 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20 73  // The managed s
1e2a0 74 72 69 6e 67 20 6f 72 20 6e 75 6c 6c 20 75 70  tring or null up
1e2b0 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20  on failure...   
1e2c0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
1e2d0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ns>..        pub
1e2e0 6c 69 63 20 73 74 61 74 69 63 20 73 74 72 69 6e  lic static strin
1e2f0 67 20 47 65 74 53 74 72 69 6e 67 46 72 6f 6d 55  g GetStringFromU
1e300 74 66 38 42 79 74 65 73 28 0d 0a 20 20 20 20 20  tf8Bytes(..     
1e310 20 20 20 20 20 20 20 62 79 74 65 5b 5d 20 62 79         byte[] by
1e320 74 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tes..           
1e330 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
1e340 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62             if (b
1e350 79 74 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  ytes == null).. 
1e360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1e370 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 23  eturn null;....#
1e380 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1e390 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1e3a0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1e3b0 6e 20 55 74 66 38 45 6e 63 6f 64 69 6e 67 2e 47  n Utf8Encoding.G
1e3c0 65 74 53 74 72 69 6e 67 28 62 79 74 65 73 29 3b  etString(bytes);
1e3d0 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
1e3e0 20 20 20 20 20 72 65 74 75 72 6e 20 55 74 66 38       return Utf8
1e3f0 45 6e 63 6f 64 69 6e 67 2e 47 65 74 53 74 72 69  Encoding.GetStri
1e400 6e 67 28 62 79 74 65 73 2c 20 30 2c 20 62 79 74  ng(bytes, 0, byt
1e410 65 73 2e 4c 65 6e 67 74 68 29 3b 0d 0a 23 65 6e  es.Length);..#en
1e420 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
1e430 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
1e440 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
1e450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e490 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1e4a0 20 23 72 65 67 69 6f 6e 20 55 54 46 2d 38 20 53   #region UTF-8 S
1e4b0 74 72 69 6e 67 20 48 65 6c 70 65 72 20 4d 65 74  tring Helper Met
1e4c0 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hods..        //
1e4d0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1e4e0 20 20 20 20 20 2f 2f 2f 20 50 72 6f 62 65 73 20       /// Probes 
1e4f0 61 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  a native pointer
1e500 20 74 6f 20 61 20 73 74 72 69 6e 67 20 69 6e 20   to a string in 
1e510 74 68 65 20 55 54 46 2d 38 20 65 6e 63 6f 64 69  the UTF-8 encodi
1e520 6e 67 20 66 6f 72 20 69 74 73 0d 0a 20 20 20 20  ng for its..    
1e530 20 20 20 20 2f 2f 2f 20 74 65 72 6d 69 6e 61 74      /// terminat
1e540 69 6e 67 20 4e 55 4c 20 63 68 61 72 61 63 74 65  ing NUL characte
1e550 72 2c 20 77 69 74 68 69 6e 20 74 68 65 20 73 70  r, within the sp
1e560 65 63 69 66 69 65 64 20 6c 65 6e 67 74 68 20 6c  ecified length l
1e570 69 6d 69 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f  imit...        /
1e580 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1e590 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1e5a0 6d 20 6e 61 6d 65 3d 22 70 56 61 6c 75 65 22 3e  m name="pValue">
1e5b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1e5c0 65 20 6e 61 74 69 76 65 20 4e 55 4c 2d 74 65 72  e native NUL-ter
1e5d0 6d 69 6e 61 74 65 64 20 73 74 72 69 6e 67 20 70  minated string p
1e5e0 6f 69 6e 74 65 72 2e 0d 0a 20 20 20 20 20 20 20  ointer...       
1e5f0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1e600 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1e610 6d 20 6e 61 6d 65 3d 22 6c 69 6d 69 74 22 3e 0d  m name="limit">.
1e620 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1e630 20 6d 61 78 69 6d 75 6d 20 6c 65 6e 67 74 68 20   maximum length 
1e640 6f 66 20 74 68 65 20 6e 61 74 69 76 65 20 73 74  of the native st
1e650 72 69 6e 67 2c 20 69 6e 20 62 79 74 65 73 2e 0d  ring, in bytes..
1e660 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1e670 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
1e680 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
1e690 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6c 65        /// The le
1e6a0 6e 67 74 68 20 6f 66 20 74 68 65 20 6e 61 74 69  ngth of the nati
1e6b0 76 65 20 73 74 72 69 6e 67 2c 20 69 6e 20 62 79  ve string, in by
1e6c0 74 65 73 20 2d 4f 52 2d 20 7a 65 72 6f 20 69 66  tes -OR- zero if
1e6d0 20 74 68 65 20 6c 65 6e 67 74 68 0d 0a 20 20 20   the length..   
1e6e0 20 20 20 20 20 2f 2f 2f 20 63 6f 75 6c 64 20 6e       /// could n
1e6f0 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64  ot be determined
1e700 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1e710 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
1e720 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
1e730 20 69 6e 74 20 50 72 6f 62 65 46 6f 72 55 74 66   int ProbeForUtf
1e740 38 42 79 74 65 4c 65 6e 67 74 68 28 0d 0a 20 20  8ByteLength(..  
1e750 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
1e760 20 70 56 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20   pValue,..      
1e770 20 20 20 20 20 20 69 6e 74 20 6c 69 6d 69 74 0d        int limit.
1e780 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
1e790 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1e7a0 20 20 20 20 20 20 20 69 6e 74 20 6c 65 6e 67 74         int lengt
1e7b0 68 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20  h = 0;....      
1e7c0 20 20 20 20 20 20 69 66 20 28 28 70 56 61 6c 75        if ((pValu
1e7d0 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e != IntPtr.Zero
1e7e0 29 20 26 26 20 28 6c 69 6d 69 74 20 3e 20 30 29  ) && (limit > 0)
1e7f0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
1e800 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1e810 20 20 64 6f 0d 0a 20 20 20 20 20 20 20 20 20 20    do..          
1e820 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1e830 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1e840 28 4d 61 72 73 68 61 6c 2e 52 65 61 64 42 79 74  (Marshal.ReadByt
1e850 65 28 70 56 61 6c 75 65 2c 20 6c 65 6e 67 74 68  e(pValue, length
1e860 29 20 3d 3d 20 30 29 0d 0a 20 20 20 20 20 20 20  ) == 0)..       
1e870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e880 20 62 72 65 61 6b 3b 0d 0a 0d 0a 20 20 20 20 20   break;....     
1e890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1e8a0 66 20 28 6c 65 6e 67 74 68 20 3e 3d 20 6c 69 6d  f (length >= lim
1e8b0 69 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  it)..           
1e8c0 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65               bre
1e8d0 61 6b 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ak;....         
1e8e0 20 20 20 20 20 20 20 20 20 20 20 6c 65 6e 67 74             lengt
1e8f0 68 2b 2b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  h++;..          
1e900 20 20 20 20 20 20 7d 20 77 68 69 6c 65 20 28 74        } while (t
1e910 72 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  rue);..         
1e920 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1e930 20 20 20 20 72 65 74 75 72 6e 20 6c 65 6e 67 74      return lengt
1e940 68 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  h;..        }...
1e950 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1e960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e9a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
1e9b0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1e9c0 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20     /// Converts 
1e9d0 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6e 61  the specified na
1e9e0 74 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69 6e 61  tive NUL-termina
1e9f0 74 65 64 20 55 54 46 2d 38 20 73 74 72 69 6e 67  ted UTF-8 string
1ea00 20 70 6f 69 6e 74 65 72 0d 0a 20 20 20 20 20 20   pointer..      
1ea10 20 20 2f 2f 2f 20 69 6e 74 6f 20 61 20 6d 61 6e    /// into a man
1ea20 61 67 65 64 20 73 74 72 69 6e 67 2e 0d 0a 20 20  aged string...  
1ea30 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
1ea40 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1ea50 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
1ea60 56 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20  Value">..       
1ea70 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
1ea80 4e 55 4c 2d 74 65 72 6d 69 6e 61 74 65 64 20 55  NUL-terminated U
1ea90 54 46 2d 38 20 73 74 72 69 6e 67 20 70 6f 69 6e  TF-8 string poin
1eaa0 74 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ter...        //
1eab0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1eac0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
1ead0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1eae0 68 65 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e  he managed strin
1eaf0 67 20 6f 72 20 6e 75 6c 6c 20 75 70 6f 6e 20 66  g or null upon f
1eb00 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ailure...       
1eb10 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
1eb20 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1eb30 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 53 74  static string St
1eb40 72 69 6e 67 46 72 6f 6d 55 74 66 38 49 6e 74 50  ringFromUtf8IntP
1eb50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tr(..           
1eb60 20 49 6e 74 50 74 72 20 70 56 61 6c 75 65 0d 0a   IntPtr pValue..
1eb70 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
1eb80 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1eb90 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 74 72        return Str
1eba0 69 6e 67 46 72 6f 6d 55 74 66 38 49 6e 74 50 74  ingFromUtf8IntPt
1ebb0 72 28 70 56 61 6c 75 65 2c 0d 0a 20 20 20 20 20  r(pValue,..     
1ebc0 20 20 20 20 20 20 20 20 20 20 20 50 72 6f 62 65             Probe
1ebd0 46 6f 72 55 74 66 38 42 79 74 65 4c 65 6e 67 74  ForUtf8ByteLengt
1ebe0 68 28 70 56 61 6c 75 65 2c 20 54 68 69 72 74 79  h(pValue, Thirty
1ebf0 42 69 74 73 29 29 3b 0d 0a 20 20 20 20 20 20 20  Bits));..       
1ec00 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
1ec10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ec20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ec30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ec40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ec50 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1ec60 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1ec70 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76          /// Conv
1ec80 65 72 74 73 20 74 68 65 20 73 70 65 63 69 66 69  erts the specifi
1ec90 65 64 20 6e 61 74 69 76 65 20 55 54 46 2d 38 20  ed native UTF-8 
1eca0 73 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 20 6f  string pointer o
1ecb0 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64 0d  f the specified.
1ecc0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 65 6e  .        /// len
1ecd0 67 74 68 20 69 6e 74 6f 20 61 20 6d 61 6e 61 67  gth into a manag
1ece0 65 64 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20  ed string...    
1ecf0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1ed00 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1ed10 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 61  <param name="pVa
1ed20 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  lue">..        /
1ed30 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 55 54  // The native UT
1ed40 46 2d 38 20 73 74 72 69 6e 67 20 70 6f 69 6e 74  F-8 string point
1ed50 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  er...        ///
1ed60 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1ed70 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1ed80 6d 65 3d 22 6c 65 6e 67 74 68 22 3e 0d 0a 20 20  me="length">..  
1ed90 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6c 65        /// The le
1eda0 6e 67 74 68 20 6f 66 20 74 68 65 20 6e 61 74 69  ngth of the nati
1edb0 76 65 20 73 74 72 69 6e 67 2c 20 69 6e 20 62 79  ve string, in by
1edc0 74 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tes...        //
1edd0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1ede0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
1edf0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1ee00 68 65 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e  he managed strin
1ee10 67 20 6f 72 20 6e 75 6c 6c 20 75 70 6f 6e 20 66  g or null upon f
1ee20 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ailure...       
1ee30 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
1ee40 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1ee50 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 53 74  static string St
1ee60 72 69 6e 67 46 72 6f 6d 55 74 66 38 49 6e 74 50  ringFromUtf8IntP
1ee70 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tr(..           
1ee80 20 49 6e 74 50 74 72 20 70 56 61 6c 75 65 2c 0d   IntPtr pValue,.
1ee90 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
1eea0 20 6c 65 6e 67 74 68 0d 0a 20 20 20 20 20 20 20   length..       
1eeb0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
1eec0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
1eed0 66 20 28 70 56 61 6c 75 65 20 3d 3d 20 49 6e 74  f (pValue == Int
1eee0 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
1eef0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1ef00 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  n null;....     
1ef10 20 20 20 20 20 20 20 69 66 20 28 6c 65 6e 67 74         if (lengt
1ef20 68 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 20 20  h > 0)..        
1ef30 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1ef40 20 20 20 20 20 20 20 62 79 74 65 5b 5d 20 62 79         byte[] by
1ef50 74 65 73 20 3d 20 6e 65 77 20 62 79 74 65 5b 6c  tes = new byte[l
1ef60 65 6e 67 74 68 5d 3b 0d 0a 0d 0a 20 20 20 20 20  ength];....     
1ef70 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68             Marsh
1ef80 61 6c 2e 43 6f 70 79 28 70 56 61 6c 75 65 2c 20  al.Copy(pValue, 
1ef90 62 79 74 65 73 2c 20 30 2c 20 6c 65 6e 67 74 68  bytes, 0, length
1efa0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
1efb0 20 20 20 20 20 20 72 65 74 75 72 6e 20 47 65 74        return Get
1efc0 53 74 72 69 6e 67 46 72 6f 6d 55 74 66 38 42 79  StringFromUtf8By
1efd0 74 65 73 28 62 79 74 65 73 29 3b 0d 0a 20 20 20  tes(bytes);..   
1efe0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
1eff0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1f000 20 53 74 72 69 6e 67 2e 45 6d 70 74 79 3b 0d 0a   String.Empty;..
1f010 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
1f020 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1f030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1f070 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
1f080 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1f090 2f 2f 20 43 6f 6e 76 65 72 74 73 20 74 68 65 20  // Converts the 
1f0a0 73 70 65 63 69 66 69 65 64 20 6d 61 6e 61 67 65  specified manage
1f0b0 64 20 73 74 72 69 6e 67 20 69 6e 74 6f 20 61 20  d string into a 
1f0c0 6e 61 74 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69  native NUL-termi
1f0d0 6e 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f  nated..        /
1f0e0 2f 2f 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20  // UTF-8 string 
1f0f0 70 6f 69 6e 74 65 72 20 75 73 69 6e 67 20 6d 65  pointer using me
1f100 6d 6f 72 79 20 6f 62 74 61 69 6e 65 64 20 66 72  mory obtained fr
1f110 6f 6d 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  om the SQLite co
1f120 72 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  re..        /// 
1f130 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20  library...      
1f140 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1f150 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1f160 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65  aram name="value
1f170 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
1f180 54 68 65 20 6d 61 6e 61 67 65 64 20 73 74 72 69  The managed stri
1f190 6e 67 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a  ng to convert...
1f1a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1f1b0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
1f1c0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
1f1d0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
1f1e0 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69 6e 61 74  ive NUL-terminat
1f1f0 65 64 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20  ed UTF-8 string 
1f200 70 6f 69 6e 74 65 72 20 6f 72 0d 0a 20 20 20 20  pointer or..    
1f210 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
1f220 66 3d 22 49 6e 74 50 74 72 2e 5a 65 72 6f 22 20  f="IntPtr.Zero" 
1f230 2f 3e 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e  /> upon failure.
1f240 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1f250 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1f260 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
1f270 49 6e 74 50 74 72 20 55 74 66 38 49 6e 74 50 74  IntPtr Utf8IntPt
1f280 72 46 72 6f 6d 53 74 72 69 6e 67 28 0d 0a 20 20  rFromString(..  
1f290 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
1f2a0 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20   value..        
1f2b0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
1f2c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
1f2d0 74 75 72 6e 20 55 74 66 38 49 6e 74 50 74 72 46  turn Utf8IntPtrF
1f2e0 72 6f 6d 53 74 72 69 6e 67 28 76 61 6c 75 65 2c  romString(value,
1f2f0 20 74 72 75 65 29 3b 0d 0a 20 20 20 20 20 20 20   true);..       
1f300 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
1f310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f350 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1f360 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1f370 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76          /// Conv
1f380 65 72 74 73 20 74 68 65 20 73 70 65 63 69 66 69  erts the specifi
1f390 65 64 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e  ed managed strin
1f3a0 67 20 69 6e 74 6f 20 61 20 6e 61 74 69 76 65 20  g into a native 
1f3b0 4e 55 4c 2d 74 65 72 6d 69 6e 61 74 65 64 0d 0a  NUL-terminated..
1f3c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 54 46 2d          /// UTF-
1f3d0 38 20 73 74 72 69 6e 67 20 70 6f 69 6e 74 65 72  8 string pointer
1f3e0 20 75 73 69 6e 67 20 6d 65 6d 6f 72 79 20 6f 62   using memory ob
1f3f0 74 61 69 6e 65 64 20 66 72 6f 6d 20 74 68 65 20  tained from the 
1f400 53 51 4c 69 74 65 20 63 6f 72 65 0d 0a 20 20 20  SQLite core..   
1f410 20 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79       /// library
1f420 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1f430 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1f440 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1f450 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20  me="value">..   
1f460 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61 6e       /// The man
1f470 61 67 65 64 20 73 74 72 69 6e 67 20 74 6f 20 63  aged string to c
1f480 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 20  onvert...       
1f490 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1f4a0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1f4b0 6d 20 6e 61 6d 65 3d 22 74 72 61 63 6b 65 64 22  m name="tracked"
1f4c0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
1f4d0 6f 6e 2d 7a 65 72 6f 20 74 6f 20 6f 62 74 61 69  on-zero to obtai
1f4e0 6e 20 6d 65 6d 6f 72 79 20 66 72 6f 6d 20 74 68  n memory from th
1f4f0 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69  e SQLite core li
1f500 62 72 61 72 79 20 77 69 74 68 6f 75 74 0d 0a 20  brary without.. 
1f510 20 20 20 20 20 20 20 2f 2f 2f 20 61 64 6a 75 73         /// adjus
1f520 74 69 6e 67 20 74 68 65 20 6e 75 6d 62 65 72 20  ting the number 
1f530 6f 66 20 61 6c 6c 6f 63 61 74 65 64 20 62 79 74  of allocated byt
1f540 65 73 20 63 75 72 72 65 6e 74 6c 79 20 62 65 69  es currently bei
1f550 6e 67 20 74 72 61 63 6b 65 64 0d 0a 20 20 20 20  ng tracked..    
1f560 20 20 20 20 2f 2f 2f 20 62 79 20 74 68 65 20 3c      /// by the <
1f570 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
1f580 4d 65 6d 6f 72 79 22 20 2f 3e 20 63 6c 61 73 73  Memory" /> class
1f590 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1f5a0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1f5b0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
1f5c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1f5d0 6e 61 74 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69  native NUL-termi
1f5e0 6e 61 74 65 64 20 55 54 46 2d 38 20 73 74 72 69  nated UTF-8 stri
1f5f0 6e 67 20 70 6f 69 6e 74 65 72 20 6f 72 0d 0a 20  ng pointer or.. 
1f600 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
1f610 63 72 65 66 3d 22 49 6e 74 50 74 72 2e 5a 65 72  cref="IntPtr.Zer
1f620 6f 22 20 2f 3e 20 75 70 6f 6e 20 66 61 69 6c 75  o" /> upon failu
1f630 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
1f640 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
1f650 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
1f660 69 63 20 49 6e 74 50 74 72 20 55 74 66 38 49 6e  ic IntPtr Utf8In
1f670 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28 0d  tPtrFromString(.
1f680 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72  .            str
1f690 69 6e 67 20 76 61 6c 75 65 2c 0d 0a 20 20 20 20  ing value,..    
1f6a0 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 74 72 61          bool tra
1f6b0 63 6b 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20  cked..          
1f6c0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
1f6d0 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
1f6e0 6c 65 6e 67 74 68 20 3d 20 30 3b 0d 0a 0d 0a 20  length = 0;.... 
1f6f0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1f700 6e 20 55 74 66 38 49 6e 74 50 74 72 46 72 6f 6d  n Utf8IntPtrFrom
1f710 53 74 72 69 6e 67 28 76 61 6c 75 65 2c 20 74 72  String(value, tr
1f720 61 63 6b 65 64 2c 20 72 65 66 20 6c 65 6e 67 74  acked, ref lengt
1f730 68 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  h);..        }..
1f740 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
1f750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f790 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
1f7a0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
1f7b0 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73      /// Converts
1f7c0 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6d   the specified m
1f7d0 61 6e 61 67 65 64 20 73 74 72 69 6e 67 20 69 6e  anaged string in
1f7e0 74 6f 20 61 20 6e 61 74 69 76 65 20 4e 55 4c 2d  to a native NUL-
1f7f0 74 65 72 6d 69 6e 61 74 65 64 0d 0a 20 20 20 20  terminated..    
1f800 20 20 20 20 2f 2f 2f 20 55 54 46 2d 38 20 73 74      /// UTF-8 st
1f810 72 69 6e 67 20 70 6f 69 6e 74 65 72 20 75 73 69  ring pointer usi
1f820 6e 67 20 6d 65 6d 6f 72 79 20 6f 62 74 61 69 6e  ng memory obtain
1f830 65 64 20 66 72 6f 6d 20 74 68 65 20 53 51 4c 69  ed from the SQLi
1f840 74 65 20 63 6f 72 65 0d 0a 20 20 20 20 20 20 20  te core..       
1f850 20 2f 2f 2f 20 6c 69 62 72 61 72 79 2e 0d 0a 20   /// library... 
1f860 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
1f870 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1f880 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1f890 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20  value">..       
1f8a0 20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64   /// The managed
1f8b0 20 73 74 72 69 6e 67 20 74 6f 20 63 6f 6e 76 65   string to conve
1f8c0 72 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  rt...        ///
1f8d0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1f8e0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1f8f0 6d 65 3d 22 6c 65 6e 67 74 68 22 3e 0d 0a 20 20  me="length">..  
1f900 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6c 65        /// The le
1f910 6e 67 74 68 20 6f 66 20 74 68 65 20 6e 61 74 69  ngth of the nati
1f920 76 65 20 73 74 72 69 6e 67 2c 20 69 6e 20 62 79  ve string, in by
1f930 74 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tes...        //
1f940 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1f950 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
1f960 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1f970 68 65 20 6e 61 74 69 76 65 20 4e 55 4c 2d 74 65  he native NUL-te
1f980 72 6d 69 6e 61 74 65 64 20 55 54 46 2d 38 20 73  rminated UTF-8 s
1f990 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 20 6f 72  tring pointer or
1f9a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1f9b0 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 2e  ee cref="IntPtr.
1f9c0 5a 65 72 6f 22 20 2f 3e 20 75 70 6f 6e 20 66 61  Zero" /> upon fa
1f9d0 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  ilure...        
1f9e0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
1f9f0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
1fa00 74 61 74 69 63 20 49 6e 74 50 74 72 20 55 74 66  tatic IntPtr Utf
1fa10 38 49 6e 74 50 74 72 46 72 6f 6d 53 74 72 69 6e  8IntPtrFromStrin
1fa20 67 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g(..            
1fa30 73 74 72 69 6e 67 20 76 61 6c 75 65 2c 0d 0a 20  string value,.. 
1fa40 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 69             ref i
1fa50 6e 74 20 6c 65 6e 67 74 68 0d 0a 20 20 20 20 20  nt length..     
1fa60 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
1fa70 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1fa80 20 72 65 74 75 72 6e 20 55 74 66 38 49 6e 74 50   return Utf8IntP
1fa90 74 72 46 72 6f 6d 53 74 72 69 6e 67 28 76 61 6c  trFromString(val
1faa0 75 65 2c 20 74 72 75 65 2c 20 72 65 66 20 6c 65  ue, true, ref le
1fab0 6e 67 74 68 29 3b 0d 0a 20 20 20 20 20 20 20 20  ngth);..        
1fac0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
1fad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1faf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fb00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fb10 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1fb20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1fb30 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65         /// Conve
1fb40 72 74 73 20 74 68 65 20 73 70 65 63 69 66 69 65  rts the specifie
1fb50 64 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67  d managed string
1fb60 20 69 6e 74 6f 20 61 20 6e 61 74 69 76 65 20 4e   into a native N
1fb70 55 4c 2d 74 65 72 6d 69 6e 61 74 65 64 0d 0a 20  UL-terminated.. 
1fb80 20 20 20 20 20 20 20 2f 2f 2f 20 55 54 46 2d 38         /// UTF-8
1fb90 20 73 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 20   string pointer 
1fba0 75 73 69 6e 67 20 6d 65 6d 6f 72 79 20 6f 62 74  using memory obt
1fbb0 61 69 6e 65 64 20 66 72 6f 6d 20 74 68 65 20 53  ained from the S
1fbc0 51 4c 69 74 65 20 63 6f 72 65 0d 0a 20 20 20 20  QLite core..    
1fbd0 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79 2e      /// library.
1fbe0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1fbf0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1fc00 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1fc10 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20  e="value">..    
1fc20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61      /// The mana
1fc30 67 65 64 20 73 74 72 69 6e 67 20 74 6f 20 63 6f  ged string to co
1fc40 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 20 20  nvert...        
1fc50 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1fc60 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1fc70 20 6e 61 6d 65 3d 22 74 72 61 63 6b 65 64 22 3e   name="tracked">
1fc80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  ..        /// No
1fc90 6e 2d 7a 65 72 6f 20 74 6f 20 6f 62 74 61 69 6e  n-zero to obtain
1fca0 20 6d 65 6d 6f 72 79 20 66 72 6f 6d 20 74 68 65   memory from the
1fcb0 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62   SQLite core lib
1fcc0 72 61 72 79 20 77 69 74 68 6f 75 74 0d 0a 20 20  rary without..  
1fcd0 20 20 20 20 20 20 2f 2f 2f 20 61 64 6a 75 73 74        /// adjust
1fce0 69 6e 67 20 74 68 65 20 6e 75 6d 62 65 72 20 6f  ing the number o
1fcf0 66 20 61 6c 6c 6f 63 61 74 65 64 20 62 79 74 65  f allocated byte
1fd00 73 20 63 75 72 72 65 6e 74 6c 79 20 62 65 69 6e  s currently bein
1fd10 67 20 74 72 61 63 6b 65 64 0d 0a 20 20 20 20 20  g tracked..     
1fd20 20 20 20 2f 2f 2f 20 62 79 20 74 68 65 20 3c 73     /// by the <s
1fd30 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d  ee cref="SQLiteM
1fd40 65 6d 6f 72 79 22 20 2f 3e 20 63 6c 61 73 73 2e  emory" /> class.
1fd50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1fd60 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1fd70 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1fd80 22 6c 65 6e 67 74 68 22 3e 0d 0a 20 20 20 20 20  "length">..     
1fd90 20 20 20 2f 2f 2f 20 54 68 65 20 6c 65 6e 67 74     /// The lengt
1fda0 68 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65 20  h of the native 
1fdb0 73 74 72 69 6e 67 2c 20 69 6e 20 62 79 74 65 73  string, in bytes
1fdc0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1fdd0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1fde0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
1fdf0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1fe00 6e 61 74 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69  native NUL-termi
1fe10 6e 61 74 65 64 20 55 54 46 2d 38 20 73 74 72 69  nated UTF-8 stri
1fe20 6e 67 20 70 6f 69 6e 74 65 72 20 6f 72 0d 0a 20  ng pointer or.. 
1fe30 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
1fe40 63 72 65 66 3d 22 49 6e 74 50 74 72 2e 5a 65 72  cref="IntPtr.Zer
1fe50 6f 22 20 2f 3e 20 75 70 6f 6e 20 66 61 69 6c 75  o" /> upon failu
1fe60 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
1fe70 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
1fe80 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
1fe90 69 63 20 49 6e 74 50 74 72 20 55 74 66 38 49 6e  ic IntPtr Utf8In
1fea0 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28 0d  tPtrFromString(.
1feb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72  .            str
1fec0 69 6e 67 20 76 61 6c 75 65 2c 0d 0a 20 20 20 20  ing value,..    
1fed0 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 74 72 61          bool tra
1fee0 63 6b 65 64 2c 0d 0a 20 20 20 20 20 20 20 20 20  cked,..         
1fef0 20 20 20 72 65 66 20 69 6e 74 20 6c 65 6e 67 74     ref int lengt
1ff00 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  h..            )
1ff10 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
1ff20 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c           if (val
1ff30 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ue == null)..   
1ff40 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
1ff50 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  urn IntPtr.Zero;
1ff60 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1ff70 49 6e 74 50 74 72 20 72 65 73 75 6c 74 20 3d 20  IntPtr result = 
1ff80 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
1ff90 20 20 20 20 20 20 20 20 20 20 62 79 74 65 5b 5d            byte[]
1ffa0 20 62 79 74 65 73 20 3d 20 47 65 74 55 74 66 38   bytes = GetUtf8
1ffb0 42 79 74 65 73 46 72 6f 6d 53 74 72 69 6e 67 28  BytesFromString(
1ffc0 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  value);....     
1ffd0 20 20 20 20 20 20 20 69 66 20 28 62 79 74 65 73         if (bytes
1ffe0 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
1fff0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
20000 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  n IntPtr.Zero;..
20010 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 65  ..            le
20020 6e 67 74 68 20 3d 20 62 79 74 65 73 2e 4c 65 6e  ngth = bytes.Len
20030 67 74 68 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gth;....        
20040 20 20 20 20 69 66 20 28 74 72 61 63 6b 65 64 29      if (tracked)
20050 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
20060 20 20 72 65 73 75 6c 74 20 3d 20 53 51 4c 69 74    result = SQLit
20070 65 4d 65 6d 6f 72 79 2e 41 6c 6c 6f 63 61 74 65  eMemory.Allocate
20080 28 6c 65 6e 67 74 68 20 2b 20 31 29 3b 0d 0a 20  (length + 1);.. 
20090 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d             else.
200a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
200b0 20 72 65 73 75 6c 74 20 3d 20 53 51 4c 69 74 65   result = SQLite
200c0 4d 65 6d 6f 72 79 2e 41 6c 6c 6f 63 61 74 65 55  Memory.AllocateU
200d0 6e 74 72 61 63 6b 65 64 28 6c 65 6e 67 74 68 20  ntracked(length 
200e0 2b 20 31 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  + 1);....       
200f0 20 20 20 20 20 69 66 20 28 72 65 73 75 6c 74 20       if (result 
20100 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  == IntPtr.Zero).
20110 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
20120 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a   return IntPtr.Z
20130 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ero;....        
20140 20 20 20 20 4d 61 72 73 68 61 6c 2e 43 6f 70 79      Marshal.Copy
20150 28 62 79 74 65 73 2c 20 30 2c 20 72 65 73 75 6c  (bytes, 0, resul
20160 74 2c 20 6c 65 6e 67 74 68 29 3b 0d 0a 20 20 20  t, length);..   
20170 20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c           Marshal
20180 2e 57 72 69 74 65 42 79 74 65 28 72 65 73 75 6c  .WriteByte(resul
20190 74 2c 20 6c 65 6e 67 74 68 2c 20 30 29 3b 0d 0a  t, length, 0);..
201a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
201b0 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20  turn result;..  
201c0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
201d0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
201e0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
201f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
20230 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
20240 6e 20 55 54 46 2d 38 20 53 74 72 69 6e 67 20 41  n UTF-8 String A
20250 72 72 61 79 20 48 65 6c 70 65 72 20 4d 65 74 68  rray Helper Meth
20260 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ods..        ///
20270 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
20280 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73      /// Converts
20290 20 61 20 6c 6f 67 69 63 61 6c 20 61 72 72 61 79   a logical array
202a0 20 6f 66 20 6e 61 74 69 76 65 20 4e 55 4c 2d 74   of native NUL-t
202b0 65 72 6d 69 6e 61 74 65 64 20 55 54 46 2d 38 20  erminated UTF-8 
202c0 73 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 20  string..        
202d0 2f 2f 2f 20 70 6f 69 6e 74 65 72 73 20 69 6e 74  /// pointers int
202e0 6f 20 61 6e 20 61 72 72 61 79 20 6f 66 20 6d 61  o an array of ma
202f0 6e 61 67 65 64 20 73 74 72 69 6e 67 73 2e 0d 0a  naged strings...
20300 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
20310 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
20320 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
20330 22 61 72 67 63 22 3e 0d 0a 20 20 20 20 20 20 20  "argc">..       
20340 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20   /// The number 
20350 6f 66 20 65 6c 65 6d 65 6e 74 73 20 69 6e 20 74  of elements in t
20360 68 65 20 6c 6f 67 69 63 61 6c 20 61 72 72 61 79  he logical array
20370 20 6f 66 20 6e 61 74 69 76 65 0d 0a 20 20 20 20   of native..    
20380 20 20 20 20 2f 2f 2f 20 4e 55 4c 2d 74 65 72 6d      /// NUL-term
20390 69 6e 61 74 65 64 20 55 54 46 2d 38 20 73 74 72  inated UTF-8 str
203a0 69 6e 67 20 70 6f 69 6e 74 65 72 73 2e 0d 0a 20  ing pointers... 
203b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
203c0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
203d0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72   <param name="ar
203e0 67 76 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  gv">..        //
203f0 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69  / The native poi
20400 6e 74 65 72 20 74 6f 20 74 68 65 20 6c 6f 67 69  nter to the logi
20410 63 61 6c 20 61 72 72 61 79 20 6f 66 20 6e 61 74  cal array of nat
20420 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69 6e 61 74  ive NUL-terminat
20430 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
20440 55 54 46 2d 38 20 73 74 72 69 6e 67 20 70 6f 69  UTF-8 string poi
20450 6e 74 65 72 73 20 74 6f 20 63 6f 6e 76 65 72 74  nters to convert
20460 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
20470 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
20480 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
20490 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
204a0 61 72 72 61 79 20 6f 66 20 6d 61 6e 61 67 65 64  array of managed
204b0 20 73 74 72 69 6e 67 73 20 6f 72 20 6e 75 6c 6c   strings or null
204c0 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a   upon failure...
204d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
204e0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
204f0 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 73 74  public static st
20500 72 69 6e 67 5b 5d 20 53 74 72 69 6e 67 41 72 72  ring[] StringArr
20510 61 79 46 72 6f 6d 55 74 66 38 53 69 7a 65 41 6e  ayFromUtf8SizeAn
20520 64 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20  dIntPtr(..      
20530 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d        int argc,.
20540 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
20550 50 74 72 20 61 72 67 76 0d 0a 20 20 20 20 20 20  Ptr argv..      
20560 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
20570 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
20580 69 66 20 28 61 72 67 63 20 3c 20 30 29 0d 0a 20  if (argc < 0).. 
20590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
205a0 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  eturn null;.... 
205b0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61             if (a
205c0 72 67 76 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  rgv == IntPtr.Ze
205d0 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
205e0 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
205f0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
20600 20 73 74 72 69 6e 67 5b 5d 20 72 65 73 75 6c 74   string[] result
20610 20 3d 20 6e 65 77 20 73 74 72 69 6e 67 5b 61 72   = new string[ar
20620 67 63 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gc];....        
20630 20 20 20 20 66 6f 72 20 28 69 6e 74 20 69 6e 64      for (int ind
20640 65 78 20 3d 20 30 2c 20 6f 66 66 73 65 74 20 3d  ex = 0, offset =
20650 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20   0;..           
20660 20 20 20 20 20 20 20 20 20 69 6e 64 65 78 20 3c           index <
20670 20 72 65 73 75 6c 74 2e 4c 65 6e 67 74 68 3b 0d   result.Length;.
20680 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
20690 20 20 20 20 20 69 6e 64 65 78 2b 2b 2c 20 6f 66       index++, of
206a0 66 73 65 74 20 2b 3d 20 49 6e 74 50 74 72 2e 53  fset += IntPtr.S
206b0 69 7a 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ize)..          
206c0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
206d0 20 20 20 20 20 49 6e 74 50 74 72 20 70 41 72 67       IntPtr pArg
206e0 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c   = SQLiteMarshal
206f0 2e 52 65 61 64 49 6e 74 50 74 72 28 61 72 67 76  .ReadIntPtr(argv
20700 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20  , offset);....  
20710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
20720 73 75 6c 74 5b 69 6e 64 65 78 5d 20 3d 20 28 70  sult[index] = (p
20730 41 72 67 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  Arg != IntPtr.Ze
20740 72 6f 29 20 3f 0d 0a 20 20 20 20 20 20 20 20 20  ro) ?..         
20750 20 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e             Strin
20760 67 46 72 6f 6d 55 74 66 38 49 6e 74 50 74 72 28  gFromUtf8IntPtr(
20770 70 41 72 67 29 20 3a 20 6e 75 6c 6c 3b 0d 0a 20  pArg) : null;.. 
20780 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
20790 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
207a0 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20  rn result;..    
207b0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
207c0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
207d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
207e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
207f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20800 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
20810 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
20820 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43  >..        /// C
20830 6f 6e 76 65 72 74 73 20 61 6e 20 61 72 72 61 79  onverts an array
20840 20 6f 66 20 6d 61 6e 61 67 65 64 20 73 74 72 69   of managed stri
20850 6e 67 73 20 69 6e 74 6f 20 61 6e 20 61 72 72 61  ngs into an arra
20860 79 20 6f 66 20 6e 61 74 69 76 65 0d 0a 20 20 20  y of native..   
20870 20 20 20 20 20 2f 2f 2f 20 4e 55 4c 2d 74 65 72       /// NUL-ter
20880 6d 69 6e 61 74 65 64 20 55 54 46 2d 38 20 73 74  minated UTF-8 st
20890 72 69 6e 67 20 70 6f 69 6e 74 65 72 73 2e 0d 0a  ring pointers...
208a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
208b0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
208c0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
208d0 22 76 61 6c 75 65 73 22 3e 0d 0a 20 20 20 20 20  "values">..     
208e0 20 20 20 2f 2f 2f 20 54 68 65 20 61 72 72 61 79     /// The array
208f0 20 6f 66 20 6d 61 6e 61 67 65 64 20 73 74 72 69   of managed stri
20900 6e 67 73 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d  ngs to convert..
20910 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
20920 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
20930 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
20940 74 72 61 63 6b 65 64 22 3e 0d 0a 20 20 20 20 20  tracked">..     
20950 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
20960 74 6f 20 6f 62 74 61 69 6e 20 6d 65 6d 6f 72 79  to obtain memory
20970 20 66 72 6f 6d 20 74 68 65 20 53 51 4c 69 74 65   from the SQLite
20980 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 77 69   core library wi
20990 74 68 6f 75 74 0d 0a 20 20 20 20 20 20 20 20 2f  thout..        /
209a0 2f 2f 20 61 64 6a 75 73 74 69 6e 67 20 74 68 65  // adjusting the
209b0 20 6e 75 6d 62 65 72 20 6f 66 20 61 6c 6c 6f 63   number of alloc
209c0 61 74 65 64 20 62 79 74 65 73 20 63 75 72 72 65  ated bytes curre
209d0 6e 74 6c 79 20 62 65 69 6e 67 20 74 72 61 63 6b  ntly being track
209e0 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
209f0 62 79 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  by the <see cref
20a00 3d 22 53 51 4c 69 74 65 4d 65 6d 6f 72 79 22 20  ="SQLiteMemory" 
20a10 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20  /> class...     
20a20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
20a30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
20a40 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
20a50 2f 2f 2f 20 54 68 65 20 61 72 72 61 79 20 6f 66  /// The array of
20a60 20 6e 61 74 69 76 65 20 4e 55 4c 2d 74 65 72 6d   native NUL-term
20a70 69 6e 61 74 65 64 20 55 54 46 2d 38 20 73 74 72  inated UTF-8 str
20a80 69 6e 67 20 70 6f 69 6e 74 65 72 73 20 6f 72 20  ing pointers or 
20a90 6e 75 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f  null..        //
20aa0 2f 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d  / upon failure..
20ab0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
20ac0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
20ad0 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 49   public static I
20ae0 6e 74 50 74 72 5b 5d 20 55 74 66 38 49 6e 74 50  ntPtr[] Utf8IntP
20af0 74 72 41 72 72 61 79 46 72 6f 6d 53 74 72 69 6e  trArrayFromStrin
20b00 67 41 72 72 61 79 28 0d 0a 20 20 20 20 20 20 20  gArray(..       
20b10 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 76 61       string[] va
20b20 6c 75 65 73 2c 0d 0a 20 20 20 20 20 20 20 20 20  lues,..         
20b30 20 20 20 62 6f 6f 6c 20 74 72 61 63 6b 65 64 0d     bool tracked.
20b40 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
20b50 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
20b60 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65         if (value
20b70 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  s == null)..    
20b80 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
20b90 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20  rn null;....    
20ba0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 5b 5d          IntPtr[]
20bb0 20 72 65 73 75 6c 74 20 3d 20 6e 65 77 20 49 6e   result = new In
20bc0 74 50 74 72 5b 76 61 6c 75 65 73 2e 4c 65 6e 67  tPtr[values.Leng
20bd0 74 68 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  th];....        
20be0 20 20 20 20 66 6f 72 20 28 69 6e 74 20 69 6e 64      for (int ind
20bf0 65 78 20 3d 20 30 3b 20 69 6e 64 65 78 20 3c 20  ex = 0; index < 
20c00 72 65 73 75 6c 74 2e 4c 65 6e 67 74 68 3b 20 69  result.Length; i
20c10 6e 64 65 78 2b 2b 29 0d 0a 20 20 20 20 20 20 20  ndex++)..       
20c20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 5b           result[
20c30 69 6e 64 65 78 5d 20 3d 20 55 74 66 38 49 6e 74  index] = Utf8Int
20c40 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28 76 61  PtrFromString(va
20c50 6c 75 65 73 5b 69 6e 64 65 78 5d 2c 20 74 72 61  lues[index], tra
20c60 63 6b 65 64 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  cked);....      
20c70 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73        return res
20c80 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ult;..        }.
20c90 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
20ca0 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20  ion..    }..    
20cb0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
20cc0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
20cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
20d10 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c  .    #region SQL
20d20 69 74 65 42 79 74 65 73 20 53 74 61 74 69 63 20  iteBytes Static 
20d30 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c  Class..    /// <
20d40 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
20d50 2f 20 54 68 69 73 20 63 6c 61 73 73 20 63 6f 6e  / This class con
20d60 74 61 69 6e 73 20 73 74 61 74 69 63 20 6d 65 74  tains static met
20d70 68 6f 64 73 20 74 68 61 74 20 61 72 65 20 75 73  hods that are us
20d80 65 64 20 74 6f 20 64 65 61 6c 20 77 69 74 68 20  ed to deal with 
20d90 6e 61 74 69 76 65 0d 0a 20 20 20 20 2f 2f 2f 20  native..    /// 
20da0 70 6f 69 6e 74 65 72 73 20 74 6f 20 6d 65 6d 6f  pointers to memo
20db0 72 79 20 62 6c 6f 63 6b 73 20 74 68 61 74 20 6c  ry blocks that l
20dc0 6f 67 69 63 61 6c 6c 79 20 63 6f 6e 74 61 69 6e  ogically contain
20dd0 20 61 72 72 61 79 73 20 6f 66 20 62 79 74 65 73   arrays of bytes
20de0 20 74 6f 20 62 65 0d 0a 20 20 20 20 2f 2f 2f 20   to be..    /// 
20df0 75 73 65 64 20 77 69 74 68 20 74 68 65 20 53 51  used with the SQ
20e00 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
20e10 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  y...    /// </su
20e20 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65  mmary>..    inte
20e30 72 6e 61 6c 20 73 74 61 74 69 63 20 63 6c 61 73  rnal static clas
20e40 73 20 53 51 4c 69 74 65 42 79 74 65 73 0d 0a 20  s SQLiteBytes.. 
20e50 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72     {..        #r
20e60 65 67 69 6f 6e 20 42 79 74 65 20 41 72 72 61 79  egion Byte Array
20e70 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d   Helper Methods.
20e80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
20e90 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
20ea0 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 6e  /// Converts a n
20eb0 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
20ec0 20 61 20 6c 6f 67 69 63 61 6c 20 61 72 72 61 79   a logical array
20ed0 20 6f 66 20 62 79 74 65 73 20 6f 66 20 74 68 65   of bytes of the
20ee0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 70  ..        /// sp
20ef0 65 63 69 66 69 65 64 20 6c 65 6e 67 74 68 20 69  ecified length i
20f00 6e 74 6f 20 61 20 6d 61 6e 61 67 65 64 20 62 79  nto a managed by
20f10 74 65 20 61 72 72 61 79 2e 0d 0a 20 20 20 20 20  te array...     
20f20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
20f30 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
20f40 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 61 6c  param name="pVal
20f50 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ue">..        //
20f60 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69  / The native poi
20f70 6e 74 65 72 20 74 6f 20 74 68 65 20 6c 6f 67 69  nter to the logi
20f80 63 61 6c 20 61 72 72 61 79 20 6f 66 20 62 79 74  cal array of byt
20f90 65 73 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a  es to convert...
20fa0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
20fb0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
20fc0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c  / <param name="l
20fd0 65 6e 67 74 68 22 3e 0d 0a 20 20 20 20 20 20 20  ength">..       
20fe0 20 2f 2f 2f 20 54 68 65 20 6c 65 6e 67 74 68 2c   /// The length,
20ff0 20 69 6e 20 62 79 74 65 73 2c 20 6f 66 20 74 68   in bytes, of th
21000 65 20 6c 6f 67 69 63 61 6c 20 61 72 72 61 79 20  e logical array 
21010 6f 66 20 62 79 74 65 73 20 74 6f 20 63 6f 6e 76  of bytes to conv
21020 65 72 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ert...        //
21030 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
21040 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
21050 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
21060 68 65 20 6d 61 6e 61 67 65 64 20 62 79 74 65 20  he managed byte 
21070 61 72 72 61 79 20 6f 72 20 6e 75 6c 6c 20 75 70  array or null up
21080 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20  on failure...   
21090 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
210a0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ns>..        pub
210b0 6c 69 63 20 73 74 61 74 69 63 20 62 79 74 65 5b  lic static byte[
210c0 5d 20 46 72 6f 6d 49 6e 74 50 74 72 28 0d 0a 20  ] FromIntPtr(.. 
210d0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
210e0 72 20 70 56 61 6c 75 65 2c 0d 0a 20 20 20 20 20  r pValue,..     
210f0 20 20 20 20 20 20 20 69 6e 74 20 6c 65 6e 67 74         int lengt
21100 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  h..            )
21110 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
21120 20 20 20 20 20 20 20 20 20 69 66 20 28 70 56 61           if (pVa
21130 6c 75 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  lue == IntPtr.Ze
21140 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
21150 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
21160 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
21170 20 69 66 20 28 6c 65 6e 67 74 68 20 3d 3d 20 30   if (length == 0
21180 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
21190 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20 62 79     return new by
211a0 74 65 5b 30 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20  te[0];....      
211b0 20 20 20 20 20 20 62 79 74 65 5b 5d 20 72 65 73        byte[] res
211c0 75 6c 74 20 3d 20 6e 65 77 20 62 79 74 65 5b 6c  ult = new byte[l
211d0 65 6e 67 74 68 5d 3b 0d 0a 0d 0a 20 20 20 20 20  ength];....     
211e0 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 43         Marshal.C
211f0 6f 70 79 28 70 56 61 6c 75 65 2c 20 72 65 73 75  opy(pValue, resu
21200 6c 74 2c 20 30 2c 20 6c 65 6e 67 74 68 29 3b 0d  lt, 0, length);.
21210 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
21220 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20  eturn result;.. 
21230 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
21240 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
21250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
21290 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
212a0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
212b0 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 6d 61 6e  / Converts a man
212c0 61 67 65 64 20 62 79 74 65 20 61 72 72 61 79 20  aged byte array 
212d0 69 6e 74 6f 20 61 20 6e 61 74 69 76 65 20 70 6f  into a native po
212e0 69 6e 74 65 72 20 74 6f 20 61 20 6c 6f 67 69 63  inter to a logic
212f0 61 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  al..        /// 
21300 61 72 72 61 79 20 6f 66 20 62 79 74 65 73 2e 0d  array of bytes..
21310 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
21320 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
21330 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
21340 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20  ="value">..     
21350 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67     /// The manag
21360 65 64 20 62 79 74 65 20 61 72 72 61 79 20 74 6f  ed byte array to
21370 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20   convert...     
21380 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
21390 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
213a0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
213b0 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70  /// The native p
213c0 6f 69 6e 74 65 72 20 74 6f 20 61 20 6c 6f 67 69  ointer to a logi
213d0 63 61 6c 20 62 79 74 65 20 61 72 72 61 79 20 6f  cal byte array o
213e0 72 20 6e 75 6c 6c 20 75 70 6f 6e 20 66 61 69 6c  r null upon fail
213f0 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
21400 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
21410 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
21420 74 69 63 20 49 6e 74 50 74 72 20 54 6f 49 6e 74  tic IntPtr ToInt
21430 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Ptr(..          
21440 20 20 62 79 74 65 5b 5d 20 76 61 6c 75 65 0d 0a    byte[] value..
21450 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
21460 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
21470 20 20 20 20 20 20 69 6e 74 20 6c 65 6e 67 74 68        int length
21480 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20   = 0;....       
21490 20 20 20 20 20 72 65 74 75 72 6e 20 54 6f 49 6e       return ToIn
214a0 74 50 74 72 28 76 61 6c 75 65 2c 20 72 65 66 20  tPtr(value, ref 
214b0 6c 65 6e 67 74 68 29 3b 0d 0a 20 20 20 20 20 20  length);..      
214c0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
214d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
214e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
214f0 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
21520 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
21530 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e  .        /// Con
21540 76 65 72 74 73 20 61 20 6d 61 6e 61 67 65 64 20  verts a managed 
21550 62 79 74 65 20 61 72 72 61 79 20 69 6e 74 6f 20  byte array into 
21560 61 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  a native pointer
21570 20 74 6f 20 61 20 6c 6f 67 69 63 61 6c 0d 0a 20   to a logical.. 
21580 20 20 20 20 20 20 20 2f 2f 2f 20 61 72 72 61 79         /// array
21590 20 6f 66 20 62 79 74 65 73 2e 0d 0a 20 20 20 20   of bytes...    
215a0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
215b0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
215c0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c  <param name="val
215d0 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ue">..        //
215e0 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20 62 79  / The managed by
215f0 74 65 20 61 72 72 61 79 20 74 6f 20 63 6f 6e 76  te array to conv
21600 65 72 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ert...        //
21610 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
21620 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
21630 61 6d 65 3d 22 6c 65 6e 67 74 68 22 3e 0d 0a 20  ame="length">.. 
21640 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6c         /// The l
21650 65 6e 67 74 68 2c 20 69 6e 20 62 79 74 65 73 2c  ength, in bytes,
21660 20 6f 66 20 74 68 65 20 63 6f 6e 76 65 72 74 65   of the converte
21670 64 20 6c 6f 67 69 63 61 6c 20 61 72 72 61 79 20  d logical array 
21680 6f 66 20 62 79 74 65 73 2e 0d 0a 20 20 20 20 20  of bytes...     
21690 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
216a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
216b0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
216c0 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70  /// The native p
216d0 6f 69 6e 74 65 72 20 74 6f 20 61 20 6c 6f 67 69  ointer to a logi
216e0 63 61 6c 20 62 79 74 65 20 61 72 72 61 79 20 6f  cal byte array o
216f0 72 20 6e 75 6c 6c 20 75 70 6f 6e 20 66 61 69 6c  r null upon fail
21700 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
21710 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
21720 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
21730 74 69 63 20 49 6e 74 50 74 72 20 54 6f 49 6e 74  tic IntPtr ToInt
21740 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Ptr(..          
21750 20 20 62 79 74 65 5b 5d 20 76 61 6c 75 65 2c 0d    byte[] value,.
21760 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66  .            ref
21770 20 69 6e 74 20 6c 65 6e 67 74 68 0d 0a 20 20 20   int length..   
21780 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
21790 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
217a0 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20     if (value == 
217b0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
217c0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e         return In
217d0 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20  tPtr.Zero;....  
217e0 20 20 20 20 20 20 20 20 20 20 6c 65 6e 67 74 68            length
217f0 20 3d 20 76 61 6c 75 65 2e 4c 65 6e 67 74 68 3b   = value.Length;
21800 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
21810 69 66 20 28 6c 65 6e 67 74 68 20 3d 3d 20 30 29  if (length == 0)
21820 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
21830 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e    return IntPtr.
21840 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Zero;....       
21850 20 20 20 20 20 49 6e 74 50 74 72 20 72 65 73 75       IntPtr resu
21860 6c 74 20 3d 20 53 51 4c 69 74 65 4d 65 6d 6f 72  lt = SQLiteMemor
21870 79 2e 41 6c 6c 6f 63 61 74 65 28 6c 65 6e 67 74  y.Allocate(lengt
21880 68 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  h);....         
21890 20 20 20 69 66 20 28 72 65 73 75 6c 74 20 3d 3d     if (result ==
218a0 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
218b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
218c0 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72  eturn IntPtr.Zer
218d0 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  o;....          
218e0 20 20 4d 61 72 73 68 61 6c 2e 43 6f 70 79 28 76    Marshal.Copy(v
218f0 61 6c 75 65 2c 20 30 2c 20 72 65 73 75 6c 74 2c  alue, 0, result,
21900 20 6c 65 6e 67 74 68 29 3b 0d 0a 0d 0a 20 20 20   length);....   
21910 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
21920 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20  result;..       
21930 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
21940 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20  region..    }.. 
21950 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
21960 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
21970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
219a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
219b0 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
219c0 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 20 53 74  SQLiteMarshal St
219d0 61 74 69 63 20 43 6c 61 73 73 0d 0a 20 20 20 20  atic Class..    
219e0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
219f0 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73     /// This clas
21a00 73 20 63 6f 6e 74 61 69 6e 73 20 73 74 61 74 69  s contains stati
21a10 63 20 6d 65 74 68 6f 64 73 20 74 68 61 74 20 61  c methods that a
21a20 72 65 20 75 73 65 64 20 74 6f 20 70 65 72 66 6f  re used to perfo
21a30 72 6d 20 73 65 76 65 72 61 6c 0d 0a 20 20 20 20  rm several..    
21a40 2f 2f 2f 20 6c 6f 77 2d 6c 65 76 65 6c 20 64 61  /// low-level da
21a50 74 61 20 6d 61 72 73 68 61 6c 6c 69 6e 67 20 74  ta marshalling t
21a60 61 73 6b 73 20 62 65 74 77 65 65 6e 20 6e 61 74  asks between nat
21a70 69 76 65 20 61 6e 64 20 6d 61 6e 61 67 65 64 20  ive and managed 
21a80 63 6f 64 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  code...    /// <
21a90 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 69  /summary>..    i
21aa0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 63  nternal static c
21ab0 6c 61 73 73 20 53 51 4c 69 74 65 4d 61 72 73 68  lass SQLiteMarsh
21ac0 61 6c 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  al..    {..     
21ad0 20 20 20 23 72 65 67 69 6f 6e 20 49 6e 74 50 74     #region IntPt
21ae0 72 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73  r Helper Methods
21af0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
21b00 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
21b10 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 61 20 6e   /// Returns a n
21b20 65 77 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  ew <see cref="In
21b30 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20  tPtr" /> object 
21b40 69 6e 73 74 61 6e 63 65 20 62 61 73 65 64 20 6f  instance based o
21b50 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  n the..        /
21b60 2f 2f 20 73 70 65 63 69 66 69 65 64 20 3c 73 65  // specified <se
21b70 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20  e cref="IntPtr" 
21b80 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
21b90 63 65 20 61 6e 64 20 61 6e 20 69 6e 74 65 67 65  ce and an intege
21ba0 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f  r..        /// o
21bb0 66 66 73 65 74 2e 0d 0a 20 20 20 20 20 20 20 20  ffset...        
21bc0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
21bd0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
21be0 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74 65 72  am name="pointer
21bf0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
21c00 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  The <see cref="I
21c10 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74  ntPtr" /> object
21c20 20 69 6e 73 74 61 6e 63 65 20 72 65 70 72 65 73   instance repres
21c30 65 6e 74 69 6e 67 20 74 68 65 20 62 61 73 65 0d  enting the base.
21c40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 6d  .        /// mem
21c50 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20  ory location... 
21c60 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
21c70 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
21c80 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 66   <param name="of
21c90 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20 20 20  fset">..        
21ca0 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67 65 72 20  /// The integer 
21cb0 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68 65 20  offset from the 
21cc0 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f 63 61  base memory loca
21cd0 74 69 6f 6e 20 74 68 61 74 20 74 68 65 20 6e 65  tion that the ne
21ce0 77 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  w..        /// <
21cf0 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72  see cref="IntPtr
21d00 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
21d10 61 6e 63 65 20 73 68 6f 75 6c 64 20 70 6f 69 6e  ance should poin
21d20 74 20 74 6f 2e 0d 0a 20 20 20 20 20 20 20 20 2f  t to...        /
21d30 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
21d40 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
21d50 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
21d60 54 68 65 20 6e 65 77 20 3c 73 65 65 20 63 72 65  The new <see cre
21d70 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62  f="IntPtr" /> ob
21d80 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a  ject instance...
21d90 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
21da0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
21db0 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 49 6e  public static In
21dc0 74 50 74 72 20 49 6e 74 50 74 72 46 6f 72 4f 66  tPtr IntPtrForOf
21dd0 66 73 65 74 28 0d 0a 20 20 20 20 20 20 20 20 20  fset(..         
21de0 20 20 20 49 6e 74 50 74 72 20 70 6f 69 6e 74 65     IntPtr pointe
21df0 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r,..            
21e00 69 6e 74 20 6f 66 66 73 65 74 0d 0a 20 20 20 20  int offset..    
21e10 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
21e20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
21e30 20 20 72 65 74 75 72 6e 20 6e 65 77 20 49 6e 74    return new Int
21e40 50 74 72 28 70 6f 69 6e 74 65 72 2e 54 6f 49 6e  Ptr(pointer.ToIn
21e50 74 36 34 28 29 20 2b 20 6f 66 66 73 65 74 29 3b  t64() + offset);
21e60 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
21e70 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
21e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
21ec0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
21ed0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
21ee0 20 2f 2f 2f 20 52 6f 75 6e 64 73 20 75 70 20 61   /// Rounds up a
21ef0 6e 20 69 6e 74 65 67 65 72 20 73 69 7a 65 20 74  n integer size t
21f00 6f 20 74 68 65 20 6e 65 78 74 20 6d 75 6c 74 69  o the next multi
21f10 70 6c 65 20 6f 66 20 74 68 65 20 61 6c 69 67 6e  ple of the align
21f20 6d 65 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ment...        /
21f30 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
21f40 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
21f50 6d 20 6e 61 6d 65 3d 22 73 69 7a 65 22 3e 0d 0a  m name="size">..
21f60 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
21f70 73 69 7a 65 2c 20 69 6e 20 62 79 74 65 73 2c 20  size, in bytes, 
21f80 74 6f 20 62 65 20 72 6f 75 6e 64 65 64 20 75 70  to be rounded up
21f90 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
21fa0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
21fb0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
21fc0 3d 22 61 6c 69 67 6e 6d 65 6e 74 22 3e 0d 0a 20  ="alignment">.. 
21fd0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 72         /// The r
21fe0 65 71 75 69 72 65 64 20 61 6c 69 67 6e 6d 65 6e  equired alignmen
21ff0 74 20 66 6f 72 20 74 68 65 20 72 65 74 75 72 6e  t for the return
22000 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20   value...       
22010 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
22020 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
22030 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
22040 2f 20 54 68 65 20 73 69 7a 65 2c 20 69 6e 20 62  / The size, in b
22050 79 74 65 73 2c 20 72 6f 75 6e 64 65 64 20 75 70  ytes, rounded up
22060 20 74 6f 20 74 68 65 20 6e 65 78 74 20 6d 75 6c   to the next mul
22070 74 69 70 6c 65 20 6f 66 20 74 68 65 0d 0a 20 20  tiple of the..  
22080 20 20 20 20 20 20 2f 2f 2f 20 61 6c 69 67 6e 6d        /// alignm
22090 65 6e 74 2e 20 20 54 68 69 73 20 76 61 6c 75 65  ent.  This value
220a0 20 6d 61 79 20 65 6e 64 20 75 70 20 62 65 69 6e   may end up bein
220b0 67 20 74 68 65 20 73 61 6d 65 20 61 73 20 74 68  g the same as th
220c0 65 20 6f 72 69 67 69 6e 61 6c 0d 0a 20 20 20 20  e original..    
220d0 20 20 20 20 2f 2f 2f 20 73 69 7a 65 2e 0d 0a 20      /// size... 
220e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
220f0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
22100 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6e 74  ublic static int
22110 20 52 6f 75 6e 64 55 70 28 0d 0a 20 20 20 20 20   RoundUp(..     
22120 20 20 20 20 20 20 20 69 6e 74 20 73 69 7a 65 2c         int size,
22130 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
22140 74 20 61 6c 69 67 6e 6d 65 6e 74 0d 0a 20 20 20  t alignment..   
22150 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
22160 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
22170 20 20 20 69 6e 74 20 61 6c 69 67 6e 6d 65 6e 74     int alignment
22180 4d 69 6e 75 73 4f 6e 65 20 3d 20 61 6c 69 67 6e  MinusOne = align
22190 6d 65 6e 74 20 2d 20 31 3b 0d 0a 20 20 20 20 20  ment - 1;..     
221a0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 28         return ((
221b0 73 69 7a 65 20 2b 20 61 6c 69 67 6e 6d 65 6e 74  size + alignment
221c0 4d 69 6e 75 73 4f 6e 65 29 20 26 20 7e 61 6c 69  MinusOne) & ~ali
221d0 67 6e 6d 65 6e 74 4d 69 6e 75 73 4f 6e 65 29 3b  gnmentMinusOne);
221e0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
221f0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
22200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
22240 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
22250 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
22260 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20   /// Determines 
22270 74 68 65 20 6f 66 66 73 65 74 2c 20 69 6e 20 62  the offset, in b
22280 79 74 65 73 2c 20 6f 66 20 74 68 65 20 6e 65 78  ytes, of the nex
22290 74 20 73 74 72 75 63 74 75 72 65 20 6d 65 6d 62  t structure memb
222a0 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  er...        ///
222b0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
222c0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
222d0 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d 0a  name="offset">..
222e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
222f0 6f 66 66 73 65 74 2c 20 69 6e 20 62 79 74 65 73  offset, in bytes
22300 2c 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74  , of the current
22310 20 73 74 72 75 63 74 75 72 65 20 6d 65 6d 62 65   structure membe
22320 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
22330 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
22340 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
22350 65 3d 22 73 69 7a 65 22 3e 0d 0a 20 20 20 20 20  e="size">..     
22360 20 20 20 2f 2f 2f 20 54 68 65 20 73 69 7a 65 2c     /// The size,
22370 20 69 6e 20 62 79 74 65 73 2c 20 6f 66 20 74 68   in bytes, of th
22380 65 20 63 75 72 72 65 6e 74 20 73 74 72 75 63 74  e current struct
22390 75 72 65 20 6d 65 6d 62 65 72 2e 0d 0a 20 20 20  ure member...   
223a0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
223b0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
223c0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 6c 69 67  param name="alig
223d0 6e 6d 65 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20  nment">..       
223e0 20 2f 2f 2f 20 54 68 65 20 61 6c 69 67 6e 6d 65   /// The alignme
223f0 6e 74 2c 20 69 6e 20 62 79 74 65 73 2c 20 6f 66  nt, in bytes, of
22400 20 74 68 65 20 6e 65 78 74 20 73 74 72 75 63 74   the next struct
22410 75 72 65 20 6d 65 6d 62 65 72 2e 0d 0a 20 20 20  ure member...   
22420 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
22430 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
22440 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
22450 20 20 2f 2f 2f 20 54 68 65 20 6f 66 66 73 65 74    /// The offset
22460 2c 20 69 6e 20 62 79 74 65 73 2c 20 6f 66 20 74  , in bytes, of t
22470 68 65 20 6e 65 78 74 20 73 74 72 75 63 74 75 72  he next structur
22480 65 20 6d 65 6d 62 65 72 2e 0d 0a 20 20 20 20 20  e member...     
22490 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
224a0 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
224b0 63 20 73 74 61 74 69 63 20 69 6e 74 20 4e 65 78  c static int Nex
224c0 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20  tOffsetOf(..    
224d0 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66 73          int offs
224e0 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  et,..           
224f0 20 69 6e 74 20 73 69 7a 65 2c 0d 0a 20 20 20 20   int size,..    
22500 20 20 20 20 20 20 20 20 69 6e 74 20 61 6c 69 67          int alig
22510 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20  nment..         
22520 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
22530 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
22540 75 72 6e 20 52 6f 75 6e 64 55 70 28 6f 66 66 73  urn RoundUp(offs
22550 65 74 20 2b 20 73 69 7a 65 2c 20 61 6c 69 67 6e  et + size, align
22560 6d 65 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  ment);..        
22570 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
22580 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
22590 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
225a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
225b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
225c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
225d0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
225e0 20 20 20 20 23 72 65 67 69 6f 6e 20 4d 61 72 73      #region Mars
225f0 68 61 6c 20 52 65 61 64 20 48 65 6c 70 65 72 20  hal Read Helper 
22600 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20  Methods..       
22610 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
22620 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65 61 64          /// Read
22630 73 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22 49  s a <see cref="I
22640 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75 65 20 66  nt32" /> value f
22650 72 6f 6d 20 74 68 65 20 73 70 65 63 69 66 69 65  rom the specifie
22660 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20  d memory..      
22670 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e 0d    /// location..
22680 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
22690 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
226a0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
226b0 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20 20  ="pointer">..   
226c0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
226d0 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20  e cref="IntPtr" 
226e0 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
226f0 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20  ce representing 
22700 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20  the base..      
22710 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63    /// memory loc
22720 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ation...        
22730 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
22740 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
22750 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d   name="offset">.
22760 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
22770 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65 74 20   integer offset 
22780 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20 6d 65  from the base me
22790 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77 68  mory location wh
227a0 65 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ere the..       
227b0 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
227c0 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75 65 20  Int32" /> value 
227d0 74 6f 20 62 65 20 72 65 61 64 20 69 73 20 6c 6f  to be read is lo
227e0 63 61 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20  cated...        
227f0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
22800 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
22810 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
22820 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
22830 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75 65 20  Int32" /> value 
22840 61 74 20 74 68 65 20 73 70 65 63 69 66 69 65 64  at the specified
22850 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e   memory location
22860 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
22870 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
22880 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
22890 20 69 6e 74 20 52 65 61 64 49 6e 74 33 32 28 0d   int ReadInt32(.
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 0d 0a 20 20 20 20 20 20 20 20 20 20  fset..          
228e0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
228f0 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
22900 20 20 20 20 20 20 20 43 68 65 63 6b 41 6c 69 67         CheckAlig
22910 6e 6d 65 6e 74 28 22 52 65 61 64 49 6e 74 33 32  nment("ReadInt32
22920 22 2c 20 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73  ", pointer, offs
22930 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 29  et, sizeof(int))
22940 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  ;..#endif....#if
22950 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
22960 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
22970 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
22980 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 33  Marshal.ReadInt3
22990 32 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65  2(pointer, offse
229a0 74 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  t);..#else..    
229b0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d          return M
229c0 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 33 32  arshal.ReadInt32
229d0 28 49 6e 74 50 74 72 46 6f 72 4f 66 66 73 65 74  (IntPtrForOffset
229e0 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74  (pointer, offset
229f0 29 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ));..#endif..   
22a00 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
22a10 20 20 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 2f  ////////////////
22a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
22a60 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
22a70 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
22a80 52 65 61 64 73 20 61 20 3c 73 65 65 20 63 72 65  Reads a <see cre
22a90 66 3d 22 49 6e 74 36 34 22 20 2f 3e 20 76 61 6c  f="Int64" /> val
22aa0 75 65 20 66 72 6f 6d 20 74 68 65 20 73 70 65 63  ue from the spec
22ab0 69 66 69 65 64 20 6d 65 6d 6f 72 79 0d 0a 20 20  ified memory..  
22ac0 20 20 20 20 20 20 2f 2f 2f 20 6c 6f 63 61 74 69        /// locati
22ad0 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  on...        ///
22ae0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
22af0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
22b00 6e 61 6d 65 3d 22 70 6f 69 6e 74 65 72 22 3e 0d  name="pointer">.
22b10 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
22b20 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50   <see cref="IntP
22b30 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  tr" /> object in
22b40 73 74 61 6e 63 65 20 72 65 70 72 65 73 65 6e 74  stance represent
22b50 69 6e 67 20 74 68 65 20 62 61 73 65 0d 0a 20 20  ing the base..  
22b60 20 20 20 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79        /// memory
22b70 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20   location...    
22b80 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
22b90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
22ba0 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65  aram name="offse
22bb0 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  t">..        ///
22bc0 20 54 68 65 20 69 6e 74 65 67 65 72 20 6f 66 66   The integer off
22bd0 73 65 74 20 66 72 6f 6d 20 74 68 65 20 62 61 73  set from the bas
22be0 65 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f  e memory locatio
22bf0 6e 20 77 68 65 72 65 20 74 68 65 0d 0a 20 20 20  n where the..   
22c00 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
22c10 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e 20 76 61  ef="Int64" /> va
22c20 6c 75 65 20 74 6f 20 62 65 20 72 65 61 64 20 69  lue to be read i
22c30 73 20 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20  s located...    
22c40 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
22c50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
22c60 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
22c70 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
22c80 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e 20 76 61  ef="Int64" /> va
22c90 6c 75 65 20 61 74 20 74 68 65 20 73 70 65 63 69  lue at the speci
22ca0 66 69 65 64 20 6d 65 6d 6f 72 79 20 6c 6f 63 61  fied memory loca
22cb0 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  tion...        /
22cc0 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
22cd0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
22ce0 61 74 69 63 20 6c 6f 6e 67 20 52 65 61 64 49 6e  atic long ReadIn
22cf0 74 36 34 28 0d 0a 20 20 20 20 20 20 20 20 20 20  t64(..          
22d00 20 20 49 6e 74 50 74 72 20 70 6f 69 6e 74 65 72    IntPtr pointer
22d10 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ,..            i
22d20 6e 74 20 6f 66 66 73 65 74 0d 0a 20 20 20 20 20  nt offset..     
22d30 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
22d40 20 20 7b 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a    {..#if DEBUG..
22d50 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63              Chec
22d60 6b 41 6c 69 67 6e 6d 65 6e 74 28 22 52 65 61 64  kAlignment("Read
22d70 49 6e 74 36 34 22 2c 20 70 6f 69 6e 74 65 72 2c  Int64", pointer,
22d80 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28   offset, sizeof(
22d90 6c 6f 6e 67 29 29 3b 0d 0a 23 65 6e 64 69 66 0d  long));..#endif.
22da0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
22db0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
22dc0 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  K..            r
22dd0 65 74 75 72 6e 20 4d 61 72 73 68 61 6c 2e 52 65  eturn Marshal.Re
22de0 61 64 49 6e 74 36 34 28 70 6f 69 6e 74 65 72 2c  adInt64(pointer,
22df0 20 6f 66 66 73 65 74 29 3b 0d 0a 23 65 6c 73 65   offset);..#else
22e00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
22e10 74 75 72 6e 20 4d 61 72 73 68 61 6c 2e 52 65 61  turn Marshal.Rea
22e20 64 49 6e 74 36 34 28 49 6e 74 50 74 72 46 6f 72  dInt64(IntPtrFor
22e30 4f 66 66 73 65 74 28 70 6f 69 6e 74 65 72 2c 20  Offset(pointer, 
22e40 6f 66 66 73 65 74 29 29 3b 0d 0a 23 65 6e 64 69  offset));..#endi
22e50 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
22e60 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
22eb0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
22ec0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
22ed0 20 20 2f 2f 2f 20 52 65 61 64 73 20 61 20 3c 73    /// Reads a <s
22ee0 65 65 20 63 72 65 66 3d 22 44 6f 75 62 6c 65 22  ee cref="Double"
22ef0 20 2f 3e 20 76 61 6c 75 65 20 66 72 6f 6d 20 74   /> value from t
22f00 68 65 20 73 70 65 63 69 66 69 65 64 20 6d 65 6d  he specified mem
22f10 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ory..        ///
22f20 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20   location...    
22f30 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
22f40 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
22f50 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69  <param name="poi
22f60 6e 74 65 72 22 3e 0d 0a 20 20 20 20 20 20 20 20  nter">..        
22f70 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
22f80 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62  f="IntPtr" /> ob
22f90 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 72 65  ject instance re
22fa0 70 72 65 73 65 6e 74 69 6e 67 20 74 68 65 20 62  presenting the b
22fb0 61 73 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ase..        ///
22fc0 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e   memory location
22fd0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
22fe0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
22ff0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
23000 3d 22 6f 66 66 73 65 74 22 3e 0d 0a 20 20 20 20  ="offset">..    
23010 20 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65      /// The inte
23020 67 65 72 20 6f 66 66 73 65 74 20 66 72 6f 6d 20  ger offset from 
23030 74 68 65 20 62 61 73 65 20 6d 65 6d 6f 72 79 20  the base memory 
23040 6c 6f 63 61 74 69 6f 6e 20 77 68 65 72 65 20 74  location where t
23050 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
23060 3c 73 65 65 20 63 72 65 66 3d 22 44 6f 75 62 6c  <see cref="Doubl
23070 65 22 20 2f 3e 20 74 6f 20 62 65 20 72 65 61 64  e" /> to be read
23080 20 69 73 20 6c 6f 63 61 74 65 64 2e 0d 0a 20 20   is located...  
23090 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
230a0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
230b0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
230c0 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
230d0 63 72 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f 3e  cref="Double" />
230e0 20 76 61 6c 75 65 20 61 74 20 74 68 65 20 73 70   value at the sp
230f0 65 63 69 66 69 65 64 20 6d 65 6d 6f 72 79 20 6c  ecified memory l
23100 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ocation...      
23110 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
23120 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
23130 20 73 74 61 74 69 63 20 64 6f 75 62 6c 65 20 52   static double R
23140 65 61 64 44 6f 75 62 6c 65 28 0d 0a 20 20 20 20  eadDouble(..    
23150 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
23160 6f 69 6e 74 65 72 2c 0d 0a 20 20 20 20 20 20 20  ointer,..       
23170 20 20 20 20 20 69 6e 74 20 6f 66 66 73 65 74 0d       int offset.
23180 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
23190 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 44          {..#if D
231a0 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
231b0 20 20 43 68 65 63 6b 41 6c 69 67 6e 6d 65 6e 74    CheckAlignment
231c0 28 22 52 65 61 64 44 6f 75 62 6c 65 22 2c 20 70  ("ReadDouble", p
231d0 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 2c 20  ointer, offset, 
231e0 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29 29 3b  sizeof(double));
231f0 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
23200 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
23210 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
23220 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 42          return B
23230 69 74 43 6f 6e 76 65 72 74 65 72 2e 49 6e 74 36  itConverter.Int6
23240 34 42 69 74 73 54 6f 44 6f 75 62 6c 65 28 4d 61  4BitsToDouble(Ma
23250 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 36 34 28  rshal.ReadInt64(
23260 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23270 20 20 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65    pointer, offse
23280 74 29 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  t));..#else..   
23290 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
232a0 42 69 74 43 6f 6e 76 65 72 74 65 72 2e 54 6f 44  BitConverter.ToD
232b0 6f 75 62 6c 65 28 42 69 74 43 6f 6e 76 65 72 74  ouble(BitConvert
232c0 65 72 2e 47 65 74 42 79 74 65 73 28 0d 0a 20 20  er.GetBytes(..  
232d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 61                Ma
232e0 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 36 34 28  rshal.ReadInt64(
232f0 49 6e 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28  IntPtrForOffset(
23300 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29  pointer, offset)
23310 29 29 2c 20 30 29 3b 0d 0a 23 65 6e 64 69 66 0d  )), 0);..#endif.
23320 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
23330 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
23340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
23380 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
23390 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
233a0 2f 2f 2f 20 52 65 61 64 73 20 61 6e 20 3c 73 65  /// Reads an <se
233b0 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20  e cref="IntPtr" 
233c0 2f 3e 20 76 61 6c 75 65 20 66 72 6f 6d 20 74 68  /> value from th
233d0 65 20 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f  e specified memo
233e0 72 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ry..        /// 
233f0 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  location...     
23400 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
23410 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
23420 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e  param name="poin
23430 74 65 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ter">..        /
23440 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
23450 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a  ="IntPtr" /> obj
23460 65 63 74 20 69 6e 73 74 61 6e 63 65 20 72 65 70  ect instance rep
23470 72 65 73 65 6e 74 69 6e 67 20 74 68 65 20 62 61  resenting the ba
23480 73 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  se..        /// 
23490 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e  memory location.
234a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
234b0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
234c0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
234d0 22 6f 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20  "offset">..     
234e0 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67     /// The integ
234f0 65 72 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74  er offset from t
23500 68 65 20 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c  he base memory l
23510 6f 63 61 74 69 6f 6e 20 77 68 65 72 65 20 74 68  ocation where th
23520 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
23530 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72  see cref="IntPtr
23540 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 62 65  " /> value to be
23550 20 72 65 61 64 20 69 73 20 6c 6f 63 61 74 65 64   read is located
23560 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
23570 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
23580 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
23590 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
235a0 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74  <see cref="IntPt
235b0 72 22 20 2f 3e 20 76 61 6c 75 65 20 61 74 20 74  r" /> value at t
235c0 68 65 20 73 70 65 63 69 66 69 65 64 20 6d 65 6d  he specified mem
235d0 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20  ory location... 
235e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
235f0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
23600 75 62 6c 69 63 20 73 74 61 74 69 63 20 49 6e 74  ublic static Int
23610 50 74 72 20 52 65 61 64 49 6e 74 50 74 72 28 0d  Ptr ReadIntPtr(.
23620 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
23630 50 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a 20 20  Ptr pointer,..  
23640 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66            int of
23650 66 73 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20  fset..          
23660 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
23670 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20  #if DEBUG..     
23680 20 20 20 20 20 20 20 43 68 65 63 6b 41 6c 69 67         CheckAlig
23690 6e 6d 65 6e 74 28 22 52 65 61 64 49 6e 74 50 74  nment("ReadIntPt
236a0 72 22 2c 20 70 6f 69 6e 74 65 72 2c 20 6f 66 66  r", pointer, off
236b0 73 65 74 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65  set, IntPtr.Size
236c0 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69  );..#endif....#i
236d0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
236e0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
236f0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
23700 20 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74   Marshal.ReadInt
23710 50 74 72 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66  Ptr(pointer, off
23720 73 65 74 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  set);..#else..  
23730 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
23740 20 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74   Marshal.ReadInt
23750 50 74 72 28 49 6e 74 50 74 72 46 6f 72 4f 66 66  Ptr(IntPtrForOff
23760 73 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66  set(pointer, off
23770 73 65 74 29 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  set));..#endif..
23780 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
23790 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
237a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
237b0 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
23800 69 6f 6e 20 4d 61 72 73 68 61 6c 20 57 72 69 74  ion Marshal Writ
23810 65 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73  e Helper Methods
23820 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
23830 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
23840 20 2f 2f 2f 20 57 72 69 74 65 73 20 61 6e 20 3c   /// Writes an <
23850 73 65 65 20 63 72 65 66 3d 22 49 6e 74 33 32 22  see cref="Int32"
23860 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 74 68 65   /> value to the
23870 20 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72   specified memor
23880 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c  y..        /// l
23890 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ocation...      
238a0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
238b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
238c0 61 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74  aram name="point
238d0 65 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  er">..        //
238e0 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
238f0 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65  "IntPtr" /> obje
23900 63 74 20 69 6e 73 74 61 6e 63 65 20 72 65 70 72  ct instance repr
23910 65 73 65 6e 74 69 6e 67 20 74 68 65 20 62 61 73  esenting the bas
23920 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d  e..        /// m
23930 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d  emory location..
23940 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
23950 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
23960 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
23970 6f 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20  offset">..      
23980 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67 65    /// The intege
23990 72 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68  r offset from th
239a0 65 20 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f  e base memory lo
239b0 63 61 74 69 6f 6e 20 77 68 65 72 65 20 74 68 65  cation where the
239c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
239d0 65 65 20 63 72 65 66 3d 22 49 6e 74 33 32 22 20  ee cref="Int32" 
239e0 2f 3e 20 76 61 6c 75 65 20 74 6f 20 62 65 20 77  /> value to be w
239f0 72 69 74 74 65 6e 20 69 73 20 6c 6f 63 61 74 65  ritten is locate
23a00 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
23a10 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
23a20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
23a30 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20  e="value">..    
23a40 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
23a50 20 63 72 65 66 3d 22 49 6e 74 33 32 22 20 2f 3e   cref="Int32" />
23a60 20 76 61 6c 75 65 20 74 6f 20 77 72 69 74 65 2e   value to write.
23a70 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
23a80 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
23a90 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f  public static vo
23aa0 69 64 20 57 72 69 74 65 49 6e 74 33 32 28 0d 0a  id WriteInt32(..
23ab0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
23ac0 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a 20 20 20  tr pointer,..   
23ad0 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66           int off
23ae0 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  set,..          
23af0 20 20 69 6e 74 20 76 61 6c 75 65 0d 0a 20 20 20    int value..   
23b00 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
23b10 20 20 20 20 7b 0d 0a 23 69 66 20 44 45 42 55 47      {..#if DEBUG
23b20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 43 68  ..            Ch
23b30 65 63 6b 41 6c 69 67 6e 6d 65 6e 74 28 22 57 72  eckAlignment("Wr
23b40 69 74 65 49 6e 74 33 32 22 2c 20 70 6f 69 6e 74  iteInt32", point
23b50 65 72 2c 20 6f 66 66 73 65 74 2c 20 73 69 7a 65  er, offset, size
23b60 6f 66 28 69 6e 74 29 29 3b 0d 0a 23 65 6e 64 69  of(int));..#endi
23b70 66 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  f....#if !PLATFO
23b80 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
23b90 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
23ba0 20 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e   Marshal.WriteIn
23bb0 74 33 32 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66  t32(pointer, off
23bc0 73 65 74 2c 20 76 61 6c 75 65 29 3b 0d 0a 23 65  set, value);..#e
23bd0 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
23be0 20 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e   Marshal.WriteIn
23bf0 74 33 32 28 49 6e 74 50 74 72 46 6f 72 4f 66 66  t32(IntPtrForOff
23c00 73 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66  set(pointer, off
23c10 73 65 74 29 2c 20 76 61 6c 75 65 29 3b 0d 0a 23  set), value);..#
23c20 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d  endif..        }
23c30 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
23c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23c80 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
23c90 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
23ca0 20 20 20 20 20 20 2f 2f 2f 20 57 72 69 74 65 73        /// Writes
23cb0 20 61 6e 20 3c 73 65 65 20 63 72 65 66 3d 22 49   an <see cref="I
23cc0 6e 74 36 34 22 20 2f 3e 20 76 61 6c 75 65 20 74  nt64" /> value t
23cd0 6f 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  o the specified 
23ce0 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20 20 20  memory..        
23cf0 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20  /// location... 
23d00 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
23d10 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
23d20 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
23d30 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20 20 20 20  pointer">..     
23d40 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
23d50 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e  cref="IntPtr" />
23d60 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
23d70 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 74 68   representing th
23d80 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20 20 20  e base..        
23d90 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74  /// memory locat
23da0 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ion...        //
23db0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
23dc0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
23dd0 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d 0a 20  ame="offset">.. 
23de0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 69         /// The i
23df0 6e 74 65 67 65 72 20 6f 66 66 73 65 74 20 66 72  nteger offset fr
23e00 6f 6d 20 74 68 65 20 62 61 73 65 20 6d 65 6d 6f  om the base memo
23e10 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77 68 65 72  ry location wher
23e20 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  e the..        /
23e30 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  // <see cref="In
23e40 74 36 34 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f  t64" /> value to
23e50 20 62 65 20 77 72 69 74 74 65 6e 20 69 73 20 6c   be written is l
23e60 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20 20 20 20  ocated...       
23e70 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
23e80 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
23e90 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d  m name="value">.
23ea0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
23eb0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 36   <see cref="Int6
23ec0 34 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 77  4" /> value to w
23ed0 72 69 74 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  rite...        /
23ee0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
23ef0 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
23f00 69 63 20 76 6f 69 64 20 57 72 69 74 65 49 6e 74  ic void WriteInt
23f10 36 34 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  64(..           
23f20 20 49 6e 74 50 74 72 20 70 6f 69 6e 74 65 72 2c   IntPtr pointer,
23f30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
23f40 74 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20 20  t offset,..     
23f50 20 20 20 20 20 20 20 6c 6f 6e 67 20 76 61 6c 75         long valu
23f60 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  e..            )
23f70 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
23f80 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20   DEBUG..        
23f90 20 20 20 20 43 68 65 63 6b 41 6c 69 67 6e 6d 65      CheckAlignme
23fa0 6e 74 28 22 57 72 69 74 65 49 6e 74 36 34 22 2c  nt("WriteInt64",
23fb0 20 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74   pointer, offset
23fc0 2c 20 73 69 7a 65 6f 66 28 6c 6f 6e 67 29 29 3b  , sizeof(long));
23fd0 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20  ..#endif....#if 
23fe0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
23ff0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
24000 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e          Marshal.
24010 57 72 69 74 65 49 6e 74 36 34 28 70 6f 69 6e 74  WriteInt64(point
24020 65 72 2c 20 6f 66 66 73 65 74 2c 20 76 61 6c 75  er, offset, valu
24030 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  e);..#else..    
24040 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e          Marshal.
24050 57 72 69 74 65 49 6e 74 36 34 28 49 6e 74 50 74  WriteInt64(IntPt
24060 72 46 6f 72 4f 66 66 73 65 74 28 70 6f 69 6e 74  rForOffset(point
24070 65 72 2c 20 6f 66 66 73 65 74 29 2c 20 76 61 6c  er, offset), val
24080 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ue);..#endif..  
24090 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
240a0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
240b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
240c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
240d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
240e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
240f0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
24100 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
24110 20 57 72 69 74 65 73 20 61 20 3c 73 65 65 20 63   Writes a <see c
24120 72 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f 3e 20  ref="Double" /> 
24130 76 61 6c 75 65 20 74 6f 20 74 68 65 20 73 70 65  value to the spe
24140 63 69 66 69 65 64 20 6d 65 6d 6f 72 79 0d 0a 20  cified memory.. 
24150 20 20 20 20 20 20 20 2f 2f 2f 20 6c 6f 63 61 74         /// locat
24160 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ion...        //
24170 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
24180 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
24190 20 6e 61 6d 65 3d 22 70 6f 69 6e 74 65 72 22 3e   name="pointer">
241a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
241b0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74  e <see cref="Int
241c0 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  Ptr" /> object i
241d0 6e 73 74 61 6e 63 65 20 72 65 70 72 65 73 65 6e  nstance represen
241e0 74 69 6e 67 20 74 68 65 20 62 61 73 65 0d 0a 20  ting the base.. 
241f0 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72         /// memor
24200 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20  y location...   
24210 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
24220 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
24230 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 66 66 73  param name="offs
24240 65 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  et">..        //
24250 2f 20 54 68 65 20 69 6e 74 65 67 65 72 20 6f 66  / The integer of
24260 66 73 65 74 20 66 72 6f 6d 20 74 68 65 20 62 61  fset from the ba
24270 73 65 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69  se memory locati
24280 6f 6e 20 77 68 65 72 65 20 74 68 65 0d 0a 20 20  on where the..  
24290 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
242a0 72 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f 3e 20  ref="Double" /> 
242b0 76 61 6c 75 65 20 74 6f 20 62 65 20 77 72 69 74  value to be writ
242c0 74 65 6e 20 69 73 20 6c 6f 63 61 74 65 64 2e 0d  ten is located..
242d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
242e0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
242f0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
24300 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20  value">..       
24310 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
24320 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f 3e 20 76  ef="Double" /> v
24330 61 6c 75 65 20 74 6f 20 77 72 69 74 65 2e 0d 0a  alue to write...
24340 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
24350 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ram>..        pu
24360 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69 64  blic static void
24370 20 57 72 69 74 65 44 6f 75 62 6c 65 28 0d 0a 20   WriteDouble(.. 
24380 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
24390 72 20 70 6f 69 6e 74 65 72 2c 0d 0a 20 20 20 20  r pointer,..    
243a0 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66 73          int offs
243b0 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  et,..           
243c0 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 0d 0a 20   double value.. 
243d0 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
243e0 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 44 45 42        {..#if DEB
243f0 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  UG..            
24400 43 68 65 63 6b 41 6c 69 67 6e 6d 65 6e 74 28 22  CheckAlignment("
24410 57 72 69 74 65 44 6f 75 62 6c 65 22 2c 20 70 6f  WriteDouble", po
24420 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 2c 20 73  inter, offset, s
24430 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29 29 3b 0d  izeof(double));.
24440 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66 20 21  .#endif....#if !
24450 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
24460 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
24470 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 57         Marshal.W
24480 72 69 74 65 49 6e 74 36 34 28 70 6f 69 6e 74 65  riteInt64(pointe
24490 72 2c 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20  r, offset,..    
244a0 20 20 20 20 20 20 20 20 20 20 20 20 42 69 74 43              BitC
244b0 6f 6e 76 65 72 74 65 72 2e 44 6f 75 62 6c 65 54  onverter.DoubleT
244c0 6f 49 6e 74 36 34 42 69 74 73 28 76 61 6c 75 65  oInt64Bits(value
244d0 29 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  ));..#else..    
244e0 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e          Marshal.
244f0 57 72 69 74 65 49 6e 74 36 34 28 49 6e 74 50 74  WriteInt64(IntPt
24500 72 46 6f 72 4f 66 66 73 65 74 28 70 6f 69 6e 74  rForOffset(point
24510 65 72 2c 20 6f 66 66 73 65 74 29 2c 0d 0a 20 20  er, offset),..  
24520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 69                Bi
24530 74 43 6f 6e 76 65 72 74 65 72 2e 54 6f 49 6e 74  tConverter.ToInt
24540 36 34 28 42 69 74 43 6f 6e 76 65 72 74 65 72 2e  64(BitConverter.
24550 47 65 74 42 79 74 65 73 28 76 61 6c 75 65 29 2c  GetBytes(value),
24560 20 30 29 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20   0));..#endif.. 
24570 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
24580 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
24590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
245a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
245b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
245c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
245d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
245e0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
245f0 2f 20 57 72 69 74 65 73 20 61 20 3c 73 65 65 20  / Writes a <see 
24600 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e  cref="IntPtr" />
24610 20 76 61 6c 75 65 20 74 6f 20 74 68 65 20 73 70   value to the sp
24620 65 63 69 66 69 65 64 20 6d 65 6d 6f 72 79 0d 0a  ecified memory..
24630 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 6f 63 61          /// loca
24640 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  tion...        /
24650 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
24660 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
24670 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74 65 72 22  m name="pointer"
24680 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
24690 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  he <see cref="In
246a0 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20  tPtr" /> object 
246b0 69 6e 73 74 61 6e 63 65 20 72 65 70 72 65 73 65  instance represe
246c0 6e 74 69 6e 67 20 74 68 65 20 62 61 73 65 0d 0a  nting the base..
246d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 6d 6f          /// memo
246e0 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20  ry location...  
246f0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
24700 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
24710 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 66 66  <param name="off
24720 73 65 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  set">..        /
24730 2f 2f 20 54 68 65 20 69 6e 74 65 67 65 72 20 6f  // The integer o
24740 66 66 73 65 74 20 66 72 6f 6d 20 74 68 65 20 62  ffset from the b
24750 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74  ase memory locat
24760 69 6f 6e 20 77 68 65 72 65 20 74 68 65 0d 0a 20  ion where the.. 
24770 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
24780 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e  cref="IntPtr" />
24790 20 76 61 6c 75 65 20 74 6f 20 62 65 20 77 72 69   value to be wri
247a0 74 74 65 6e 20 69 73 20 6c 6f 63 61 74 65 64 2e  tten is located.
247b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
247c0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
247d0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
247e0 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20  "value">..      
247f0 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
24800 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20  ref="IntPtr" /> 
24810 76 61 6c 75 65 20 74 6f 20 77 72 69 74 65 2e 0d  value to write..
24820 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
24830 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70  aram>..        p
24840 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69  ublic static voi
24850 64 20 57 72 69 74 65 49 6e 74 50 74 72 28 0d 0a  d WriteIntPtr(..
24860 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
24870 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a 20 20 20  tr pointer,..   
24880 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66           int off
24890 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  set,..          
248a0 20 20 49 6e 74 50 74 72 20 76 61 6c 75 65 0d 0a    IntPtr value..
248b0 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
248c0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 44 45         {..#if DE
248d0 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20  BUG..           
248e0 20 43 68 65 63 6b 41 6c 69 67 6e 6d 65 6e 74 28   CheckAlignment(
248f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24900 20 20 22 57 72 69 74 65 49 6e 74 50 74 72 28 70    "WriteIntPtr(p
24910 6f 69 6e 74 65 72 29 22 2c 20 70 6f 69 6e 74 65  ointer)", pointe
24920 72 2c 20 6f 66 66 73 65 74 2c 20 49 6e 74 50 74  r, offset, IntPt
24930 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20  r.Size);....    
24940 20 20 20 20 20 20 20 20 43 68 65 63 6b 41 6c 69          CheckAli
24950 67 6e 6d 65 6e 74 28 22 57 72 69 74 65 49 6e 74  gnment("WriteInt
24960 50 74 72 28 76 61 6c 75 65 29 22 2c 20 76 61 6c  Ptr(value)", val
24970 75 65 2c 20 30 2c 20 49 6e 74 50 74 72 2e 53 69  ue, 0, IntPtr.Si
24980 7a 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ze);..#endif....
24990 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
249a0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
249b0 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73              Mars
249c0 68 61 6c 2e 57 72 69 74 65 49 6e 74 50 74 72 28  hal.WriteIntPtr(
249d0 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 2c  pointer, offset,
249e0 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6c 73 65 0d   value);..#else.
249f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72  .            Mar
24a00 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 50 74 72  shal.WriteIntPtr
24a10 28 49 6e 74 50 74 72 46 6f 72 4f 66 66 73 65 74  (IntPtrForOffset
24a20 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74  (pointer, offset
24a30 29 2c 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64  ), value);..#end
24a40 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  if..        }.. 
24a50 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
24a60 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
24a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24ab0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
24ac0 23 72 65 67 69 6f 6e 20 4f 62 6a 65 63 74 20 48  #region Object H
24ad0 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20  elper Methods.. 
24ae0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
24af0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
24b00 2f 20 47 65 6e 65 72 61 74 65 73 20 61 20 68 61  / Generates a ha
24b10 73 68 20 63 6f 64 65 20 76 61 6c 75 65 20 66 6f  sh code value fo
24b20 72 20 74 68 65 20 6f 62 6a 65 63 74 2e 0d 0a 20  r the object... 
24b30 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
24b40 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
24b50 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
24b60 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20  value">..       
24b70 20 2f 2f 2f 20 54 68 65 20 6f 62 6a 65 63 74 20   /// The object 
24b80 69 6e 73 74 61 6e 63 65 20 75 73 65 64 20 74 6f  instance used to
24b90 20 63 61 6c 63 75 6c 61 74 65 20 74 68 65 20 68   calculate the h
24ba0 61 73 68 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  ash code...     
24bb0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
24bc0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
24bd0 72 61 6d 20 6e 61 6d 65 3d 22 69 64 65 6e 74 69  ram name="identi
24be0 74 79 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ty">..        //
24bf0 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 64 69  / Non-zero if di
24c00 66 66 65 72 65 6e 74 20 6f 62 6a 65 63 74 20 69  fferent object i
24c10 6e 73 74 61 6e 63 65 73 20 77 69 74 68 20 74 68  nstances with th
24c20 65 20 73 61 6d 65 20 76 61 6c 75 65 20 73 68 6f  e same value sho
24c30 75 6c 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  uld..        ///
24c40 20 67 65 6e 65 72 61 74 65 20 64 69 66 66 65 72   generate differ
24c50 65 6e 74 20 68 61 73 68 20 63 6f 64 65 73 2c 20  ent hash codes, 
24c60 77 68 65 72 65 20 61 70 70 6c 69 63 61 62 6c 65  where applicable
24c70 2e 20 20 54 68 69 73 20 70 61 72 61 6d 65 74 65  .  This paramete
24c80 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 68  r..        /// h
24c90 61 73 20 6e 6f 20 65 66 66 65 63 74 20 6f 6e 20  as no effect on 
24ca0 74 68 65 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74  the .NET Compact
24cb0 20 46 72 61 6d 65 77 6f 72 6b 2e 0d 0a 20 20 20   Framework...   
24cc0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
24cd0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
24ce0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
24cf0 20 20 2f 2f 2f 20 54 68 65 20 68 61 73 68 20 63    /// The hash c
24d00 6f 64 65 20 76 61 6c 75 65 20 2d 4f 52 2d 20 7a  ode value -OR- z
24d10 65 72 6f 20 69 66 20 74 68 65 20 6f 62 6a 65 63  ero if the objec
24d20 74 20 69 73 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20  t is null...    
24d30 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
24d40 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  s>..        publ
24d50 69 63 20 73 74 61 74 69 63 20 69 6e 74 20 47 65  ic static int Ge
24d60 74 48 61 73 68 43 6f 64 65 28 0d 0a 20 20 20 20  tHashCode(..    
24d70 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76          object v
24d80 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  alue,..         
24d90 20 20 20 62 6f 6f 6c 20 69 64 65 6e 74 69 74 79     bool identity
24da0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
24db0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
24dc0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
24dd0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
24de0 20 20 20 20 20 20 20 20 69 66 20 28 69 64 65 6e          if (iden
24df0 74 69 74 79 29 0d 0a 20 20 20 20 20 20 20 20 20  tity)..         
24e00 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 52 75         return Ru
24e10 6e 74 69 6d 65 48 65 6c 70 65 72 73 2e 47 65 74  ntimeHelpers.Get
24e20 48 61 73 68 43 6f 64 65 28 76 61 6c 75 65 29 3b  HashCode(value);
24e30 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
24e40 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75          if (valu
24e50 65 20 3d 3d 20 6e 75 6c 6c 29 20 72 65 74 75 72  e == null) retur
24e60 6e 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  n 0;..          
24e70 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 2e 47    return value.G
24e80 65 74 48 61 73 68 43 6f 64 65 28 29 3b 0d 0a 20  etHashCode();.. 
24e90 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
24ea0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
24eb0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
24ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
24f00 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
24f10 6f 6e 20 50 72 69 76 61 74 65 20 4d 65 74 68 6f  on Private Metho
24f20 64 73 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20  ds..#if DEBUG.. 
24f30 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20         internal 
24f40 73 74 61 74 69 63 20 76 6f 69 64 20 43 68 65 63  static void Chec
24f50 6b 41 6c 69 67 6e 6d 65 6e 74 28 0d 0a 20 20 20  kAlignment(..   
24f60 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
24f70 74 79 70 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  type,..         
24f80 20 20 20 49 6e 74 50 74 72 20 70 6f 69 6e 74 65     IntPtr pointe
24f90 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r,..            
24fa0 69 6e 74 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20  int offset,..   
24fb0 20 20 20 20 20 20 20 20 20 69 6e 74 20 73 69 7a           int siz
24fc0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  e..            )
24fd0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
24fe0 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
24ff0 73 61 76 65 64 50 6f 69 6e 74 65 72 20 3d 20 70  savedPointer = p
25000 6f 69 6e 74 65 72 3b 0d 0a 0d 0a 20 20 20 20 20  ointer;....     
25010 20 20 20 20 20 20 20 69 66 20 28 6f 66 66 73 65         if (offse
25020 74 20 21 3d 20 30 29 0d 0a 20 20 20 20 20 20 20  t != 0)..       
25030 20 20 20 20 20 20 20 20 20 70 6f 69 6e 74 65 72           pointer
25040 20 3d 20 6e 65 77 20 49 6e 74 50 74 72 28 70 6f   = new IntPtr(po
25050 69 6e 74 65 72 2e 54 6f 49 6e 74 36 34 28 29 20  inter.ToInt64() 
25060 2b 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20  + offset);....  
25070 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28 70            if ((p
25080 6f 69 6e 74 65 72 2e 54 6f 49 6e 74 36 34 28 29  ointer.ToInt64()
25090 20 25 20 73 69 7a 65 29 20 21 3d 20 30 29 0d 0a   % size) != 0)..
250a0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
250b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
250c0 51 4c 69 74 65 4c 6f 67 2e 4c 6f 67 4d 65 73 73  QLiteLog.LogMess
250d0 61 67 65 28 53 51 4c 69 74 65 45 72 72 6f 72 43  age(SQLiteErrorC
250e0 6f 64 65 2e 57 61 72 6e 69 6e 67 2c 0d 0a 20 20  ode.Warning,..  
250f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25100 20 20 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e    HelperMethods.
25110 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 43 75 6c  StringFormat(Cul
25120 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
25130 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
25140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 7b                "{
25150 30 7d 3a 20 70 6f 69 6e 74 65 72 20 7b 31 7d 20  0}: pointer {1} 
25160 61 6e 64 20 6f 66 66 73 65 74 20 7b 32 7d 20 6e  and offset {2} n
25170 6f 74 20 61 6c 69 67 6e 65 64 20 74 6f 20 7b 33  ot aligned to {3
25180 7d 3a 20 7b 34 7d 22 2c 0d 0a 20 20 20 20 20 20  }: {4}",..      
25190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 79                ty
251a0 70 65 2c 20 73 61 76 65 64 50 6f 69 6e 74 65 72  pe, savedPointer
251b0 2c 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 2c 0d  , offset, size,.
251c0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
251d0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
251e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
251f0 20 20 20 20 20 45 6e 76 69 72 6f 6e 6d 65 6e 74       Environment
25200 2e 53 74 61 63 6b 54 72 61 63 65 0d 0a 23 65 6c  .StackTrace..#el
25210 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
25220 20 20 20 20 20 20 20 20 6e 75 6c 6c 0d 0a 23 65          null..#e
25230 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
25240 20 20 20 20 20 20 20 20 20 20 29 29 3b 0d 0a 20            ));.. 
25250 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
25260 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
25270 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
25280 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20  ion..    }..    
25290 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
252a0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
252b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
252c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
252d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
252e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
252f0 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c  .    #region SQL
25300 69 74 65 4d 6f 64 75 6c 65 20 42 61 73 65 20 43  iteModule Base C
25310 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  lass..    /// <s
25320 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
25330 20 54 68 69 73 20 63 6c 61 73 73 20 72 65 70 72   This class repr
25340 65 73 65 6e 74 73 20 61 20 6d 61 6e 61 67 65 64  esents a managed
25350 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 6d   virtual table m
25360 6f 64 75 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61  odule implementa
25370 74 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 49  tion...    /// I
25380 74 20 69 73 20 6e 6f 74 20 73 65 61 6c 65 64 20  t is not sealed 
25390 61 6e 64 20 6d 75 73 74 20 62 65 20 75 73 65 64  and must be used
253a0 20 61 73 20 74 68 65 20 62 61 73 65 20 63 6c 61   as the base cla
253b0 73 73 20 66 6f 72 20 61 6e 79 0d 0a 20 20 20 20  ss for any..    
253c0 2f 2f 2f 20 75 73 65 72 2d 64 65 66 69 6e 65 64  /// user-defined
253d0 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 6d   virtual table m
253e0 6f 64 75 6c 65 20 63 6c 61 73 73 65 73 20 69 6d  odule classes im
253f0 70 6c 65 6d 65 6e 74 65 64 20 69 6e 20 6d 61 6e  plemented in man
25400 61 67 65 64 20 63 6f 64 65 2e 0d 0a 20 20 20 20  aged code...    
25410 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
25420 20 20 20 20 70 75 62 6c 69 63 20 61 62 73 74 72      public abstr
25430 61 63 74 20 63 6c 61 73 73 20 53 51 4c 69 74 65  act class SQLite
25440 4d 6f 64 75 6c 65 20 3a 0d 0a 20 20 20 20 20 20  Module :..      
25450 20 20 20 20 20 20 49 53 51 4c 69 74 65 4d 61 6e        ISQLiteMan
25460 61 67 65 64 4d 6f 64 75 6c 65 2c 20 2f 2a 49 53  agedModule, /*IS
25470 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
25480 65 2c 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  e,*/..          
25490 20 20 49 44 69 73 70 6f 73 61 62 6c 65 20 2f 2a    IDisposable /*
254a0 20 4e 4f 54 20 53 45 41 4c 45 44 20 2a 2f 0d 0a   NOT SEALED */..
254b0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23      {..        #
254c0 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 4e 61 74  region SQLiteNat
254d0 69 76 65 4d 6f 64 75 6c 65 20 50 72 69 76 61 74  iveModule Privat
254e0 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 20 20 20  e Class..       
254f0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
25500 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
25510 20 63 6c 61 73 73 20 69 6d 70 6c 65 6d 65 6e 74   class implement
25520 73 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  s the <see cref=
25530 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
25540 64 75 6c 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20  dule" />..      
25550 20 20 2f 2f 2f 20 69 6e 74 65 72 66 61 63 65 20    /// interface 
25560 62 79 20 66 6f 72 77 61 72 64 69 6e 67 20 74 68  by forwarding th
25570 6f 73 65 20 6d 65 74 68 6f 64 20 63 61 6c 6c 73  ose method calls
25580 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20   to the..       
25590 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
255a0 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e  SQLiteModule" />
255b0 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
255c0 20 69 74 20 63 6f 6e 74 61 69 6e 73 2e 20 20 49   it contains.  I
255d0 66 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  f the..        /
255e0 2f 2f 20 63 6f 6e 74 61 69 6e 65 64 20 3c 73 65  // contained <se
255f0 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f  e cref="SQLiteMo
25600 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20  dule" /> object 
25610 69 6e 73 74 61 6e 63 65 20 69 73 20 6e 75 6c 6c  instance is null
25620 2c 20 61 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f  , all..        /
25630 2f 2f 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  // the <see cref
25640 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
25650 6f 64 75 6c 65 22 20 2f 3e 20 6d 65 74 68 6f 64  odule" /> method
25660 73 20 73 69 6d 70 6c 79 20 67 65 6e 65 72 61 74  s simply generat
25670 65 20 61 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  e an..        //
25680 2f 20 65 72 72 6f 72 2e 0d 0a 20 20 20 20 20 20  / error...      
25690 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
256a0 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
256b0 65 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53  e sealed class S
256c0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
256d0 65 20 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e :..           
256e0 20 20 20 20 20 49 53 51 4c 69 74 65 4e 61 74 69       ISQLiteNati
256f0 76 65 4d 6f 64 75 6c 65 2c 20 49 44 69 73 70 6f  veModule, IDispo
25700 73 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b  sable..        {
25710 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72  ..            #r
25720 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43 6f  egion Private Co
25730 6e 73 74 61 6e 74 73 0d 0a 20 20 20 20 20 20 20  nstants..       
25740 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
25750 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
25760 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20  /// This is the 
25770 76 61 6c 75 65 20 74 68 61 74 20 69 73 20 61 6c  value that is al
25780 77 61 79 73 20 75 73 65 64 20 66 6f 72 20 74 68  ways used for th
25790 65 20 22 6c 6f 67 45 72 72 6f 72 73 22 0d 0a 20  e "logErrors".. 
257a0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 70             /// p
257b0 61 72 61 6d 65 74 65 72 20 74 6f 20 74 68 65 20  arameter to the 
257c0 76 61 72 69 6f 75 73 20 73 74 61 74 69 63 20 65  various static e
257d0 72 72 6f 72 20 68 61 6e 64 6c 69 6e 67 20 6d 65  rror handling me
257e0 74 68 6f 64 73 20 70 72 6f 76 69 64 65 64 0d 0a  thods provided..
257f0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
25800 62 79 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  by the <see cref
25810 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20  ="SQLiteModule" 
25820 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20  /> class...     
25830 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
25840 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
25850 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74     private const
25860 20 62 6f 6f 6c 20 44 65 66 61 75 6c 74 4c 6f 67   bool DefaultLog
25870 45 72 72 6f 72 73 20 3d 20 74 72 75 65 3b 0d 0a  Errors = true;..
25880 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
25890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
258a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
258b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
258c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
258d0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
258e0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
258f0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
25900 54 68 69 73 20 69 73 20 74 68 65 20 76 61 6c 75  This is the valu
25910 65 20 74 68 61 74 20 69 73 20 61 6c 77 61 79 73  e that is always
25920 20 75 73 65 64 20 66 6f 72 20 74 68 65 20 22 6c   used for the "l
25930 6f 67 45 78 63 65 70 74 69 6f 6e 73 22 0d 0a 20  ogExceptions".. 
25940 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 70             /// p
25950 61 72 61 6d 65 74 65 72 20 74 6f 20 74 68 65 20  arameter to the 
25960 76 61 72 69 6f 75 73 20 73 74 61 74 69 63 20 65  various static e
25970 72 72 6f 72 20 68 61 6e 64 6c 69 6e 67 20 6d 65  rror handling me
25980 74 68 6f 64 73 20 70 72 6f 76 69 64 65 64 0d 0a  thods provided..
25990 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
259a0 62 79 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  by the <see cref
259b0 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20  ="SQLiteModule" 
259c0 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20  /> class...     
259d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
259e0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
259f0 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74     private const
25a00 20 62 6f 6f 6c 20 44 65 66 61 75 6c 74 4c 6f 67   bool DefaultLog
25a10 45 78 63 65 70 74 69 6f 6e 73 20 3d 20 74 72 75  Exceptions = tru
25a20 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
25a30 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
25a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25a70 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
25a80 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
25a90 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
25aa0 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20  /// This is the 
25ab0 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 74 65  error message te
25ac0 78 74 20 75 73 65 64 20 77 68 65 6e 20 74 68 65  xt used when the
25ad0 20 63 6f 6e 74 61 69 6e 65 64 0d 0a 20 20 20 20   contained..    
25ae0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
25af0 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64   cref="SQLiteMod
25b00 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  ule" /> object i
25b10 6e 73 74 61 6e 63 65 20 69 73 20 6e 6f 74 20 61  nstance is not a
25b20 76 61 69 6c 61 62 6c 65 0d 0a 20 20 20 20 20 20  vailable..      
25b30 20 20 20 20 20 20 2f 2f 2f 20 66 6f 72 20 61 6e        /// for an
25b40 79 20 72 65 61 73 6f 6e 2e 0d 0a 20 20 20 20 20  y reason...     
25b50 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
25b60 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
25b70 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74     private const
25b80 20 73 74 72 69 6e 67 20 4d 6f 64 75 6c 65 4e 6f   string ModuleNo
25b90 74 41 76 61 69 6c 61 62 6c 65 45 72 72 6f 72 4d  tAvailableErrorM
25ba0 65 73 73 61 67 65 20 3d 0d 0a 20 20 20 20 20 20  essage =..      
25bb0 20 20 20 20 20 20 20 20 20 20 22 6e 61 74 69 76            "nativ
25bc0 65 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65 6d 65  e module impleme
25bd0 6e 74 61 74 69 6f 6e 20 6e 6f 74 20 61 76 61 69  ntation not avai
25be0 6c 61 62 6c 65 22 3b 0d 0a 20 20 20 20 20 20 20  lable";..       
25bf0 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
25c00 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
25c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25c50 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
25c60 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74    #region Privat
25c70 65 20 44 61 74 61 0d 0a 20 20 20 20 20 20 20 20  e Data..        
25c80 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
25c90 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
25ca0 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
25cb0 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20  ="SQLiteModule" 
25cc0 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
25cd0 63 65 20 75 73 65 64 20 74 6f 20 70 72 6f 76 69  ce used to provi
25ce0 64 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  de..            
25cf0 2f 2f 2f 20 61 6e 20 69 6d 70 6c 65 6d 65 6e 74  /// an implement
25d00 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 3c 73 65  ation of the <se
25d10 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
25d20 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 0d  ativeModule" />.
25d30 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
25d40 20 69 6e 74 65 72 66 61 63 65 2e 0d 0a 20 20 20   interface...   
25d50 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73           /// </s
25d60 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
25d70 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c       private SQL
25d80 69 74 65 4d 6f 64 75 6c 65 20 6d 6f 64 75 6c 65  iteModule module
25d90 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ;..            #
25da0 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
25db0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
25dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
25e00 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67              #reg
25e10 69 6f 6e 20 50 75 62 6c 69 63 20 43 6f 6e 73 74  ion Public Const
25e20 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20  ructors..       
25e30 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
25e40 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
25e50 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61  /// Constructs a
25e60 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68  n instance of th
25e70 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20  is class...     
25e80 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
25e90 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
25ea0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
25eb0 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20  me="module">..  
25ec0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68            /// Th
25ed0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
25ee0 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62  iteModule" /> ob
25ef0 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 75 73  ject instance us
25f00 65 64 20 74 6f 20 70 72 6f 76 69 64 65 0d 0a 20  ed to provide.. 
25f10 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 61             /// a
25f20 6e 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  n implementation
25f30 20 6f 66 20 74 68 65 20 3c 73 65 65 20 63 72 65   of the <see cre
25f40 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
25f50 4d 6f 64 75 6c 65 22 20 2f 3e 0d 0a 20 20 20 20  Module" />..    
25f60 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65          /// inte
25f70 72 66 61 63 65 2e 0d 0a 20 20 20 20 20 20 20 20  rface...        
25f80 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
25f90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
25fa0 62 6c 69 63 20 53 51 4c 69 74 65 4e 61 74 69 76  blic SQLiteNativ
25fb0 65 4d 6f 64 75 6c 65 28 0d 0a 20 20 20 20 20 20  eModule(..      
25fc0 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
25fd0 4d 6f 64 75 6c 65 20 6d 6f 64 75 6c 65 0d 0a 20  Module module.. 
25fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
25ff0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
26000 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26010 20 74 68 69 73 2e 6d 6f 64 75 6c 65 20 3d 20 6d   this.module = m
26020 6f 64 75 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20  odule;..        
26030 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
26040 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
26050 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
26060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
260a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
260b0 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
260c0 53 74 61 74 69 63 20 4d 65 74 68 6f 64 73 0d 0a  Static Methods..
260d0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
260e0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
260f0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 74 73 20         /// Sets 
26100 74 68 65 20 74 61 62 6c 65 20 65 72 72 6f 72 20  the table error 
26110 6d 65 73 73 61 67 65 20 74 6f 20 6f 6e 65 20 74  message to one t
26120 68 61 74 20 69 6e 64 69 63 61 74 65 73 20 74 68  hat indicates th
26130 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20  e native..      
26140 20 20 20 20 20 20 2f 2f 2f 20 6d 6f 64 75 6c 65        /// module
26150 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20   implementation 
26160 69 73 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65  is not available
26170 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
26180 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
26190 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
261a0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61  param name="pVta
261b0 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  b">..           
261c0 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
261d0 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73  pointer to the s
261e0 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69  qlite3_vtab deri
261f0 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  ved structure...
26200 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
26210 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
26220 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
26230 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
26240 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 6f   /// The value o
26250 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  f <see cref="SQL
26260 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 45 72 72  iteErrorCode.Err
26270 6f 72 22 20 2f 3e 2e 0d 0a 20 20 20 20 20 20 20  or" />...       
26280 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
26290 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
262a0 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
262b0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
262c0 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62  ModuleNotAvailab
262d0 6c 65 54 61 62 6c 65 45 72 72 6f 72 28 0d 0a 20  leTableError(.. 
262e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
262f0 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20  ntPtr pVtab..   
26300 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
26310 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
26320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
26330 65 74 54 61 62 6c 65 45 72 72 6f 72 28 6e 75 6c  etTableError(nul
26340 6c 2c 20 70 56 74 61 62 2c 20 44 65 66 61 75 6c  l, pVtab, Defaul
26350 74 4c 6f 67 45 72 72 6f 72 73 2c 0d 0a 20 20 20  tLogErrors,..   
26360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26370 20 44 65 66 61 75 6c 74 4c 6f 67 45 78 63 65 70   DefaultLogExcep
26380 74 69 6f 6e 73 2c 20 4d 6f 64 75 6c 65 4e 6f 74  tions, ModuleNot
26390 41 76 61 69 6c 61 62 6c 65 45 72 72 6f 72 4d 65  AvailableErrorMe
263a0 73 73 61 67 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  ssage);....     
263b0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
263c0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
263d0 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20 20 20 20  e.Error;..      
263e0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
263f0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
26400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
26440 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73            /// <s
26450 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
26460 20 20 20 20 20 2f 2f 2f 20 53 65 74 73 20 74 68       /// Sets th
26470 65 20 74 61 62 6c 65 20 65 72 72 6f 72 20 6d 65  e table error me
26480 73 73 61 67 65 20 74 6f 20 6f 6e 65 20 74 68 61  ssage to one tha
26490 74 20 69 6e 64 69 63 61 74 65 73 20 74 68 65 20  t indicates the 
264a0 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20  native..        
264b0 20 20 20 20 2f 2f 2f 20 6d 6f 64 75 6c 65 20 69      /// module i
264c0 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 69 73  mplementation is
264d0 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65 2e 0d   not available..
264e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
264f0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
26500 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
26510 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f  ram name="pCurso
26520 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r">..           
26530 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
26540 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73  pointer to the s
26550 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73  qlite3_vtab_curs
26560 6f 72 20 64 65 72 69 76 65 64 0d 0a 20 20 20 20  or derived..    
26570 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75          /// stru
26580 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  cture...        
26590 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
265a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
265b0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
265c0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65           /// The
265d0 20 76 61 6c 75 65 20 6f 66 20 3c 73 65 65 20 63   value of <see c
265e0 72 65 66 3d 22 53 51 4c 69 74 65 45 72 72 6f 72  ref="SQLiteError
265f0 43 6f 64 65 2e 45 72 72 6f 72 22 20 2f 3e 2e 0d  Code.Error" />..
26600 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
26610 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
26620 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
26630 20 73 74 61 74 69 63 20 53 51 4c 69 74 65 45 72   static SQLiteEr
26640 72 6f 72 43 6f 64 65 20 4d 6f 64 75 6c 65 4e 6f  rorCode ModuleNo
26650 74 41 76 61 69 6c 61 62 6c 65 43 75 72 73 6f 72  tAvailableCursor
26660 45 72 72 6f 72 28 0d 0a 20 20 20 20 20 20 20 20  Error(..        
26670 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
26680 43 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20 20  Cursor..        
26690 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
266a0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
266b0 20 20 20 20 20 20 20 20 20 20 53 65 74 43 75 72            SetCur
266c0 73 6f 72 45 72 72 6f 72 28 6e 75 6c 6c 2c 20 70  sorError(null, p
266d0 43 75 72 73 6f 72 2c 20 44 65 66 61 75 6c 74 4c  Cursor, DefaultL
266e0 6f 67 45 72 72 6f 72 73 2c 0d 0a 20 20 20 20 20  ogErrors,..     
266f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44                 D
26700 65 66 61 75 6c 74 4c 6f 67 45 78 63 65 70 74 69  efaultLogExcepti
26710 6f 6e 73 2c 20 4d 6f 64 75 6c 65 4e 6f 74 41 76  ons, ModuleNotAv
26720 61 69 6c 61 62 6c 65 45 72 72 6f 72 4d 65 73 73  ailableErrorMess
26730 61 67 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  age);....       
26740 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
26750 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e  SQLiteErrorCode.
26760 45 72 72 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20  Error;..        
26770 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
26780 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
26790 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
267a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
267b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
267c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
267d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
267e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
267f0 23 72 65 67 69 6f 6e 20 49 53 51 4c 69 74 65 4e  #region ISQLiteN
26800 61 74 69 76 65 4d 6f 64 75 6c 65 20 4d 65 6d 62  ativeModule Memb
26810 65 72 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ers..           
26820 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
26830 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
26840 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
26850 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
26860 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 22 20  Module.xCreate" 
26870 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
26880 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
26890 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
268a0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
268b0 61 6d 65 3d 22 70 44 62 22 3e 0d 0a 20 20 20 20  ame="pDb">..    
268c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
268d0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
268e0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
268f0 6c 65 2e 78 43 72 65 61 74 65 22 20 2f 3e 20 6d  le.xCreate" /> m
26900 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
26910 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
26920 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
26930 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
26940 41 75 78 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  Aux">..         
26950 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
26960 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
26970 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
26980 72 65 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64  reate" /> method
26990 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
269a0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
269b0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
269c0 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 63 22 3e  ram name="argc">
269d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
269e0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
269f0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
26a00 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65  veModule.xCreate
26a10 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
26a20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
26a30 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
26a40 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
26a50 61 6d 65 3d 22 61 72 67 76 22 3e 0d 0a 20 20 20  ame="argv">..   
26a60 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
26a70 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
26a80 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
26a90 75 6c 65 2e 78 43 72 65 61 74 65 22 20 2f 3e 20  ule.xCreate" /> 
26aa0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
26ab0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
26ac0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
26ad0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
26ae0 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20  pVtab">..       
26af0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
26b00 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
26b10 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
26b20 78 43 72 65 61 74 65 22 20 2f 3e 20 6d 65 74 68  xCreate" /> meth
26b30 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
26b40 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
26b50 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
26b60 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 45 72 72  param name="pErr
26b70 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  or">..          
26b80 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
26b90 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
26ba0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72  NativeModule.xCr
26bb0 65 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  eate" /> method.
26bc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
26bd0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
26be0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
26bf0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
26c00 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
26c10 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
26c20 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
26c30 72 65 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64  reate" /> method
26c40 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
26c50 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
26c60 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
26c70 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  c SQLiteErrorCod
26c80 65 20 78 43 72 65 61 74 65 28 0d 0a 20 20 20 20  e xCreate(..    
26c90 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
26ca0 74 72 20 70 44 62 2c 0d 0a 20 20 20 20 20 20 20  tr pDb,..       
26cb0 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
26cc0 70 41 75 78 2c 0d 0a 20 20 20 20 20 20 20 20 20  pAux,..         
26cd0 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c         int argc,
26ce0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26cf0 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a    IntPtr argv,..
26d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26d10 72 65 66 20 49 6e 74 50 74 72 20 70 56 74 61 62  ref IntPtr pVtab
26d20 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
26d30 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 45     ref IntPtr pE
26d40 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20  rror..          
26d50 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
26d60 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
26d70 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
26d80 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
26d90 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e  OTE: Called by n
26da0 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20  ative code...   
26db0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
26dc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26dd0 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65   // CheckDispose
26de0 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a  d(); /* EXEMPT *
26df0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
26e00 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20       if (module 
26e10 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
26e20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
26e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26e40 20 70 45 72 72 6f 72 20 3d 20 53 51 4c 69 74 65   pError = SQLite
26e50 53 74 72 69 6e 67 2e 55 74 66 38 49 6e 74 50 74  String.Utf8IntPt
26e60 72 46 72 6f 6d 53 74 72 69 6e 67 28 0d 0a 20 20  rFromString(..  
26e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26e80 20 20 20 20 20 20 4d 6f 64 75 6c 65 4e 6f 74 41        ModuleNotA
26e90 76 61 69 6c 61 62 6c 65 45 72 72 6f 72 4d 65 73  vailableErrorMes
26ea0 73 61 67 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  sage);....      
26eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
26ec0 74 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  turn SQLiteError
26ed0 43 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20  Code.Error;..   
26ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
26ef0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26f00 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e    return module.
26f10 78 43 72 65 61 74 65 28 0d 0a 20 20 20 20 20 20  xCreate(..      
26f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 44                pD
26f30 62 2c 20 70 41 75 78 2c 20 61 72 67 63 2c 20 61  b, pAux, argc, a
26f40 72 67 76 2c 20 72 65 66 20 70 56 74 61 62 2c 20  rgv, ref pVtab, 
26f50 72 65 66 20 70 45 72 72 6f 72 29 3b 0d 0a 20 20  ref pError);..  
26f60 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
26f70 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
26f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
26fc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
26fd0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
26fe0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
26ff0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
27000 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
27010 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 22 20 2f 3e  ule.xConnect" />
27020 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
27030 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
27040 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
27050 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
27060 65 3d 22 70 44 62 22 3e 0d 0a 20 20 20 20 20 20  e="pDb">..      
27070 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
27080 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
27090 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
270a0 2e 78 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65  .xConnect" /> me
270b0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
270c0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
270d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
270e0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 41   <param name="pA
270f0 75 78 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ux">..          
27100 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
27110 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
27120 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  NativeModule.xCo
27130 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64  nnect" /> method
27140 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
27150 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
27160 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
27170 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 63 22 3e  ram name="argc">
27180 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
27190 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
271a0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
271b0 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63  veModule.xConnec
271c0 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  t" /> method... 
271d0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
271e0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
271f0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
27200 6e 61 6d 65 3d 22 61 72 67 76 22 3e 0d 0a 20 20  name="argv">..  
27210 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
27220 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
27230 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
27240 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 22 20 2f  dule.xConnect" /
27250 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
27260 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
27270 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
27280 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
27290 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20  ="pVtab">..     
272a0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
272b0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
272c0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
272d0 65 2e 78 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d  e.xConnect" /> m
272e0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
272f0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
27300 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
27310 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
27320 45 72 72 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20  Error">..       
27330 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
27340 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
27350 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
27360 78 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74  xConnect" /> met
27370 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
27380 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
27390 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
273a0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
273b0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
273c0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
273d0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
273e0 65 2e 78 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d  e.xConnect" /> m
273f0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
27400 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
27410 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
27420 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72  public SQLiteErr
27430 6f 72 43 6f 64 65 20 78 43 6f 6e 6e 65 63 74 28  orCode xConnect(
27440 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27450 20 20 49 6e 74 50 74 72 20 70 44 62 2c 0d 0a 20    IntPtr pDb,.. 
27460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
27470 6e 74 50 74 72 20 70 41 75 78 2c 0d 0a 20 20 20  ntPtr pAux,..   
27480 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74               int
27490 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20   argc,..        
274a0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 61          IntPtr a
274b0 72 67 76 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  rgv,..          
274c0 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72        ref IntPtr
274d0 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20   pVtab,..       
274e0 20 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74           ref Int
274f0 50 74 72 20 70 45 72 72 6f 72 0d 0a 20 20 20 20  Ptr pError..    
27500 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
27510 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
27520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
27530 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27540 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65    // NOTE: Calle
27550 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65  d by native code
27560 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
27570 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
27580 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44         // CheckD
27590 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58  isposed(); /* EX
275a0 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20  EMPT */....     
275b0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d             if (m
275c0 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  odule == null)..
275d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
275e0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
275f0 20 20 20 20 20 20 20 70 45 72 72 6f 72 20 3d 20         pError = 
27600 53 51 4c 69 74 65 53 74 72 69 6e 67 2e 55 74 66  SQLiteString.Utf
27610 38 49 6e 74 50 74 72 46 72 6f 6d 53 74 72 69 6e  8IntPtrFromStrin
27620 67 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g(..            
27630 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f 64 75              Modu
27640 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 45 72  leNotAvailableEr
27650 72 6f 72 4d 65 73 73 61 67 65 29 3b 0d 0a 0d 0a  rorMessage);....
27660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27670 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74      return SQLit
27680 65 45 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72  eErrorCode.Error
27690 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
276a0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
276b0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d          return m
276c0 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 28 0d  odule.xConnect(.
276d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
276e0 20 20 20 20 20 70 44 62 2c 20 70 41 75 78 2c 20       pDb, pAux, 
276f0 61 72 67 63 2c 20 61 72 67 76 2c 20 72 65 66 20  argc, argv, ref 
27700 70 56 74 61 62 2c 20 72 65 66 20 70 45 72 72 6f  pVtab, ref pErro
27710 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r);..           
27720 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
27730 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
27740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27770 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
27780 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
27790 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
277a0 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
277b0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
277c0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 73 74  tiveModule.xBest
277d0 49 6e 64 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64  Index" /> method
277e0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
277f0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
27800 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
27810 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61  param name="pVta
27820 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  b">..           
27830 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
27840 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
27850 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 73  ativeModule.xBes
27860 74 49 6e 64 65 78 22 20 2f 3e 20 6d 65 74 68 6f  tIndex" /> metho
27870 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
27880 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
27890 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
278a0 61 72 61 6d 20 6e 61 6d 65 3d 22 70 49 6e 64 65  aram name="pInde
278b0 78 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  x">..           
278c0 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
278d0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
278e0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 73  ativeModule.xBes
278f0 74 49 6e 64 65 78 22 20 2f 3e 20 6d 65 74 68 6f  tIndex" /> metho
27900 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
27910 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
27920 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72            /// <r
27930 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
27940 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
27950 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
27960 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
27970 78 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 20 6d  xBestIndex" /> m
27980 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
27990 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
279a0 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
279b0 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72  public SQLiteErr
279c0 6f 72 43 6f 64 65 20 78 42 65 73 74 49 6e 64 65  orCode xBestInde
279d0 78 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  x(..            
279e0 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
279f0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
27a00 20 20 20 49 6e 74 50 74 72 20 70 49 6e 64 65 78     IntPtr pIndex
27a10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27a20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
27a30 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
27a40 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
27a50 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
27a60 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76   Called by nativ
27a70 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  e code...       
27a80 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
27a90 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
27aa0 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
27ab0 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d   /* EXEMPT */...
27ac0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27ad0 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e   if (module == n
27ae0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
27af0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
27b00 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61   ModuleNotAvaila
27b10 62 6c 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56  bleTableError(pV
27b20 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  tab);....       
27b30 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
27b40 6d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65  module.xBestInde
27b50 78 28 70 56 74 61 62 2c 20 70 49 6e 64 65 78 29  x(pVtab, pIndex)
27b60 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
27b70 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
27b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27bc0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
27bd0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
27be0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
27bf0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
27c00 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
27c10 76 65 4d 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e  veModule.xDiscon
27c20 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  nect" /> method.
27c30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
27c40 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
27c50 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
27c60 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62  aram name="pVtab
27c70 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
27c80 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
27c90 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
27ca0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 69 73 63  tiveModule.xDisc
27cb0 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f  onnect" /> metho
27cc0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
27cd0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
27ce0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72            /// <r
27cf0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
27d00 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
27d10 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
27d20 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
27d30 78 44 69 73 63 6f 6e 6e 65 63 74 22 20 2f 3e 20  xDisconnect" /> 
27d40 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
27d50 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
27d60 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
27d70 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72   public SQLiteEr
27d80 72 6f 72 43 6f 64 65 20 78 44 69 73 63 6f 6e 6e  rorCode xDisconn
27d90 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ect(..          
27da0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
27db0 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ab..            
27dc0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
27dd0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
27de0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
27df0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
27e00 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74  E: Called by nat
27e10 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  ive code...     
27e20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
27e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
27e40 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  / CheckDisposed(
27e50 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d  ); /* EXEMPT */.
27e60 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
27e70 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d     if (module ==
27e80 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
27e90 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
27ea0 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69  rn ModuleNotAvai
27eb0 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72 28  lableTableError(
27ec0 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20  pVtab);....     
27ed0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
27ee0 6e 20 6d 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e  n module.xDiscon
27ef0 6e 65 63 74 28 70 56 74 61 62 29 3b 0d 0a 20 20  nect(pVtab);..  
27f00 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
27f10 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
27f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
27f60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
27f70 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
27f80 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
27f90 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
27fa0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
27fb0 75 6c 65 2e 78 44 65 73 74 72 6f 79 22 20 2f 3e  ule.xDestroy" />
27fc0 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
27fd0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
27fe0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
27ff0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
28000 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20  e="pVtab">..    
28010 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
28020 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
28030 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
28040 6c 65 2e 78 44 65 73 74 72 6f 79 22 20 2f 3e 20  le.xDestroy" /> 
28050 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
28060 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
28070 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
28080 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
28090 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
280a0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
280b0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
280c0 64 75 6c 65 2e 78 44 65 73 74 72 6f 79 22 20 2f  dule.xDestroy" /
280d0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
280e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
280f0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
28100 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
28110 45 72 72 6f 72 43 6f 64 65 20 78 44 65 73 74 72  ErrorCode xDestr
28120 6f 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  oy(..           
28130 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
28140 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  b..             
28150 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
28160 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
28170 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
28180 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
28190 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69  : Called by nati
281a0 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  ve code...      
281b0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
281c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
281d0 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
281e0 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a  ; /* EXEMPT */..
281f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28200 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20    if (module == 
28210 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
28220 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
28230 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c  n ModuleNotAvail
28240 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72 28 70  ableTableError(p
28250 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Vtab);....      
28260 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
28270 20 6d 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f 79   module.xDestroy
28280 28 70 56 74 61 62 29 3b 0d 0a 20 20 20 20 20 20  (pVtab);..      
28290 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
282a0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
282b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
282c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
282d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
282e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
282f0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73            /// <s
28300 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
28310 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
28320 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
28330 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
28340 78 4f 70 65 6e 22 20 2f 3e 20 6d 65 74 68 6f 64  xOpen" /> method
28350 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
28360 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
28370 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
28380 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61  param name="pVta
28390 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  b">..           
283a0 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
283b0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
283c0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4f 70 65  ativeModule.xOpe
283d0 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  n" /> method... 
283e0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
283f0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
28400 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
28410 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d  name="pCursor">.
28420 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
28430 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
28440 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
28450 65 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e 22 20 2f  eModule.xOpen" /
28460 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
28470 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
28480 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
28490 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
284a0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
284b0 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
284c0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
284d0 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e 22 20 2f 3e  Module.xOpen" />
284e0 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
284f0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
28500 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
28510 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45    public SQLiteE
28520 72 72 6f 72 43 6f 64 65 20 78 4f 70 65 6e 28 0d  rrorCode xOpen(.
28530 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28540 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
28550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28560 72 65 66 20 49 6e 74 50 74 72 20 70 43 75 72 73  ref IntPtr pCurs
28570 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  or..            
28580 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
28590 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
285a0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
285b0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
285c0 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74  E: Called by nat
285d0 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  ive code...     
285e0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
285f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
28600 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  / CheckDisposed(
28610 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d  ); /* EXEMPT */.
28620 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
28630 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d     if (module ==
28640 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
28650 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
28660 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69  rn ModuleNotAvai
28670 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72 28  lableTableError(
28680 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20  pVtab);....     
28690 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
286a0 6e 20 6d 6f 64 75 6c 65 2e 78 4f 70 65 6e 28 70  n module.xOpen(p
286b0 56 74 61 62 2c 20 72 65 66 20 70 43 75 72 73 6f  Vtab, ref pCurso
286c0 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r);..           
286d0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
286e0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
286f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28720 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
28730 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
28740 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
28750 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
28760 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
28770 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73  tiveModule.xClos
28780 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
28790 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
287a0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
287b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
287c0 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22  m name="pCursor"
287d0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
287e0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
287f0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
28800 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65  iveModule.xClose
28810 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
28820 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
28830 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
28840 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
28850 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
28860 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
28870 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
28880 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65  iveModule.xClose
28890 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
288a0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
288b0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
288c0 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c        public SQL
288d0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6c  iteErrorCode xCl
288e0 6f 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ose(..          
288f0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75        IntPtr pCu
28900 72 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20  rsor..          
28910 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
28920 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
28930 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
28940 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
28950 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e  OTE: Called by n
28960 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20  ative code...   
28970 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
28980 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28990 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65   // CheckDispose
289a0 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a  d(); /* EXEMPT *
289b0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
289c0 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20       if (module 
289d0 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
289e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
289f0 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76  turn ModuleNotAv
28a00 61 69 6c 61 62 6c 65 43 75 72 73 6f 72 45 72 72  ailableCursorErr
28a10 6f 72 28 70 43 75 72 73 6f 72 29 3b 0d 0a 0d 0a  or(pCursor);....
28a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28a30 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 43  return module.xC
28a40 6c 6f 73 65 28 70 43 75 72 73 6f 72 29 3b 0d 0a  lose(pCursor);..
28a50 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
28a60 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
28a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28ab0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
28ac0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
28ad0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
28ae0 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
28af0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
28b00 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 22 20 2f  odule.xFilter" /
28b10 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
28b20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
28b30 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
28b40 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
28b50 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20  me="pCursor">.. 
28b60 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
28b70 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
28b80 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
28b90 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 22 20 2f  odule.xFilter" /
28ba0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
28bb0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
28bc0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
28bd0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
28be0 3d 22 69 64 78 4e 75 6d 22 3e 0d 0a 20 20 20 20  ="idxNum">..    
28bf0 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
28c00 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
28c10 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
28c20 6c 65 2e 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d  le.xFilter" /> m
28c30 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
28c40 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
28c50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
28c60 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69  / <param name="i
28c70 64 78 53 74 72 22 3e 0d 0a 20 20 20 20 20 20 20  dxStr">..       
28c80 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
28c90 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
28ca0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
28cb0 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68  xFilter" /> meth
28cc0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
28cd0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
28ce0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
28cf0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 63  param name="argc
28d00 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
28d10 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
28d20 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
28d30 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74  tiveModule.xFilt
28d40 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  er" /> method...
28d50 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
28d60 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
28d70 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
28d80 20 6e 61 6d 65 3d 22 61 72 67 76 22 3e 0d 0a 20   name="argv">.. 
28d90 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
28da0 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
28db0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
28dc0 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 22 20 2f  odule.xFilter" /
28dd0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
28de0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
28df0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
28e00 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
28e10 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
28e20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
28e30 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
28e40 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 22 20  Module.xFilter" 
28e50 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
28e60 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
28e70 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
28e80 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
28e90 65 45 72 72 6f 72 43 6f 64 65 20 78 46 69 6c 74  eErrorCode xFilt
28ea0 65 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  er(..           
28eb0 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72       IntPtr pCur
28ec0 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  sor,..          
28ed0 20 20 20 20 20 20 69 6e 74 20 69 64 78 4e 75 6d        int idxNum
28ee0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
28ef0 20 20 20 49 6e 74 50 74 72 20 69 64 78 53 74 72     IntPtr idxStr
28f00 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
28f10 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20     int argc,..  
28f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
28f30 74 50 74 72 20 61 72 67 76 0d 0a 20 20 20 20 20  tPtr argv..     
28f40 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
28f50 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
28f60 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
28f70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28f80 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64   // NOTE: Called
28f90 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e   by native code.
28fa0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28fb0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
28fc0 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69        // CheckDi
28fd0 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45  sposed(); /* EXE
28fe0 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20  MPT */....      
28ff0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f            if (mo
29000 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  dule == null).. 
29010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29020 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65     return Module
29030 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43 75 72 73  NotAvailableCurs
29040 6f 72 45 72 72 6f 72 28 70 43 75 72 73 6f 72 29  orError(pCursor)
29050 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
29060 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75       return modu
29070 6c 65 2e 78 46 69 6c 74 65 72 28 70 43 75 72 73  le.xFilter(pCurs
29080 6f 72 2c 20 69 64 78 4e 75 6d 2c 20 69 64 78 53  or, idxNum, idxS
29090 74 72 2c 20 61 72 67 63 2c 20 61 72 67 76 29 3b  tr, argc, argv);
290a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
290b0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
290c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
290d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
290e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
290f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29100 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
29110 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
29120 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
29130 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
29140 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
29150 65 4d 6f 64 75 6c 65 2e 78 4e 65 78 74 22 20 2f  eModule.xNext" /
29160 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
29170 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
29180 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
29190 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
291a0 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20  me="pCursor">.. 
291b0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
291c0 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
291d0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
291e0 6f 64 75 6c 65 2e 78 4e 65 78 74 22 20 2f 3e 20  odule.xNext" /> 
291f0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
29200 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
29210 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
29220 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
29230 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
29240 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
29250 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
29260 64 75 6c 65 2e 78 4e 65 78 74 22 20 2f 3e 20 6d  dule.xNext" /> m
29270 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
29280 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
29290 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
292a0 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72  public SQLiteErr
292b0 6f 72 43 6f 64 65 20 78 4e 65 78 74 28 0d 0a 20  orCode xNext(.. 
292c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
292d0 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20  ntPtr pCursor.. 
292e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
292f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
29300 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29310 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
29320 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61       // NOTE: Ca
29330 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63  lled by native c
29340 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ode...          
29350 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
29360 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65            // Che
29370 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a  ckDisposed(); /*
29380 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20   EXEMPT */....  
29390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
293a0 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c   (module == null
293b0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
293c0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f         return Mo
293d0 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65  duleNotAvailable
293e0 43 75 72 73 6f 72 45 72 72 6f 72 28 70 43 75 72  CursorError(pCur
293f0 73 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  sor);....       
29400 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
29410 6d 6f 64 75 6c 65 2e 78 4e 65 78 74 28 70 43 75  module.xNext(pCu
29420 72 73 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20  rsor);..        
29430 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
29440 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
29450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29480 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
29490 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
294a0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
294b0 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
294c0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
294d0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 45  eNativeModule.xE
294e0 6f 66 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  of" /> method...
294f0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
29500 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
29510 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
29520 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72  am name="pCursor
29530 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
29540 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
29550 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
29560 74 69 76 65 4d 6f 64 75 6c 65 2e 78 45 6f 66 22  tiveModule.xEof"
29570 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
29580 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
29590 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
295a0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
295b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
295c0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
295d0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
295e0 76 65 4d 6f 64 75 6c 65 2e 78 45 6f 66 22 20 2f  veModule.xEof" /
295f0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
29600 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
29610 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
29620 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 78 45     public int xE
29630 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  of(..           
29640 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72       IntPtr pCur
29650 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20  sor..           
29660 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
29670 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
29680 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
29690 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
296a0 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61  TE: Called by na
296b0 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20  tive code...    
296c0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
296d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
296e0 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64  // CheckDisposed
296f0 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f  (); /* EXEMPT */
29700 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
29710 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d      if (module =
29720 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
29730 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
29740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29750 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62  ModuleNotAvailab
29760 6c 65 43 75 72 73 6f 72 45 72 72 6f 72 28 70 43  leCursorError(pC
29770 75 72 73 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20  ursor);..       
29780 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
29790 75 72 6e 20 31 3b 0d 0a 20 20 20 20 20 20 20 20  urn 1;..        
297a0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
297b0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
297c0 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 45 6f 66 28  urn module.xEof(
297d0 70 43 75 72 73 6f 72 29 3b 0d 0a 20 20 20 20 20  pCursor);..     
297e0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
297f0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
29800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
29840 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
29850 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
29860 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
29870 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
29880 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
29890 2e 78 43 6f 6c 75 6d 6e 22 20 2f 3e 20 6d 65 74  .xColumn" /> met
298a0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
298b0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
298c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
298d0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
298e0 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20  Cursor">..      
298f0 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
29900 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
29910 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
29920 2e 78 43 6f 6c 75 6d 6e 22 20 2f 3e 20 6d 65 74  .xColumn" /> met
29930 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
29940 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
29950 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
29960 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 6f  <param name="pCo
29970 6e 74 65 78 74 22 3e 0d 0a 20 20 20 20 20 20 20  ntext">..       
29980 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
29990 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
299a0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
299b0 78 43 6f 6c 75 6d 6e 22 20 2f 3e 20 6d 65 74 68  xColumn" /> meth
299c0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
299d0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
299e0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
299f0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65  param name="inde
29a00 78 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  x">..           
29a10 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
29a20 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
29a30 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c  ativeModule.xCol
29a40 75 6d 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  umn" /> method..
29a50 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
29a60 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
29a70 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
29a80 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
29a90 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
29aa0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
29ab0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  NativeModule.xCo
29ac0 6c 75 6d 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  lumn" /> method.
29ad0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
29ae0 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
29af0 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
29b00 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
29b10 20 78 43 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20 20   xColumn(..     
29b20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
29b30 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20  r pCursor,..    
29b40 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
29b50 74 72 20 70 43 6f 6e 74 65 78 74 2c 0d 0a 20 20  tr pContext,..  
29b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
29b70 74 20 69 6e 64 65 78 0d 0a 20 20 20 20 20 20 20  t index..       
29b80 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
29b90 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
29ba0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
29bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
29bc0 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62  / NOTE: Called b
29bd0 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a  y native code...
29be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29bf0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
29c00 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70      // CheckDisp
29c10 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50  osed(); /* EXEMP
29c20 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  T */....        
29c30 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75          if (modu
29c40 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  le == null)..   
29c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29c60 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f   return ModuleNo
29c70 74 41 76 61 69 6c 61 62 6c 65 43 75 72 73 6f 72  tAvailableCursor
29c80 45 72 72 6f 72 28 70 43 75 72 73 6f 72 29 3b 0d  Error(pCursor);.
29c90 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
29ca0 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65     return module
29cb0 2e 78 43 6f 6c 75 6d 6e 28 70 43 75 72 73 6f 72  .xColumn(pCursor
29cc0 2c 20 70 43 6f 6e 74 65 78 74 2c 20 69 6e 64 65  , pContext, inde
29cd0 78 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  x);..           
29ce0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
29cf0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
29d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29d30 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
29d40 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
29d50 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
29d60 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
29d70 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
29d80 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 77 49  tiveModule.xRowI
29d90 64 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  d" /> method... 
29da0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
29db0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
29dc0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
29dd0 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22  m name="pCursor"
29de0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
29df0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
29e00 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
29e10 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64  iveModule.xRowId
29e20 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
29e30 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
29e40 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
29e50 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
29e60 61 6d 65 3d 22 72 6f 77 49 64 22 3e 0d 0a 20 20  ame="rowId">..  
29e70 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
29e80 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
29e90 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
29ea0 64 75 6c 65 2e 78 52 6f 77 49 64 22 20 2f 3e 20  dule.xRowId" /> 
29eb0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
29ec0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
29ed0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
29ee0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
29ef0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
29f00 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
29f10 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
29f20 64 75 6c 65 2e 78 52 6f 77 49 64 22 20 2f 3e 20  dule.xRowId" /> 
29f30 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
29f40 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
29f50 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
29f60 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72   public SQLiteEr
29f70 72 6f 72 43 6f 64 65 20 78 52 6f 77 49 64 28 0d  rorCode xRowId(.
29f80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29f90 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 2c   IntPtr pCursor,
29fa0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29fb0 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64    ref long rowId
29fc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29fd0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
29fe0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
29ff0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
2a000 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
2a010 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76   Called by nativ
2a020 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  e code...       
2a030 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
2a040 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2a050 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
2a060 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d   /* EXEMPT */...
2a070 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a080 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e   if (module == n
2a090 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
2a0a0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2a0b0 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61   ModuleNotAvaila
2a0c0 62 6c 65 43 75 72 73 6f 72 45 72 72 6f 72 28 70  bleCursorError(p
2a0d0 43 75 72 73 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20  Cursor);....    
2a0e0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2a0f0 72 6e 20 6d 6f 64 75 6c 65 2e 78 52 6f 77 49 64  rn module.xRowId
2a100 28 70 43 75 72 73 6f 72 2c 20 72 65 66 20 72 6f  (pCursor, ref ro
2a110 77 49 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  wId);..         
2a120 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
2a130 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2a140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a170 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2a180 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
2a190 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
2a1a0 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
2a1b0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2a1c0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70  NativeModule.xUp
2a1d0 64 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  date" /> method.
2a1e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2a1f0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2a200 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
2a210 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62  aram name="pVtab
2a220 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
2a230 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
2a240 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
2a250 74 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61  tiveModule.xUpda
2a260 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  te" /> method...
2a270 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2a280 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
2a290 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
2a2a0 20 6e 61 6d 65 3d 22 61 72 67 63 22 3e 0d 0a 20   name="argc">.. 
2a2b0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
2a2c0 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
2a2d0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
2a2e0 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 22 20 2f  odule.xUpdate" /
2a2f0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
2a300 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
2a310 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
2a320 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2a330 3d 22 61 72 67 76 22 3e 0d 0a 20 20 20 20 20 20  ="argv">..      
2a340 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
2a350 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
2a360 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2a370 2e 78 55 70 64 61 74 65 22 20 2f 3e 20 6d 65 74  .xUpdate" /> met
2a380 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
2a390 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2a3a0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2a3b0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 72 6f 77  <param name="row
2a3c0 49 64 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  Id">..          
2a3d0 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
2a3e0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2a3f0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70  NativeModule.xUp
2a400 64 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  date" /> method.
2a410 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2a420 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
2a430 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
2a440 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
2a450 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2a460 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2a470 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 55  eNativeModule.xU
2a480 70 64 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64  pdate" /> method
2a490 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2a4a0 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
2a4b0 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
2a4c0 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  c SQLiteErrorCod
2a4d0 65 20 78 55 70 64 61 74 65 28 0d 0a 20 20 20 20  e xUpdate(..    
2a4e0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
2a4f0 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
2a500 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 61             int a
2a510 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  rgc,..          
2a520 20 20 20 20 20 20 49 6e 74 50 74 72 20 61 72 67        IntPtr arg
2a530 76 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  v,..            
2a540 20 20 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77      ref long row
2a550 49 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  Id..            
2a560 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
2a570 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2a580 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
2a590 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
2a5a0 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74  E: Called by nat
2a5b0 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  ive code...     
2a5c0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
2a5d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2a5e0 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  / CheckDisposed(
2a5f0 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d  ); /* EXEMPT */.
2a600 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2a610 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d     if (module ==
2a620 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
2a630 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2a640 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69  rn ModuleNotAvai
2a650 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72 28  lableTableError(
2a660 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20  pVtab);....     
2a670 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2a680 6e 20 6d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65  n module.xUpdate
2a690 28 70 56 74 61 62 2c 20 61 72 67 63 2c 20 61 72  (pVtab, argc, ar
2a6a0 67 76 2c 20 72 65 66 20 72 6f 77 49 64 29 3b 0d  gv, ref rowId);.
2a6b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2a6c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2a6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a6e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a6f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a710 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
2a720 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
2a730 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2a740 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
2a750 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
2a760 4d 6f 64 75 6c 65 2e 78 42 65 67 69 6e 22 20 2f  Module.xBegin" /
2a770 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
2a780 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
2a790 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
2a7a0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2a7b0 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20  me="pVtab">..   
2a7c0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
2a7d0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
2a7e0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2a7f0 75 6c 65 2e 78 42 65 67 69 6e 22 20 2f 3e 20 6d  ule.xBegin" /> m
2a800 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2a810 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2a820 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2a830 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
2a840 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
2a850 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
2a860 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2a870 75 6c 65 2e 78 42 65 67 69 6e 22 20 2f 3e 20 6d  ule.xBegin" /> m
2a880 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2a890 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
2a8a0 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
2a8b0 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72  public SQLiteErr
2a8c0 6f 72 43 6f 64 65 20 78 42 65 67 69 6e 28 0d 0a  orCode xBegin(..
2a8d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a8e0 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20  IntPtr pVtab..  
2a8f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
2a900 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
2a910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a920 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
2a930 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c      // NOTE: Cal
2a940 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f  led by native co
2a950 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  de...           
2a960 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
2a970 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63           // Chec
2a980 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20  kDisposed(); /* 
2a990 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20  EXEMPT */....   
2a9a0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2a9b0 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29  (module == null)
2a9c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a9d0 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64        return Mod
2a9e0 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54  uleNotAvailableT
2a9f0 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29  ableError(pVtab)
2aa00 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2aa10 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75       return modu
2aa20 6c 65 2e 78 42 65 67 69 6e 28 70 56 74 61 62 29  le.xBegin(pVtab)
2aa30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
2aa40 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2aa50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aa60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aa70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aa80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aa90 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
2aaa0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2aab0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2aac0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
2aad0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
2aae0 76 65 4d 6f 64 75 6c 65 2e 78 53 79 6e 63 22 20  veModule.xSync" 
2aaf0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2ab00 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
2ab10 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2ab20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
2ab30 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20  ame="pVtab">..  
2ab40 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2ab50 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
2ab60 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2ab70 64 75 6c 65 2e 78 53 79 6e 63 22 20 2f 3e 20 6d  dule.xSync" /> m
2ab80 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2ab90 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2aba0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2abb0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
2abc0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
2abd0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
2abe0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2abf0 75 6c 65 2e 78 53 79 6e 63 22 20 2f 3e 20 6d 65  ule.xSync" /> me
2ac00 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2ac10 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
2ac20 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
2ac30 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f  ublic SQLiteErro
2ac40 72 43 6f 64 65 20 78 53 79 6e 63 28 0d 0a 20 20  rCode xSync(..  
2ac50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
2ac60 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20  tPtr pVtab..    
2ac70 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
2ac80 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2ac90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2aca0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2acb0 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65    // NOTE: Calle
2acc0 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65  d by native code
2acd0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2ace0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
2acf0 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44         // CheckD
2ad00 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58  isposed(); /* EX
2ad10 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20  EMPT */....     
2ad20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d             if (m
2ad30 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  odule == null)..
2ad40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ad50 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c      return Modul
2ad60 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62  eNotAvailableTab
2ad70 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d  leError(pVtab);.
2ad80 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2ad90 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65     return module
2ada0 2e 78 53 79 6e 63 28 70 56 74 61 62 29 3b 0d 0a  .xSync(pVtab);..
2adb0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
2adc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2add0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ade0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2adf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ae00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ae10 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2ae20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2ae30 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
2ae40 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
2ae50 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
2ae60 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 22 20 2f  odule.xCommit" /
2ae70 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
2ae80 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
2ae90 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
2aea0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2aeb0 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20  me="pVtab">..   
2aec0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
2aed0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
2aee0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2aef0 75 6c 65 2e 78 43 6f 6d 6d 69 74 22 20 2f 3e 20  ule.xCommit" /> 
2af00 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2af10 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2af20 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2af30 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
2af40 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2af50 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
2af60 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2af70 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 22 20 2f 3e  dule.xCommit" />
2af80 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
2af90 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
2afa0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
2afb0 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45    public SQLiteE
2afc0 72 72 6f 72 43 6f 64 65 20 78 43 6f 6d 6d 69 74  rrorCode xCommit
2afd0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2afe0 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d     IntPtr pVtab.
2aff0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b000 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
2b010 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2b020 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
2b030 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
2b040 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65  Called by native
2b050 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
2b060 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
2b070 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43              // C
2b080 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20  heckDisposed(); 
2b090 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a  /* EXEMPT */....
2b0a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b0b0 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75  if (module == nu
2b0c0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
2b0d0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2b0e0 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62  ModuleNotAvailab
2b0f0 6c 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74  leTableError(pVt
2b100 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ab);....        
2b110 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d          return m
2b120 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 28 70 56  odule.xCommit(pV
2b130 74 61 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  tab);..         
2b140 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
2b150 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2b160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b190 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2b1a0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
2b1b0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
2b1c0 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
2b1d0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2b1e0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f  NativeModule.xRo
2b1f0 6c 6c 62 61 63 6b 22 20 2f 3e 20 6d 65 74 68 6f  llback" /> metho
2b200 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
2b210 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
2b220 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2b230 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74  <param name="pVt
2b240 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ab">..          
2b250 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
2b260 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2b270 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f  NativeModule.xRo
2b280 6c 6c 62 61 63 6b 22 20 2f 3e 20 6d 65 74 68 6f  llback" /> metho
2b290 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
2b2a0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
2b2b0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72            /// <r
2b2c0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
2b2d0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2b2e0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2b2f0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2b300 78 52 6f 6c 6c 62 61 63 6b 22 20 2f 3e 20 6d 65  xRollback" /> me
2b310 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2b320 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
2b330 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
2b340 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f  ublic SQLiteErro
2b350 72 43 6f 64 65 20 78 52 6f 6c 6c 62 61 63 6b 28  rCode xRollback(
2b360 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b370 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a    IntPtr pVtab..
2b380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b390 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
2b3a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b3b0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
2b3c0 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43        // NOTE: C
2b3d0 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20  alled by native 
2b3e0 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  code...         
2b3f0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
2b400 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68             // Ch
2b410 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f  eckDisposed(); /
2b420 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20  * EXEMPT */.... 
2b430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
2b440 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c  f (module == nul
2b450 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
2b460 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d          return M
2b470 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c  oduleNotAvailabl
2b480 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61  eTableError(pVta
2b490 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  b);....         
2b4a0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f         return mo
2b4b0 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 28 70  dule.xRollback(p
2b4c0 56 74 61 62 29 3b 0d 0a 20 20 20 20 20 20 20 20  Vtab);..        
2b4d0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2b4e0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2b4f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b520 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2b530 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
2b540 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
2b550 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2b560 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2b570 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46  eNativeModule.xF
2b580 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20  indFunction" /> 
2b590 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2b5a0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
2b5b0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
2b5c0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2b5d0 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20  ="pVtab">..     
2b5e0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
2b5f0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
2b600 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2b610 65 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 22  e.xFindFunction"
2b620 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
2b630 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
2b640 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
2b650 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2b660 6d 65 3d 22 6e 41 72 67 22 3e 0d 0a 20 20 20 20  me="nArg">..    
2b670 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
2b680 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
2b690 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2b6a0 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e  le.xFindFunction
2b6b0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
2b6c0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2b6d0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
2b6e0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
2b6f0 61 6d 65 3d 22 7a 4e 61 6d 65 22 3e 0d 0a 20 20  ame="zName">..  
2b700 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2b710 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
2b720 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2b730 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74 69  dule.xFindFuncti
2b740 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  on" /> method...
2b750 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2b760 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
2b770 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
2b780 20 6e 61 6d 65 3d 22 63 61 6c 6c 62 61 63 6b 22   name="callback"
2b790 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2b7a0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
2b7b0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
2b7c0 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46  iveModule.xFindF
2b7d0 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6d 65 74 68  unction" /> meth
2b7e0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
2b7f0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
2b800 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2b810 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 6c 69  param name="pCli
2b820 65 6e 74 44 61 74 61 22 3e 0d 0a 20 20 20 20 20  entData">..     
2b830 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
2b840 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
2b850 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2b860 65 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 22  e.xFindFunction"
2b870 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
2b880 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
2b890 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
2b8a0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
2b8b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2b8c0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
2b8d0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
2b8e0 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75  veModule.xFindFu
2b8f0 6e 63 74 69 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f  nction" /> metho
2b900 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
2b910 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
2b920 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
2b930 69 63 20 69 6e 74 20 78 46 69 6e 64 46 75 6e 63  ic int xFindFunc
2b940 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20  tion(..         
2b950 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
2b960 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  tab,..          
2b970 20 20 20 20 20 20 69 6e 74 20 6e 41 72 67 2c 0d        int nArg,.
2b980 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b990 20 49 6e 74 50 74 72 20 7a 4e 61 6d 65 2c 0d 0a   IntPtr zName,..
2b9a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b9b0 72 65 66 20 53 51 4c 69 74 65 43 61 6c 6c 62 61  ref SQLiteCallba
2b9c0 63 6b 20 63 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20  ck callback,..  
2b9d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2b9e0 66 20 49 6e 74 50 74 72 20 70 43 6c 69 65 6e 74  f IntPtr pClient
2b9f0 44 61 74 61 0d 0a 20 20 20 20 20 20 20 20 20 20  Data..          
2ba00 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
2ba10 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2ba20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
2ba30 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
2ba40 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e  OTE: Called by n
2ba50 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20  ative code...   
2ba60 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
2ba70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ba80 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65   // CheckDispose
2ba90 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a  d(); /* EXEMPT *
2baa0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
2bab0 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20       if (module 
2bac0 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
2bad0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2bae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2baf0 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61   ModuleNotAvaila
2bb00 62 6c 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56  bleTableError(pV
2bb10 74 61 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  tab);..         
2bb20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2bb30 6e 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  n 0;..          
2bb40 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2bb50 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2bb60 6e 20 6d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75  n module.xFindFu
2bb70 6e 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20  nction(..       
2bb80 20 20 20 20 20 20 20 20 20 20 20 20 20 70 56 74               pVt
2bb90 61 62 2c 20 6e 41 72 67 2c 20 7a 4e 61 6d 65 2c  ab, nArg, zName,
2bba0 20 72 65 66 20 63 61 6c 6c 62 61 63 6b 2c 20 72   ref callback, r
2bbb0 65 66 20 70 43 6c 69 65 6e 74 44 61 74 61 29 3b  ef pClientData);
2bbc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2bbd0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2bbe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bbf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bc00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bc10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bc20 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
2bc30 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
2bc40 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2bc50 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
2bc60 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
2bc70 65 4d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65 22  eModule.xRename"
2bc80 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
2bc90 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73           /// </s
2bca0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2bcb0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
2bcc0 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20  name="pVtab">.. 
2bcd0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
2bce0 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
2bcf0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
2bd00 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65 22 20 2f  odule.xRename" /
2bd10 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
2bd20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
2bd30 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
2bd40 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2bd50 3d 22 7a 4e 65 77 22 3e 0d 0a 20 20 20 20 20 20  ="zNew">..      
2bd60 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
2bd70 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
2bd80 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2bd90 2e 78 52 65 6e 61 6d 65 22 20 2f 3e 20 6d 65 74  .xRename" /> met
2bda0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
2bdb0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2bdc0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2bdd0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
2bde0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
2bdf0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
2be00 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2be10 65 2e 78 52 65 6e 61 6d 65 22 20 2f 3e 20 6d 65  e.xRename" /> me
2be20 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2be30 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
2be40 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
2be50 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f  ublic SQLiteErro
2be60 72 43 6f 64 65 20 78 52 65 6e 61 6d 65 28 0d 0a  rCode xRename(..
2be70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2be80 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
2be90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
2bea0 6e 74 50 74 72 20 7a 4e 65 77 0d 0a 20 20 20 20  ntPtr zNew..    
2beb0 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
2bec0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2bed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2bee0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2bef0 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65    // NOTE: Calle
2bf00 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65  d by native code
2bf10 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2bf20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
2bf30 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44         // CheckD
2bf40 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58  isposed(); /* EX
2bf50 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20  EMPT */....     
2bf60 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d             if (m
2bf70 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  odule == null)..
2bf80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bf90 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c      return Modul
2bfa0 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62  eNotAvailableTab
2bfb0 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d  leError(pVtab);.
2bfc0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2bfd0 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65     return module
2bfe0 2e 78 52 65 6e 61 6d 65 28 70 56 74 61 62 2c 20  .xRename(pVtab, 
2bff0 7a 4e 65 77 29 3b 0d 0a 20 20 20 20 20 20 20 20  zNew);..        
2c000 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2c010 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2c020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c050 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2c060 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
2c070 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
2c080 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2c090 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2c0a0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53  eNativeModule.xS
2c0b0 61 76 65 70 6f 69 6e 74 22 20 2f 3e 20 6d 65 74  avepoint" /> met
2c0c0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
2c0d0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2c0e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2c0f0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
2c100 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
2c110 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
2c120 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
2c130 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
2c140 53 61 76 65 70 6f 69 6e 74 22 20 2f 3e 20 6d 65  Savepoint" /> me
2c150 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2c160 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
2c170 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2c180 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 53   <param name="iS
2c190 61 76 65 70 6f 69 6e 74 22 3e 0d 0a 20 20 20 20  avepoint">..    
2c1a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
2c1b0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
2c1c0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2c1d0 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74 22 20 2f  le.xSavepoint" /
2c1e0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
2c1f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
2c200 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
2c210 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
2c220 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2c230 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
2c240 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
2c250 4d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e  Module.xSavepoin
2c260 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  t" /> method... 
2c270 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2c280 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
2c290 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51         public SQ
2c2a0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 53  LiteErrorCode xS
2c2b0 61 76 65 70 6f 69 6e 74 28 0d 0a 20 20 20 20 20  avepoint(..     
2c2c0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
2c2d0 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20  r pVtab,..      
2c2e0 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 53            int iS
2c2f0 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20 20 20  avepoint..      
2c300 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
2c310 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2c320 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
2c330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c340 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20  // NOTE: Called 
2c350 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d  by native code..
2c360 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c370 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
2c380 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73       // CheckDis
2c390 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d  posed(); /* EXEM
2c3a0 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  PT */....       
2c3b0 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64           if (mod
2c3c0 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ule == null)..  
2c3d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c3e0 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e    return ModuleN
2c3f0 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65  otAvailableTable
2c400 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d  Error(pVtab);...
2c410 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c420 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78   return module.x
2c430 53 61 76 65 70 6f 69 6e 74 28 70 56 74 61 62 2c  Savepoint(pVtab,
2c440 20 69 53 61 76 65 70 6f 69 6e 74 29 3b 0d 0a 20   iSavepoint);.. 
2c450 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
2c460 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
2c470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c4a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2c4b0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2c4c0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
2c4d0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2c4e0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
2c4f0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2c500 64 75 6c 65 2e 78 52 65 6c 65 61 73 65 22 20 2f  dule.xRelease" /
2c510 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
2c520 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
2c530 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
2c540 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2c550 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20  me="pVtab">..   
2c560 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
2c570 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
2c580 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2c590 75 6c 65 2e 78 52 65 6c 65 61 73 65 22 20 2f 3e  ule.xRelease" />
2c5a0 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
2c5b0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
2c5c0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
2c5d0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
2c5e0 22 69 53 61 76 65 70 6f 69 6e 74 22 3e 0d 0a 20  "iSavepoint">.. 
2c5f0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
2c600 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
2c610 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
2c620 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73 65 22 20  odule.xRelease" 
2c630 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2c640 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
2c650 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
2c660 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
2c670 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2c680 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
2c690 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
2c6a0 65 4d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73 65  eModule.xRelease
2c6b0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
2c6c0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2c6d0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
2c6e0 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c        public SQL
2c6f0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52 65  iteErrorCode xRe
2c700 6c 65 61 73 65 28 0d 0a 20 20 20 20 20 20 20 20  lease(..        
2c710 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
2c720 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20  Vtab,..         
2c730 20 20 20 20 20 20 20 69 6e 74 20 69 53 61 76 65         int iSave
2c740 70 6f 69 6e 74 0d 0a 20 20 20 20 20 20 20 20 20  point..         
2c750 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
2c760 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2c770 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
2c780 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2c790 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20  NOTE: Called by 
2c7a0 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20  native code...  
2c7b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2c7c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2c7d0 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73    // CheckDispos
2c7e0 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20  ed(); /* EXEMPT 
2c7f0 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  */....          
2c800 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65        if (module
2c810 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
2c820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2c830 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41  eturn ModuleNotA
2c840 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72  vailableTableErr
2c850 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20  or(pVtab);....  
2c860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2c870 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 52 65 6c  turn module.xRel
2c880 65 61 73 65 28 70 56 74 61 62 2c 20 69 53 61 76  ease(pVtab, iSav
2c890 65 70 6f 69 6e 74 29 3b 0d 0a 20 20 20 20 20 20  epoint);..      
2c8a0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2c8b0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2c8c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c8d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c8e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c8f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2c900 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73            /// <s
2c910 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2c920 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2c930 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2c940 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2c950 78 52 6f 6c 6c 62 61 63 6b 54 6f 22 20 2f 3e 20  xRollbackTo" /> 
2c960 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2c970 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
2c980 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
2c990 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2c9a0 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20  ="pVtab">..     
2c9b0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
2c9c0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
2c9d0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2c9e0 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 22 20 2f  e.xRollbackTo" /
2c9f0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
2ca00 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
2ca10 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
2ca20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2ca30 3d 22 69 53 61 76 65 70 6f 69 6e 74 22 3e 0d 0a  ="iSavepoint">..
2ca40 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2ca50 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
2ca60 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
2ca70 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b  Module.xRollback
2ca80 54 6f 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  To" /> method...
2ca90 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2caa0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
2cab0 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
2cac0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
2cad0 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
2cae0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
2caf0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c  ativeModule.xRol
2cb00 6c 62 61 63 6b 54 6f 22 20 2f 3e 20 6d 65 74 68  lbackTo" /> meth
2cb10 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
2cb20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
2cb30 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
2cb40 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43  lic SQLiteErrorC
2cb50 6f 64 65 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 28  ode xRollbackTo(
2cb60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2cb70 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d    IntPtr pVtab,.
2cb80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2cb90 20 69 6e 74 20 69 53 61 76 65 70 6f 69 6e 74 0d   int iSavepoint.
2cba0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2cbb0 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
2cbc0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2cbd0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
2cbe0 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
2cbf0 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65  Called by native
2cc00 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
2cc10 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
2cc20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43              // C
2cc30 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20  heckDisposed(); 
2cc40 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a  /* EXEMPT */....
2cc50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cc60 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75  if (module == nu
2cc70 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
2cc80 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2cc90 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62  ModuleNotAvailab
2cca0 6c 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74  leTableError(pVt
2ccb0 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ab);....        
2ccc0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d          return m
2ccd0 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54  odule.xRollbackT
2cce0 6f 28 70 56 74 61 62 2c 20 69 53 61 76 65 70 6f  o(pVtab, iSavepo
2ccf0 69 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  int);..         
2cd00 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
2cd10 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
2cd20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
2cd30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cd40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cd50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cd60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2cd70 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ...            #
2cd80 72 65 67 69 6f 6e 20 49 44 69 73 70 6f 73 61 62  region IDisposab
2cd90 6c 65 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20  le Members..    
2cda0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
2cdb0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
2cdc0 20 20 20 2f 2f 2f 20 44 69 73 70 6f 73 65 73 20     /// Disposes 
2cdd0 6f 66 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69  of this object i
2cde0 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20  nstance...      
2cdf0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
2ce00 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
2ce10 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 44 69    public void Di
2ce20 73 70 6f 73 65 28 29 0d 0a 20 20 20 20 20 20 20  spose()..       
2ce30 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2ce40 20 20 20 20 20 20 20 20 44 69 73 70 6f 73 65 28          Dispose(
2ce50 74 72 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  true);..        
2ce60 20 20 20 20 20 20 20 20 47 43 2e 53 75 70 70 72          GC.Suppr
2ce70 65 73 73 46 69 6e 61 6c 69 7a 65 28 74 68 69 73  essFinalize(this
2ce80 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2ce90 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  }..            #
2cea0 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
2ceb0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
2cec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ced0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2cf00 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67              #reg
2cf10 69 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c 65 20  ion IDisposable 
2cf20 22 50 61 74 74 65 72 6e 22 20 4d 65 6d 62 65 72  "Pattern" Member
2cf30 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  s..            p
2cf40 72 69 76 61 74 65 20 62 6f 6f 6c 20 64 69 73 70  rivate bool disp
2cf50 6f 73 65 64 3b 0d 0a 20 20 20 20 20 20 20 20 20  osed;..         
2cf60 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2cf70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2cf80 2f 20 54 68 72 6f 77 73 20 61 6e 20 3c 73 65 65  / Throws an <see
2cf90 20 63 72 65 66 3d 22 4f 62 6a 65 63 74 44 69 73   cref="ObjectDis
2cfa0 70 6f 73 65 64 45 78 63 65 70 74 69 6f 6e 22 20  posedException" 
2cfb0 2f 3e 20 69 66 20 74 68 69 73 20 6f 62 6a 65 63  /> if this objec
2cfc0 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  t..            /
2cfd0 2f 2f 20 69 6e 73 74 61 6e 63 65 20 68 61 73 20  // instance has 
2cfe0 62 65 65 6e 20 64 69 73 70 6f 73 65 64 2e 0d 0a  been disposed...
2cff0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2d000 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
2d010 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
2d020 76 6f 69 64 20 43 68 65 63 6b 44 69 73 70 6f 73  void CheckDispos
2d030 65 64 28 29 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  ed() /* throw */
2d040 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2d050 0a 23 69 66 20 54 48 52 4f 57 5f 4f 4e 5f 44 49  .#if THROW_ON_DI
2d060 53 50 4f 53 45 44 0d 0a 20 20 20 20 20 20 20 20  SPOSED..        
2d070 20 20 20 20 20 20 20 20 69 66 20 28 64 69 73 70          if (disp
2d080 6f 73 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20  osed)..         
2d090 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2d0a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
2d0b0 72 6f 77 20 6e 65 77 20 4f 62 6a 65 63 74 44 69  row new ObjectDi
2d0c0 73 70 6f 73 65 64 45 78 63 65 70 74 69 6f 6e 28  sposedException(
2d0d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d0e0 20 20 20 20 20 20 20 20 20 20 74 79 70 65 6f 66            typeof
2d0f0 28 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  (SQLiteNativeMod
2d100 75 6c 65 29 2e 4e 61 6d 65 29 3b 0d 0a 20 20 20  ule).Name);..   
2d110 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2d120 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
2d130 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2d140 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2d150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d180 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2d190 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
2d1a0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
2d1b0 20 20 20 2f 2f 2f 20 44 69 73 70 6f 73 65 73 20     /// Disposes 
2d1c0 6f 66 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69  of this object i
2d1d0 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20  nstance...      
2d1e0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
2d1f0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
2d200 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2d210 65 3d 22 64 69 73 70 6f 73 69 6e 67 22 3e 0d 0a  e="disposing">..
2d220 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2d230 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 69 73  Non-zero if this
2d240 20 6d 65 74 68 6f 64 20 69 73 20 62 65 69 6e 67   method is being
2d250 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 74 68 65   called from the
2d260 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2d270 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 44 69 73  / <see cref="Dis
2d280 70 6f 73 65 28 29 22 20 2f 3e 20 6d 65 74 68 6f  pose()" /> metho
2d290 64 2e 20 20 5a 65 72 6f 20 69 66 20 74 68 69 73  d.  Zero if this
2d2a0 20 6d 65 74 68 6f 64 20 69 73 20 62 65 69 6e 67   method is being
2d2b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2d2c0 2f 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 74 68  / called from th
2d2d0 65 20 66 69 6e 61 6c 69 7a 65 72 2e 0d 0a 20 20  e finalizer...  
2d2e0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2d2f0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
2d300 20 20 20 20 70 72 69 76 61 74 65 20 2f 2a 20 70      private /* p
2d310 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c  rotected virtual
2d320 20 2a 2f 20 76 6f 69 64 20 44 69 73 70 6f 73 65   */ void Dispose
2d330 28 62 6f 6f 6c 20 64 69 73 70 6f 73 69 6e 67 29  (bool disposing)
2d340 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2d350 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d360 20 69 66 20 28 21 64 69 73 70 6f 73 65 64 29 0d   if (!disposed).
2d370 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d380 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2d390 20 20 20 20 20 20 20 20 2f 2f 69 66 20 28 64 69          //if (di
2d3a0 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20 20  sposing)..      
2d3b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2d3c0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2d3d0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 2f         //    ///
2d3e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d3f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d400 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
2d410 20 20 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 20         //    // 
2d420 64 69 73 70 6f 73 65 20 6d 61 6e 61 67 65 64 20  dispose managed 
2d430 72 65 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e  resources here..
2d440 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2d450 20 20 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 2f         //    ///
2d460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d480 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
2d490 20 20 20 20 20 20 20 2f 2f 7d 0d 0a 0d 0a 20 20         //}....  
2d4a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d4b0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2d4c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d4d0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
2d4e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2d4f0 20 72 65 6c 65 61 73 65 20 75 6e 6d 61 6e 61 67   release unmanag
2d500 65 64 20 72 65 73 6f 75 72 63 65 73 20 68 65 72  ed resources her
2d510 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  e.....          
2d520 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
2d530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d550 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2d560 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
2d570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d580 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20 6d 6f 64  // NOTE: The mod
2d590 75 6c 65 20 69 73 20 6e 6f 74 20 6f 77 6e 65 64  ule is not owned
2d5a0 20 62 79 20 75 73 3b 20 74 68 65 72 65 66 6f 72   by us; therefor
2d5b0 65 2c 20 64 6f 20 6e 6f 74 0d 0a 20 20 20 20 20  e, do not..     
2d5c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2d5d0 2f 20 20 20 20 20 20 20 64 69 73 70 6f 73 65 20  /       dispose 
2d5e0 69 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  it...           
2d5f0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
2d600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d610 20 69 66 20 28 6d 6f 64 75 6c 65 20 21 3d 20 6e   if (module != n
2d620 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
2d630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f                mo
2d640 64 75 6c 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a  dule = null;....
2d650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d660 20 20 20 20 64 69 73 70 6f 73 65 64 20 3d 20 74      disposed = t
2d670 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
2d680 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2d690 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2d6a0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
2d6b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2d6c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d6e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d6f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d700 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
2d710 20 23 72 65 67 69 6f 6e 20 44 65 73 74 72 75 63   #region Destruc
2d720 74 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tor..           
2d730 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
2d740 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2d750 46 69 6e 61 6c 69 7a 65 73 20 74 68 69 73 20 6f  Finalizes this o
2d760 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d  bject instance..
2d770 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2d780 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
2d790 20 20 20 20 20 20 20 20 20 7e 53 51 4c 69 74 65           ~SQLite
2d7a0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 28 29 0d 0a  NativeModule()..
2d7b0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2d7c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44                 D
2d7d0 69 73 70 6f 73 65 28 66 61 6c 73 65 29 3b 0d 0a  ispose(false);..
2d7e0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2d7f0 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72             #endr
2d800 65 67 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 7d  egion..        }
2d810 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
2d820 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
2d830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d870 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2d880 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
2d890 74 65 20 43 6f 6e 73 74 61 6e 74 73 0d 0a 20 20  te Constants..  
2d8a0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
2d8b0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
2d8c0 20 54 68 65 20 64 65 66 61 75 6c 74 20 76 65 72   The default ver
2d8d0 73 69 6f 6e 20 6f 66 20 74 68 65 20 6e 61 74 69  sion of the nati
2d8e0 76 65 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c  ve sqlite3_modul
2d8f0 65 20 73 74 72 75 63 74 75 72 65 20 69 6e 20 75  e structure in u
2d900 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  se...        ///
2d910 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
2d920 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
2d930 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 69 6e 74  tic readonly int
2d940 20 44 65 66 61 75 6c 74 4d 6f 64 75 6c 65 56 65   DefaultModuleVe
2d950 72 73 69 6f 6e 20 3d 20 32 3b 0d 0a 20 20 20 20  rsion = 2;..    
2d960 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
2d970 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2d980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d9a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d9b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d9c0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
2d9d0 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61 74  gion Private Dat
2d9e0 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  a..        /// <
2d9f0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2da00 20 20 2f 2f 2f 20 54 68 69 73 20 66 69 65 6c 64    /// This field
2da10 20 69 73 20 75 73 65 64 20 74 6f 20 73 74 6f 72   is used to stor
2da20 65 20 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c  e the native sql
2da30 69 74 65 33 5f 6d 6f 64 75 6c 65 20 73 74 72 75  ite3_module stru
2da40 63 74 75 72 65 0d 0a 20 20 20 20 20 20 20 20 2f  cture..        /
2da50 2f 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  // associated wi
2da60 74 68 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69  th this object i
2da70 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20  nstance...      
2da80 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2da90 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
2daa0 65 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  e UnsafeNativeMe
2dab0 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f  thods.sqlite3_mo
2dac0 64 75 6c 65 20 6e 61 74 69 76 65 4d 6f 64 75 6c  dule nativeModul
2dad0 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  e;....        //
2dae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2daf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2db00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2db10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2db20 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2db30 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
2db40 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
2db50 20 66 69 65 6c 64 20 69 73 20 75 73 65 64 20 74   field is used t
2db60 6f 20 73 74 6f 72 65 20 74 68 65 20 64 65 73 74  o store the dest
2db70 72 75 63 74 6f 72 20 64 65 6c 65 67 61 74 65 20  ructor delegate 
2db80 74 6f 20 62 65 20 70 61 73 73 65 64 20 74 6f 0d  to be passed to.
2db90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  .        /// the
2dba0 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62   SQLite core lib
2dbb0 72 61 72 79 20 76 69 61 20 74 68 65 20 73 71 6c  rary via the sql
2dbc0 69 74 65 33 5f 63 72 65 61 74 65 5f 64 69 73 70  ite3_create_disp
2dbd0 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65 28 29 0d  osable_module().
2dbe0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 66 75 6e  .        /// fun
2dbf0 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ction...        
2dc00 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
2dc10 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
2dc20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
2dc30 6f 64 73 2e 78 44 65 73 74 72 6f 79 4d 6f 64 75  ods.xDestroyModu
2dc40 6c 65 20 64 65 73 74 72 6f 79 4d 6f 64 75 6c 65  le destroyModule
2dc50 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
2dc60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dc70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dc80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dc90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dca0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2dcb0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2dcc0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
2dcd0 66 69 65 6c 64 20 69 73 20 75 73 65 64 20 74 6f  field is used to
2dce0 20 73 74 6f 72 65 20 61 20 70 6f 69 6e 74 65 72   store a pointer
2dcf0 20 74 6f 20 74 68 65 20 6e 61 74 69 76 65 20 73   to the native s
2dd00 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20  qlite3_module.. 
2dd10 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63         /// struc
2dd20 74 75 72 65 20 72 65 74 75 72 6e 65 64 20 62 79  ture returned by
2dd30 20 74 68 65 20 73 71 6c 69 74 65 33 5f 63 72 65   the sqlite3_cre
2dd40 61 74 65 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d  ate_disposable_m
2dd50 6f 64 75 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f  odule..        /
2dd60 2f 2f 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20  // function...  
2dd70 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
2dd80 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  ary>..        pr
2dd90 69 76 61 74 65 20 49 6e 74 50 74 72 20 64 69 73  ivate IntPtr dis
2dda0 70 6f 73 61 62 6c 65 4d 6f 64 75 6c 65 3b 0d 0a  posableModule;..
2ddb0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2ddc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ddd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dde0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ddf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2de00 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52  /....#if PLATFOR
2de10 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
2de20 52 4b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  RK..        /// 
2de30 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2de40 20 20 20 2f 2f 2f 20 54 68 69 73 20 66 69 65 6c     /// This fiel
2de50 64 20 69 73 20 75 73 65 64 20 74 6f 20 68 6f 6c  d is used to hol
2de60 64 20 74 68 65 20 62 6c 6f 63 6b 20 6f 66 20 6e  d the block of n
2de70 61 74 69 76 65 20 6d 65 6d 6f 72 79 20 74 68 61  ative memory tha
2de80 74 20 63 6f 6e 74 61 69 6e 73 0d 0a 20 20 20 20  t contains..    
2de90 20 20 20 20 2f 2f 2f 20 74 68 65 20 6e 61 74 69      /// the nati
2dea0 76 65 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c  ve sqlite3_modul
2deb0 65 20 73 74 72 75 63 74 75 72 65 20 61 73 73 6f  e structure asso
2dec0 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73  ciated with this
2ded0 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 20   object..       
2dee0 20 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 20 77 68   /// instance wh
2def0 65 6e 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 74 68  en running on th
2df00 65 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20 46  e .NET Compact F
2df10 72 61 6d 65 77 6f 72 6b 2e 0d 0a 20 20 20 20 20  ramework...     
2df20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
2df30 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
2df40 74 65 20 49 6e 74 50 74 72 20 70 4e 61 74 69 76  te IntPtr pNativ
2df50 65 4d 6f 64 75 6c 65 3b 0d 0a 23 65 6e 64 69 66  eModule;..#endif
2df60 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
2df70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2df80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2df90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dfa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dfb0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
2dfc0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
2dfd0 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 66        /// This f
2dfe0 69 65 6c 64 20 69 73 20 75 73 65 64 20 74 6f 20  ield is used to 
2dff0 73 74 6f 72 65 20 74 68 65 20 76 69 72 74 75 61  store the virtua
2e000 6c 20 74 61 62 6c 65 20 69 6e 73 74 61 6e 63 65  l table instance
2e010 73 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20  s associated..  
2e020 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74        /// with t
2e030 68 69 73 20 6d 6f 64 75 6c 65 2e 20 20 54 68 65  his module.  The
2e040 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
2e050 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76  to the sqlite3_v
2e060 74 61 62 20 64 65 72 69 76 65 64 0d 0a 20 20 20  tab derived..   
2e070 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75       /// structu
2e080 72 65 20 69 73 20 75 73 65 64 20 74 6f 20 6b 65  re is used to ke
2e090 79 20 69 6e 74 6f 20 74 68 69 73 20 63 6f 6c 6c  y into this coll
2e0a0 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  ection...       
2e0b0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2e0c0 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
2e0d0 20 44 69 63 74 69 6f 6e 61 72 79 3c 49 6e 74 50   Dictionary<IntP
2e0e0 74 72 2c 20 53 51 4c 69 74 65 56 69 72 74 75 61  tr, SQLiteVirtua
2e0f0 6c 54 61 62 6c 65 3e 20 74 61 62 6c 65 73 3b 0d  lTable> tables;.
2e100 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2e110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e150 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
2e160 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
2e170 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 66 69       /// This fi
2e180 65 6c 64 20 69 73 20 75 73 65 64 20 74 6f 20 73  eld is used to s
2e190 74 6f 72 65 20 74 68 65 20 76 69 72 74 75 61 6c  tore the virtual
2e1a0 20 74 61 62 6c 65 20 63 75 72 73 6f 72 20 69 6e   table cursor in
2e1b0 73 74 61 6e 63 65 73 0d 0a 20 20 20 20 20 20 20  stances..       
2e1c0 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64 20   /// associated 
2e1d0 77 69 74 68 20 74 68 69 73 20 6d 6f 64 75 6c 65  with this module
2e1e0 2e 20 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f  .  The native po
2e1f0 69 6e 74 65 72 20 74 6f 20 74 68 65 0d 0a 20 20  inter to the..  
2e200 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65        /// sqlite
2e210 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 64 65  3_vtab_cursor de
2e220 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65 20  rived structure 
2e230 69 73 20 75 73 65 64 20 74 6f 20 6b 65 79 20 69  is used to key i
2e240 6e 74 6f 20 74 68 69 73 0d 0a 20 20 20 20 20 20  nto this..      
2e250 20 20 2f 2f 2f 20 63 6f 6c 6c 65 63 74 69 6f 6e    /// collection
2e260 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
2e270 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
2e280 20 20 20 70 72 69 76 61 74 65 20 44 69 63 74 69     private Dicti
2e290 6f 6e 61 72 79 3c 49 6e 74 50 74 72 2c 20 53 51  onary<IntPtr, SQ
2e2a0 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
2e2b0 43 75 72 73 6f 72 3e 20 63 75 72 73 6f 72 73 3b  Cursor> cursors;
2e2c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
2e2d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e2e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e2f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e310 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
2e320 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
2e330 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 66        /// This f
2e340 69 65 6c 64 20 69 73 20 75 73 65 64 20 74 6f 20  ield is used to 
2e350 73 74 6f 72 65 20 74 68 65 20 76 69 72 74 75 61  store the virtua
2e360 6c 20 74 61 62 6c 65 20 66 75 6e 63 74 69 6f 6e  l table function
2e370 20 69 6e 73 74 61 6e 63 65 73 0d 0a 20 20 20 20   instances..    
2e380 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74      /// associat
2e390 65 64 20 77 69 74 68 20 74 68 69 73 20 6d 6f 64  ed with this mod
2e3a0 75 6c 65 2e 20 20 54 68 65 20 63 61 73 65 2d 69  ule.  The case-i
2e3b0 6e 73 65 6e 73 69 74 69 76 65 20 66 75 6e 63 74  nsensitive funct
2e3c0 69 6f 6e 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20  ion name..      
2e3d0 20 20 2f 2f 2f 20 61 6e 64 20 74 68 65 20 6e 75    /// and the nu
2e3e0 6d 62 65 72 20 6f 66 20 61 72 67 75 6d 65 6e 74  mber of argument
2e3f0 73 20 28 77 69 74 68 20 2d 31 20 6d 65 61 6e 69  s (with -1 meani
2e400 6e 67 20 22 61 6e 79 22 29 20 61 72 65 20 75 73  ng "any") are us
2e410 65 64 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f  ed to..        /
2e420 2f 2f 20 63 6f 6e 73 74 72 75 63 74 20 74 68 65  // construct the
2e430 20 73 74 72 69 6e 67 20 74 68 61 74 20 69 73 20   string that is 
2e440 75 73 65 64 20 74 6f 20 6b 65 79 20 69 6e 74 6f  used to key into
2e450 20 74 68 69 73 20 63 6f 6c 6c 65 63 74 69 6f 6e   this collection
2e460 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
2e470 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
2e480 20 20 20 70 72 69 76 61 74 65 20 44 69 63 74 69     private Dicti
2e490 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 53 51  onary<string, SQ
2e4a0 4c 69 74 65 46 75 6e 63 74 69 6f 6e 3e 20 66 75  LiteFunction> fu
2e4b0 6e 63 74 69 6f 6e 73 3b 0d 0a 20 20 20 20 20 20  nctions;..      
2e4c0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
2e4d0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2e4e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e4f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2e520 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
2e530 6f 6e 20 50 75 62 6c 69 63 20 43 6f 6e 73 74 72  on Public Constr
2e540 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20  uctors..        
2e550 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2e560 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74         /// Const
2e570 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63  ructs an instanc
2e580 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73 2e  e of this class.
2e590 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
2e5a0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2e5b0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2e5c0 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20 20 20 20  e="name">..     
2e5d0 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20     /// The name 
2e5e0 6f 66 20 74 68 65 20 6d 6f 64 75 6c 65 2e 20 20  of the module.  
2e5f0 54 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 63  This parameter c
2e600 61 6e 6e 6f 74 20 62 65 20 6e 75 6c 6c 2e 0d 0a  annot be null...
2e610 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
2e620 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ram>..        pu
2e630 62 6c 69 63 20 53 51 4c 69 74 65 4d 6f 64 75 6c  blic SQLiteModul
2e640 65 28 73 74 72 69 6e 67 20 6e 61 6d 65 29 0d 0a  e(string name)..
2e650 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2e660 20 20 20 20 20 20 20 69 66 20 28 6e 61 6d 65 20         if (name 
2e670 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
2e680 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
2e690 6e 65 77 20 41 72 67 75 6d 65 6e 74 4e 75 6c 6c  new ArgumentNull
2e6a0 45 78 63 65 70 74 69 6f 6e 28 22 6e 61 6d 65 22  Exception("name"
2e6b0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2e6c0 20 20 74 68 69 73 2e 6e 61 6d 65 20 3d 20 6e 61    this.name = na
2e6d0 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me;..           
2e6e0 20 74 68 69 73 2e 74 61 62 6c 65 73 20 3d 20 6e   this.tables = n
2e6f0 65 77 20 44 69 63 74 69 6f 6e 61 72 79 3c 49 6e  ew Dictionary<In
2e700 74 50 74 72 2c 20 53 51 4c 69 74 65 56 69 72 74  tPtr, SQLiteVirt
2e710 75 61 6c 54 61 62 6c 65 3e 28 29 3b 0d 0a 20 20  ualTable>();..  
2e720 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 63            this.c
2e730 75 72 73 6f 72 73 20 3d 20 6e 65 77 20 44 69 63  ursors = new Dic
2e740 74 69 6f 6e 61 72 79 3c 49 6e 74 50 74 72 2c 20  tionary<IntPtr, 
2e750 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
2e760 6c 65 43 75 72 73 6f 72 3e 28 29 3b 0d 0a 20 20  leCursor>();..  
2e770 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 66            this.f
2e780 75 6e 63 74 69 6f 6e 73 20 3d 20 6e 65 77 20 44  unctions = new D
2e790 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67  ictionary<string
2e7a0 2c 20 53 51 4c 69 74 65 46 75 6e 63 74 69 6f 6e  , SQLiteFunction
2e7b0 3e 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  >();..        }.
2e7c0 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
2e7d0 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
2e7e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e7f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e820 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2e830 20 20 23 72 65 67 69 6f 6e 20 49 6e 74 65 72 6e    #region Intern
2e840 61 6c 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20  al Methods..    
2e850 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2e860 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43  >..        /// C
2e870 61 6c 6c 73 20 74 68 65 20 6e 61 74 69 76 65 20  alls the native 
2e880 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
2e890 61 72 79 20 69 6e 20 6f 72 64 65 72 20 74 6f 20  ary in order to 
2e8a0 63 72 65 61 74 65 20 61 20 6e 65 77 0d 0a 20 20  create a new..  
2e8b0 20 20 20 20 20 20 2f 2f 2f 20 64 69 73 70 6f 73        /// dispos
2e8c0 61 62 6c 65 20 6d 6f 64 75 6c 65 20 63 6f 6e 74  able module cont
2e8d0 61 69 6e 69 6e 67 20 74 68 65 20 69 6d 70 6c 65  aining the imple
2e8e0 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 61 20 76  mentation of a v
2e8f0 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20  irtual table... 
2e900 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
2e910 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
2e920 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
2e930 70 44 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  pDb">..        /
2e940 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 64 61  // The native da
2e950 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
2e960 6e 20 70 6f 69 6e 74 65 72 20 74 6f 20 75 73 65  n pointer to use
2e970 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
2e980 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
2e990 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
2e9a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d          /// Non-
2e9b0 7a 65 72 6f 20 75 70 6f 6e 20 73 75 63 63 65 73  zero upon succes
2e9c0 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s...        /// 
2e9d0 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
2e9e0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 62 6f 6f      internal boo
2e9f0 6c 20 43 72 65 61 74 65 44 69 73 70 6f 73 61 62  l CreateDisposab
2ea00 6c 65 4d 6f 64 75 6c 65 28 0d 0a 20 20 20 20 20  leModule(..     
2ea10 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 44         IntPtr pD
2ea20 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  b..            )
2ea30 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
2ea40 20 20 20 20 20 20 20 20 20 69 66 20 28 64 69 73           if (dis
2ea50 70 6f 73 61 62 6c 65 4d 6f 64 75 6c 65 20 21 3d  posableModule !=
2ea60 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
2ea70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2ea80 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 0d 0a 20  eturn true;.... 
2ea90 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
2eaa0 72 20 70 4e 61 6d 65 20 3d 20 49 6e 74 50 74 72  r pName = IntPtr
2eab0 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20  .Zero;....      
2eac0 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
2ead0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2eae0 20 20 20 20 20 20 20 20 20 20 70 4e 61 6d 65 20            pName 
2eaf0 3d 20 53 51 4c 69 74 65 53 74 72 69 6e 67 2e 55  = SQLiteString.U
2eb00 74 66 38 49 6e 74 50 74 72 46 72 6f 6d 53 74 72  tf8IntPtrFromStr
2eb10 69 6e 67 28 6e 61 6d 65 29 3b 0d 0a 0d 0a 20 20  ing(name);....  
2eb20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e                Un
2eb30 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2eb40 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65  s.sqlite3_module
2eb50 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 20 3d 0d   nativeModule =.
2eb60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2eb70 20 20 20 20 20 41 6c 6c 6f 63 61 74 65 4e 61 74       AllocateNat
2eb80 69 76 65 4d 6f 64 75 6c 65 28 29 3b 0d 0a 0d 0a  iveModule();....
2eb90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2eba0 64 65 73 74 72 6f 79 4d 6f 64 75 6c 65 20 3d 20  destroyModule = 
2ebb0 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
2ebc0 4d 65 74 68 6f 64 73 2e 78 44 65 73 74 72 6f 79  Methods.xDestroy
2ebd0 4d 6f 64 75 6c 65 28 0d 0a 20 20 20 20 20 20 20  Module(..       
2ebe0 20 20 20 20 20 20 20 20 20 20 20 20 20 78 44 65               xDe
2ebf0 73 74 72 6f 79 4d 6f 64 75 6c 65 29 3b 0d 0a 0d  stroyModule);...
2ec00 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
2ec10 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
2ec20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ec30 20 64 69 73 70 6f 73 61 62 6c 65 4d 6f 64 75 6c   disposableModul
2ec40 65 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e =..           
2ec50 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
2ec60 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
2ec70 69 74 65 33 5f 63 72 65 61 74 65 5f 64 69 73 70  ite3_create_disp
2ec80 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65 28 0d 0a  osable_module(..
2ec90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2eca0 20 20 20 20 20 20 20 20 70 44 62 2c 20 70 4e 61          pDb, pNa
2ecb0 6d 65 2c 20 72 65 66 20 6e 61 74 69 76 65 4d 6f  me, ref nativeMo
2ecc0 64 75 6c 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72  dule, IntPtr.Zer
2ecd0 6f 2c 20 64 65 73 74 72 6f 79 4d 6f 64 75 6c 65  o, destroyModule
2ece0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2ecf0 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 64 69        return (di
2ed00 73 70 6f 73 61 62 6c 65 4d 6f 64 75 6c 65 20 21  sposableModule !
2ed10 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  = IntPtr.Zero);.
2ed20 0a 23 65 6c 69 66 20 21 53 51 4c 49 54 45 5f 53  .#elif !SQLITE_S
2ed30 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 20 20 20  TANDARD..       
2ed40 20 20 20 20 20 20 20 20 20 64 69 73 70 6f 73 61           disposa
2ed50 62 6c 65 4d 6f 64 75 6c 65 20 3d 0d 0a 20 20 20  bleModule =..   
2ed60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ed70 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2ed80 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 63 72 65  hods.sqlite3_cre
2ed90 61 74 65 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d  ate_disposable_m
2eda0 6f 64 75 6c 65 5f 69 6e 74 65 72 6f 70 28 0d 0a  odule_interop(..
2edb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2edc0 20 20 20 20 20 20 20 70 44 62 2c 20 70 4e 61 6d         pDb, pNam
2edd0 65 2c 20 41 6c 6c 6f 63 61 74 65 4e 61 74 69 76  e, AllocateNativ
2ede0 65 4d 6f 64 75 6c 65 49 6e 74 65 72 6f 70 28 29  eModuleInterop()
2edf0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2ee00 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2ee10 4d 6f 64 75 6c 65 2e 69 56 65 72 73 69 6f 6e 2c  Module.iVersion,
2ee20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43   nativeModule.xC
2ee30 72 65 61 74 65 2c 0d 0a 20 20 20 20 20 20 20 20  reate,..        
2ee40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
2ee50 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e  ativeModule.xCon
2ee60 6e 65 63 74 2c 20 6e 61 74 69 76 65 4d 6f 64 75  nect, nativeModu
2ee70 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 2c 0d 0a  le.xBestIndex,..
2ee80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ee90 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
2eea0 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 2c  ule.xDisconnect,
2eeb0 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44   nativeModule.xD
2eec0 65 73 74 72 6f 79 2c 0d 0a 20 20 20 20 20 20 20  estroy,..       
2eed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2eee0 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4f 70  nativeModule.xOp
2eef0 65 6e 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65  en, nativeModule
2ef00 2e 78 43 6c 6f 73 65 2c 0d 0a 20 20 20 20 20 20  .xClose,..      
2ef10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ef20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46   nativeModule.xF
2ef30 69 6c 74 65 72 2c 20 6e 61 74 69 76 65 4d 6f 64  ilter, nativeMod
2ef40 75 6c 65 2e 78 4e 65 78 74 2c 0d 0a 20 20 20 20  ule.xNext,..    
2ef50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ef60 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
2ef70 78 45 6f 66 2c 20 6e 61 74 69 76 65 4d 6f 64 75  xEof, nativeModu
2ef80 6c 65 2e 78 43 6f 6c 75 6d 6e 2c 0d 0a 20 20 20  le.xColumn,..   
2ef90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2efa0 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2efb0 2e 78 52 6f 77 49 64 2c 20 6e 61 74 69 76 65 4d  .xRowId, nativeM
2efc0 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 2c 0d 0a  odule.xUpdate,..
2efd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2efe0 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
2eff0 75 6c 65 2e 78 42 65 67 69 6e 2c 20 6e 61 74 69  ule.xBegin, nati
2f000 76 65 4d 6f 64 75 6c 65 2e 78 53 79 6e 63 2c 0d  veModule.xSync,.
2f010 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f020 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
2f030 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 2c 20 6e 61  dule.xCommit, na
2f040 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c  tiveModule.xRoll
2f050 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20  back,..         
2f060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
2f070 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64  tiveModule.xFind
2f080 46 75 6e 63 74 69 6f 6e 2c 20 6e 61 74 69 76 65  Function, native
2f090 4d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65 2c 0d  Module.xRename,.
2f0a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f0b0 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
2f0c0 64 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74 2c  dule.xSavepoint,
2f0d0 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52   nativeModule.xR
2f0e0 65 6c 65 61 73 65 2c 0d 0a 20 20 20 20 20 20 20  elease,..       
2f0f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f100 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f  nativeModule.xRo
2f110 6c 6c 62 61 63 6b 54 6f 2c 20 49 6e 74 50 74 72  llbackTo, IntPtr
2f120 2e 5a 65 72 6f 2c 20 64 65 73 74 72 6f 79 4d 6f  .Zero, destroyMo
2f130 64 75 6c 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  dule);....      
2f140 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2f150 20 28 64 69 73 70 6f 73 61 62 6c 65 4d 6f 64 75   (disposableModu
2f160 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le != IntPtr.Zer
2f170 6f 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  o);..#else..    
2f180 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
2f190 77 20 6e 65 77 20 4e 6f 74 49 6d 70 6c 65 6d 65  w new NotImpleme
2f1a0 6e 74 65 64 45 78 63 65 70 74 69 6f 6e 28 29 3b  ntedException();
2f1b0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
2f1c0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2f1d0 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20       finally..  
2f1e0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2f1f0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2f200 28 70 4e 61 6d 65 20 21 3d 20 49 6e 74 50 74 72  (pName != IntPtr
2f210 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
2f220 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2f230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
2f240 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46 72 65 65  QLiteMemory.Free
2f250 28 70 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20  (pName);..      
2f260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 4e                pN
2f270 61 6d 65 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72  ame = IntPtr.Zer
2f280 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o;..            
2f290 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
2f2a0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
2f2b0 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
2f2c0 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
2f2d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f2e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f2f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f310 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2f320 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74    #region Privat
2f330 65 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20  e Methods..     
2f340 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2f350 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
2f360 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c  is method is cal
2f370 6c 65 64 20 62 79 20 74 68 65 20 53 51 4c 69 74  led by the SQLit
2f380 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 77  e core library w
2f390 68 65 6e 20 74 68 65 20 6e 61 74 69 76 65 0d 0a  hen the native..
2f3a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 6f 64 75          /// modu
2f3b0 6c 65 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  le associated wi
2f3c0 74 68 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69  th this object i
2f3d0 6e 73 74 61 6e 63 65 20 69 73 20 62 65 69 6e 67  nstance is being
2f3e0 20 64 65 73 74 72 6f 79 65 64 20 64 75 65 0d 0a   destroyed due..
2f3f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20 69          /// to i
2f400 74 73 20 70 61 72 65 6e 74 20 63 6f 6e 6e 65 63  ts parent connec
2f410 74 69 6f 6e 20 62 65 69 6e 67 20 63 6c 6f 73 65  tion being close
2f420 64 2e 20 20 49 74 20 6d 61 79 20 61 6c 73 6f 20  d.  It may also 
2f430 62 65 20 63 61 6c 6c 65 64 20 62 79 0d 0a 20 20  be called by..  
2f440 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 22 76        /// the "v
2f450 74 73 68 69 6d 22 20 6d 6f 64 75 6c 65 20 69 66  tshim" module if
2f460 2f 77 68 65 6e 20 74 68 65 20 73 71 6c 69 74 65  /when the sqlite
2f470 33 5f 64 69 73 70 6f 73 65 5f 6d 6f 64 75 6c 65  3_dispose_module
2f480 28 29 20 66 75 6e 63 74 69 6f 6e 0d 0a 20 20 20  () function..   
2f490 20 20 20 20 20 2f 2f 2f 20 69 73 20 63 61 6c 6c       /// is call
2f4a0 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
2f4b0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
2f4c0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
2f4d0 6e 61 6d 65 3d 22 70 43 6c 69 65 6e 74 44 61 74  name="pClientDat
2f4e0 61 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  a">..        ///
2f4f0 20 54 68 65 20 6e 61 74 69 76 65 20 75 73 65 72   The native user
2f500 2d 64 61 74 61 20 70 6f 69 6e 74 65 72 20 61 73  -data pointer as
2f510 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
2f520 69 73 20 6d 6f 64 75 6c 65 2c 20 61 73 20 69 74  is module, as it
2f530 20 77 61 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f   was..        //
2f540 2f 20 70 72 6f 76 69 64 65 64 20 74 6f 20 74 68  / provided to th
2f550 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69  e SQLite core li
2f560 62 72 61 72 79 20 77 68 65 6e 20 74 68 65 20 6e  brary when the n
2f570 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 69 6e 73  ative module ins
2f580 74 61 6e 63 65 0d 0a 20 20 20 20 20 20 20 20 2f  tance..        /
2f590 2f 2f 20 77 61 73 20 63 72 65 61 74 65 64 2e 0d  // was created..
2f5a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
2f5b0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70  aram>..        p
2f5c0 72 69 76 61 74 65 20 76 6f 69 64 20 78 44 65 73  rivate void xDes
2f5d0 74 72 6f 79 4d 6f 64 75 6c 65 28 0d 0a 20 20 20  troyModule(..   
2f5e0 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
2f5f0 70 43 6c 69 65 6e 74 44 61 74 61 20 2f 2a 20 4e  pClientData /* N
2f600 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20  OT USED */..    
2f610 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
2f620 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2f630 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
2f640 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 74 20 74 68    // NOTE: At th
2f650 69 73 20 70 6f 69 6e 74 2c 20 6a 75 73 74 20 6d  is point, just m
2f660 61 6b 65 20 73 75 72 65 20 74 68 61 74 20 74 68  ake sure that th
2f670 69 73 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65  is native module
2f680 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2f690 20 20 20 20 20 20 20 68 61 6e 64 6c 65 20 69 73         handle is
2f6a0 20 6e 6f 74 20 72 65 75 73 65 64 2c 20 6e 6f 72   not reused, nor
2f6b0 20 70 61 73 73 65 64 20 69 6e 74 6f 20 74 68 65   passed into the
2f6c0 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20   native..       
2f6d0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 73 71       //       sq
2f6e0 6c 69 74 65 33 5f 64 69 73 70 6f 73 65 5f 6d 6f  lite3_dispose_mo
2f6f0 64 75 6c 65 28 29 20 66 75 6e 63 74 69 6f 6e 20  dule() function 
2f700 6c 61 74 65 72 20 28 69 2e 65 2e 20 69 66 2f 77  later (i.e. if/w
2f710 68 65 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  hen..           
2f720 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 44 69   //       the Di
2f730 73 70 6f 73 65 28 29 20 6d 65 74 68 6f 64 20 6f  spose() method o
2f740 66 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e  f this object in
2f750 73 74 61 6e 63 65 20 69 73 20 63 61 6c 6c 65 64  stance is called
2f760 29 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  )...            
2f770 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
2f780 64 69 73 70 6f 73 61 62 6c 65 4d 6f 64 75 6c 65  disposableModule
2f790 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d   = IntPtr.Zero;.
2f7a0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
2f7b0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2f7c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f7d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f7e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f7f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2f800 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
2f810 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2f820 2f 2f 2f 20 43 72 65 61 74 65 73 20 61 6e 64 20  /// Creates and 
2f830 72 65 74 75 72 6e 73 20 74 68 65 20 6e 61 74 69  returns the nati
2f840 76 65 20 73 71 6c 69 74 65 5f 6d 6f 64 75 6c 65  ve sqlite_module
2f850 20 73 74 72 75 63 74 75 72 65 20 75 73 69 6e 67   structure using
2f860 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
2f870 2f 20 63 6f 6e 66 69 67 75 72 65 64 20 28 6f 72  / configured (or
2f880 20 64 65 66 61 75 6c 74 29 20 3c 73 65 65 20 63   default) <see c
2f890 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
2f8a0 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 0d 0a 20 20  veModule" />..  
2f8b0 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65 72 66        /// interf
2f8c0 61 63 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  ace implementati
2f8d0 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  on...        ///
2f8e0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
2f8f0 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
2f900 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
2f910 54 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74  The native sqlit
2f920 65 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63 74 75  e_module structu
2f930 72 65 20 75 73 69 6e 67 20 74 68 65 20 63 6f 6e  re using the con
2f940 66 69 67 75 72 65 64 20 28 6f 72 0d 0a 20 20 20  figured (or..   
2f950 20 20 20 20 20 2f 2f 2f 20 64 65 66 61 75 6c 74       /// default
2f960 29 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  ) <see cref="ISQ
2f970 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2f980 22 20 2f 3e 20 69 6e 74 65 72 66 61 63 65 0d 0a  " /> interface..
2f990 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6d 70 6c          /// impl
2f9a0 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20 20  ementation...   
2f9b0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
2f9c0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ns>..        pri
2f9d0 76 61 74 65 20 55 6e 73 61 66 65 4e 61 74 69 76  vate UnsafeNativ
2f9e0 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
2f9f0 5f 6d 6f 64 75 6c 65 20 41 6c 6c 6f 63 61 74 65  _module Allocate
2fa00 4e 61 74 69 76 65 4d 6f 64 75 6c 65 28 29 0d 0a  NativeModule()..
2fa10 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2fa20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 41 6c         return Al
2fa30 6c 6f 63 61 74 65 4e 61 74 69 76 65 4d 6f 64 75  locateNativeModu
2fa40 6c 65 28 47 65 74 4e 61 74 69 76 65 4d 6f 64 75  le(GetNativeModu
2fa50 6c 65 49 6d 70 6c 28 29 29 3b 0d 0a 20 20 20 20  leImpl());..    
2fa60 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2fa70 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2fa80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fa90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2faa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fab0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20  ////////....#if 
2fac0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
2fad0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
2fae0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2faf0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 72  ..        /// Cr
2fb00 65 61 74 65 73 20 61 6e 64 20 72 65 74 75 72 6e  eates and return
2fb10 73 20 61 20 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b  s a memory block
2fb20 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 74   obtained from t
2fb30 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 0d 0a  he SQLite core..
2fb40 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 69 62 72          /// libr
2fb50 61 72 79 20 75 73 65 64 20 74 6f 20 73 74 6f 72  ary used to stor
2fb60 65 20 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c  e the native sql
2fb70 69 74 65 33 5f 6d 6f 64 75 6c 65 20 73 74 72 75  ite3_module stru
2fb80 63 74 75 72 65 20 66 6f 72 20 74 68 69 73 0d 0a  cture for this..
2fb90 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 62 6a 65          /// obje
2fba0 63 74 20 69 6e 73 74 61 6e 63 65 20 77 68 65 6e  ct instance when
2fbb0 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 74 68 65 20   running on the 
2fbc0 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61  .NET Compact Fra
2fbd0 6d 65 77 6f 72 6b 2e 0d 0a 20 20 20 20 20 20 20  mework...       
2fbe0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2fbf0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
2fc00 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
2fc10 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70  /// The native p
2fc20 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 6e 61  ointer to the na
2fc30 74 69 76 65 20 73 71 6c 69 74 65 33 5f 6d 6f 64  tive sqlite3_mod
2fc40 75 6c 65 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  ule structure...
2fc50 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
2fc60 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
2fc70 70 72 69 76 61 74 65 20 49 6e 74 50 74 72 20 41  private IntPtr A
2fc80 6c 6c 6f 63 61 74 65 4e 61 74 69 76 65 4d 6f 64  llocateNativeMod
2fc90 75 6c 65 49 6e 74 65 72 6f 70 28 29 0d 0a 20 20  uleInterop()..  
2fca0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2fcb0 20 20 20 20 20 69 66 20 28 70 4e 61 74 69 76 65       if (pNative
2fcc0 4d 6f 64 75 6c 65 20 3d 3d 20 49 6e 74 50 74 72  Module == IntPtr
2fcd0 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
2fce0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2fcf0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
2fd00 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 48 41             // HA
2fd10 43 4b 3a 20 4e 6f 20 65 61 73 79 20 77 61 79 20  CK: No easy way 
2fd20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65  to determine the
2fd30 20 73 69 7a 65 20 6f 66 20 74 68 65 20 6e 61 74   size of the nat
2fd40 69 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ive..           
2fd50 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 73 71       //       sq
2fd60 6c 69 74 65 5f 6d 6f 64 75 6c 65 20 73 74 72 75  lite_module stru
2fd70 63 74 75 72 65 20 77 68 65 6e 20 72 75 6e 6e 69  cture when runni
2fd80 6e 67 20 6f 6e 20 74 68 65 20 2e 4e 45 54 0d 0a  ng on the .NET..
2fd90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fda0 2f 2f 20 20 20 20 20 20 20 43 6f 6d 70 61 63 74  //       Compact
2fdb0 20 46 72 61 6d 65 77 6f 72 6b 3b 20 74 68 65 72   Framework; ther
2fdc0 65 66 6f 72 65 2c 20 6a 75 73 74 20 62 61 73 65  efore, just base
2fdd0 20 74 68 65 20 73 69 7a 65 0d 0a 20 20 20 20 20   the size..     
2fde0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
2fdf0 20 20 20 20 6f 6e 20 77 68 61 74 20 77 65 20 6b      on what we k
2fe00 6e 6f 77 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  now:..          
2fe10 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
2fe20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
2fe30 20 20 20 54 68 65 72 65 20 69 73 20 6f 6e 65 20     There is one 
2fe40 69 6e 74 65 67 65 72 20 6d 65 6d 62 65 72 2e 0d  integer member..
2fe50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2fe60 20 2f 2f 20 20 20 20 20 20 20 54 68 65 72 65 20   //       There 
2fe70 61 72 65 20 32 32 20 66 75 6e 63 74 69 6f 6e 20  are 22 function 
2fe80 70 6f 69 6e 74 65 72 20 6d 65 6d 62 65 72 73 2e  pointer members.
2fe90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2fea0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
2feb0 20 20 20 20 20 20 70 4e 61 74 69 76 65 4d 6f 64        pNativeMod
2fec0 75 6c 65 20 3d 20 53 51 4c 69 74 65 4d 65 6d 6f  ule = SQLiteMemo
2fed0 72 79 2e 41 6c 6c 6f 63 61 74 65 28 32 33 20 2a  ry.Allocate(23 *
2fee0 20 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a   IntPtr.Size);..
2fef0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ff00 20 20 69 66 20 28 70 4e 61 74 69 76 65 4d 6f 64    if (pNativeMod
2ff10 75 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  ule == IntPtr.Ze
2ff20 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
2ff30 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e           throw n
2ff40 65 77 20 4f 75 74 4f 66 4d 65 6d 6f 72 79 45 78  ew OutOfMemoryEx
2ff50 63 65 70 74 69 6f 6e 28 22 73 71 6c 69 74 65 33  ception("sqlite3
2ff60 5f 6d 6f 64 75 6c 65 22 29 3b 0d 0a 20 20 20 20  _module");..    
2ff70 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2ff80 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2ff90 70 4e 61 74 69 76 65 4d 6f 64 75 6c 65 3b 0d 0a  pNativeModule;..
2ffa0 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
2ffb0 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  f....        ///
2ffc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ffd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ffe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30000 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
30010 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
30020 20 20 20 20 20 20 20 2f 2f 2f 20 43 72 65 61 74         /// Creat
30030 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74  es and returns t
30040 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65  he native sqlite
30050 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63 74 75 72  _module structur
30060 65 20 75 73 69 6e 67 20 74 68 65 0d 0a 20 20 20  e using the..   
30070 20 20 20 20 20 2f 2f 2f 20 73 70 65 63 69 66 69       /// specifi
30080 65 64 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  ed <see cref="IS
30090 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
300a0 65 22 20 2f 3e 20 69 6e 74 65 72 66 61 63 65 0d  e" /> interface.
300b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6d 70  .        /// imp
300c0 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20  lementation...  
300d0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
300e0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
300f0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6d  / <param name="m
30100 6f 64 75 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20  odule">..       
30110 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
30120 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
30130 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 69 6e 74 65  eModule" /> inte
30140 72 66 61 63 65 20 69 6d 70 6c 65 6d 65 6e 74 61  rface implementa
30150 74 69 6f 6e 20 74 6f 0d 0a 20 20 20 20 20 20 20  tion to..       
30160 20 2f 2f 2f 20 75 73 65 2e 0d 0a 20 20 20 20 20   /// use...     
30170 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
30180 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
30190 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
301a0 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 73  /// The native s
301b0 71 6c 69 74 65 5f 6d 6f 64 75 6c 65 20 73 74 72  qlite_module str
301c0 75 63 74 75 72 65 20 75 73 69 6e 67 20 74 68 65  ucture using the
301d0 20 73 70 65 63 69 66 69 65 64 0d 0a 20 20 20 20   specified..    
301e0 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
301f0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
30200 4d 6f 64 75 6c 65 22 20 2f 3e 20 69 6e 74 65 72  Module" /> inter
30210 66 61 63 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74  face implementat
30220 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ion...        //
30230 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
30240 20 20 20 20 20 20 70 72 69 76 61 74 65 20 55 6e        private Un
30250 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
30260 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65  s.sqlite3_module
30270 20 41 6c 6c 6f 63 61 74 65 4e 61 74 69 76 65 4d   AllocateNativeM
30280 6f 64 75 6c 65 28 0d 0a 20 20 20 20 20 20 20 20  odule(..        
30290 20 20 20 20 49 53 51 4c 69 74 65 4e 61 74 69 76      ISQLiteNativ
302a0 65 4d 6f 64 75 6c 65 20 6d 6f 64 75 6c 65 0d 0a  eModule module..
302b0 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
302c0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
302d0 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
302e0 6c 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  le = new UnsafeN
302f0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
30300 69 74 65 33 5f 6d 6f 64 75 6c 65 28 29 3b 0d 0a  ite3_module();..
30310 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
30320 76 65 4d 6f 64 75 6c 65 2e 69 56 65 72 73 69 6f  veModule.iVersio
30330 6e 20 3d 20 44 65 66 61 75 6c 74 4d 6f 64 75 6c  n = DefaultModul
30340 65 56 65 72 73 69 6f 6e 3b 0d 0a 0d 0a 20 20 20  eVersion;....   
30350 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64           if (mod
30360 75 6c 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ule != null)..  
30370 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
30380 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
30390 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74  iveModule.xCreat
303a0 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  e = new UnsafeNa
303b0 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 43 72 65  tiveMethods.xCre
303c0 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ate(..          
303d0 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e           module.
303e0 78 43 72 65 61 74 65 29 3b 0d 0a 0d 0a 20 20 20  xCreate);....   
303f0 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
30400 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65  iveModule.xConne
30410 63 74 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  ct = new UnsafeN
30420 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 43 6f  ativeMethods.xCo
30430 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20  nnect(..        
30440 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75              modu
30450 6c 65 2e 78 43 6f 6e 6e 65 63 74 29 3b 0d 0a 0d  le.xConnect);...
30460 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30470 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42   nativeModule.xB
30480 65 73 74 49 6e 64 65 78 20 3d 20 6e 65 77 20 55  estIndex = new U
30490 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
304a0 64 73 2e 78 42 65 73 74 49 6e 64 65 78 28 0d 0a  ds.xBestIndex(..
304b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
304c0 20 20 20 20 6d 6f 64 75 6c 65 2e 78 42 65 73 74      module.xBest
304d0 49 6e 64 65 78 29 3b 0d 0a 0d 0a 20 20 20 20 20  Index);....     
304e0 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
304f0 65 4d 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e  eModule.xDisconn
30500 65 63 74 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  ect = new Unsafe
30510 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 44  NativeMethods.xD
30520 69 73 63 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20  isconnect(..    
30530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30540 6d 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65  module.xDisconne
30550 63 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ct);....        
30560 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
30570 64 75 6c 65 2e 78 44 65 73 74 72 6f 79 20 3d 20  dule.xDestroy = 
30580 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
30590 4d 65 74 68 6f 64 73 2e 78 44 65 73 74 72 6f 79  Methods.xDestroy
305a0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
305b0 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 44         module.xD
305c0 65 73 74 72 6f 79 29 3b 0d 0a 0d 0a 20 20 20 20  estroy);....    
305d0 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
305e0 76 65 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e 20 3d  veModule.xOpen =
305f0 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
30600 65 4d 65 74 68 6f 64 73 2e 78 4f 70 65 6e 28 0d  eMethods.xOpen(.
30610 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30620 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 4f 70 65       module.xOpe
30630 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  n);....         
30640 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
30650 75 6c 65 2e 78 43 6c 6f 73 65 20 3d 20 6e 65 77  ule.xClose = new
30660 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
30670 68 6f 64 73 2e 78 43 6c 6f 73 65 28 0d 0a 20 20  hods.xClose(..  
30680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30690 20 20 6d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 29    module.xClose)
306a0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
306b0 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
306c0 65 2e 78 46 69 6c 74 65 72 20 3d 20 6e 65 77 20  e.xFilter = new 
306d0 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
306e0 6f 64 73 2e 78 46 69 6c 74 65 72 28 0d 0a 20 20  ods.xFilter(..  
306f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30700 20 20 6d 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72    module.xFilter
30710 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
30720 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
30730 6c 65 2e 78 4e 65 78 74 20 3d 20 6e 65 77 20 55  le.xNext = new U
30740 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
30750 64 73 2e 78 4e 65 78 74 28 0d 0a 20 20 20 20 20  ds.xNext(..     
30760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d                 m
30770 6f 64 75 6c 65 2e 78 4e 65 78 74 29 3b 0d 0a 0d  odule.xNext);...
30780 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30790 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 45   nativeModule.xE
307a0 6f 66 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  of = new UnsafeN
307b0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 45 6f  ativeMethods.xEo
307c0 66 28 6d 6f 64 75 6c 65 2e 78 45 6f 66 29 3b 0d  f(module.xEof);.
307d0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
307e0 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
307f0 78 43 6f 6c 75 6d 6e 20 3d 20 6e 65 77 20 55 6e  xColumn = new Un
30800 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
30810 73 2e 78 43 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20  s.xColumn(..    
30820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30830 6d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 29 3b  module.xColumn);
30840 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
30850 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
30860 2e 78 52 6f 77 49 64 20 3d 20 6e 65 77 20 55 6e  .xRowId = new Un
30870 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
30880 73 2e 78 52 6f 77 49 64 28 0d 0a 20 20 20 20 20  s.xRowId(..     
30890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d                 m
308a0 6f 64 75 6c 65 2e 78 52 6f 77 49 64 29 3b 0d 0a  odule.xRowId);..
308b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
308c0 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
308d0 55 70 64 61 74 65 20 3d 20 6e 65 77 20 55 6e 73  Update = new Uns
308e0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
308f0 2e 78 55 70 64 61 74 65 28 0d 0a 20 20 20 20 20  .xUpdate(..     
30900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d                 m
30910 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 29 3b 0d  odule.xUpdate);.
30920 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
30930 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
30940 78 42 65 67 69 6e 20 3d 20 6e 65 77 20 55 6e 73  xBegin = new Uns
30950 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
30960 2e 78 42 65 67 69 6e 28 0d 0a 20 20 20 20 20 20  .xBegin(..      
30970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f                mo
30980 64 75 6c 65 2e 78 42 65 67 69 6e 29 3b 0d 0a 0d  dule.xBegin);...
30990 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
309a0 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53   nativeModule.xS
309b0 79 6e 63 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  ync = new Unsafe
309c0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 53  NativeMethods.xS
309d0 79 6e 63 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ync(..          
309e0 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65            module
309f0 2e 78 53 79 6e 63 29 3b 0d 0a 0d 0a 20 20 20 20  .xSync);....    
30a00 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
30a10 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74  veModule.xCommit
30a20 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
30a30 69 76 65 4d 65 74 68 6f 64 73 2e 78 43 6f 6d 6d  iveMethods.xComm
30a40 69 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  it(..           
30a50 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e           module.
30a60 78 43 6f 6d 6d 69 74 29 3b 0d 0a 0d 0a 20 20 20  xCommit);....   
30a70 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
30a80 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62  iveModule.xRollb
30a90 61 63 6b 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  ack = new Unsafe
30aa0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52  NativeMethods.xR
30ab0 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20 20  ollback(..      
30ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f                mo
30ad0 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 29 3b  dule.xRollback);
30ae0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
30af0 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
30b00 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 20 3d  .xFindFunction =
30b10 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
30b20 65 4d 65 74 68 6f 64 73 2e 78 46 69 6e 64 46 75  eMethods.xFindFu
30b30 6e 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20  nction(..       
30b40 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64               mod
30b50 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f  ule.xFindFunctio
30b60 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  n);....         
30b70 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
30b80 75 6c 65 2e 78 52 65 6e 61 6d 65 20 3d 20 6e 65  ule.xRename = ne
30b90 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
30ba0 74 68 6f 64 73 2e 78 52 65 6e 61 6d 65 28 0d 0a  thods.xRename(..
30bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30bc0 20 20 20 20 6d 6f 64 75 6c 65 2e 78 52 65 6e 61      module.xRena
30bd0 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  me);....        
30be0 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
30bf0 64 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74 20  dule.xSavepoint 
30c00 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
30c10 76 65 4d 65 74 68 6f 64 73 2e 78 53 61 76 65 70  veMethods.xSavep
30c20 6f 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20  oint(..         
30c30 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c             modul
30c40 65 2e 78 53 61 76 65 70 6f 69 6e 74 29 3b 0d 0a  e.xSavepoint);..
30c50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30c60 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
30c70 52 65 6c 65 61 73 65 20 3d 20 6e 65 77 20 55 6e  Release = new Un
30c80 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
30c90 73 2e 78 52 65 6c 65 61 73 65 28 0d 0a 20 20 20  s.xRelease(..   
30ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30cb0 20 6d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73 65   module.xRelease
30cc0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
30cd0 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
30ce0 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 20 3d  le.xRollbackTo =
30cf0 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
30d00 65 4d 65 74 68 6f 64 73 2e 78 52 6f 6c 6c 62 61  eMethods.xRollba
30d10 63 6b 54 6f 28 0d 0a 20 20 20 20 20 20 20 20 20  ckTo(..         
30d20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c             modul
30d30 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 29 3b 0d  e.xRollbackTo);.
30d40 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
30d50 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
30d60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
30d70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30d80 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43   nativeModule.xC
30d90 72 65 61 74 65 20 3d 20 6e 65 77 20 55 6e 73 61  reate = new Unsa
30da0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
30db0 78 43 72 65 61 74 65 28 0d 0a 20 20 20 20 20 20  xCreate(..      
30dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 43                xC
30dd0 72 65 61 74 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  reate);....     
30de0 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
30df0 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74  eModule.xConnect
30e00 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
30e10 69 76 65 4d 65 74 68 6f 64 73 2e 78 43 6f 6e 6e  iveMethods.xConn
30e20 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ect(..          
30e30 20 20 20 20 20 20 20 20 20 20 78 43 6f 6e 6e 65            xConne
30e40 63 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ct);....        
30e50 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
30e60 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 20  dule.xBestIndex 
30e70 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
30e80 76 65 4d 65 74 68 6f 64 73 2e 78 42 65 73 74 49  veMethods.xBestI
30e90 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20 20 20  ndex(..         
30ea0 20 20 20 20 20 20 20 20 20 20 20 78 42 65 73 74             xBest
30eb0 49 6e 64 65 78 29 3b 0d 0a 0d 0a 20 20 20 20 20  Index);....     
30ec0 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
30ed0 65 4d 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e  eModule.xDisconn
30ee0 65 63 74 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  ect = new Unsafe
30ef0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 44  NativeMethods.xD
30f00 69 73 63 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20  isconnect(..    
30f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30f20 78 44 69 73 63 6f 6e 6e 65 63 74 29 3b 0d 0a 0d  xDisconnect);...
30f30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30f40 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44   nativeModule.xD
30f50 65 73 74 72 6f 79 20 3d 20 6e 65 77 20 55 6e 73  estroy = new Uns
30f60 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
30f70 2e 78 44 65 73 74 72 6f 79 28 0d 0a 20 20 20 20  .xDestroy(..    
30f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30f90 78 44 65 73 74 72 6f 79 29 3b 0d 0a 0d 0a 20 20  xDestroy);....  
30fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
30fb0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e  tiveModule.xOpen
30fc0 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
30fd0 69 76 65 4d 65 74 68 6f 64 73 2e 78 4f 70 65 6e  iveMethods.xOpen
30fe0 28 78 4f 70 65 6e 29 3b 0d 0a 20 20 20 20 20 20  (xOpen);..      
30ff0 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
31000 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 20 3d 20  Module.xClose = 
31010 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
31020 4d 65 74 68 6f 64 73 2e 78 43 6c 6f 73 65 28 78  Methods.xClose(x
31030 43 6c 6f 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  Close);....     
31040 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
31050 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 20  eModule.xFilter 
31060 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
31070 76 65 4d 65 74 68 6f 64 73 2e 78 46 69 6c 74 65  veMethods.xFilte
31080 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
31090 20 20 20 20 20 20 20 20 78 46 69 6c 74 65 72 29          xFilter)
310a0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
310b0 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
310c0 65 2e 78 4e 65 78 74 20 3d 20 6e 65 77 20 55 6e  e.xNext = new Un
310d0 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
310e0 73 2e 78 4e 65 78 74 28 78 4e 65 78 74 29 3b 0d  s.xNext(xNext);.
310f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31100 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 45   nativeModule.xE
31110 6f 66 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  of = new UnsafeN
31120 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 45 6f  ativeMethods.xEo
31130 66 28 78 45 6f 66 29 3b 0d 0a 0d 0a 20 20 20 20  f(xEof);....    
31140 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
31150 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e  veModule.xColumn
31160 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
31170 69 76 65 4d 65 74 68 6f 64 73 2e 78 43 6f 6c 75  iveMethods.xColu
31180 6d 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  mn(..           
31190 20 20 20 20 20 20 20 20 20 78 43 6f 6c 75 6d 6e           xColumn
311a0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
311b0 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
311c0 6c 65 2e 78 52 6f 77 49 64 20 3d 20 6e 65 77 20  le.xRowId = new 
311d0 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
311e0 6f 64 73 2e 78 52 6f 77 49 64 28 78 52 6f 77 49  ods.xRowId(xRowI
311f0 64 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  d);....         
31200 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
31210 75 6c 65 2e 78 55 70 64 61 74 65 20 3d 20 6e 65  ule.xUpdate = ne
31220 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
31230 74 68 6f 64 73 2e 78 55 70 64 61 74 65 28 0d 0a  thods.xUpdate(..
31240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31250 20 20 20 20 78 55 70 64 61 74 65 29 3b 0d 0a 0d      xUpdate);...
31260 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31270 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42   nativeModule.xB
31280 65 67 69 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66  egin = new Unsaf
31290 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
312a0 42 65 67 69 6e 28 78 42 65 67 69 6e 29 3b 0d 0a  Begin(xBegin);..
312b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
312c0 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53 79  nativeModule.xSy
312d0 6e 63 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  nc = new UnsafeN
312e0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 53 79  ativeMethods.xSy
312f0 6e 63 28 78 53 79 6e 63 29 3b 0d 0a 0d 0a 20 20  nc(xSync);....  
31300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
31310 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6d 6d  tiveModule.xComm
31320 69 74 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  it = new UnsafeN
31330 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 43 6f  ativeMethods.xCo
31340 6d 6d 69 74 28 0d 0a 20 20 20 20 20 20 20 20 20  mmit(..         
31350 20 20 20 20 20 20 20 20 20 20 20 78 43 6f 6d 6d             xComm
31360 69 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  it);....        
31370 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
31380 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 20 3d  dule.xRollback =
31390 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
313a0 65 4d 65 74 68 6f 64 73 2e 78 52 6f 6c 6c 62 61  eMethods.xRollba
313b0 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ck(..           
313c0 20 20 20 20 20 20 20 20 20 78 52 6f 6c 6c 62 61           xRollba
313d0 63 6b 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ck);....        
313e0 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
313f0 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74 69  dule.xFindFuncti
31400 6f 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  on = new UnsafeN
31410 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 46 69  ativeMethods.xFi
31420 6e 64 46 75 6e 63 74 69 6f 6e 28 0d 0a 20 20 20  ndFunction(..   
31430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31440 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 29 3b   xFindFunction);
31450 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
31460 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
31470 2e 78 52 65 6e 61 6d 65 20 3d 20 6e 65 77 20 55  .xRename = new U
31480 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
31490 64 73 2e 78 52 65 6e 61 6d 65 28 0d 0a 20 20 20  ds.xRename(..   
314a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
314b0 20 78 52 65 6e 61 6d 65 29 3b 0d 0a 0d 0a 20 20   xRename);....  
314c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
314d0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53 61 76 65  tiveModule.xSave
314e0 70 6f 69 6e 74 20 3d 20 6e 65 77 20 55 6e 73 61  point = new Unsa
314f0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
31500 78 53 61 76 65 70 6f 69 6e 74 28 0d 0a 20 20 20  xSavepoint(..   
31510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31520 20 78 53 61 76 65 70 6f 69 6e 74 29 3b 0d 0a 0d   xSavepoint);...
31530 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31540 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52   nativeModule.xR
31550 65 6c 65 61 73 65 20 3d 20 6e 65 77 20 55 6e 73  elease = new Uns
31560 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
31570 2e 78 52 65 6c 65 61 73 65 28 0d 0a 20 20 20 20  .xRelease(..    
31580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31590 78 52 65 6c 65 61 73 65 29 3b 0d 0a 0d 0a 20 20  xRelease);....  
315a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
315b0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c  tiveModule.xRoll
315c0 62 61 63 6b 54 6f 20 3d 20 6e 65 77 20 55 6e 73  backTo = new Uns
315d0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
315e0 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20  .xRollbackTo(.. 
315f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31600 20 20 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 29 3b     xRollbackTo);
31610 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
31620 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
31630 65 74 75 72 6e 20 6e 61 74 69 76 65 4d 6f 64 75  eturn nativeModu
31640 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  le;..        }..
31650 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
31660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
316a0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
316b0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
316c0 20 20 20 20 2f 2f 2f 20 43 72 65 61 74 65 73 20      /// Creates 
316d0 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 73 70  a copy of the sp
316e0 65 63 69 66 69 65 64 0d 0a 20 20 20 20 20 20 20  ecified..       
316f0 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
31700 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
31710 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75  ods.sqlite3_modu
31720 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  le" /> object in
31730 73 74 61 6e 63 65 2c 0d 0a 20 20 20 20 20 20 20  stance,..       
31740 20 2f 2f 2f 20 75 73 69 6e 67 20 64 65 66 61 75   /// using defau
31750 6c 74 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  lt implementatio
31760 6e 73 20 66 6f 72 20 74 68 65 20 63 6f 6e 74 61  ns for the conta
31770 69 6e 65 64 20 64 65 6c 65 67 61 74 65 73 20 77  ined delegates w
31780 68 65 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  hen..        ///
31790 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20 20 20   necessary...   
317a0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
317b0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
317c0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f   <param name="mo
317d0 64 75 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  dule">..        
317e0 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
317f0 66 3d 22 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  f="UnsafeNativeM
31800 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d  ethods.sqlite3_m
31810 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74  odule" /> object
31820 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e  ..        /// in
31830 73 74 61 6e 63 65 20 74 6f 20 63 6f 70 79 2e 0d  stance to copy..
31840 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
31850 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
31860 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
31870 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65        /// The ne
31880 77 20 3c 73 65 65 20 63 72 65 66 3d 22 55 6e 73  w <see cref="Uns
31890 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
318a0 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 22  .sqlite3_module"
318b0 20 2f 3e 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20   /> object..    
318c0 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63 65      /// instance
318d0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
318e0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
318f0 20 20 20 70 72 69 76 61 74 65 20 55 6e 73 61 66     private Unsaf
31900 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
31910 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 43 6f  qlite3_module Co
31920 70 79 4e 61 74 69 76 65 4d 6f 64 75 6c 65 28 0d  pyNativeModule(.
31930 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73  .            Uns
31940 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
31950 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20  .sqlite3_module 
31960 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20 20 20 20  module..        
31970 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
31980 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e  ..            Un
31990 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
319a0 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65  s.sqlite3_module
319b0 20 6e 65 77 4d 6f 64 75 6c 65 20 3d 0d 0a 20 20   newModule =..  
319c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65                ne
319d0 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
319e0 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f  thods.sqlite3_mo
319f0 64 75 6c 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  dule();....     
31a00 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65         newModule
31a10 2e 69 56 65 72 73 69 6f 6e 20 3d 20 6d 6f 64 75  .iVersion = modu
31a20 6c 65 2e 69 56 65 72 73 69 6f 6e 3b 0d 0a 0d 0a  le.iVersion;....
31a30 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d              newM
31a40 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 20 3d 20  odule.xCreate = 
31a50 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
31a60 4d 65 74 68 6f 64 73 2e 78 43 72 65 61 74 65 28  Methods.xCreate(
31a70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31a80 20 20 28 6d 6f 64 75 6c 65 2e 78 43 72 65 61 74    (module.xCreat
31a90 65 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64  e != null) ? mod
31aa0 75 6c 65 2e 78 43 72 65 61 74 65 20 3a 20 78 43  ule.xCreate : xC
31ab0 72 65 61 74 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  reate);....     
31ac0 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65         newModule
31ad0 2e 78 43 6f 6e 6e 65 63 74 20 3d 20 6e 65 77 20  .xConnect = new 
31ae0 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
31af0 6f 64 73 2e 78 43 6f 6e 6e 65 63 74 28 0d 0a 20  ods.xConnect(.. 
31b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
31b10 6d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 20  module.xConnect 
31b20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c  != null) ? modul
31b30 65 2e 78 43 6f 6e 6e 65 63 74 20 3a 20 78 43 6f  e.xConnect : xCo
31b40 6e 6e 65 63 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  nnect);....     
31b50 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65         newModule
31b60 2e 78 42 65 73 74 49 6e 64 65 78 20 3d 20 6e 65  .xBestIndex = ne
31b70 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
31b80 74 68 6f 64 73 2e 78 42 65 73 74 49 6e 64 65 78  thods.xBestIndex
31b90 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
31ba0 20 20 20 28 6d 6f 64 75 6c 65 2e 78 42 65 73 74     (module.xBest
31bb0 49 6e 64 65 78 20 21 3d 20 6e 75 6c 6c 29 20 3f  Index != null) ?
31bc0 20 6d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64   module.xBestInd
31bd0 65 78 20 3a 20 78 42 65 73 74 49 6e 64 65 78 29  ex : xBestIndex)
31be0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
31bf0 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 44 69 73 63   newModule.xDisc
31c00 6f 6e 6e 65 63 74 20 3d 20 6e 65 77 20 55 6e 73  onnect = new Uns
31c10 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
31c20 2e 78 44 69 73 63 6f 6e 6e 65 63 74 28 0d 0a 20  .xDisconnect(.. 
31c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
31c40 6d 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65  module.xDisconne
31c50 63 74 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f  ct != null) ? mo
31c60 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74  dule.xDisconnect
31c70 20 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   :..            
31c80 20 20 20 20 78 44 69 73 63 6f 6e 6e 65 63 74 29      xDisconnect)
31c90 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
31ca0 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 44 65 73 74   newModule.xDest
31cb0 72 6f 79 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  roy = new Unsafe
31cc0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 44  NativeMethods.xD
31cd0 65 73 74 72 6f 79 28 0d 0a 20 20 20 20 20 20 20  estroy(..       
31ce0 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65           (module
31cf0 2e 78 44 65 73 74 72 6f 79 20 21 3d 20 6e 75 6c  .xDestroy != nul
31d00 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 44 65 73  l) ? module.xDes
31d10 74 72 6f 79 20 3a 20 78 44 65 73 74 72 6f 79 29  troy : xDestroy)
31d20 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
31d30 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e   newModule.xOpen
31d40 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
31d50 69 76 65 4d 65 74 68 6f 64 73 2e 78 4f 70 65 6e  iveMethods.xOpen
31d60 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
31d70 20 20 20 28 6d 6f 64 75 6c 65 2e 78 4f 70 65 6e     (module.xOpen
31d80 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75   != null) ? modu
31d90 6c 65 2e 78 4f 70 65 6e 20 3a 20 78 4f 70 65 6e  le.xOpen : xOpen
31da0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
31db0 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 43 6c 6f    newModule.xClo
31dc0 73 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  se = new UnsafeN
31dd0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 43 6c  ativeMethods.xCl
31de0 6f 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ose(..          
31df0 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 43        (module.xC
31e00 6c 6f 73 65 20 21 3d 20 6e 75 6c 6c 29 20 3f 20  lose != null) ? 
31e10 6d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 20 3a 20  module.xClose : 
31e20 78 43 6c 6f 73 65 29 3b 0d 0a 0d 0a 20 20 20 20  xClose);....    
31e30 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c          newModul
31e40 65 2e 78 46 69 6c 74 65 72 20 3d 20 6e 65 77 20  e.xFilter = new 
31e50 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
31e60 6f 64 73 2e 78 46 69 6c 74 65 72 28 0d 0a 20 20  ods.xFilter(..  
31e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d                (m
31e80 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 20 21 3d  odule.xFilter !=
31e90 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e   null) ? module.
31ea0 78 46 69 6c 74 65 72 20 3a 20 78 46 69 6c 74 65  xFilter : xFilte
31eb0 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  r);....         
31ec0 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 4e 65     newModule.xNe
31ed0 78 74 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  xt = new UnsafeN
31ee0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 4e 65  ativeMethods.xNe
31ef0 78 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  xt(..           
31f00 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 4e 65       (module.xNe
31f10 78 74 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f  xt != null) ? mo
31f20 64 75 6c 65 2e 78 4e 65 78 74 20 3a 20 78 4e 65  dule.xNext : xNe
31f30 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  xt);....        
31f40 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 45      newModule.xE
31f50 6f 66 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  of = new UnsafeN
31f60 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 45 6f  ativeMethods.xEo
31f70 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f(..            
31f80 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 45 6f 66      (module.xEof
31f90 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75   != null) ? modu
31fa0 6c 65 2e 78 45 6f 66 20 3a 20 78 45 6f 66 29 3b  le.xEof : xEof);
31fb0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
31fc0 6e 65 77 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d  newModule.xColum
31fd0 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  n = new UnsafeNa
31fe0 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 43 6f 6c  tiveMethods.xCol
31ff0 75 6d 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  umn(..          
32000 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 43        (module.xC
32010 6f 6c 75 6d 6e 20 21 3d 20 6e 75 6c 6c 29 20 3f  olumn != null) ?
32020 20 6d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 20   module.xColumn 
32030 3a 20 78 43 6f 6c 75 6d 6e 29 3b 0d 0a 0d 0a 20  : xColumn);.... 
32040 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f             newMo
32050 64 75 6c 65 2e 78 52 6f 77 49 64 20 3d 20 6e 65  dule.xRowId = ne
32060 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
32070 74 68 6f 64 73 2e 78 52 6f 77 49 64 28 0d 0a 20  thods.xRowId(.. 
32080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
32090 6d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 20 21 3d  module.xRowId !=
320a0 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e   null) ? module.
320b0 78 52 6f 77 49 64 20 3a 20 78 52 6f 77 49 64 29  xRowId : xRowId)
320c0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
320d0 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 55 70 64 61   newModule.xUpda
320e0 74 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  te = new UnsafeN
320f0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 55 70  ativeMethods.xUp
32100 64 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20  date(..         
32110 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78         (module.x
32120 55 70 64 61 74 65 20 21 3d 20 6e 75 6c 6c 29 20  Update != null) 
32130 3f 20 6d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65  ? module.xUpdate
32140 20 3a 20 78 55 70 64 61 74 65 29 3b 0d 0a 0d 0a   : xUpdate);....
32150 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d              newM
32160 6f 64 75 6c 65 2e 78 42 65 67 69 6e 20 3d 20 6e  odule.xBegin = n
32170 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
32180 65 74 68 6f 64 73 2e 78 42 65 67 69 6e 28 0d 0a  ethods.xBegin(..
32190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
321a0 28 6d 6f 64 75 6c 65 2e 78 42 65 67 69 6e 20 21  (module.xBegin !
321b0 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65  = null) ? module
321c0 2e 78 42 65 67 69 6e 20 3a 20 78 42 65 67 69 6e  .xBegin : xBegin
321d0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
321e0 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 53 79 6e    newModule.xSyn
321f0 63 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  c = new UnsafeNa
32200 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 53 79 6e  tiveMethods.xSyn
32210 63 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  c(..            
32220 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 53 79 6e      (module.xSyn
32230 63 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64  c != null) ? mod
32240 75 6c 65 2e 78 53 79 6e 63 20 3a 20 78 53 79 6e  ule.xSync : xSyn
32250 63 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  c);....         
32260 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 43 6f     newModule.xCo
32270 6d 6d 69 74 20 3d 20 6e 65 77 20 55 6e 73 61 66  mmit = new Unsaf
32280 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
32290 43 6f 6d 6d 69 74 28 0d 0a 20 20 20 20 20 20 20  Commit(..       
322a0 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65           (module
322b0 2e 78 43 6f 6d 6d 69 74 20 21 3d 20 6e 75 6c 6c  .xCommit != null
322c0 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 43 6f 6d 6d  ) ? module.xComm
322d0 69 74 20 3a 20 78 43 6f 6d 6d 69 74 29 3b 0d 0a  it : xCommit);..
322e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
322f0 77 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63  wModule.xRollbac
32300 6b 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  k = new UnsafeNa
32310 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 6f 6c  tiveMethods.xRol
32320 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20  lback(..        
32330 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e          (module.
32340 78 52 6f 6c 6c 62 61 63 6b 20 21 3d 20 6e 75 6c  xRollback != nul
32350 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 52 6f 6c  l) ? module.xRol
32360 6c 62 61 63 6b 20 3a 20 78 52 6f 6c 6c 62 61 63  lback : xRollbac
32370 6b 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  k);....         
32380 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 46 69     newModule.xFi
32390 6e 64 46 75 6e 63 74 69 6f 6e 20 3d 20 6e 65 77  ndFunction = new
323a0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
323b0 68 6f 64 73 2e 78 46 69 6e 64 46 75 6e 63 74 69  hods.xFindFuncti
323c0 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on(..           
323d0 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 46 69       (module.xFi
323e0 6e 64 46 75 6e 63 74 69 6f 6e 20 21 3d 20 6e 75  ndFunction != nu
323f0 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 46 69  ll) ? module.xFi
32400 6e 64 46 75 6e 63 74 69 6f 6e 20 3a 0d 0a 20 20  ndFunction :..  
32410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 46                xF
32420 69 6e 64 46 75 6e 63 74 69 6f 6e 29 3b 0d 0a 0d  indFunction);...
32430 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
32440 4d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65 20 3d  Module.xRename =
32450 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
32460 65 4d 65 74 68 6f 64 73 2e 78 52 65 6e 61 6d 65  eMethods.xRename
32470 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
32480 20 20 20 28 6d 6f 64 75 6c 65 2e 78 52 65 6e 61     (module.xRena
32490 6d 65 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f  me != null) ? mo
324a0 64 75 6c 65 2e 78 52 65 6e 61 6d 65 20 3a 20 78  dule.xRename : x
324b0 52 65 6e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20  Rename);....    
324c0 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c          newModul
324d0 65 2e 78 53 61 76 65 70 6f 69 6e 74 20 3d 20 6e  e.xSavepoint = n
324e0 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
324f0 65 74 68 6f 64 73 2e 78 53 61 76 65 70 6f 69 6e  ethods.xSavepoin
32500 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
32510 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 53 61 76      (module.xSav
32520 65 70 6f 69 6e 74 20 21 3d 20 6e 75 6c 6c 29 20  epoint != null) 
32530 3f 20 6d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f  ? module.xSavepo
32540 69 6e 74 20 3a 20 78 53 61 76 65 70 6f 69 6e 74  int : xSavepoint
32550 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
32560 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 52 65 6c    newModule.xRel
32570 65 61 73 65 20 3d 20 6e 65 77 20 55 6e 73 61 66  ease = new Unsaf
32580 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
32590 52 65 6c 65 61 73 65 28 0d 0a 20 20 20 20 20 20  Release(..      
325a0 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c            (modul
325b0 65 2e 78 52 65 6c 65 61 73 65 20 21 3d 20 6e 75  e.xRelease != nu
325c0 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 52 65  ll) ? module.xRe
325d0 6c 65 61 73 65 20 3a 20 78 52 65 6c 65 61 73 65  lease : xRelease
325e0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
325f0 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 52 6f 6c    newModule.xRol
32600 6c 62 61 63 6b 54 6f 20 3d 20 6e 65 77 20 55 6e  lbackTo = new Un
32610 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
32620 73 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a  s.xRollbackTo(..
32630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32640 28 6d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63  (module.xRollbac
32650 6b 54 6f 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d  kTo != null) ? m
32660 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54  odule.xRollbackT
32670 6f 20 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  o :..           
32680 20 20 20 20 20 78 52 6f 6c 6c 62 61 63 6b 54 6f       xRollbackTo
32690 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
326a0 20 20 72 65 74 75 72 6e 20 6e 65 77 4d 6f 64 75    return newModu
326b0 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  le;..        }..
326c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
326d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
326e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
326f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32710 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
32720 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
32730 20 20 20 20 2f 2f 2f 20 43 61 6c 6c 73 20 6f 6e      /// Calls on
32740 65 20 6f 66 20 74 68 65 20 76 69 72 74 75 61 6c  e of the virtual
32750 20 74 61 62 6c 65 20 69 6e 69 74 69 61 6c 69 7a   table initializ
32760 61 74 69 6f 6e 20 6d 65 74 68 6f 64 73 2e 0d 0a  ation methods...
32770 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
32780 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
32790 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
327a0 22 63 72 65 61 74 65 22 3e 0d 0a 20 20 20 20 20  "create">..     
327b0 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
327c0 74 6f 20 63 61 6c 6c 20 74 68 65 20 3c 73 65 65  to call the <see
327d0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61   cref="ISQLiteMa
327e0 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43 72 65 61  nagedModule.Crea
327f0 74 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20  te" />..        
32800 2f 2f 2f 20 6d 65 74 68 6f 64 3b 20 6f 74 68 65  /// method; othe
32810 72 77 69 73 65 2c 20 74 68 65 20 3c 73 65 65 20  rwise, the <see 
32820 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e  cref="ISQLiteMan
32830 61 67 65 64 4d 6f 64 75 6c 65 2e 43 6f 6e 6e 65  agedModule.Conne
32840 63 74 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20  ct" />..        
32850 2f 2f 2f 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20  /// method will 
32860 62 65 20 63 61 6c 6c 65 64 2e 0d 0a 20 20 20 20  be called...    
32870 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
32880 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
32890 61 72 61 6d 20 6e 61 6d 65 3d 22 70 44 62 22 3e  aram name="pDb">
328a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
328b0 65 20 6e 61 74 69 76 65 20 64 61 74 61 62 61 73  e native databas
328c0 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 6e  e connection han
328d0 64 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  dle...        //
328e0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
328f0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
32900 61 6d 65 3d 22 70 41 75 78 22 3e 0d 0a 20 20 20  ame="pAux">..   
32910 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 72 69       /// The ori
32920 67 69 6e 61 6c 20 6e 61 74 69 76 65 20 70 6f 69  ginal native poi
32930 6e 74 65 72 20 76 61 6c 75 65 20 74 68 61 74 20  nter value that 
32940 77 61 73 20 70 72 6f 76 69 64 65 64 20 74 6f 20  was provided to 
32950 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
32960 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f   sqlite3_create_
32970 6d 6f 64 75 6c 65 28 29 2c 20 73 71 6c 69 74 65  module(), sqlite
32980 33 5f 63 72 65 61 74 65 5f 6d 6f 64 75 6c 65 5f  3_create_module_
32990 76 32 28 29 20 6f 72 0d 0a 20 20 20 20 20 20 20  v2() or..       
329a0 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 63 72 65   /// sqlite3_cre
329b0 61 74 65 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d  ate_disposable_m
329c0 6f 64 75 6c 65 28 29 20 66 75 6e 63 74 69 6f 6e  odule() function
329d0 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s...        /// 
329e0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
329f0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
32a00 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20 20 20 20  e="argc">..     
32a10 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65     /// The numbe
32a20 72 20 6f 66 20 61 72 67 75 6d 65 6e 74 73 20 66  r of arguments f
32a30 72 6f 6d 20 74 68 65 20 43 52 45 41 54 45 20 56  rom the CREATE V
32a40 49 52 54 55 41 4c 20 54 41 42 4c 45 20 73 74 61  IRTUAL TABLE sta
32a50 74 65 6d 65 6e 74 2e 0d 0a 20 20 20 20 20 20 20  tement...       
32a60 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
32a70 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
32a80 6d 20 6e 61 6d 65 3d 22 61 72 67 76 22 3e 0d 0a  m name="argv">..
32a90 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
32aa0 61 72 72 61 79 20 6f 66 20 73 74 72 69 6e 67 20  array of string 
32ab0 61 72 67 75 6d 65 6e 74 73 20 66 72 6f 6d 20 74  arguments from t
32ac0 68 65 20 43 52 45 41 54 45 20 56 49 52 54 55 41  he CREATE VIRTUA
32ad0 4c 20 54 41 42 4c 45 0d 0a 20 20 20 20 20 20 20  L TABLE..       
32ae0 20 2f 2f 2f 20 73 74 61 74 65 6d 65 6e 74 2e 0d   /// statement..
32af0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
32b00 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
32b10 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
32b20 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20  pVtab">..       
32b30 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73   /// Upon succes
32b40 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65  s, this paramete
32b50 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69  r must be modifi
32b60 65 64 20 74 6f 20 70 6f 69 6e 74 20 74 6f 20 74  ed to point to t
32b70 68 65 20 6e 65 77 6c 79 0d 0a 20 20 20 20 20 20  he newly..      
32b80 20 20 2f 2f 2f 20 63 72 65 61 74 65 64 20 6e 61    /// created na
32b90 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76 74 61  tive sqlite3_vta
32ba0 62 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74  b derived struct
32bb0 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
32bc0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
32bd0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
32be0 61 6d 65 3d 22 70 45 72 72 6f 72 22 3e 0d 0a 20  ame="pError">.. 
32bf0 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20         /// Upon 
32c00 66 61 69 6c 75 72 65 2c 20 74 68 69 73 20 70 61  failure, this pa
32c10 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20  rameter must be 
32c20 6d 6f 64 69 66 69 65 64 20 74 6f 20 70 6f 69 6e  modified to poin
32c30 74 20 74 6f 20 74 68 65 20 65 72 72 6f 72 0d 0a  t to the error..
32c40 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 73 73          /// mess
32c50 61 67 65 2c 20 77 69 74 68 20 74 68 65 20 75 6e  age, with the un
32c60 64 65 72 6c 79 69 6e 67 20 6d 65 6d 6f 72 79 20  derlying memory 
32c70 68 61 76 69 6e 67 20 62 65 65 6e 20 6f 62 74 61  having been obta
32c80 69 6e 65 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20  ined from the.. 
32c90 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74         /// sqlit
32ca0 65 33 5f 6d 61 6c 6c 6f 63 28 29 20 66 75 6e 63  e3_malloc() func
32cb0 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  tion...        /
32cc0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
32cd0 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
32ce0 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
32cf0 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74  A standard SQLit
32d00 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a  e return code...
32d10 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
32d20 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
32d30 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 45 72  private SQLiteEr
32d40 72 6f 72 43 6f 64 65 20 43 72 65 61 74 65 4f 72  rorCode CreateOr
32d50 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20  Connect(..      
32d60 20 20 20 20 20 20 62 6f 6f 6c 20 63 72 65 61 74        bool creat
32d70 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
32d80 49 6e 74 50 74 72 20 70 44 62 2c 0d 0a 20 20 20  IntPtr pDb,..   
32d90 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
32da0 70 41 75 78 2c 0d 0a 20 20 20 20 20 20 20 20 20  pAux,..         
32db0 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20     int argc,..  
32dc0 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
32dd0 20 61 72 67 76 2c 0d 0a 20 20 20 20 20 20 20 20   argv,..        
32de0 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70      ref IntPtr p
32df0 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20  Vtab,..         
32e00 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 45     ref IntPtr pE
32e10 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20  rror..          
32e20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
32e30 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
32e40 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
32e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32e60 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 20  string fileName 
32e70 3d 20 53 51 4c 69 74 65 53 74 72 69 6e 67 2e 53  = SQLiteString.S
32e80 74 72 69 6e 67 46 72 6f 6d 55 74 66 38 49 6e 74  tringFromUtf8Int
32e90 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Ptr(..          
32ea0 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
32eb0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
32ec0 6c 69 74 65 33 5f 64 62 5f 66 69 6c 65 6e 61 6d  lite3_db_filenam
32ed0 65 28 70 44 62 2c 20 49 6e 74 50 74 72 2e 5a 65  e(pDb, IntPtr.Ze
32ee0 72 6f 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ro));....       
32ef0 20 20 20 20 20 20 20 20 20 75 73 69 6e 67 20 28           using (
32f00 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
32f10 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 3d 20 6e 65   connection = ne
32f20 77 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  w SQLiteConnecti
32f30 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on(..           
32f40 20 20 20 20 20 20 20 20 20 20 20 20 20 70 44 62               pDb
32f50 2c 20 66 69 6c 65 4e 61 6d 65 2c 20 66 61 6c 73  , fileName, fals
32f60 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
32f70 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
32f80 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
32f90 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74  teVirtualTable t
32fa0 61 62 6c 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20  able = null;..  
32fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32fc0 20 20 73 74 72 69 6e 67 20 65 72 72 6f 72 20 3d    string error =
32fd0 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20   null;....      
32fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
32ff0 20 28 28 63 72 65 61 74 65 20 26 26 20 43 72 65   ((create && Cre
33000 61 74 65 28 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20  ate(connection, 
33010 70 41 75 78 2c 0d 0a 20 20 20 20 20 20 20 20 20  pAux,..         
33020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33030 20 20 20 53 51 4c 69 74 65 53 74 72 69 6e 67 2e     SQLiteString.
33040 53 74 72 69 6e 67 41 72 72 61 79 46 72 6f 6d 55  StringArrayFromU
33050 74 66 38 53 69 7a 65 41 6e 64 49 6e 74 50 74 72  tf8SizeAndIntPtr
33060 28 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20  (argc,..        
33070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33080 20 20 20 20 61 72 67 76 29 2c 20 72 65 66 20 74      argv), ref t
33090 61 62 6c 65 2c 20 72 65 66 20 65 72 72 6f 72 29  able, ref error)
330a0 20 3d 3d 20 53 51 4c 69 74 65 45 72 72 6f 72 43   == SQLiteErrorC
330b0 6f 64 65 2e 4f 6b 29 20 7c 7c 0d 0a 20 20 20 20  ode.Ok) ||..    
330c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
330d0 20 20 20 20 28 21 63 72 65 61 74 65 20 26 26 20      (!create && 
330e0 43 6f 6e 6e 65 63 74 28 63 6f 6e 6e 65 63 74 69  Connect(connecti
330f0 6f 6e 2c 20 70 41 75 78 2c 0d 0a 20 20 20 20 20  on, pAux,..     
33100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33110 20 20 20 20 20 20 20 53 51 4c 69 74 65 53 74 72         SQLiteStr
33120 69 6e 67 2e 53 74 72 69 6e 67 41 72 72 61 79 46  ing.StringArrayF
33130 72 6f 6d 55 74 66 38 53 69 7a 65 41 6e 64 49 6e  romUtf8SizeAndIn
33140 74 50 74 72 28 61 72 67 63 2c 0d 0a 20 20 20 20  tPtr(argc,..    
33150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33160 20 20 20 20 20 20 20 20 61 72 67 76 29 2c 20 72          argv), r
33170 65 66 20 74 61 62 6c 65 2c 20 72 65 66 20 65 72  ef table, ref er
33180 72 6f 72 29 20 3d 3d 20 53 51 4c 69 74 65 45 72  ror) == SQLiteEr
33190 72 6f 72 43 6f 64 65 2e 4f 6b 29 29 0d 0a 20 20  rorCode.Ok))..  
331a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
331b0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
331c0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
331d0 28 74 61 62 6c 65 20 21 3d 20 6e 75 6c 6c 29 0d  (table != null).
331e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
331f0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
33200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33210 20 20 20 20 20 20 20 20 70 56 74 61 62 20 3d 20          pVtab = 
33220 54 61 62 6c 65 54 6f 49 6e 74 50 74 72 28 74 61  TableToIntPtr(ta
33230 62 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ble);..         
33240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33250 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65     return SQLite
33260 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 3b 0d 0a 20  ErrorCode.Ok;.. 
33270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33280 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
33290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
332a0 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20    else..        
332b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
332c0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
332d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
332e0 45 72 72 6f 72 20 3d 20 53 51 4c 69 74 65 53 74  Error = SQLiteSt
332f0 72 69 6e 67 2e 55 74 66 38 49 6e 74 50 74 72 46  ring.Utf8IntPtrF
33300 72 6f 6d 53 74 72 69 6e 67 28 0d 0a 20 20 20 20  romString(..    
33310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33320 20 20 20 20 20 20 20 20 20 20 20 20 22 6e 6f 20              "no 
33330 74 61 62 6c 65 20 77 61 73 20 63 72 65 61 74 65  table was create
33340 64 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  d");..          
33350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
33360 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
33370 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
33380 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
33390 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
333a0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
333b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
333c0 20 70 45 72 72 6f 72 20 3d 20 53 51 4c 69 74 65   pError = SQLite
333d0 53 74 72 69 6e 67 2e 55 74 66 38 49 6e 74 50 74  String.Utf8IntPt
333e0 72 46 72 6f 6d 53 74 72 69 6e 67 28 65 72 72 6f  rFromString(erro
333f0 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r);..           
33400 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
33410 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
33420 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
33430 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
33440 28 45 78 63 65 70 74 69 6f 6e 20 65 29 20 2f 2a  (Exception e) /*
33450 20 4e 4f 54 45 3a 20 4d 75 73 74 20 63 61 74 63   NOTE: Must catc
33460 68 20 41 4c 4c 2e 20 2a 2f 0d 0a 20 20 20 20 20  h ALL. */..     
33470 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
33480 20 20 20 20 20 20 20 20 20 20 70 45 72 72 6f 72            pError
33490 20 3d 20 53 51 4c 69 74 65 53 74 72 69 6e 67 2e   = SQLiteString.
334a0 55 74 66 38 49 6e 74 50 74 72 46 72 6f 6d 53 74  Utf8IntPtrFromSt
334b0 72 69 6e 67 28 65 2e 54 6f 53 74 72 69 6e 67 28  ring(e.ToString(
334c0 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ));..           
334d0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
334e0 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65 45    return SQLiteE
334f0 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 3b 0d  rrorCode.Error;.
33500 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
33510 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
33520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
33560 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
33570 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
33580 2f 2f 2f 20 43 61 6c 6c 73 20 6f 6e 65 20 6f 66  /// Calls one of
33590 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
335a0 6c 65 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 20  le finalization 
335b0 6d 65 74 68 6f 64 73 2e 0d 0a 20 20 20 20 20 20  methods...      
335c0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
335d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
335e0 61 72 61 6d 20 6e 61 6d 65 3d 22 64 65 73 74 72  aram name="destr
335f0 6f 79 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  oy">..        //
33600 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 74 6f 20 63 61  / Non-zero to ca
33610 6c 6c 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ll the <see cref
33620 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64  ="ISQLiteManaged
33630 4d 6f 64 75 6c 65 2e 44 65 73 74 72 6f 79 22 20  Module.Destroy" 
33640 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  />..        /// 
33650 6d 65 74 68 6f 64 3b 20 6f 74 68 65 72 77 69 73  method; otherwis
33660 65 2c 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  e, the..        
33670 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
33680 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64  SQLiteManagedMod
33690 75 6c 65 2e 44 69 73 63 6f 6e 6e 65 63 74 22 20  ule.Disconnect" 
336a0 2f 3e 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20 62  /> method will b
336b0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  e..        /// c
336c0 61 6c 6c 65 64 2e 0d 0a 20 20 20 20 20 20 20 20  alled...        
336d0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
336e0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
336f0 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a   name="pVtab">..
33700 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
33710 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
33720 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74  o the sqlite3_vt
33730 61 62 20 64 65 72 69 76 65 64 20 73 74 72 75 63  ab derived struc
33740 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ture...        /
33750 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
33760 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
33770 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
33780 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74  A standard SQLit
33790 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a  e return code...
337a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
337b0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
337c0 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 45 72  private SQLiteEr
337d0 72 6f 72 43 6f 64 65 20 44 65 73 74 72 6f 79 4f  rorCode DestroyO
337e0 72 44 69 73 63 6f 6e 6e 65 63 74 28 0d 0a 20 20  rDisconnect(..  
337f0 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 64            bool d
33800 65 73 74 72 6f 79 2c 0d 0a 20 20 20 20 20 20 20  estroy,..       
33810 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
33820 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  b..            )
33830 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
33840 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
33850 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
33860 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
33870 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20  iteVirtualTable 
33880 74 61 62 6c 65 20 3d 20 54 61 62 6c 65 46 72 6f  table = TableFro
33890 6d 49 6e 74 50 74 72 28 70 56 74 61 62 29 3b 0d  mIntPtr(pVtab);.
338a0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
338b0 20 20 20 69 66 20 28 74 61 62 6c 65 20 21 3d 20     if (table != 
338c0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
338d0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
338e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
338f0 20 28 28 64 65 73 74 72 6f 79 20 26 26 20 28 44   ((destroy && (D
33900 65 73 74 72 6f 79 28 74 61 62 6c 65 29 20 3d 3d  estroy(table) ==
33910 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
33920 2e 4f 6b 29 29 20 7c 7c 0d 0a 20 20 20 20 20 20  .Ok)) ||..      
33930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33940 20 20 28 21 64 65 73 74 72 6f 79 20 26 26 20 28    (!destroy && (
33950 44 69 73 63 6f 6e 6e 65 63 74 28 74 61 62 6c 65  Disconnect(table
33960 29 20 3d 3d 20 53 51 4c 69 74 65 45 72 72 6f 72  ) == SQLiteError
33970 43 6f 64 65 2e 4f 6b 29 29 29 0d 0a 20 20 20 20  Code.Ok)))..    
33980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33990 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
339a0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74             if (t
339b0 61 62 6c 65 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a  ables != null)..
339c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
339d0 20 20 20 20 20 20 20 20 20 20 20 20 74 61 62 6c              tabl
339e0 65 73 2e 52 65 6d 6f 76 65 28 70 56 74 61 62 29  es.Remove(pVtab)
339f0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
33a00 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
33a10 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  urn SQLiteErrorC
33a20 6f 64 65 2e 4f 6b 3b 0d 0a 20 20 20 20 20 20 20  ode.Ok;..       
33a30 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
33a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33a50 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
33a60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
33a70 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65  tch (Exception e
33a80 29 20 2f 2a 20 4e 4f 54 45 3a 20 4d 75 73 74 20  ) /* NOTE: Must 
33a90 63 61 74 63 68 20 41 4c 4c 2e 20 2a 2f 0d 0a 20  catch ALL. */.. 
33aa0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
33ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
33ac0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
33ad0 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 74 20 74 68    // NOTE: At th
33ae0 69 73 20 70 6f 69 6e 74 2c 20 74 68 65 72 65 20  is point, there 
33af0 69 73 20 6e 6f 20 77 61 79 20 74 6f 20 72 65 70  is no way to rep
33b00 6f 72 74 20 74 68 65 20 65 72 72 6f 72 0d 0a 20  ort the error.. 
33b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
33b20 2f 20 20 20 20 20 20 20 63 6f 6e 64 69 74 69 6f  /       conditio
33b30 6e 20 62 61 63 6b 20 74 6f 20 74 68 65 20 63 61  n back to the ca
33b40 6c 6c 65 72 3b 20 74 68 65 72 65 66 6f 72 65 2c  ller; therefore,
33b50 20 75 73 65 20 74 68 65 0d 0a 20 20 20 20 20 20   use the..      
33b60 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
33b70 20 20 20 6c 6f 67 67 69 6e 67 20 66 61 63 69 6c     logging facil
33b80 69 74 79 20 69 6e 73 74 65 61 64 2e 0d 0a 20 20  ity instead...  
33b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
33ba0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
33bb0 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
33bc0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
33bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
33be0 20 28 4c 6f 67 45 78 63 65 70 74 69 6f 6e 73 4e   (LogExceptionsN
33bf0 6f 54 68 72 6f 77 29 0d 0a 20 20 20 20 20 20 20  oThrow)..       
33c00 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
33c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33c20 20 20 20 20 20 20 20 20 2f 2a 20 74 68 72 6f 77          /* throw
33c30 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
33c40 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
33c50 69 74 65 4c 6f 67 2e 4c 6f 67 4d 65 73 73 61 67  iteLog.LogMessag
33c60 65 28 53 51 4c 69 74 65 42 61 73 65 2e 43 4f 52  e(SQLiteBase.COR
33c70 5f 45 5f 45 58 43 45 50 54 49 4f 4e 2c 0d 0a 20  _E_EXCEPTION,.. 
33c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33c90 20 20 20 20 20 20 20 20 20 20 20 48 65 6c 70 65             Helpe
33ca0 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
33cb0 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
33cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33cd0 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
33ce0 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
33cf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
33d00 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73               Uns
33d10 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
33d20 2e 45 78 63 65 70 74 69 6f 6e 4d 65 73 73 61 67  .ExceptionMessag
33d30 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20  eFormat,..      
33d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33d50 20 20 20 20 20 20 64 65 73 74 72 6f 79 20 3f 20        destroy ? 
33d60 22 78 44 65 73 74 72 6f 79 22 20 3a 20 22 78 44  "xDestroy" : "xD
33d70 69 73 63 6f 6e 6e 65 63 74 22 2c 20 65 29 29 3b  isconnect", e));
33d80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
33d90 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
33da0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
33db0 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
33dc0 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
33dd0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
33de0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20            // do 
33df0 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20  nothing...      
33e00 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
33e10 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
33e20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d          finally.
33e30 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
33e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33e50 46 72 65 65 54 61 62 6c 65 28 70 56 74 61 62 29  FreeTable(pVtab)
33e60 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
33e70 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
33e80 72 65 74 75 72 6e 20 53 51 4c 69 74 65 45 72 72  return SQLiteErr
33e90 6f 72 43 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a 20  orCode.Error;.. 
33ea0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
33eb0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
33ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
33f00 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 53         #region S
33f10 74 61 74 69 63 20 45 72 72 6f 72 20 48 61 6e 64  tatic Error Hand
33f20 6c 69 6e 67 20 48 65 6c 70 65 72 20 4d 65 74 68  ling Helper Meth
33f30 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ods..        ///
33f40 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
33f50 20 20 20 20 2f 2f 2f 20 41 72 72 61 6e 67 65 73      /// Arranges
33f60 20 66 6f 72 20 74 68 65 20 73 70 65 63 69 66 69   for the specifi
33f70 65 64 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65  ed error message
33f80 20 74 6f 20 62 65 20 70 6c 61 63 65 64 20 69 6e   to be placed in
33f90 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
33fa0 2f 2f 2f 20 7a 45 72 72 4d 73 67 20 66 69 65 6c  /// zErrMsg fiel
33fb0 64 20 6f 66 20 61 20 73 71 6c 69 74 65 33 5f 76  d of a sqlite3_v
33fc0 74 61 62 20 64 65 72 69 76 65 64 20 73 74 72 75  tab derived stru
33fd0 63 74 75 72 65 2c 20 66 72 65 65 69 6e 67 20 74  cture, freeing t
33fe0 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
33ff0 65 78 69 73 74 69 6e 67 20 65 72 72 6f 72 20 6d  existing error m
34000 65 73 73 61 67 65 2c 20 69 66 20 61 6e 79 2e 0d  essage, if any..
34010 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
34020 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
34030 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
34040 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20 20 20  ="module">..    
34050 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
34060 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64   cref="SQLiteMod
34070 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  ule" /> object i
34080 6e 73 74 61 6e 63 65 20 74 6f 20 62 65 20 75 73  nstance to be us
34090 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
340a0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
340b0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
340c0 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20  me="pVtab">..   
340d0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
340e0 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  ive pointer to t
340f0 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20  he sqlite3_vtab 
34100 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72  derived structur
34110 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
34120 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
34130 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
34140 65 3d 22 6c 6f 67 45 72 72 6f 72 73 22 3e 0d 0a  e="logErrors">..
34150 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d          /// Non-
34160 7a 65 72 6f 20 69 66 20 74 68 69 73 20 65 72 72  zero if this err
34170 6f 72 20 6d 65 73 73 61 67 65 20 73 68 6f 75 6c  or message shoul
34180 64 20 61 6c 73 6f 20 62 65 20 6c 6f 67 67 65 64  d also be logged
34190 20 75 73 69 6e 67 20 74 68 65 0d 0a 20 20 20 20   using the..    
341a0 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
341b0 66 3d 22 53 51 4c 69 74 65 4c 6f 67 22 20 2f 3e  f="SQLiteLog" />
341c0 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20   class...       
341d0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
341e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
341f0 6d 20 6e 61 6d 65 3d 22 6c 6f 67 45 78 63 65 70  m name="logExcep
34200 74 69 6f 6e 73 22 3e 0d 0a 20 20 20 20 20 20 20  tions">..       
34210 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66   /// Non-zero if
34220 20 63 61 75 67 68 74 20 65 78 63 65 70 74 69 6f   caught exceptio
34230 6e 73 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f 67  ns should be log
34240 67 65 64 20 75 73 69 6e 67 20 74 68 65 0d 0a 20  ged using the.. 
34250 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
34260 63 72 65 66 3d 22 53 51 4c 69 74 65 4c 6f 67 22  cref="SQLiteLog"
34270 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20   /> class...    
34280 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
34290 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
342a0 61 72 61 6d 20 6e 61 6d 65 3d 22 65 72 72 6f 72  aram name="error
342b0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
342c0 54 68 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67  The error messag
342d0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
342e0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
342f0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
34300 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  .        /// Non
34310 2d 7a 65 72 6f 20 75 70 6f 6e 20 73 75 63 63 65  -zero upon succe
34320 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ss...        ///
34330 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
34340 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
34350 74 69 63 20 62 6f 6f 6c 20 53 65 74 54 61 62 6c  tic bool SetTabl
34360 65 45 72 72 6f 72 28 0d 0a 20 20 20 20 20 20 20  eError(..       
34370 20 20 20 20 20 53 51 4c 69 74 65 4d 6f 64 75 6c       SQLiteModul
34380 65 20 6d 6f 64 75 6c 65 2c 0d 0a 20 20 20 20 20  e module,..     
34390 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
343a0 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  tab,..          
343b0 20 20 62 6f 6f 6c 20 6c 6f 67 45 72 72 6f 72 73    bool logErrors
343c0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62  ,..            b
343d0 6f 6f 6c 20 6c 6f 67 45 78 63 65 70 74 69 6f 6e  ool logException
343e0 73 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s,..            
343f0 73 74 72 69 6e 67 20 65 72 72 6f 72 0d 0a 20 20  string error..  
34400 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
34410 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
34420 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
34430 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
34440 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f 67 45          if (logE
34450 72 72 6f 72 73 20 26 26 20 28 65 72 72 6f 72 20  rrors && (error 
34460 21 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20  != null))..     
34470 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
34480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34490 20 20 53 51 4c 69 74 65 4c 6f 67 2e 4c 6f 67 4d    SQLiteLog.LogM
344a0 65 73 73 61 67 65 28 53 51 4c 69 74 65 45 72 72  essage(SQLiteErr
344b0 6f 72 43 6f 64 65 2e 45 72 72 6f 72 2c 0d 0a 20  orCode.Error,.. 
344c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
344d0 20 20 20 20 20 20 20 48 65 6c 70 65 72 4d 65 74         HelperMet
344e0 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
344f0 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
34500 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
34510 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43  ureInfo.CurrentC
34520 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20  ulture,..       
34530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34540 20 22 56 69 72 74 75 61 6c 20 74 61 62 6c 65 20   "Virtual table 
34550 65 72 72 6f 72 3a 20 7b 30 7d 22 2c 20 65 72 72  error: {0}", err
34560 6f 72 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a  or)); /* throw *
34570 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
34580 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
34590 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
345a0 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
345b0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
345c0 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
345d0 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20  hing...         
345e0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
345f0 20 20 20 20 62 6f 6f 6c 20 73 75 63 63 65 73 73      bool success
34600 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20   = false;..     
34610 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 4e         IntPtr pN
34620 65 77 45 72 72 6f 72 20 3d 20 49 6e 74 50 74 72  ewError = IntPtr
34630 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20  .Zero;....      
34640 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
34650 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
34660 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 56            if (pV
34670 74 61 62 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  tab == IntPtr.Ze
34680 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
34690 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
346a0 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
346b0 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66            int of
346c0 66 73 65 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20  fset = 0;....   
346d0 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66               off
346e0 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73  set = SQLiteMars
346f0 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66  hal.NextOffsetOf
34700 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
34710 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 49         offset, I
34720 6e 74 50 74 72 2e 53 69 7a 65 2c 20 73 69 7a 65  ntPtr.Size, size
34730 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20  of(int));....   
34740 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66               off
34750 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73  set = SQLiteMars
34760 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66  hal.NextOffsetOf
34770 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
34780 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 73         offset, s
34790 69 7a 65 6f 66 28 69 6e 74 29 2c 20 49 6e 74 50  izeof(int), IntP
347a0 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20  tr.Size);....   
347b0 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
347c0 50 74 72 20 70 4f 6c 64 45 72 72 6f 72 20 3d 20  Ptr pOldError = 
347d0 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65  SQLiteMarshal.Re
347e0 61 64 49 6e 74 50 74 72 28 70 56 74 61 62 2c 20  adIntPtr(pVtab, 
347f0 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20  offset);....    
34800 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
34810 70 4f 6c 64 45 72 72 6f 72 20 21 3d 20 49 6e 74  pOldError != Int
34820 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
34830 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
34840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34850 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46    SQLiteMemory.F
34860 72 65 65 28 70 4f 6c 64 45 72 72 6f 72 29 3b 20  ree(pOldError); 
34870 70 4f 6c 64 45 72 72 6f 72 20 3d 20 49 6e 74 50  pOldError = IntP
34880 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20  tr.Zero;..      
34890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
348a0 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74  LiteMarshal.Writ
348b0 65 49 6e 74 50 74 72 28 70 56 74 61 62 2c 20 6f  eIntPtr(pVtab, o
348c0 66 66 73 65 74 2c 20 70 4f 6c 64 45 72 72 6f 72  ffset, pOldError
348d0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
348e0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
348f0 20 20 20 20 20 20 20 20 20 69 66 20 28 65 72 72           if (err
34900 6f 72 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  or == null)..   
34910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34920 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 0d   return true;...
34930 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
34940 20 70 4e 65 77 45 72 72 6f 72 20 3d 20 53 51 4c   pNewError = SQL
34950 69 74 65 53 74 72 69 6e 67 2e 55 74 66 38 49 6e  iteString.Utf8In
34960 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28 65  tPtrFromString(e
34970 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20  rror);..        
34980 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61          SQLiteMa
34990 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 50 74  rshal.WriteIntPt
349a0 72 28 70 56 74 61 62 2c 20 6f 66 66 73 65 74 2c  r(pVtab, offset,
349b0 20 70 4e 65 77 45 72 72 6f 72 29 3b 0d 0a 20 20   pNewError);..  
349c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 75                su
349d0 63 63 65 73 73 20 3d 20 74 72 75 65 3b 0d 0a 20  ccess = true;.. 
349e0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
349f0 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
34a00 28 45 78 63 65 70 74 69 6f 6e 20 65 29 20 2f 2a  (Exception e) /*
34a10 20 4e 4f 54 45 3a 20 4d 75 73 74 20 63 61 74 63   NOTE: Must catc
34a20 68 20 41 4c 4c 2e 20 2a 2f 0d 0a 20 20 20 20 20  h ALL. */..     
34a30 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
34a40 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
34a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
34a60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
34a70 20 20 20 20 20 20 69 66 20 28 6c 6f 67 45 78 63        if (logExc
34a80 65 70 74 69 6f 6e 73 29 0d 0a 20 20 20 20 20 20  eptions)..      
34a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
34aa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
34ab0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4c           SQLiteL
34ac0 6f 67 2e 4c 6f 67 4d 65 73 73 61 67 65 28 53 51  og.LogMessage(SQ
34ad0 4c 69 74 65 42 61 73 65 2e 43 4f 52 5f 45 5f 45  LiteBase.COR_E_E
34ae0 58 43 45 50 54 49 4f 4e 2c 0d 0a 20 20 20 20 20  XCEPTION,..     
34af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34b00 20 20 20 20 20 20 20 48 65 6c 70 65 72 4d 65 74         HelperMet
34b10 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
34b20 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
34b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34b40 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
34b50 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  entCulture,..   
34b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34b70 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
34b80 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 45 78 63  ativeMethods.Exc
34b90 65 70 74 69 6f 6e 4d 65 73 73 61 67 65 46 6f 72  eptionMessageFor
34ba0 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  mat,..          
34bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34bc0 20 20 22 53 65 74 54 61 62 6c 65 45 72 72 6f 72    "SetTableError
34bd0 22 2c 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77  ", e)); /* throw
34be0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
34bf0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
34c00 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
34c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
34c20 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
34c30 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
34c40 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
34c50 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
34c60 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
34c70 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
34c80 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c             final
34c90 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ly..            
34ca0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
34cb0 20 20 20 69 66 20 28 21 73 75 63 63 65 73 73 20     if (!success 
34cc0 26 26 20 28 70 4e 65 77 45 72 72 6f 72 20 21 3d  && (pNewError !=
34cd0 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 29 0d 0a   IntPtr.Zero))..
34ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34cf0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
34d00 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 65 6d         SQLiteMem
34d10 6f 72 79 2e 46 72 65 65 28 70 4e 65 77 45 72 72  ory.Free(pNewErr
34d20 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  or);..          
34d30 20 20 20 20 20 20 20 20 20 20 70 4e 65 77 45 72            pNewEr
34d40 72 6f 72 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72  ror = IntPtr.Zer
34d50 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o;..            
34d60 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
34d70 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
34d80 20 20 20 20 72 65 74 75 72 6e 20 73 75 63 63 65      return succe
34d90 73 73 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ss;..        }..
34da0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
34db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34df0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
34e00 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
34e10 20 20 20 20 2f 2f 2f 20 41 72 72 61 6e 67 65 73      /// Arranges
34e20 20 66 6f 72 20 74 68 65 20 73 70 65 63 69 66 69   for the specifi
34e30 65 64 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65  ed error message
34e40 20 74 6f 20 62 65 20 70 6c 61 63 65 64 20 69 6e   to be placed in
34e50 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
34e60 2f 2f 2f 20 7a 45 72 72 4d 73 67 20 66 69 65 6c  /// zErrMsg fiel
34e70 64 20 6f 66 20 61 20 73 71 6c 69 74 65 33 5f 76  d of a sqlite3_v
34e80 74 61 62 20 64 65 72 69 76 65 64 20 73 74 72 75  tab derived stru
34e90 63 74 75 72 65 2c 20 66 72 65 65 69 6e 67 20 74  cture, freeing t
34ea0 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
34eb0 65 78 69 73 74 69 6e 67 20 65 72 72 6f 72 20 6d  existing error m
34ec0 65 73 73 61 67 65 2c 20 69 66 20 61 6e 79 2e 0d  essage, if any..
34ed0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
34ee0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
34ef0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
34f00 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20 20 20  ="module">..    
34f10 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
34f20 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64   cref="SQLiteMod
34f30 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  ule" /> object i
34f40 6e 73 74 61 6e 63 65 20 74 6f 20 62 65 20 75 73  nstance to be us
34f50 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
34f60 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
34f70 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
34f80 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20  me="table">..   
34f90 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
34fa0 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69  e cref="SQLiteVi
34fb0 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f  rtualTable" /> o
34fc0 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 75  bject instance u
34fd0 73 65 64 20 74 6f 0d 0a 20 20 20 20 20 20 20 20  sed to..        
34fe0 2f 2f 2f 20 6c 6f 6f 6b 75 70 20 74 68 65 20 6e  /// lookup the n
34ff0 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
35000 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61   the sqlite3_vta
35010 62 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74  b derived struct
35020 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
35030 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
35040 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
35050 61 6d 65 3d 22 6c 6f 67 45 72 72 6f 72 73 22 3e  ame="logErrors">
35060 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  ..        /// No
35070 6e 2d 7a 65 72 6f 20 69 66 20 74 68 69 73 20 65  n-zero if this e
35080 72 72 6f 72 20 6d 65 73 73 61 67 65 20 73 68 6f  rror message sho
35090 75 6c 64 20 61 6c 73 6f 20 62 65 20 6c 6f 67 67  uld also be logg
350a0 65 64 20 75 73 69 6e 67 20 74 68 65 0d 0a 20 20  ed using the..  
350b0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
350c0 72 65 66 3d 22 53 51 4c 69 74 65 4c 6f 67 22 20  ref="SQLiteLog" 
350d0 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20  /> class...     
350e0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
350f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
35100 72 61 6d 20 6e 61 6d 65 3d 22 6c 6f 67 45 78 63  ram name="logExc
35110 65 70 74 69 6f 6e 73 22 3e 0d 0a 20 20 20 20 20  eptions">..     
35120 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
35130 69 66 20 63 61 75 67 68 74 20 65 78 63 65 70 74  if caught except
35140 69 6f 6e 73 20 73 68 6f 75 6c 64 20 62 65 20 6c  ions should be l
35150 6f 67 67 65 64 20 75 73 69 6e 67 20 74 68 65 0d  ogged using the.
35160 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
35170 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4c 6f  e cref="SQLiteLo
35180 67 22 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20 20  g" /> class...  
35190 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
351a0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
351b0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 65 72 72  <param name="err
351c0 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  or">..        //
351d0 2f 20 54 68 65 20 65 72 72 6f 72 20 6d 65 73 73  / The error mess
351e0 61 67 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  age...        //
351f0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
35200 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
35210 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
35220 6f 6e 2d 7a 65 72 6f 20 75 70 6f 6e 20 73 75 63  on-zero upon suc
35230 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  cess...        /
35240 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
35250 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73         private s
35260 74 61 74 69 63 20 62 6f 6f 6c 20 53 65 74 54 61  tatic bool SetTa
35270 62 6c 65 45 72 72 6f 72 28 0d 0a 20 20 20 20 20  bleError(..     
35280 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 6f 64         SQLiteMod
35290 75 6c 65 20 6d 6f 64 75 6c 65 2c 0d 0a 20 20 20  ule module,..   
352a0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56           SQLiteV
352b0 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c  irtualTable tabl
352c0 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
352d0 62 6f 6f 6c 20 6c 6f 67 45 72 72 6f 72 73 2c 0d  bool logErrors,.
352e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f  .            boo
352f0 6c 20 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73 2c  l logExceptions,
35300 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74  ..            st
35310 72 69 6e 67 20 65 72 72 6f 72 0d 0a 20 20 20 20  ring error..    
35320 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
35330 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
35340 20 20 69 66 20 28 74 61 62 6c 65 20 3d 3d 20 6e    if (table == n
35350 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
35360 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
35370 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
35380 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 20     IntPtr pVtab 
35390 3d 20 74 61 62 6c 65 2e 4e 61 74 69 76 65 48 61  = table.NativeHa
353a0 6e 64 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ndle;....       
353b0 20 20 20 20 20 69 66 20 28 70 56 74 61 62 20 3d       if (pVtab =
353c0 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
353d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
353e0 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d  return false;...
353f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
35400 75 72 6e 20 53 65 74 54 61 62 6c 65 45 72 72 6f  urn SetTableErro
35410 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
35420 20 20 20 20 6d 6f 64 75 6c 65 2c 20 70 56 74 61      module, pVta
35430 62 2c 20 6c 6f 67 45 72 72 6f 72 73 2c 20 6c 6f  b, logErrors, lo
35440 67 45 78 63 65 70 74 69 6f 6e 73 2c 20 65 72 72  gExceptions, err
35450 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  or);..        }.
35460 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
35470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
354a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
354b0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
354c0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
354d0 20 20 20 20 20 2f 2f 2f 20 41 72 72 61 6e 67 65       /// Arrange
354e0 73 20 66 6f 72 20 74 68 65 20 73 70 65 63 69 66  s for the specif
354f0 69 65 64 20 65 72 72 6f 72 20 6d 65 73 73 61 67  ied error messag
35500 65 20 74 6f 20 62 65 20 70 6c 61 63 65 64 20 69  e to be placed i
35510 6e 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20  nto the..       
35520 20 2f 2f 2f 20 7a 45 72 72 4d 73 67 20 66 69 65   /// zErrMsg fie
35530 6c 64 20 6f 66 20 61 20 73 71 6c 69 74 65 33 5f  ld of a sqlite3_
35540 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74 72  vtab derived str
35550 75 63 74 75 72 65 2c 20 66 72 65 65 69 6e 67 20  ucture, freeing 
35560 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
35570 20 65 78 69 73 74 69 6e 67 20 65 72 72 6f 72 20   existing error 
35580 6d 65 73 73 61 67 65 2c 20 69 66 20 61 6e 79 2e  message, if any.
35590 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
355a0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
355b0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
355c0 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20 20  e="module">..   
355d0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
355e0 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f  e cref="SQLiteMo
355f0 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20  dule" /> object 
35600 69 6e 73 74 61 6e 63 65 20 74 6f 20 62 65 20 75  instance to be u
35610 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  sed...        //
35620 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
35630 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
35640 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a  ame="pCursor">..
35650 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
35660 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
35670 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74  o the sqlite3_vt
35680 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69 76 65  ab_cursor derive
35690 64 20 73 74 72 75 63 74 75 72 65 0d 0a 20 20 20  d structure..   
356a0 20 20 20 20 20 2f 2f 2f 20 75 73 65 64 20 74 6f       /// used to
356b0 20 67 65 74 20 74 68 65 20 6e 61 74 69 76 65 20   get the native 
356c0 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73  pointer to the s
356d0 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69  qlite3_vtab deri
356e0 76 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ved..        ///
356f0 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
35700 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
35710 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
35720 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c 6f 67 45  param name="logE
35730 72 72 6f 72 73 22 3e 0d 0a 20 20 20 20 20 20 20  rrors">..       
35740 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66   /// Non-zero if
35750 20 74 68 69 73 20 65 72 72 6f 72 20 6d 65 73 73   this error mess
35760 61 67 65 20 73 68 6f 75 6c 64 20 61 6c 73 6f 20  age should also 
35770 62 65 20 6c 6f 67 67 65 64 20 75 73 69 6e 67 20  be logged using 
35780 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
35790 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
357a0 74 65 4c 6f 67 22 20 2f 3e 20 63 6c 61 73 73 2e  teLog" /> class.
357b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
357c0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
357d0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
357e0 22 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73 22 3e  "logExceptions">
357f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  ..        /// No
35800 6e 2d 7a 65 72 6f 20 69 66 20 63 61 75 67 68 74  n-zero if caught
35810 20 65 78 63 65 70 74 69 6f 6e 73 20 73 68 6f 75   exceptions shou
35820 6c 64 20 62 65 20 6c 6f 67 67 65 64 20 75 73 69  ld be logged usi
35830 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  ng the..        
35840 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53  /// <see cref="S
35850 51 4c 69 74 65 4c 6f 67 22 20 2f 3e 20 63 6c 61  QLiteLog" /> cla
35860 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ss...        ///
35870 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
35880 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
35890 6d 65 3d 22 65 72 72 6f 72 22 3e 0d 0a 20 20 20  me="error">..   
358a0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 65 72 72       /// The err
358b0 6f 72 20 6d 65 73 73 61 67 65 2e 0d 0a 20 20 20  or message...   
358c0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
358d0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
358e0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
358f0 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 75    /// Non-zero u
35900 70 6f 6e 20 73 75 63 63 65 73 73 2e 0d 0a 20 20  pon success...  
35910 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
35920 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  rns>..        pr
35930 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f  ivate static boo
35940 6c 20 53 65 74 43 75 72 73 6f 72 45 72 72 6f 72  l SetCursorError
35950 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
35960 51 4c 69 74 65 4d 6f 64 75 6c 65 20 6d 6f 64 75  QLiteModule modu
35970 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le,..           
35980 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 2c   IntPtr pCursor,
35990 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 6f  ..            bo
359a0 6f 6c 20 6c 6f 67 45 72 72 6f 72 73 2c 0d 0a 20  ol logErrors,.. 
359b0 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20             bool 
359c0 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73 2c 0d 0a  logExceptions,..
359d0 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
359e0 6e 67 20 65 72 72 6f 72 0d 0a 20 20 20 20 20 20  ng error..      
359f0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
35a00 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
35a10 69 66 20 28 70 43 75 72 73 6f 72 20 3d 3d 20 49  if (pCursor == I
35a20 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
35a30 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
35a40 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
35a50 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
35a60 20 70 56 74 61 62 20 3d 20 54 61 62 6c 65 46 72   pVtab = TableFr
35a70 6f 6d 43 75 72 73 6f 72 28 6d 6f 64 75 6c 65 2c  omCursor(module,
35a80 20 70 43 75 72 73 6f 72 29 3b 0d 0a 0d 0a 20 20   pCursor);....  
35a90 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 56            if (pV
35aa0 74 61 62 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  tab == IntPtr.Ze
35ab0 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
35ac0 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
35ad0 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
35ae0 20 20 72 65 74 75 72 6e 20 53 65 74 54 61 62 6c    return SetTabl
35af0 65 45 72 72 6f 72 28 0d 0a 20 20 20 20 20 20 20  eError(..       
35b00 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2c           module,
35b10 20 70 56 74 61 62 2c 20 6c 6f 67 45 72 72 6f 72   pVtab, logError
35b20 73 2c 20 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73  s, logExceptions
35b30 2c 20 65 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20  , error);..     
35b40 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
35b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35b90 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
35ba0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
35bb0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 72  ..        /// Ar
35bc0 72 61 6e 67 65 73 20 66 6f 72 20 74 68 65 20 73  ranges for the s
35bd0 70 65 63 69 66 69 65 64 20 65 72 72 6f 72 20 6d  pecified error m
35be0 65 73 73 61 67 65 20 74 6f 20 62 65 20 70 6c 61  essage to be pla
35bf0 63 65 64 20 69 6e 74 6f 20 74 68 65 0d 0a 20 20  ced into the..  
35c00 20 20 20 20 20 20 2f 2f 2f 20 7a 45 72 72 4d 73        /// zErrMs
35c10 67 20 66 69 65 6c 64 20 6f 66 20 61 20 73 71 6c  g field of a sql
35c20 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65  ite3_vtab derive
35c30 64 20 73 74 72 75 63 74 75 72 65 2c 20 66 72 65  d structure, fre
35c40 65 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20  eing the..      
35c50 20 20 2f 2f 2f 20 65 78 69 73 74 69 6e 67 20 65    /// existing e
35c60 72 72 6f 72 20 6d 65 73 73 61 67 65 2c 20 69 66  rror message, if
35c70 20 61 6e 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f   any...        /
35c80 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
35c90 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
35ca0 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e  m name="module">
35cb0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
35cc0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
35cd0 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62  iteModule" /> ob
35ce0 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 74 6f  ject instance to
35cf0 20 62 65 20 75 73 65 64 2e 0d 0a 20 20 20 20 20   be used...     
35d00 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
35d10 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
35d20 72 61 6d 20 6e 61 6d 65 3d 22 63 75 72 73 6f 72  ram name="cursor
35d30 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
35d40 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
35d50 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
35d60 65 43 75 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65  eCursor" /> obje
35d70 63 74 20 69 6e 73 74 61 6e 63 65 20 75 73 65 64  ct instance used
35d80 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   to..        ///
35d90 20 6c 6f 6f 6b 75 70 20 74 68 65 20 6e 61 74 69   lookup the nati
35da0 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
35db0 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64  e sqlite3_vtab d
35dc0 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65  erived structure
35dd0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
35de0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
35df0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
35e00 3d 22 6c 6f 67 45 72 72 6f 72 73 22 3e 0d 0a 20  ="logErrors">.. 
35e10 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a         /// Non-z
35e20 65 72 6f 20 69 66 20 74 68 69 73 20 65 72 72 6f  ero if this erro
35e30 72 20 6d 65 73 73 61 67 65 20 73 68 6f 75 6c 64  r message should
35e40 20 61 6c 73 6f 20 62 65 20 6c 6f 67 67 65 64 20   also be logged 
35e50 75 73 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20  using the..     
35e60 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
35e70 3d 22 53 51 4c 69 74 65 4c 6f 67 22 20 2f 3e 20  ="SQLiteLog" /> 
35e80 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20  class...        
35e90 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
35ea0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
35eb0 20 6e 61 6d 65 3d 22 6c 6f 67 45 78 63 65 70 74   name="logExcept
35ec0 69 6f 6e 73 22 3e 0d 0a 20 20 20 20 20 20 20 20  ions">..        
35ed0 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
35ee0 63 61 75 67 68 74 20 65 78 63 65 70 74 69 6f 6e  caught exception
35ef0 73 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f 67 67  s should be logg
35f00 65 64 20 75 73 69 6e 67 20 74 68 65 0d 0a 20 20  ed using the..  
35f10 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
35f20 72 65 66 3d 22 53 51 4c 69 74 65 4c 6f 67 22 20  ref="SQLiteLog" 
35f30 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20  /> class...     
35f40 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
35f50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
35f60 72 61 6d 20 6e 61 6d 65 3d 22 65 72 72 6f 72 22  ram name="error"
35f70 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
35f80 68 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65  he error message
35f90 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
35fa0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
35fb0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
35fc0 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d          /// Non-
35fd0 7a 65 72 6f 20 75 70 6f 6e 20 73 75 63 63 65 73  zero upon succes
35fe0 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s...        /// 
35ff0 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
36000 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
36010 69 63 20 62 6f 6f 6c 20 53 65 74 43 75 72 73 6f  ic bool SetCurso
36020 72 45 72 72 6f 72 28 0d 0a 20 20 20 20 20 20 20  rError(..       
36030 20 20 20 20 20 53 51 4c 69 74 65 4d 6f 64 75 6c       SQLiteModul
36040 65 20 6d 6f 64 75 6c 65 2c 0d 0a 20 20 20 20 20  e module,..     
36050 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72         SQLiteVir
36060 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 20  tualTableCursor 
36070 63 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20  cursor,..       
36080 20 20 20 20 20 62 6f 6f 6c 20 6c 6f 67 45 72 72       bool logErr
36090 6f 72 73 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ors,..          
360a0 20 20 62 6f 6f 6c 20 6c 6f 67 45 78 63 65 70 74    bool logExcept
360b0 69 6f 6e 73 2c 0d 0a 20 20 20 20 20 20 20 20 20  ions,..         
360c0 20 20 20 73 74 72 69 6e 67 20 65 72 72 6f 72 0d     string error.
360d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
360e0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
360f0 20 20 20 20 20 20 20 69 66 20 28 63 75 72 73 6f         if (curso
36100 72 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  r == null)..    
36110 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
36120 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
36130 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
36140 70 43 75 72 73 6f 72 20 3d 20 63 75 72 73 6f 72  pCursor = cursor
36150 2e 4e 61 74 69 76 65 48 61 6e 64 6c 65 3b 0d 0a  .NativeHandle;..
36160 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
36170 20 28 70 43 75 72 73 6f 72 20 3d 3d 20 49 6e 74   (pCursor == Int
36180 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
36190 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
361a0 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  n false;....    
361b0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53          return S
361c0 65 74 43 75 72 73 6f 72 45 72 72 6f 72 28 0d 0a  etCursorError(..
361d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
361e0 6d 6f 64 75 6c 65 2c 20 70 43 75 72 73 6f 72 2c  module, pCursor,
361f0 20 6c 6f 67 45 72 72 6f 72 73 2c 20 6c 6f 67 45   logErrors, logE
36200 78 63 65 70 74 69 6f 6e 73 2c 20 65 72 72 6f 72  xceptions, error
36210 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  );..        }.. 
36220 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
36230 6e 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  n..        #endr
36240 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
36250 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
36260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36290 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
362a0 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 6f 74      #region Prot
362b0 65 63 74 65 64 20 4d 65 6d 62 65 72 73 0d 0a 20  ected Members.. 
362c0 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 4d         #region M
362d0 6f 64 75 6c 65 20 48 65 6c 70 65 72 20 4d 65 74  odule Helper Met
362e0 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hods..        //
362f0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
36300 20 20 20 20 20 2f 2f 2f 20 47 65 74 73 20 61 6e       /// Gets an
36310 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 3c 73  d returns the <s
36320 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
36330 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e  NativeModule" />
36340 20 69 6e 74 65 72 66 61 63 65 0d 0a 20 20 20 20   interface..    
36350 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e      /// implemen
36360 74 61 74 69 6f 6e 20 74 6f 20 62 65 20 75 73 65  tation to be use
36370 64 20 77 68 65 6e 20 63 72 65 61 74 69 6e 67 20  d when creating 
36380 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74  the native sqlit
36390 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20  e3_module..     
363a0 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65     /// structure
363b0 2e 20 20 44 65 72 69 76 65 64 20 63 6c 61 73 73  .  Derived class
363c0 65 73 20 6d 61 79 20 6f 76 65 72 72 69 64 65 20  es may override 
363d0 74 68 69 73 20 6d 65 74 68 6f 64 20 74 6f 20 73  this method to s
363e0 75 70 70 6c 79 20 61 6e 0d 0a 20 20 20 20 20 20  upply an..      
363f0 20 20 2f 2f 2f 20 61 6c 74 65 72 6e 61 74 65 20    /// alternate 
36400 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 66  implementation f
36410 6f 72 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  or the <see cref
36420 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
36430 6f 64 75 6c 65 22 20 2f 3e 0d 0a 20 20 20 20 20  odule" />..     
36440 20 20 20 2f 2f 2f 20 69 6e 74 65 72 66 61 63 65     /// interface
36450 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
36460 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
36470 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
36480 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
36490 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
364a0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
364b0 22 20 2f 3e 20 69 6e 74 65 72 66 61 63 65 20 69  " /> interface i
364c0 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 74 6f  mplementation to
364d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 62 65  ..        /// be
364e0 20 75 73 65 64 20 77 68 65 6e 20 70 6f 70 75 6c   used when popul
364f0 61 74 69 6e 67 20 74 68 65 20 6e 61 74 69 76 65  ating the native
36500 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20   sqlite3_module 
36510 73 74 72 75 63 74 75 72 65 2e 20 20 49 66 0d 0a  structure.  If..
36520 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20          /// the 
36530 72 65 74 75 72 6e 65 64 20 76 61 6c 75 65 20 69  returned value i
36540 73 20 6e 75 6c 6c 2c 20 74 68 65 20 70 72 69 76  s null, the priv
36550 61 74 65 20 6d 65 74 68 6f 64 73 20 70 72 6f 76  ate methods prov
36560 69 64 65 64 20 62 79 20 74 68 65 0d 0a 20 20 20  ided by the..   
36570 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
36580 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65  ef="SQLiteModule
36590 22 20 2f 3e 20 63 6c 61 73 73 20 61 6e 64 20 72  " /> class and r
365a0 65 6c 61 74 69 6e 67 20 74 6f 20 74 68 65 0d 0a  elating to the..
365b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
365c0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
365d0 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 69  tiveModule" /> i
365e0 6e 74 65 72 66 61 63 65 20 20 77 69 6c 6c 20 62  nterface  will b
365f0 65 20 75 73 65 64 20 74 6f 0d 0a 20 20 20 20 20  e used to..     
36600 20 20 20 2f 2f 2f 20 63 72 65 61 74 65 20 74 68     /// create th
36610 65 20 6e 65 63 65 73 73 61 72 79 20 64 65 6c 65  e necessary dele
36620 67 61 74 65 73 2e 0d 0a 20 20 20 20 20 20 20 20  gates...        
36630 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
36640 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65          protecte
36650 64 20 76 69 72 74 75 61 6c 20 49 53 51 4c 69 74  d virtual ISQLit
36660 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20 47 65  eNativeModule Ge
36670 74 4e 61 74 69 76 65 4d 6f 64 75 6c 65 49 6d 70  tNativeModuleImp
36680 6c 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  l()..        {..
36690 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
366a0 72 6e 20 6e 75 6c 6c 3b 20 2f 2a 20 4e 4f 54 45  rn null; /* NOTE
366b0 3a 20 55 73 65 20 74 68 65 20 62 75 69 6c 74 2d  : Use the built-
366c0 69 6e 20 64 65 66 61 75 6c 74 20 64 65 6c 65 67  in default deleg
366d0 61 74 65 73 2e 20 2a 2f 0d 0a 20 20 20 20 20 20  ates. */..      
366e0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
366f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36730 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
36740 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
36750 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 72 65  .        /// Cre
36760 61 74 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73  ates and returns
36770 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
36780 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
36790 75 6c 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20  ule" />..       
367a0 20 2f 2f 2f 20 69 6e 74 65 72 66 61 63 65 20 69   /// interface i
367b0 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 63 6f  mplementation co
367c0 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 74  rresponding to t
367d0 68 65 20 63 75 72 72 65 6e 74 0d 0a 20 20 20 20  he current..    
367e0 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
367f0 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22  f="SQLiteModule"
36800 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
36810 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nce...        //
36820 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
36830 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
36840 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
36850 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
36860 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
36870 75 6c 65 22 20 2f 3e 20 69 6e 74 65 72 66 61 63  ule" /> interfac
36880 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e implementation
36890 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f  ..        /// co
368a0 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 74  rresponding to t
368b0 68 65 20 63 75 72 72 65 6e 74 20 3c 73 65 65 20  he current <see 
368c0 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75  cref="SQLiteModu
368d0 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 0d 0a 20  le" /> object.. 
368e0 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61         /// insta
368f0 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nce...        //
36900 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
36910 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20        protected 
36920 76 69 72 74 75 61 6c 20 49 53 51 4c 69 74 65 4e  virtual ISQLiteN
36930 61 74 69 76 65 4d 6f 64 75 6c 65 20 43 72 65 61  ativeModule Crea
36940 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 49 6d  teNativeModuleIm
36950 70 6c 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  pl()..        {.
36960 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
36970 75 72 6e 20 6e 65 77 20 53 51 4c 69 74 65 4e 61  urn new SQLiteNa
36980 74 69 76 65 4d 6f 64 75 6c 65 28 74 68 69 73 29  tiveModule(this)
36990 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
369a0 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
369b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
369c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
369d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
369e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
369f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36a00 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
36a10 72 65 67 69 6f 6e 20 4e 61 74 69 76 65 20 54 61  region Native Ta
36a20 62 6c 65 20 48 65 6c 70 65 72 20 4d 65 74 68 6f  ble Helper Metho
36a30 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
36a40 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
36a50 20 20 20 2f 2f 2f 20 41 6c 6c 6f 63 61 74 65 73     /// Allocates
36a60 20 61 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65   a native sqlite
36a70 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73  3_vtab derived s
36a80 74 72 75 63 74 75 72 65 20 61 6e 64 20 72 65 74  tructure and ret
36a90 75 72 6e 73 20 61 0d 0a 20 20 20 20 20 20 20 20  urns a..        
36aa0 2f 2f 2f 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  /// native point
36ab0 65 72 20 74 6f 20 69 74 2e 0d 0a 20 20 20 20 20  er to it...     
36ac0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
36ad0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
36ae0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
36af0 20 20 2f 2f 2f 20 41 20 6e 61 74 69 76 65 20 70    /// A native p
36b00 6f 69 6e 74 65 72 20 74 6f 20 61 20 6e 61 74 69  ointer to a nati
36b10 76 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20  ve sqlite3_vtab 
36b20 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72  derived structur
36b30 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
36b40 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
36b50 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 69      protected vi
36b60 72 74 75 61 6c 20 49 6e 74 50 74 72 20 41 6c 6c  rtual IntPtr All
36b70 6f 63 61 74 65 54 61 62 6c 65 28 29 0d 0a 20 20  ocateTable()..  
36b80 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
36b90 20 20 20 20 20 69 6e 74 20 73 69 7a 65 20 3d 20       int size = 
36ba0 4d 61 72 73 68 61 6c 2e 53 69 7a 65 4f 66 28 74  Marshal.SizeOf(t
36bb0 79 70 65 6f 66 28 0d 0a 20 20 20 20 20 20 20 20  ypeof(..        
36bc0 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61          UnsafeNa
36bd0 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
36be0 74 65 33 5f 76 74 61 62 29 29 3b 0d 0a 0d 0a 20  te3_vtab));.... 
36bf0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
36c00 6e 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 41  n SQLiteMemory.A
36c10 6c 6c 6f 63 61 74 65 28 73 69 7a 65 29 3b 0d 0a  llocate(size);..
36c20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
36c30 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
36c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
36c80 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
36c90 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
36ca0 2f 2f 20 5a 65 72 6f 73 20 6f 75 74 20 74 68 65  // Zeros out the
36cb0 20 66 69 65 6c 64 73 20 6f 66 20 61 20 6e 61 74   fields of a nat
36cc0 69 76 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62  ive sqlite3_vtab
36cd0 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75   derived structu
36ce0 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
36cf0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
36d00 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
36d10 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20  name="pVtab">.. 
36d20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
36d30 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
36d40 20 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69   the native sqli
36d50 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64  te3_vtab derived
36d60 20 73 74 72 75 63 74 75 72 65 20 74 6f 0d 0a 20   structure to.. 
36d70 20 20 20 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 2e         /// zero.
36d80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
36d90 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
36da0 70 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61  protected virtua
36db0 6c 20 76 6f 69 64 20 5a 65 72 6f 54 61 62 6c 65  l void ZeroTable
36dc0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  (..            I
36dd0 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20  ntPtr pVtab..   
36de0 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
36df0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
36e00 20 20 20 69 66 20 28 70 56 74 61 62 20 3d 3d 20     if (pVtab == 
36e10 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
36e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
36e30 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  turn;....       
36e40 20 20 20 20 20 69 6e 74 20 6f 66 66 73 65 74 20       int offset 
36e50 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  = 0;....        
36e60 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61      SQLiteMarsha
36e70 6c 2e 57 72 69 74 65 49 6e 74 50 74 72 28 70 56  l.WriteIntPtr(pV
36e80 74 61 62 2c 20 6f 66 66 73 65 74 2c 20 49 6e 74  tab, offset, Int
36e90 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20  Ptr.Zero);....  
36ea0 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
36eb0 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c   = SQLiteMarshal
36ec0 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a  .NextOffsetOf(..
36ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36ee0 6f 66 66 73 65 74 2c 20 49 6e 74 50 74 72 2e 53  offset, IntPtr.S
36ef0 69 7a 65 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29  ize, sizeof(int)
36f00 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
36f10 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e    SQLiteMarshal.
36f20 57 72 69 74 65 49 6e 74 33 32 28 70 56 74 61 62  WriteInt32(pVtab
36f30 2c 20 6f 66 66 73 65 74 2c 20 30 29 3b 0d 0a 0d  , offset, 0);...
36f40 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66  .            off
36f50 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73  set = SQLiteMars
36f60 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66  hal.NextOffsetOf
36f70 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
36f80 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f     offset, sizeo
36f90 66 28 69 6e 74 29 2c 20 49 6e 74 50 74 72 2e 53  f(int), IntPtr.S
36fa0 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ize);....       
36fb0 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68       SQLiteMarsh
36fc0 61 6c 2e 57 72 69 74 65 49 6e 74 50 74 72 28 70  al.WriteIntPtr(p
36fd0 56 74 61 62 2c 20 6f 66 66 73 65 74 2c 20 49 6e  Vtab, offset, In
36fe0 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20 20  tPtr.Zero);..   
36ff0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
37000 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
37010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37040 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
37050 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
37060 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
37070 46 72 65 65 73 20 61 20 6e 61 74 69 76 65 20 73  Frees a native s
37080 71 6c 69 74 65 33 5f 76 74 61 62 20 73 74 72 75  qlite3_vtab stru
37090 63 74 75 72 65 20 75 73 69 6e 67 20 74 68 65 20  cture using the 
370a0 70 72 6f 76 69 64 65 64 20 6e 61 74 69 76 65 0d  provided native.
370b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 6f 69  .        /// poi
370c0 6e 74 65 72 20 74 6f 20 69 74 2e 0d 0a 20 20 20  nter to it...   
370d0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
370e0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
370f0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
37100 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  tab">..        /
37110 2f 2f 20 41 20 6e 61 74 69 76 65 20 70 6f 69 6e  // A native poin
37120 74 65 72 20 74 6f 20 61 20 6e 61 74 69 76 65 20  ter to a native 
37130 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72  sqlite3_vtab der
37140 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d  ived structure..
37150 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
37160 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70  aram>..        p
37170 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c  rotected virtual
37180 20 76 6f 69 64 20 46 72 65 65 54 61 62 6c 65 28   void FreeTable(
37190 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
371a0 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20  tPtr pVtab..    
371b0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
371c0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
371d0 20 20 53 65 74 54 61 62 6c 65 45 72 72 6f 72 28    SetTableError(
371e0 70 56 74 61 62 2c 20 6e 75 6c 6c 29 3b 0d 0a 20  pVtab, null);.. 
371f0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
37200 65 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70 56 74  eMemory.Free(pVt
37210 61 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ab);..        }.
37220 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
37230 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
37240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37280 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
37290 20 20 23 72 65 67 69 6f 6e 20 4e 61 74 69 76 65    #region Native
372a0 20 43 75 72 73 6f 72 20 48 65 6c 70 65 72 20 4d   Cursor Helper M
372b0 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
372c0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
372d0 20 20 20 20 20 20 20 2f 2f 2f 20 41 6c 6c 6f 63         /// Alloc
372e0 61 74 65 73 20 61 20 6e 61 74 69 76 65 20 73 71  ates a native sq
372f0 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f  lite3_vtab_curso
37300 72 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74  r derived struct
37310 75 72 65 20 61 6e 64 0d 0a 20 20 20 20 20 20 20  ure and..       
37320 20 2f 2f 2f 20 72 65 74 75 72 6e 73 20 61 20 6e   /// returns a n
37330 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
37340 20 69 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f   it...        //
37350 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
37360 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
37370 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
37380 20 41 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65   A native pointe
37390 72 20 74 6f 20 61 20 6e 61 74 69 76 65 20 73 71  r to a native sq
373a0 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f  lite3_vtab_curso
373b0 72 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74  r derived struct
373c0 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
373d0 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
373e0 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20        protected 
373f0 76 69 72 74 75 61 6c 20 49 6e 74 50 74 72 20 41  virtual IntPtr A
37400 6c 6c 6f 63 61 74 65 43 75 72 73 6f 72 28 29 0d  llocateCursor().
37410 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
37420 20 20 20 20 20 20 20 20 69 6e 74 20 73 69 7a 65          int size
37430 20 3d 20 4d 61 72 73 68 61 6c 2e 53 69 7a 65 4f   = Marshal.SizeO
37440 66 28 74 79 70 65 6f 66 28 0d 0a 20 20 20 20 20  f(typeof(..     
37450 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66             Unsaf
37460 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
37470 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73  qlite3_vtab_curs
37480 6f 72 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  or));....       
37490 20 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69       return SQLi
374a0 74 65 4d 65 6d 6f 72 79 2e 41 6c 6c 6f 63 61 74  teMemory.Allocat
374b0 65 28 73 69 7a 65 29 3b 0d 0a 20 20 20 20 20 20  e(size);..      
374c0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
374d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
374e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
374f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37510 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
37520 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
37530 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 46 72 65  .        /// Fre
37540 65 73 20 61 20 6e 61 74 69 76 65 20 73 71 6c 69  es a native sqli
37550 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20  te3_vtab_cursor 
37560 73 74 72 75 63 74 75 72 65 20 75 73 69 6e 67 20  structure using 
37570 74 68 65 20 70 72 6f 76 69 64 65 64 0d 0a 20 20  the provided..  
37580 20 20 20 20 20 20 2f 2f 2f 20 6e 61 74 69 76 65        /// native
37590 20 70 6f 69 6e 74 65 72 20 74 6f 20 69 74 2e 0d   pointer to it..
375a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
375b0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
375c0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
375d0 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20  ="pCursor">..   
375e0 20 20 20 20 20 2f 2f 2f 20 41 20 6e 61 74 69 76       /// A nativ
375f0 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6e  e pointer to a n
37600 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76 74  ative sqlite3_vt
37610 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69 76 65  ab_cursor derive
37620 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20  d structure...  
37630 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
37640 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74  m>..        prot
37650 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 76 6f  ected virtual vo
37660 69 64 20 46 72 65 65 43 75 72 73 6f 72 28 0d 0a  id FreeCursor(..
37670 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
37680 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20  tr pCursor..    
37690 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
376a0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
376b0 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46    SQLiteMemory.F
376c0 72 65 65 28 70 43 75 72 73 6f 72 29 3b 0d 0a 20  ree(pCursor);.. 
376d0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
376e0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
376f0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
37700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
37740 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
37750 6f 6e 20 53 74 61 74 69 63 20 54 61 62 6c 65 20  on Static Table 
37760 4c 6f 6f 6b 75 70 20 4d 65 74 68 6f 64 73 0d 0a  Lookup Methods..
37770 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
37780 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
37790 2f 2f 20 52 65 61 64 73 20 61 6e 64 20 72 65 74  // Reads and ret
377a0 75 72 6e 73 20 74 68 65 20 6e 61 74 69 76 65 20  urns the native 
377b0 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73  pointer to the s
377c0 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69  qlite3_vtab deri
377d0 76 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ved..        ///
377e0 20 73 74 72 75 63 74 75 72 65 20 62 61 73 65 64   structure based
377f0 20 6f 6e 20 74 68 65 20 6e 61 74 69 76 65 20 70   on the native p
37800 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71  ointer to the sq
37810 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f  lite3_vtab_curso
37820 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64  r..        /// d
37830 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65  erived structure
37840 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
37850 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
37860 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
37870 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20  me="module">..  
37880 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
37890 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d  ee cref="SQLiteM
378a0 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74  odule" /> object
378b0 20 69 6e 73 74 61 6e 63 65 20 74 6f 20 62 65 20   instance to be 
378c0 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  used...        /
378d0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
378e0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
378f0 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d  name="pCursor">.
37900 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
37910 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
37920 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76  to the sqlite3_v
37930 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69 76  tab_cursor deriv
37940 65 64 20 73 74 72 75 63 74 75 72 65 0d 0a 20 20  ed structure..  
37950 20 20 20 20 20 20 2f 2f 2f 20 66 72 6f 6d 20 77        /// from w
37960 68 69 63 68 20 74 6f 20 72 65 61 64 20 74 68 65  hich to read the
37970 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
37980 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76  to the sqlite3_v
37990 74 61 62 20 64 65 72 69 76 65 64 0d 0a 20 20 20  tab derived..   
379a0 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75       /// structu
379b0 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
379c0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
379d0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
379e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
379f0 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
37a00 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
37a10 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74 72  vtab derived str
37a20 75 63 74 75 72 65 20 2d 4f 52 2d 0d 0a 20 20 20  ucture -OR-..   
37a30 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
37a40 65 66 3d 22 49 6e 74 50 74 72 2e 5a 65 72 6f 22  ef="IntPtr.Zero"
37a50 20 2f 3e 20 69 66 20 69 74 20 63 61 6e 6e 6f 74   /> if it cannot
37a60 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d   be determined..
37a70 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
37a80 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
37a90 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
37aa0 49 6e 74 50 74 72 20 54 61 62 6c 65 46 72 6f 6d  IntPtr TableFrom
37ab0 43 75 72 73 6f 72 28 0d 0a 20 20 20 20 20 20 20  Cursor(..       
37ac0 20 20 20 20 20 53 51 4c 69 74 65 4d 6f 64 75 6c       SQLiteModul
37ad0 65 20 6d 6f 64 75 6c 65 2c 0d 0a 20 20 20 20 20  e module,..     
37ae0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
37af0 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20  ursor..         
37b00 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
37b10 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
37b20 28 70 43 75 72 73 6f 72 20 3d 3d 20 49 6e 74 50  (pCursor == IntP
37b30 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
37b40 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
37b50 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d   IntPtr.Zero;...
37b60 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
37b70 75 72 6e 20 4d 61 72 73 68 61 6c 2e 52 65 61 64  urn Marshal.Read
37b80 49 6e 74 50 74 72 28 70 43 75 72 73 6f 72 29 3b  IntPtr(pCursor);
37b90 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
37ba0 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
37bb0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
37bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37c00 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
37c10 65 67 69 6f 6e 20 54 61 62 6c 65 20 4c 6f 6f 6b  egion Table Look
37c20 75 70 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20  up Methods..    
37c30 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
37c40 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52  >..        /// R
37c50 65 61 64 73 20 61 6e 64 20 72 65 74 75 72 6e 73  eads and returns
37c60 20 74 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e   the native poin
37c70 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74  ter to the sqlit
37c80 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 0d  e3_vtab derived.
37c90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72  .        /// str
37ca0 75 63 74 75 72 65 20 62 61 73 65 64 20 6f 6e 20  ucture based on 
37cb0 74 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  the native point
37cc0 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65  er to the sqlite
37cd0 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 0d 0a 20  3_vtab_cursor.. 
37ce0 20 20 20 20 20 20 20 2f 2f 2f 20 64 65 72 69 76         /// deriv
37cf0 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  ed structure... 
37d00 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
37d10 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
37d20 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
37d30 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20  pCursor">..     
37d40 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
37d50 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
37d60 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75   sqlite3_vtab_cu
37d70 72 73 6f 72 20 64 65 72 69 76 65 64 20 73 74 72  rsor derived str
37d80