System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 2e7c3c4d7522a0be5d1376dd3797984e1dd66cf7:


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 75 73  obalization;..us
0160: 69 6e 67 20 53 79 73 74 65 6d 2e 52 75 6e 74 69  ing System.Runti
0170: 6d 65 2e 49 6e 74 65 72 6f 70 53 65 72 76 69 63  me.InteropServic
0180: 65 73 3b 0d 0a 75 73 69 6e 67 20 53 79 73 74 65  es;..using Syste
0190: 6d 2e 54 65 78 74 3b 0d 0a 0d 0a 6e 61 6d 65 73  m.Text;....names
01a0: 70 61 63 65 20 53 79 73 74 65 6d 2e 44 61 74 61  pace System.Data
01b0: 2e 53 51 4c 69 74 65 0d 0a 7b 0d 0a 20 20 20 20  .SQLite..{..    
01c0: 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 43 6f  #region SQLiteCo
01d0: 6e 74 65 78 74 20 48 65 6c 70 65 72 20 43 6c 61  ntext Helper Cla
01e0: 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ss..    /// <sum
01f0: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  mary>..    /// T
0200: 68 69 73 20 63 6c 61 73 73 20 72 65 70 72 65 73  his class repres
0210: 65 6e 74 73 20 61 20 63 6f 6e 74 65 78 74 20 66  ents a context f
0220: 72 6f 6d 20 74 68 65 20 53 51 4c 69 74 65 20 63  rom the SQLite c
0230: 6f 72 65 20 6c 69 62 72 61 72 79 20 74 68 61 74  ore library that
0240: 20 63 61 6e 0d 0a 20 20 20 20 2f 2f 2f 20 62 65   can..    /// be
0250: 20 70 61 73 73 65 64 20 74 6f 20 74 68 65 20 73   passed to the s
0260: 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 2a 28  qlite3_result_*(
0270: 29 20 61 6e 64 20 61 73 73 6f 63 69 61 74 65 64  ) and associated
0280: 20 66 75 6e 63 74 69 6f 6e 73 2e 0d 0a 20 20 20   functions...   
0290: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
02a0: 0a 20 20 20 20 70 75 62 6c 69 63 20 73 65 61 6c  .    public seal
02b0: 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 43  ed class SQLiteC
02c0: 6f 6e 74 65 78 74 20 3a 20 49 53 51 4c 69 74 65  ontext : ISQLite
02d0: 4e 61 74 69 76 65 48 61 6e 64 6c 65 0d 0a 20 20  NativeHandle..  
02e0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65    {..        #re
02f0: 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61 74  gion Private Dat
0300: 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  a..        /// <
0310: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
0320: 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
0330: 20 63 6f 6e 74 65 78 74 20 68 61 6e 64 6c 65 2e   context handle.
0340: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
0350: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
0360: 20 20 70 72 69 76 61 74 65 20 49 6e 74 50 74 72    private IntPtr
0370: 20 70 43 6f 6e 74 65 78 74 3b 0d 0a 20 20 20 20   pContext;..    
0380: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
0390: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
03a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
03b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
03c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
03d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
03e0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
03f0: 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43 6f 6e  gion Private Con
0400: 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20  structors..     
0410: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
0420: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f  ..        /// Co
0430: 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74  nstructs an inst
0440: 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61  ance of this cla
0450: 73 73 20 75 73 69 6e 67 20 74 68 65 20 73 70 65  ss using the spe
0460: 63 69 66 69 65 64 20 6e 61 74 69 76 65 0d 0a 20  cified native.. 
0470: 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 74 65         /// conte
0480: 78 74 20 68 61 6e 64 6c 65 2e 0d 0a 20 20 20 20  xt handle...    
0490: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
04a0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
04b0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 6f  <param name="pCo
04c0: 6e 74 65 78 74 22 3e 0d 0a 20 20 20 20 20 20 20  ntext">..       
04d0: 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
04e0: 63 6f 6e 74 65 78 74 20 68 61 6e 64 6c 65 20 74  context handle t
04f0: 6f 20 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20  o use...        
0500: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
0510: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53        internal S
0520: 51 4c 69 74 65 43 6f 6e 74 65 78 74 28 49 6e 74  QLiteContext(Int
0530: 50 74 72 20 70 43 6f 6e 74 65 78 74 29 0d 0a 20  Ptr pContext).. 
0540: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
0550: 20 20 20 20 20 20 74 68 69 73 2e 70 43 6f 6e 74        this.pCont
0560: 65 78 74 20 3d 20 70 43 6f 6e 74 65 78 74 3b 0d  ext = pContext;.
0570: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
0580: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
0590: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
05a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
05b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
05c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
05d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
05e0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
05f0: 67 69 6f 6e 20 49 53 51 4c 69 74 65 4e 61 74 69  gion ISQLiteNati
0600: 76 65 48 61 6e 64 6c 65 20 4d 65 6d 62 65 72 73  veHandle Members
0610: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
0620: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
0630: 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 74 68 65   /// Returns the
0640: 20 75 6e 64 65 72 6c 79 69 6e 67 20 53 51 4c 69   underlying SQLi
0650: 74 65 20 6e 61 74 69 76 65 20 68 61 6e 64 6c 65  te native handle
0660: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
0670: 20 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20 2f   this..        /
0680: 2f 2f 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  // object instan
0690: 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ce...        ///
06a0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
06b0: 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50       public IntP
06c0: 74 72 20 4e 61 74 69 76 65 48 61 6e 64 6c 65 0d  tr NativeHandle.
06d0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
06e0: 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65          get { re
06f0: 74 75 72 6e 20 70 43 6f 6e 74 65 78 74 3b 20 7d  turn pContext; }
0700: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
0710: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
0720: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
0730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0770: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
0780: 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 4d 65 74  egion Public Met
0790: 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hods..        //
07a0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
07b0: 20 20 20 20 20 2f 2f 2f 20 53 65 74 73 20 74 68       /// Sets th
07c0: 65 20 63 6f 6e 74 65 78 74 20 72 65 73 75 6c 74  e context result
07d0: 20 74 6f 20 4e 55 4c 4c 2e 0d 0a 20 20 20 20 20   to NULL...     
07e0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
07f0: 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
0800: 63 20 76 6f 69 64 20 53 65 74 4e 75 6c 6c 28 29  c void SetNull()
0810: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
0820: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f           if (pCo
0830: 6e 74 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e  ntext == IntPtr.
0840: 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
0850: 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
0860: 20 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f   InvalidOperatio
0870: 6e 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d  nException();...
0880: 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73  .            Uns
0890: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
08a0: 2e 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f  .sqlite3_result_
08b0: 6e 75 6c 6c 28 70 43 6f 6e 74 65 78 74 29 3b 0d  null(pContext);.
08c0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
08d0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
08e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
08f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
0920: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
0930: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
0940: 2f 2f 2f 20 53 65 74 73 20 74 68 65 20 63 6f 6e  /// Sets the con
0950: 74 65 78 74 20 72 65 73 75 6c 74 20 74 6f 20 74  text result to t
0960: 68 65 20 73 70 65 63 69 66 69 65 64 20 3c 73 65  he specified <se
0970: 65 20 63 72 65 66 3d 22 44 6f 75 62 6c 65 22 20  e cref="Double" 
0980: 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  />..        /// 
0990: 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20  value...        
09a0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
09b0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
09c0: 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e  am name="value">
09d0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
09e0: 65 20 3c 73 65 65 20 63 72 65 66 3d 22 44 6f 75  e <see cref="Dou
09f0: 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f  ble" /> value to
0a00: 20 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f   use...        /
0a10: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
0a20: 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64       public void
0a30: 20 53 65 74 44 6f 75 62 6c 65 28 64 6f 75 62 6c   SetDouble(doubl
0a40: 65 20 76 61 6c 75 65 29 0d 0a 20 20 20 20 20 20  e value)..      
0a50: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
0a60: 20 69 66 20 28 70 43 6f 6e 74 65 78 74 20 3d 3d   if (pContext ==
0a70: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
0a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
0a90: 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64  hrow new Invalid
0aa0: 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69  OperationExcepti
0ab0: 6f 6e 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  on();....#if !PL
0ac0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
0ad0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
0ae0: 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
0af0: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
0b00: 5f 72 65 73 75 6c 74 5f 64 6f 75 62 6c 65 28 70  _result_double(p
0b10: 43 6f 6e 74 65 78 74 2c 20 76 61 6c 75 65 29 3b  Context, value);
0b20: 0d 0a 23 65 6c 69 66 20 21 53 51 4c 49 54 45 5f  ..#elif !SQLITE_
0b30: 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 20 20  STANDARD..      
0b40: 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69        UnsafeNati
0b50: 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
0b60: 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62 6c 65 5f  3_result_double_
0b70: 69 6e 74 65 72 6f 70 28 70 43 6f 6e 74 65 78 74  interop(pContext
0b80: 2c 20 72 65 66 20 76 61 6c 75 65 29 3b 0d 0a 23  , ref value);..#
0b90: 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
0ba0: 20 20 74 68 72 6f 77 20 6e 65 77 20 4e 6f 74 49    throw new NotI
0bb0: 6d 70 6c 65 6d 65 6e 74 65 64 45 78 63 65 70 74  mplementedExcept
0bc0: 69 6f 6e 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ion();..#endif..
0bd0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
0be0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
0bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
0c30: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
0c40: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
0c50: 2f 2f 20 53 65 74 73 20 74 68 65 20 63 6f 6e 74  // Sets the cont
0c60: 65 78 74 20 72 65 73 75 6c 74 20 74 6f 20 74 68  ext result to th
0c70: 65 20 73 70 65 63 69 66 69 65 64 20 3c 73 65 65  e specified <see
0c80: 20 63 72 65 66 3d 22 49 6e 74 33 32 22 20 2f 3e   cref="Int32" />
0c90: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 61  ..        /// va
0ca0: 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  lue...        //
0cb0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
0cc0: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
0cd0: 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a   name="value">..
0ce0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
0cf0: 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 33 32  <see cref="Int32
0d00: 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 75 73  " /> value to us
0d10: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
0d20: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
0d30: 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 53 65    public void Se
0d40: 74 49 6e 74 28 69 6e 74 20 76 61 6c 75 65 29 0d  tInt(int value).
0d50: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
0d60: 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f 6e          if (pCon
0d70: 74 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  text == IntPtr.Z
0d80: 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
0d90: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
0da0: 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e  InvalidOperation
0db0: 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a  Exception();....
0dc0: 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
0dd0: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
0de0: 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 69  sqlite3_result_i
0df0: 6e 74 28 70 43 6f 6e 74 65 78 74 2c 20 76 61 6c  nt(pContext, val
0e00: 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ue);..        }.
0e10: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
0e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e60: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
0e70: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
0e80: 20 20 20 20 20 2f 2f 2f 20 53 65 74 73 20 74 68       /// Sets th
0e90: 65 20 63 6f 6e 74 65 78 74 20 72 65 73 75 6c 74  e context result
0ea0: 20 74 6f 20 74 68 65 20 73 70 65 63 69 66 69 65   to the specifie
0eb0: 64 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74  d <see cref="Int
0ec0: 36 34 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20  64" />..        
0ed0: 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20  /// value...    
0ee0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
0ef0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
0f00: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c  <param name="val
0f10: 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ue">..        //
0f20: 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
0f30: 22 49 6e 74 36 34 22 20 2f 3e 20 76 61 6c 75 65  "Int64" /> value
0f40: 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20 20 20   to use...      
0f50: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
0f60: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76          public v
0f70: 6f 69 64 20 53 65 74 49 6e 74 36 34 28 6c 6f 6e  oid SetInt64(lon
0f80: 67 20 76 61 6c 75 65 29 0d 0a 20 20 20 20 20 20  g value)..      
0f90: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
0fa0: 20 69 66 20 28 70 43 6f 6e 74 65 78 74 20 3d 3d   if (pContext ==
0fb0: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
0fc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
0fd0: 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64  hrow new Invalid
0fe0: 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69  OperationExcepti
0ff0: 6f 6e 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  on();....#if !PL
1000: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1010: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
1020: 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
1030: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
1040: 5f 72 65 73 75 6c 74 5f 69 6e 74 36 34 28 70 43  _result_int64(pC
1050: 6f 6e 74 65 78 74 2c 20 76 61 6c 75 65 29 3b 0d  ontext, value);.
1060: 0a 23 65 6c 69 66 20 21 53 51 4c 49 54 45 5f 53  .#elif !SQLITE_S
1070: 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 20 20 20  TANDARD..       
1080: 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
1090: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
10a0: 5f 72 65 73 75 6c 74 5f 69 6e 74 36 34 5f 69 6e  _result_int64_in
10b0: 74 65 72 6f 70 28 70 43 6f 6e 74 65 78 74 2c 20  terop(pContext, 
10c0: 72 65 66 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6c  ref value);..#el
10d0: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
10e0: 74 68 72 6f 77 20 6e 65 77 20 4e 6f 74 49 6d 70  throw new NotImp
10f0: 6c 65 6d 65 6e 74 65 64 45 78 63 65 70 74 69 6f  lementedExceptio
1100: 6e 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  n();..#endif..  
1110: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1120: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1170: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
1180: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1190: 20 53 65 74 73 20 74 68 65 20 63 6f 6e 74 65 78   Sets the contex
11a0: 74 20 72 65 73 75 6c 74 20 74 6f 20 74 68 65 20  t result to the 
11b0: 73 70 65 63 69 66 69 65 64 20 3c 73 65 65 20 63  specified <see c
11c0: 72 65 66 3d 22 53 74 72 69 6e 67 22 20 2f 3e 0d  ref="String" />.
11d0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c  .        /// val
11e0: 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ue...        ///
11f0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1200: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1210: 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20  name="value">.. 
1220: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
1230: 73 65 65 20 63 72 65 66 3d 22 53 74 72 69 6e 67  see cref="String
1240: 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 75 73  " /> value to us
1250: 65 2e 20 20 54 68 69 73 20 76 61 6c 75 65 20 77  e.  This value w
1260: 69 6c 6c 20 62 65 0d 0a 20 20 20 20 20 20 20 20  ill be..        
1270: 2f 2f 2f 20 63 6f 6e 76 65 72 74 65 64 20 74 6f  /// converted to
1280: 20 74 68 65 20 55 54 46 2d 38 20 65 6e 63 6f 64   the UTF-8 encod
1290: 69 6e 67 20 70 72 69 6f 72 20 74 6f 20 62 65 69  ing prior to bei
12a0: 6e 67 20 75 73 65 64 2e 0d 0a 20 20 20 20 20 20  ng used...      
12b0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
12c0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76          public v
12d0: 6f 69 64 20 53 65 74 53 74 72 69 6e 67 28 73 74  oid SetString(st
12e0: 72 69 6e 67 20 76 61 6c 75 65 29 0d 0a 20 20 20  ring value)..   
12f0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1300: 20 20 20 20 69 66 20 28 70 43 6f 6e 74 65 78 74      if (pContext
1310: 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
1320: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1330: 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76 61    throw new Inva
1340: 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65  lidOperationExce
1350: 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20  ption();....    
1360: 20 20 20 20 20 20 20 20 62 79 74 65 5b 5d 20 62          byte[] b
1370: 79 74 65 73 20 3d 20 53 51 4c 69 74 65 53 74 72  ytes = SQLiteStr
1380: 69 6e 67 2e 47 65 74 55 74 66 38 42 79 74 65 73  ing.GetUtf8Bytes
1390: 46 72 6f 6d 53 74 72 69 6e 67 28 76 61 6c 75 65  FromString(value
13a0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
13b0: 20 20 69 66 20 28 62 79 74 65 73 20 3d 3d 20 6e    if (bytes == n
13c0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
13d0: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
13e0: 41 72 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65  ArgumentNullExce
13f0: 70 74 69 6f 6e 28 22 76 61 6c 75 65 22 29 3b 0d  ption("value");.
1400: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 55  ...            U
1410: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
1420: 64 73 2e 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  ds.sqlite3_resul
1430: 74 5f 74 65 78 74 28 0d 0a 20 20 20 20 20 20 20  t_text(..       
1440: 20 20 20 20 20 20 20 20 20 70 43 6f 6e 74 65 78           pContex
1450: 74 2c 20 62 79 74 65 73 2c 20 62 79 74 65 73 2e  t, bytes, bytes.
1460: 4c 65 6e 67 74 68 2c 20 28 49 6e 74 50 74 72 29  Length, (IntPtr)
1470: 28 2d 31 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  (-1));..        
1480: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
1490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14d0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
14e0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
14f0: 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 74 73 20         /// Sets 
1500: 74 68 65 20 63 6f 6e 74 65 78 74 20 72 65 73 75  the context resu
1510: 6c 74 20 74 6f 20 74 68 65 20 73 70 65 63 69 66  lt to the specif
1520: 69 65 64 20 3c 73 65 65 20 63 72 65 66 3d 22 53  ied <see cref="S
1530: 74 72 69 6e 67 22 20 2f 3e 0d 0a 20 20 20 20 20  tring" />..     
1540: 20 20 20 2f 2f 2f 20 76 61 6c 75 65 20 63 6f 6e     /// value con
1550: 74 61 69 6e 69 6e 67 20 61 6e 20 65 72 72 6f 72  taining an error
1560: 20 6d 65 73 73 61 67 65 2e 0d 0a 20 20 20 20 20   message...     
1570: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1580: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1590: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75  param name="valu
15a0: 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
15b0: 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
15c0: 53 74 72 69 6e 67 22 20 2f 3e 20 76 61 6c 75 65  String" /> value
15d0: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20   containing the 
15e0: 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 74 65  error message te
15f0: 78 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  xt...        ///
1600: 20 54 68 69 73 20 76 61 6c 75 65 20 77 69 6c 6c   This value will
1610: 20 62 65 20 63 6f 6e 76 65 72 74 65 64 20 74 6f   be converted to
1620: 20 74 68 65 20 55 54 46 2d 38 20 65 6e 63 6f 64   the UTF-8 encod
1630: 69 6e 67 20 70 72 69 6f 72 20 74 6f 20 62 65 69  ing prior to bei
1640: 6e 67 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ng..        /// 
1650: 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  used...        /
1660: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1670: 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64       public void
1680: 20 53 65 74 45 72 72 6f 72 28 73 74 72 69 6e 67   SetError(string
1690: 20 76 61 6c 75 65 29 0d 0a 20 20 20 20 20 20 20   value)..       
16a0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
16b0: 69 66 20 28 70 43 6f 6e 74 65 78 74 20 3d 3d 20  if (pContext == 
16c0: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
16d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
16e0: 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f  row new InvalidO
16f0: 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69 6f  perationExceptio
1700: 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  n();....        
1710: 20 20 20 20 62 79 74 65 5b 5d 20 62 79 74 65 73      byte[] bytes
1720: 20 3d 20 53 51 4c 69 74 65 53 74 72 69 6e 67 2e   = SQLiteString.
1730: 47 65 74 55 74 66 38 42 79 74 65 73 46 72 6f 6d  GetUtf8BytesFrom
1740: 53 74 72 69 6e 67 28 76 61 6c 75 65 29 3b 0d 0a  String(value);..
1750: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
1760: 20 28 62 79 74 65 73 20 3d 3d 20 6e 75 6c 6c 29   (bytes == null)
1770: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1780: 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75    throw new Argu
1790: 6d 65 6e 74 4e 75 6c 6c 45 78 63 65 70 74 69 6f  mentNullExceptio
17a0: 6e 28 22 76 61 6c 75 65 22 29 3b 0d 0a 0d 0a 20  n("value");.... 
17b0: 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66             Unsaf
17c0: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
17d0: 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72  qlite3_result_er
17e0: 72 6f 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ror(..          
17f0: 20 20 20 20 20 20 70 43 6f 6e 74 65 78 74 2c 20        pContext, 
1800: 62 79 74 65 73 2c 20 62 79 74 65 73 2e 4c 65 6e  bytes, bytes.Len
1810: 67 74 68 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  gth);..        }
1820: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1870: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
1880: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
1890: 20 20 20 20 20 20 2f 2f 2f 20 53 65 74 73 20 74        /// Sets t
18a0: 68 65 20 63 6f 6e 74 65 78 74 20 72 65 73 75 6c  he context resul
18b0: 74 20 74 6f 20 74 68 65 20 73 70 65 63 69 66 69  t to the specifi
18c0: 65 64 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  ed <see cref="SQ
18d0: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 22 20 2f  LiteErrorCode" /
18e0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76  >..        /// v
18f0: 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  alue...        /
1900: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1910: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1920: 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d  m name="value">.
1930: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1940: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
1950: 74 65 45 72 72 6f 72 43 6f 64 65 22 20 2f 3e 20  teErrorCode" /> 
1960: 76 61 6c 75 65 20 74 6f 20 75 73 65 2e 0d 0a 20  value to use... 
1970: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1980: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  am>..        pub
1990: 6c 69 63 20 76 6f 69 64 20 53 65 74 45 72 72 6f  lic void SetErro
19a0: 72 43 6f 64 65 28 53 51 4c 69 74 65 45 72 72 6f  rCode(SQLiteErro
19b0: 72 43 6f 64 65 20 76 61 6c 75 65 29 0d 0a 20 20  rCode value)..  
19c0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
19d0: 20 20 20 20 20 69 66 20 28 70 43 6f 6e 74 65 78       if (pContex
19e0: 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  t == IntPtr.Zero
19f0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1a00: 20 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76     throw new Inv
1a10: 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63  alidOperationExc
1a20: 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20  eption();....   
1a30: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
1a40: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
1a50: 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f  ite3_result_erro
1a60: 72 5f 63 6f 64 65 28 70 43 6f 6e 74 65 78 74 2c  r_code(pContext,
1a70: 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20   value);..      
1a80: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
1a90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ad0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1ae0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1af0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 74  .        /// Set
1b00: 73 20 74 68 65 20 63 6f 6e 74 65 78 74 20 72 65  s the context re
1b10: 73 75 6c 74 20 74 6f 20 63 6f 6e 74 61 69 6e 20  sult to contain 
1b20: 74 68 65 20 65 72 72 6f 72 20 63 6f 64 65 20 53  the error code S
1b30: 51 4c 49 54 45 5f 54 4f 4f 42 49 47 2e 0d 0a 20  QLITE_TOOBIG... 
1b40: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
1b50: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
1b60: 75 62 6c 69 63 20 76 6f 69 64 20 53 65 74 45 72  ublic void SetEr
1b70: 72 6f 72 54 6f 6f 42 69 67 28 29 0d 0a 20 20 20  rorTooBig()..   
1b80: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1b90: 20 20 20 20 69 66 20 28 70 43 6f 6e 74 65 78 74      if (pContext
1ba0: 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
1bb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1bc0: 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76 61    throw new Inva
1bd0: 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65  lidOperationExce
1be0: 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20  ption();....    
1bf0: 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61          UnsafeNa
1c00: 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
1c10: 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72  te3_result_error
1c20: 5f 74 6f 6f 62 69 67 28 70 43 6f 6e 74 65 78 74  _toobig(pContext
1c30: 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  );..        }...
1c40: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c90: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
1ca0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1cb0: 20 20 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20     /// Sets the 
1cc0: 63 6f 6e 74 65 78 74 20 72 65 73 75 6c 74 20 74  context result t
1cd0: 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65 20 65 72  o contain the er
1ce0: 72 6f 72 20 63 6f 64 65 20 53 51 4c 49 54 45 5f  ror code SQLITE_
1cf0: 4e 4f 4d 45 4d 2e 0d 0a 20 20 20 20 20 20 20 20  NOMEM...        
1d00: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1d10: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76          public v
1d20: 6f 69 64 20 53 65 74 45 72 72 6f 72 4e 6f 4d 65  oid SetErrorNoMe
1d30: 6d 6f 72 79 28 29 0d 0a 20 20 20 20 20 20 20 20  mory()..        
1d40: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
1d50: 66 20 28 70 43 6f 6e 74 65 78 74 20 3d 3d 20 49  f (pContext == I
1d60: 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
1d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72               thr
1d80: 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70  ow new InvalidOp
1d90: 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e  erationException
1da0: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
1db0: 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
1dc0: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 72  ethods.sqlite3_r
1dd0: 65 73 75 6c 74 5f 65 72 72 6f 72 5f 6e 6f 6d 65  esult_error_nome
1de0: 6d 28 70 43 6f 6e 74 65 78 74 29 3b 0d 0a 20 20  m(pContext);..  
1df0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1e00: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1e50: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
1e60: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1e70: 20 53 65 74 73 20 74 68 65 20 63 6f 6e 74 65 78   Sets the contex
1e80: 74 20 72 65 73 75 6c 74 20 74 6f 20 74 68 65 20  t result to the 
1e90: 73 70 65 63 69 66 69 65 64 20 3c 73 65 65 20 63  specified <see c
1ea0: 72 65 66 3d 22 42 79 74 65 22 20 2f 3e 20 61 72  ref="Byte" /> ar
1eb0: 72 61 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ray..        ///
1ec0: 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20   value...       
1ed0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1ee0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1ef0: 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22  ram name="value"
1f00: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1f10: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 42 79  he <see cref="By
1f20: 74 65 22 20 2f 3e 20 61 72 72 61 79 20 76 61 6c  te" /> array val
1f30: 75 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20  ue to use...    
1f40: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1f50: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
1f60: 20 76 6f 69 64 20 53 65 74 42 6c 6f 62 28 62 79   void SetBlob(by
1f70: 74 65 5b 5d 20 76 61 6c 75 65 29 0d 0a 20 20 20  te[] value)..   
1f80: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1f90: 20 20 20 20 69 66 20 28 70 43 6f 6e 74 65 78 74      if (pContext
1fa0: 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
1fb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1fc0: 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76 61    throw new Inva
1fd0: 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65  lidOperationExce
1fe0: 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20  ption();....    
1ff0: 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75          if (valu
2000: 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
2010: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
2020: 77 20 6e 65 77 20 41 72 67 75 6d 65 6e 74 4e 75  w new ArgumentNu
2030: 6c 6c 45 78 63 65 70 74 69 6f 6e 28 22 76 61 6c  llException("val
2040: 75 65 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ue");....       
2050: 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
2060: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
2070: 5f 72 65 73 75 6c 74 5f 62 6c 6f 62 28 0d 0a 20  _result_blob(.. 
2080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
2090: 43 6f 6e 74 65 78 74 2c 20 76 61 6c 75 65 2c 20  Context, value, 
20a0: 76 61 6c 75 65 2e 4c 65 6e 67 74 68 2c 20 28 49  value.Length, (I
20b0: 6e 74 50 74 72 29 28 2d 31 29 29 3b 0d 0a 20 20  ntPtr)(-1));..  
20c0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
20d0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
20e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2120: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
2130: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
2140: 20 53 65 74 73 20 74 68 65 20 63 6f 6e 74 65 78   Sets the contex
2150: 74 20 72 65 73 75 6c 74 20 74 6f 20 61 20 42 4c  t result to a BL
2160: 4f 42 20 6f 66 20 7a 65 72 6f 73 20 6f 66 20 74  OB of zeros of t
2170: 68 65 20 73 70 65 63 69 66 69 65 64 20 73 69 7a  he specified siz
2180: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
2190: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
21a0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
21b0: 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20  ame="value">..  
21c0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75        /// The nu
21d0: 6d 62 65 72 20 6f 66 20 7a 65 72 6f 20 62 79 74  mber of zero byt
21e0: 65 73 20 74 6f 20 75 73 65 20 66 6f 72 20 74 68  es to use for th
21f0: 65 20 42 4c 4f 42 20 63 6f 6e 74 65 78 74 20 72  e BLOB context r
2200: 65 73 75 6c 74 2e 0d 0a 20 20 20 20 20 20 20 20  esult...        
2210: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
2220: 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69        public voi
2230: 64 20 53 65 74 5a 65 72 6f 42 6c 6f 62 28 69 6e  d SetZeroBlob(in
2240: 74 20 76 61 6c 75 65 29 0d 0a 20 20 20 20 20 20  t value)..      
2250: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2260: 20 69 66 20 28 70 43 6f 6e 74 65 78 74 20 3d 3d   if (pContext ==
2270: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
2280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2290: 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64  hrow new Invalid
22a0: 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69  OperationExcepti
22b0: 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  on();....       
22c0: 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
22d0: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
22e0: 5f 72 65 73 75 6c 74 5f 7a 65 72 6f 62 6c 6f 62  _result_zeroblob
22f0: 28 70 43 6f 6e 74 65 78 74 2c 20 76 61 6c 75 65  (pContext, value
2300: 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  );..        }...
2310: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
2320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2360: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
2370: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2380: 20 20 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20     /// Sets the 
2390: 63 6f 6e 74 65 78 74 20 72 65 73 75 6c 74 20 74  context result t
23a0: 6f 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  o the specified 
23b0: 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
23c0: 65 56 61 6c 75 65 22 20 2f 3e 2e 0d 0a 20 20 20  eValue" />...   
23d0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
23e0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
23f0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61   <param name="va
2400: 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  lue">..        /
2410: 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
2420: 3d 22 53 51 4c 69 74 65 56 61 6c 75 65 22 20 2f  ="SQLiteValue" /
2430: 3e 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20 20  > to use...     
2440: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
2450: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
2460: 76 6f 69 64 20 53 65 74 56 61 6c 75 65 28 53 51  void SetValue(SQ
2470: 4c 69 74 65 56 61 6c 75 65 20 76 61 6c 75 65 29  LiteValue value)
2480: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
2490: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f           if (pCo
24a0: 6e 74 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e  ntext == IntPtr.
24b0: 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
24c0: 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
24d0: 20 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f   InvalidOperatio
24e0: 6e 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d  nException();...
24f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
2500: 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d  (value == null).
2510: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2520: 20 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d   throw new Argum
2530: 65 6e 74 4e 75 6c 6c 45 78 63 65 70 74 69 6f 6e  entNullException
2540: 28 22 76 61 6c 75 65 22 29 3b 0d 0a 0d 0a 20 20  ("value");....  
2550: 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
2560: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
2570: 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 76 61 6c  lite3_result_val
2580: 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue(..           
2590: 20 20 20 20 20 70 43 6f 6e 74 65 78 74 2c 20 76       pContext, v
25a0: 61 6c 75 65 2e 4e 61 74 69 76 65 48 61 6e 64 6c  alue.NativeHandl
25b0: 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  e);..        }..
25c0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
25d0: 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23  on..    }..    #
25e0: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
25f0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2640: 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69      #region SQLi
2650: 74 65 56 61 6c 75 65 20 48 65 6c 70 65 72 20 43  teValue Helper C
2660: 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  lass..    /// <s
2670: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
2680: 20 54 68 69 73 20 63 6c 61 73 73 20 72 65 70 72   This class repr
2690: 65 73 65 6e 74 73 20 61 20 76 61 6c 75 65 20 66  esents a value f
26a0: 72 6f 6d 20 74 68 65 20 53 51 4c 69 74 65 20 63  rom the SQLite c
26b0: 6f 72 65 20 6c 69 62 72 61 72 79 20 74 68 61 74  ore library that
26c0: 20 63 61 6e 20 62 65 0d 0a 20 20 20 20 2f 2f 2f   can be..    ///
26d0: 20 70 61 73 73 65 64 20 74 6f 20 74 68 65 20 73   passed to the s
26e0: 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 2a 28 29  qlite3_value_*()
26f0: 20 61 6e 64 20 61 73 73 6f 63 69 61 74 65 64 20   and associated 
2700: 66 75 6e 63 74 69 6f 6e 73 2e 0d 0a 20 20 20 20  functions...    
2710: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
2720: 20 20 20 20 70 75 62 6c 69 63 20 73 65 61 6c 65      public seale
2730: 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 56 61  d class SQLiteVa
2740: 6c 75 65 20 3a 20 49 53 51 4c 69 74 65 4e 61 74  lue : ISQLiteNat
2750: 69 76 65 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b  iveHandle..    {
2760: 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
2770: 6e 20 50 72 69 76 61 74 65 20 44 61 74 61 0d 0a  n Private Data..
2780: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
2790: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
27a0: 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 76 61  // The native va
27b0: 6c 75 65 20 68 61 6e 64 6c 65 2e 0d 0a 20 20 20  lue handle...   
27c0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
27d0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
27e0: 76 61 74 65 20 49 6e 74 50 74 72 20 70 56 61 6c  vate IntPtr pVal
27f0: 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e  ue;..        #en
2800: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
2810: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2860: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
2870: 69 76 61 74 65 20 43 6f 6e 73 74 72 75 63 74 6f  ivate Constructo
2880: 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  rs..        /// 
2890: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
28a0: 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74     /// Construct
28b0: 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66  s an instance of
28c0: 20 74 68 69 73 20 63 6c 61 73 73 20 75 73 69 6e   this class usin
28d0: 67 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  g the specified 
28e0: 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20  native..        
28f0: 2f 2f 2f 20 76 61 6c 75 65 20 68 61 6e 64 6c 65  /// value handle
2900: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
2910: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
2920: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2930: 6d 65 3d 22 70 56 61 6c 75 65 22 3e 0d 0a 20 20  me="pValue">..  
2940: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
2950: 74 69 76 65 20 76 61 6c 75 65 20 68 61 6e 64 6c  tive value handl
2960: 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20 20  e to use...     
2970: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
2980: 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61  .        interna
2990: 6c 20 53 51 4c 69 74 65 56 61 6c 75 65 28 49 6e  l SQLiteValue(In
29a0: 74 50 74 72 20 70 56 61 6c 75 65 29 0d 0a 20 20  tPtr pValue)..  
29b0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
29c0: 20 20 20 20 20 74 68 69 73 2e 70 56 61 6c 75 65       this.pValue
29d0: 20 3d 20 70 56 61 6c 75 65 3b 0d 0a 20 20 20 20   = pValue;..    
29e0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
29f0: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
2a00: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2a10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2a50: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
2a60: 50 72 69 76 61 74 65 20 4d 65 74 68 6f 64 73 0d  Private Methods.
2a70: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
2a80: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2a90: 2f 2f 2f 20 49 6e 76 61 6c 69 64 61 74 65 73 20  /// Invalidates 
2aa0: 74 68 65 20 6e 61 74 69 76 65 20 76 61 6c 75 65  the native value
2ab0: 20 68 61 6e 64 6c 65 2c 20 74 68 65 72 65 62 79   handle, thereby
2ac0: 20 70 72 65 76 65 6e 74 69 6e 67 20 66 75 72 74   preventing furt
2ad0: 68 65 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  her..        ///
2ae0: 20 61 63 63 65 73 73 20 74 6f 20 69 74 20 66 72   access to it fr
2af0: 6f 6d 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69  om this object i
2b00: 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20  nstance...      
2b10: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2b20: 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
2b30: 65 20 76 6f 69 64 20 50 72 65 76 65 6e 74 4e 61  e void PreventNa
2b40: 74 69 76 65 41 63 63 65 73 73 28 29 0d 0a 20 20  tiveAccess()..  
2b50: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2b60: 20 20 20 20 20 70 56 61 6c 75 65 20 3d 20 49 6e       pValue = In
2b70: 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20  tPtr.Zero;..    
2b80: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
2b90: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
2ba0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2bf0: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
2c00: 49 53 51 4c 69 74 65 4e 61 74 69 76 65 48 61 6e  ISQLiteNativeHan
2c10: 64 6c 65 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20  dle Members..   
2c20: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
2c30: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
2c40: 52 65 74 75 72 6e 73 20 74 68 65 20 75 6e 64 65  Returns the unde
2c50: 72 6c 79 69 6e 67 20 53 51 4c 69 74 65 20 6e 61  rlying SQLite na
2c60: 74 69 76 65 20 68 61 6e 64 6c 65 20 61 73 73 6f  tive handle asso
2c70: 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73  ciated with this
2c80: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 62  ..        /// ob
2c90: 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a  ject instance...
2ca0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
2cb0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2cc0: 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 4e 61  public IntPtr Na
2cd0: 74 69 76 65 48 61 6e 64 6c 65 0d 0a 20 20 20 20  tiveHandle..    
2ce0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2cf0: 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
2d00: 70 56 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20  pValue; }..     
2d10: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
2d20: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
2d30: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2d40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2d80: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
2d90: 75 62 6c 69 63 20 50 72 6f 70 65 72 74 69 65 73  ublic Properties
2da0: 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
2db0: 65 20 62 6f 6f 6c 20 70 65 72 73 69 73 74 65 64  e bool persisted
2dc0: 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ;..        /// <
2dd0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2de0: 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 6e 6f    /// Returns no
2df0: 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 6e 61  n-zero if the na
2e00: 74 69 76 65 20 53 51 4c 69 74 65 20 76 61 6c 75  tive SQLite valu
2e10: 65 20 68 61 73 20 62 65 65 6e 20 73 75 63 63 65  e has been succe
2e20: 73 73 66 75 6c 6c 79 0d 0a 20 20 20 20 20 20 20  ssfully..       
2e30: 20 2f 2f 2f 20 70 65 72 73 69 73 74 65 64 20 61   /// persisted a
2e40: 73 20 61 20 6d 61 6e 61 67 65 64 20 76 61 6c 75  s a managed valu
2e50: 65 20 77 69 74 68 69 6e 20 74 68 69 73 20 6f 62  e within this ob
2e60: 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 28 69  ject instance (i
2e70: 2e 65 2e 20 74 68 65 0d 0a 20 20 20 20 20 20 20  .e. the..       
2e80: 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
2e90: 56 61 6c 75 65 22 20 2f 3e 20 70 72 6f 70 65 72  Value" /> proper
2ea0: 74 79 20 6d 61 79 20 74 68 65 6e 20 62 65 20 72  ty may then be r
2eb0: 65 61 64 20 73 75 63 63 65 73 73 66 75 6c 6c 79  ead successfully
2ec0: 29 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  )...        /// 
2ed0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
2ee0: 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20      public bool 
2ef0: 50 65 72 73 69 73 74 65 64 0d 0a 20 20 20 20 20  Persisted..     
2f00: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2f10: 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 70    get { return p
2f20: 65 72 73 69 73 74 65 64 3b 20 7d 0d 0a 20 20 20  ersisted; }..   
2f30: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2f40: 20 20 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 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2f90: 20 20 20 20 20 70 72 69 76 61 74 65 20 6f 62 6a       private obj
2fa0: 65 63 74 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20  ect value;..    
2fb0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2fc0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 49  >..        /// I
2fd0: 66 20 74 68 65 20 6d 61 6e 61 67 65 64 20 76 61  f the managed va
2fe0: 6c 75 65 20 66 6f 72 20 74 68 69 73 20 6f 62 6a  lue for this obj
2ff0: 65 63 74 20 69 6e 73 74 61 6e 63 65 20 69 73 20  ect instance is 
3000: 61 76 61 69 6c 61 62 6c 65 20 28 69 2e 65 2e 20  available (i.e. 
3010: 69 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  it..        /// 
3020: 68 61 73 20 62 65 65 6e 20 70 72 65 76 69 6f 75  has been previou
3030: 73 6c 79 20 70 65 72 73 69 73 74 65 64 20 76 69  sly persisted vi
3040: 61 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  a the <see cref=
3050: 22 50 65 72 73 69 73 74 22 2f 3e 29 20 6d 65 74  "Persist"/>) met
3060: 68 6f 64 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod,..        //
3070: 2f 20 74 68 61 74 20 76 61 6c 75 65 20 69 73 20  / that value is 
3080: 72 65 74 75 72 6e 65 64 3b 20 6f 74 68 65 72 77  returned; otherw
3090: 69 73 65 2c 20 61 6e 20 65 78 63 65 70 74 69 6f  ise, an exceptio
30a0: 6e 20 69 73 20 74 68 72 6f 77 6e 2e 20 20 54 68  n is thrown.  Th
30b0: 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 72  e..        /// r
30c0: 65 74 75 72 6e 65 64 20 76 61 6c 75 65 20 6d 61  eturned value ma
30d0: 79 20 62 65 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20  y be null...    
30e0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
30f0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
3100: 69 63 20 6f 62 6a 65 63 74 20 56 61 6c 75 65 0d  ic object Value.
3110: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
3120: 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20          get..   
3130: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
3140: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
3150: 21 70 65 72 73 69 73 74 65 64 29 0d 0a 20 20 20  !persisted)..   
3160: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
3170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3180: 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e      throw new In
3190: 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78  validOperationEx
31a0: 63 65 70 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20  ception(..      
31b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31c0: 20 20 22 76 61 6c 75 65 20 77 61 73 20 6e 6f 74    "value was not
31d0: 20 70 65 72 73 69 73 74 65 64 22 29 3b 0d 0a 20   persisted");.. 
31e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
31f0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
3200: 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65      return value
3210: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
3220: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
3230: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
3240: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
3250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3290: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
32a0: 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 4d 65 74  egion Public Met
32b0: 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hods..        //
32c0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
32d0: 20 20 20 20 20 2f 2f 2f 20 47 65 74 73 20 61 6e       /// Gets an
32e0: 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 74 79  d returns the ty
32f0: 70 65 20 61 66 66 69 6e 69 74 79 20 61 73 73 6f  pe affinity asso
3300: 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73  ciated with this
3310: 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20   value...       
3320: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
3330: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
3340: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
3350: 2f 2f 2f 20 54 68 65 20 74 79 70 65 20 61 66 66  /// The type aff
3360: 69 6e 69 74 79 20 61 73 73 6f 63 69 61 74 65 64  inity associated
3370: 20 77 69 74 68 20 74 68 69 73 20 76 61 6c 75 65   with this value
3380: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
3390: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
33a0: 20 20 20 70 75 62 6c 69 63 20 54 79 70 65 41 66     public TypeAf
33b0: 66 69 6e 69 74 79 20 47 65 74 54 79 70 65 41 66  finity GetTypeAf
33c0: 66 69 6e 69 74 79 28 29 0d 0a 20 20 20 20 20 20  finity()..      
33d0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
33e0: 20 69 66 20 28 70 56 61 6c 75 65 20 3d 3d 20 49   if (pValue == I
33f0: 6e 74 50 74 72 2e 5a 65 72 6f 29 20 72 65 74 75  ntPtr.Zero) retu
3400: 72 6e 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e  rn TypeAffinity.
3410: 4e 6f 6e 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  None;..         
3420: 20 20 20 72 65 74 75 72 6e 20 55 6e 73 61 66 65     return Unsafe
3430: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
3440: 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 79 70 65  lite3_value_type
3450: 28 70 56 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20  (pValue);..     
3460: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
3470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34b0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
34c0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
34d0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 47 65  ..        /// Ge
34e0: 74 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74  ts and returns t
34f0: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74  he number of byt
3500: 65 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  es associated wi
3510: 74 68 20 74 68 69 73 20 76 61 6c 75 65 2c 20 69  th this value, i
3520: 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  f..        /// i
3530: 74 20 72 65 66 65 72 73 20 74 6f 20 61 20 55 54  t refers to a UT
3540: 46 2d 38 20 65 6e 63 6f 64 65 64 20 73 74 72 69  F-8 encoded stri
3550: 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ng...        ///
3560: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
3570: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
3580: 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
3590: 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 79  The number of by
35a0: 74 65 73 20 61 73 73 6f 63 69 61 74 65 64 20 77  tes associated w
35b0: 69 74 68 20 74 68 69 73 20 76 61 6c 75 65 2e 20  ith this value. 
35c0: 20 54 68 65 20 72 65 74 75 72 6e 65 64 20 76 61   The returned va
35d0: 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  lue..        ///
35e0: 20 6d 61 79 20 62 65 20 7a 65 72 6f 2e 0d 0a 20   may be zero... 
35f0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
3600: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
3610: 75 62 6c 69 63 20 69 6e 74 20 47 65 74 42 79 74  ublic int GetByt
3620: 65 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  es()..        {.
3630: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
3640: 28 70 56 61 6c 75 65 20 3d 3d 20 49 6e 74 50 74  (pValue == IntPt
3650: 72 2e 5a 65 72 6f 29 20 72 65 74 75 72 6e 20 30  r.Zero) return 0
3660: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ;..            r
3670: 65 74 75 72 6e 20 55 6e 73 61 66 65 4e 61 74 69  eturn UnsafeNati
3680: 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
3690: 33 5f 76 61 6c 75 65 5f 62 79 74 65 73 28 70 56  3_value_bytes(pV
36a0: 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  alue);..        
36b0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
36c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
3710: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
3720: 20 20 20 20 20 20 20 2f 2f 2f 20 47 65 74 73 20         /// Gets 
3730: 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
3740: 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 33 32  <see cref="Int32
3750: 22 20 2f 3e 20 61 73 73 6f 63 69 61 74 65 64 20  " /> associated 
3760: 77 69 74 68 20 74 68 69 73 0d 0a 20 20 20 20 20  with this..     
3770: 20 20 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20     /// value... 
3780: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
3790: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
37a0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
37b0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
37c0: 65 65 20 63 72 65 66 3d 22 49 6e 74 33 32 22 20  ee cref="Int32" 
37d0: 2f 3e 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  /> associated wi
37e0: 74 68 20 74 68 69 73 20 76 61 6c 75 65 2e 0d 0a  th this value...
37f0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
3800: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
3810: 70 75 62 6c 69 63 20 69 6e 74 20 47 65 74 49 6e  public int GetIn
3820: 74 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  t()..        {..
3830: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
3840: 70 56 61 6c 75 65 20 3d 3d 20 49 6e 74 50 74 72  pValue == IntPtr
3850: 2e 5a 65 72 6f 29 20 72 65 74 75 72 6e 20 64 65  .Zero) return de
3860: 66 61 75 6c 74 28 69 6e 74 29 3b 0d 0a 20 20 20  fault(int);..   
3870: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
3880: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
3890: 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76 61 6c 75  ods.sqlite3_valu
38a0: 65 5f 69 6e 74 28 70 56 61 6c 75 65 29 3b 0d 0a  e_int(pValue);..
38b0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
38c0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
38d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a  ////////////....
3910: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
3920: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
3930: 2f 2f 20 47 65 74 73 20 61 6e 64 20 72 65 74 75  // Gets and retu
3940: 72 6e 73 20 74 68 65 20 3c 73 65 65 20 63 72 65  rns the <see cre
3950: 66 3d 22 49 6e 74 36 34 22 20 2f 3e 20 61 73 73  f="Int64" /> ass
3960: 6f 63 69 61 74 65 64 20 77 69 74 68 0d 0a 20 20  ociated with..  
3970: 20 20 20 20 20 20 2f 2f 2f 20 74 68 69 73 20 76        /// this v
3980: 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  alue...        /
3990: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
39a0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
39b0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
39c0: 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
39d0: 22 49 6e 74 36 34 22 20 2f 3e 20 61 73 73 6f 63  "Int64" /> assoc
39e0: 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20  iated with this 
39f0: 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20  value...        
3a00: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
3a10: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6c          public l
3a20: 6f 6e 67 20 47 65 74 49 6e 74 36 34 28 29 0d 0a  ong GetInt64()..
3a30: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
3a40: 20 20 20 20 20 20 20 69 66 20 28 70 56 61 6c 75         if (pValu
3a50: 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e == IntPtr.Zero
3a60: 29 20 72 65 74 75 72 6e 20 64 65 66 61 75 6c 74  ) return default
3a70: 28 6c 6f 6e 67 29 3b 0d 0a 0d 0a 23 69 66 20 21  (long);....#if !
3a80: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
3a90: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
3aa0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 55 6e         return Un
3ab0: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
3ac0: 73 2e 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  s.sqlite3_value_
3ad0: 69 6e 74 36 34 28 70 56 61 6c 75 65 29 3b 0d 0a  int64(pValue);..
3ae0: 23 65 6c 69 66 20 21 53 51 4c 49 54 45 5f 53 54  #elif !SQLITE_ST
3af0: 41 4e 44 41 52 44 0d 0a 20 20 20 20 20 20 20 20  ANDARD..        
3b00: 20 20 20 20 6c 6f 6e 67 20 76 61 6c 75 65 3b 0d      long value;.
3b10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73  .            Uns
3b20: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
3b30: 2e 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69  .sqlite3_value_i
3b40: 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28 70 56 61  nt64_interop(pVa
3b50: 6c 75 65 2c 20 6f 75 74 20 76 61 6c 75 65 29 3b  lue, out value);
3b60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
3b70: 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 23 65 6c  turn value;..#el
3b80: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
3b90: 74 68 72 6f 77 20 6e 65 77 20 4e 6f 74 49 6d 70  throw new NotImp
3ba0: 6c 65 6d 65 6e 74 65 64 45 78 63 65 70 74 69 6f  lementedExceptio
3bb0: 6e 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  n();..#endif..  
3bc0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
3bd0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
3be0: 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20  //////////....  
3c20: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
3c30: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
3c40: 20 47 65 74 73 20 61 6e 64 20 72 65 74 75 72 6e   Gets and return
3c50: 73 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  s the <see cref=
3c60: 22 44 6f 75 62 6c 65 22 20 2f 3e 20 61 73 73 6f  "Double" /> asso
3c70: 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73  ciated with this
3c80: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 61  ..        /// va
3c90: 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  lue...        //
3ca0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
3cb0: 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
3cc0: 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
3cd0: 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
3ce0: 44 6f 75 62 6c 65 22 20 2f 3e 20 61 73 73 6f 63  Double" /> assoc
3cf0: 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20  iated with this 
3d00: 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20  value...        
3d10: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
3d20: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 64          public d
3d30: 6f 75 62 6c 65 20 47 65 74 44 6f 75 62 6c 65 28  ouble GetDouble(
3d40: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
3d50: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 56            if (pV
3d60: 61 6c 75 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  alue == IntPtr.Z
3d70: 65 72 6f 29 20 72 65 74 75 72 6e 20 64 65 66 61  ero) return defa
3d80: 75 6c 74 28 64 6f 75 62 6c 65 29 3b 0d 0a 0d 0a  ult(double);....
3d90: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
3da0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
3db0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
3dc0: 72 6e 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  rn UnsafeNativeM
3dd0: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76  ethods.sqlite3_v
3de0: 61 6c 75 65 5f 64 6f 75 62 6c 65 28 70 56 61 6c  alue_double(pVal
3df0: 75 65 29 3b 0d 0a 23 65 6c 69 66 20 21 53 51 4c  ue);..#elif !SQL
3e00: 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20  ITE_STANDARD..  
3e10: 20 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65            double
3e20: 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20   value;..       
3e30: 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
3e40: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
3e50: 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65 5f 69 6e  _value_double_in
3e60: 74 65 72 6f 70 28 70 56 61 6c 75 65 2c 20 6f 75  terop(pValue, ou
3e70: 74 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20  t value);..     
3e80: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61         return va
3e90: 6c 75 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  lue;..#else..   
3ea0: 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e           throw n
3eb0: 65 77 20 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74 65  ew NotImplemente
3ec0: 64 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 23  dException();..#
3ed0: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d  endif..        }
3ee0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
3ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3f00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3f10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3f30: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
3f40: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
3f50: 20 20 20 20 20 20 2f 2f 2f 20 47 65 74 73 20 61        /// Gets a
3f60: 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 3c  nd returns the <
3f70: 73 65 65 20 63 72 65 66 3d 22 53 74 72 69 6e 67  see cref="String
3f80: 22 20 2f 3e 20 61 73 73 6f 63 69 61 74 65 64 20  " /> associated 
3f90: 77 69 74 68 20 74 68 69 73 0d 0a 20 20 20 20 20  with this..     
3fa0: 20 20 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20     /// value... 
3fb0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
3fc0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
3fd0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
3fe0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
3ff0: 65 65 20 63 72 65 66 3d 22 53 74 72 69 6e 67 22  ee cref="String"
4000: 20 2f 3e 20 61 73 73 6f 63 69 61 74 65 64 20 77   /> associated w
4010: 69 74 68 20 74 68 69 73 20 76 61 6c 75 65 2e 20  ith this value. 
4020: 20 54 68 65 20 76 61 6c 75 65 20 69 73 0d 0a 20   The value is.. 
4030: 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 76 65         /// conve
4040: 72 74 65 64 20 66 72 6f 6d 20 74 68 65 20 55 54  rted from the UT
4050: 46 2d 38 20 65 6e 63 6f 64 69 6e 67 20 70 72 69  F-8 encoding pri
4060: 6f 72 20 74 6f 20 62 65 69 6e 67 20 72 65 74 75  or to being retu
4070: 72 6e 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  rned...        /
4080: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
4090: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
40a0: 72 69 6e 67 20 47 65 74 53 74 72 69 6e 67 28 29  ring GetString()
40b0: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
40c0: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 56 61           if (pVa
40d0: 6c 75 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  lue == IntPtr.Ze
40e0: 72 6f 29 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b  ro) return null;
40f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
4100: 74 75 72 6e 20 53 51 4c 69 74 65 53 74 72 69 6e  turn SQLiteStrin
4110: 67 2e 53 74 72 69 6e 67 46 72 6f 6d 55 74 66 38  g.StringFromUtf8
4120: 49 6e 74 50 74 72 28 70 56 61 6c 75 65 2c 20 47  IntPtr(pValue, G
4130: 65 74 42 79 74 65 73 28 29 29 3b 0d 0a 20 20 20  etBytes());..   
4140: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
4150: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
4160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
41a0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
41b0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
41c0: 47 65 74 73 20 61 6e 64 20 72 65 74 75 72 6e 73  Gets and returns
41d0: 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
41e0: 42 79 74 65 22 20 2f 3e 20 61 72 72 61 79 20 61  Byte" /> array a
41f0: 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
4200: 68 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  his..        ///
4210: 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20   value...       
4220: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
4230: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
4240: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
4250: 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
4260: 66 3d 22 42 79 74 65 22 20 2f 3e 20 61 72 72 61  f="Byte" /> arra
4270: 79 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  y associated wit
4280: 68 20 74 68 69 73 20 76 61 6c 75 65 2e 0d 0a 20  h this value... 
4290: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
42a0: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
42b0: 75 62 6c 69 63 20 62 79 74 65 5b 5d 20 47 65 74  ublic byte[] Get
42c0: 42 6c 6f 62 28 29 0d 0a 20 20 20 20 20 20 20 20  Blob()..        
42d0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
42e0: 66 20 28 70 56 61 6c 75 65 20 3d 3d 20 49 6e 74  f (pValue == Int
42f0: 50 74 72 2e 5a 65 72 6f 29 20 72 65 74 75 72 6e  Ptr.Zero) return
4300: 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20   null;..        
4310: 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74      return SQLit
4320: 65 42 79 74 65 73 2e 46 72 6f 6d 49 6e 74 50 74  eBytes.FromIntPt
4330: 72 28 70 56 61 6c 75 65 2c 20 47 65 74 42 79 74  r(pValue, GetByt
4340: 65 73 28 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  es());..        
4350: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
4360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
43a0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
43b0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
43c0: 20 20 20 20 20 20 20 2f 2f 2f 20 55 73 65 73 20         /// Uses 
43d0: 74 68 65 20 6e 61 74 69 76 65 20 76 61 6c 75 65  the native value
43e0: 20 68 61 6e 64 6c 65 20 74 6f 20 6f 62 74 61 69   handle to obtai
43f0: 6e 20 61 6e 64 20 73 74 6f 72 65 20 74 68 65 20  n and store the 
4400: 6d 61 6e 61 67 65 64 20 76 61 6c 75 65 0d 0a 20  managed value.. 
4410: 20 20 20 20 20 20 20 2f 2f 2f 20 66 6f 72 20 74         /// for t
4420: 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  his object insta
4430: 6e 63 65 2c 20 74 68 75 73 20 73 61 76 69 6e 67  nce, thus saving
4440: 20 69 74 20 66 6f 72 20 6c 61 74 65 72 20 75 73   it for later us
4450: 65 2e 20 20 54 68 65 20 74 79 70 65 0d 0a 20 20  e.  The type..  
4460: 20 20 20 20 20 20 2f 2f 2f 20 6f 66 20 74 68 65        /// of the
4470: 20 6d 61 6e 61 67 65 64 20 76 61 6c 75 65 20 69   managed value i
4480: 73 20 64 65 74 65 72 6d 69 6e 65 64 20 62 79 20  s determined by 
4490: 74 68 65 20 74 79 70 65 20 61 66 66 69 6e 69 74  the type affinit
44a0: 79 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20 20  y of the..      
44b0: 20 20 2f 2f 2f 20 6e 61 74 69 76 65 20 76 61 6c    /// native val
44c0: 75 65 2e 20 20 49 66 20 74 68 65 20 74 79 70 65  ue.  If the type
44d0: 20 61 66 66 69 6e 69 74 79 20 69 73 20 6e 6f 74   affinity is not
44e0: 20 72 65 63 6f 67 6e 69 7a 65 64 20 62 79 20 74   recognized by t
44f0: 68 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  his..        ///
4500: 20 6d 65 74 68 6f 64 2c 20 6e 6f 20 77 6f 72 6b   method, no work
4510: 20 69 73 20 64 6f 6e 65 20 61 6e 64 20 66 61 6c   is done and fal
4520: 73 65 20 69 73 20 72 65 74 75 72 6e 65 64 2e 0d  se is returned..
4530: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
4540: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
4550: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
4560: 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d          /// Non-
4570: 7a 65 72 6f 20 69 66 20 74 68 65 20 6e 61 74 69  zero if the nati
4580: 76 65 20 76 61 6c 75 65 20 77 61 73 20 70 65 72  ve value was per
4590: 73 69 73 74 65 64 20 73 75 63 63 65 73 73 66 75  sisted successfu
45a0: 6c 6c 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  lly...        //
45b0: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
45c0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f        public boo
45d0: 6c 20 50 65 72 73 69 73 74 28 29 0d 0a 20 20 20  l Persist()..   
45e0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
45f0: 20 20 20 20 73 77 69 74 63 68 20 28 47 65 74 54      switch (GetT
4600: 79 70 65 41 66 66 69 6e 69 74 79 28 29 29 0d 0a  ypeAffinity())..
4610: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
4620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
4630: 61 73 65 20 54 79 70 65 41 66 66 69 6e 69 74 79  ase TypeAffinity
4640: 2e 55 6e 69 6e 69 74 69 61 6c 69 7a 65 64 3a 0d  .Uninitialized:.
4650: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4660: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
4670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4680: 76 61 6c 75 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 20  value = null;.. 
4690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
46a0: 20 20 20 20 20 20 20 50 72 65 76 65 6e 74 4e 61         PreventNa
46b0: 74 69 76 65 41 63 63 65 73 73 28 29 3b 0d 0a 20  tiveAccess();.. 
46c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
46d0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 70         return (p
46e0: 65 72 73 69 73 74 65 64 20 3d 20 74 72 75 65 29  ersisted = true)
46f0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
4700: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
4710: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 54            case T
4720: 79 70 65 41 66 66 69 6e 69 74 79 2e 49 6e 74 36  ypeAffinity.Int6
4730: 34 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  4:..            
4740: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
4750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4760: 20 20 20 76 61 6c 75 65 20 3d 20 47 65 74 49 6e     value = GetIn
4770: 74 36 34 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  t64();..        
4780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4790: 50 72 65 76 65 6e 74 4e 61 74 69 76 65 41 63 63  PreventNativeAcc
47a0: 65 73 73 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  ess();..        
47b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
47c0: 72 65 74 75 72 6e 20 28 70 65 72 73 69 73 74 65  return (persiste
47d0: 64 20 3d 20 74 72 75 65 29 3b 0d 0a 20 20 20 20  d = true);..    
47e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
47f0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
4800: 20 20 20 63 61 73 65 20 54 79 70 65 41 66 66 69     case TypeAffi
4810: 6e 69 74 79 2e 44 6f 75 62 6c 65 3a 0d 0a 20 20  nity.Double:..  
4820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4830: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
4840: 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c               val
4850: 75 65 20 3d 20 47 65 74 44 6f 75 62 6c 65 28 29  ue = GetDouble()
4860: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
4870: 20 20 20 20 20 20 20 20 20 20 20 50 72 65 76 65             Preve
4880: 6e 74 4e 61 74 69 76 65 41 63 63 65 73 73 28 29  ntNativeAccess()
4890: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
48a0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
48b0: 6e 20 28 70 65 72 73 69 73 74 65 64 20 3d 20 74  n (persisted = t
48c0: 72 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  rue);..         
48d0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
48e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
48f0: 73 65 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e  se TypeAffinity.
4900: 54 65 78 74 3a 0d 0a 20 20 20 20 20 20 20 20 20  Text:..         
4910: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
4920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4930: 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 47 65        value = Ge
4940: 74 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20  tString();..    
4950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4960: 20 20 20 20 50 72 65 76 65 6e 74 4e 61 74 69 76      PreventNativ
4970: 65 41 63 63 65 73 73 28 29 3b 0d 0a 20 20 20 20  eAccess();..    
4980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4990: 20 20 20 20 72 65 74 75 72 6e 20 28 70 65 72 73      return (pers
49a0: 69 73 74 65 64 20 3d 20 74 72 75 65 29 3b 0d 0a  isted = true);..
49b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
49c0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
49d0: 20 20 20 20 20 20 20 63 61 73 65 20 54 79 70 65         case Type
49e0: 41 66 66 69 6e 69 74 79 2e 42 6c 6f 62 3a 0d 0a  Affinity.Blob:..
49f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4a00: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
4a10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76                 v
4a20: 61 6c 75 65 20 3d 20 47 65 74 42 79 74 65 73 28  alue = GetBytes(
4a30: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
4a40: 20 20 20 20 20 20 20 20 20 20 20 20 50 72 65 76              Prev
4a50: 65 6e 74 4e 61 74 69 76 65 41 63 63 65 73 73 28  entNativeAccess(
4a60: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
4a70: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
4a80: 72 6e 20 28 70 65 72 73 69 73 74 65 64 20 3d 20  rn (persisted = 
4a90: 74 72 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  true);..        
4aa0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
4ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
4ac0: 61 73 65 20 54 79 70 65 41 66 66 69 6e 69 74 79  ase TypeAffinity
4ad0: 2e 4e 75 6c 6c 3a 0d 0a 20 20 20 20 20 20 20 20  .Null:..        
4ae0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
4af0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4b00: 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 44         value = D
4b10: 42 4e 75 6c 6c 2e 56 61 6c 75 65 3b 0d 0a 20 20  BNull.Value;..  
4b20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4b30: 20 20 20 20 20 20 50 72 65 76 65 6e 74 4e 61 74        PreventNat
4b40: 69 76 65 41 63 63 65 73 73 28 29 3b 0d 0a 20 20  iveAccess();..  
4b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4b60: 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 70 65        return (pe
4b70: 72 73 69 73 74 65 64 20 3d 20 74 72 75 65 29 3b  rsisted = true);
4b80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4b90: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
4ba0: 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74           default
4bb0: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
4bc0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
4bd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4be0: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
4bf0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4c00: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
4c10: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
4c20: 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
4c30: 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20  gion..    }..   
4c40: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
4c50: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
4c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a  //////////////..
4ca0: 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51  ..    #region SQ
4cb0: 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61  LiteIndexConstra
4cc0: 69 6e 74 4f 70 20 45 6e 75 6d 65 72 61 74 69 6f  intOp Enumeratio
4cd0: 6e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  n..    /// <summ
4ce0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
4cf0: 65 73 65 20 61 72 65 20 74 68 65 20 61 6c 6c 6f  ese are the allo
4d00: 77 65 64 20 76 61 6c 75 65 73 20 66 6f 72 20 74  wed values for t
4d10: 68 65 20 6f 70 65 72 61 74 6f 72 73 20 74 68 61  he operators tha
4d20: 74 20 61 72 65 20 70 61 72 74 20 6f 66 20 61 0d  t are part of a.
4d30: 0a 20 20 20 20 2f 2f 2f 20 63 6f 6e 73 74 72 61  .    /// constra
4d40: 69 6e 74 20 74 65 72 6d 20 69 6e 20 74 68 65 20  int term in the 
4d50: 57 48 45 52 45 20 63 6c 61 75 73 65 20 6f 66 20  WHERE clause of 
4d60: 61 20 71 75 65 72 79 20 74 68 61 74 20 75 73 65  a query that use
4d70: 73 20 61 20 76 69 72 74 75 61 6c 0d 0a 20 20 20  s a virtual..   
4d80: 20 2f 2f 2f 20 74 61 62 6c 65 2e 0d 0a 20 20 20   /// table...   
4d90: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
4da0: 0a 20 20 20 20 70 75 62 6c 69 63 20 65 6e 75 6d  .    public enum
4db0: 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73   SQLiteIndexCons
4dc0: 74 72 61 69 6e 74 4f 70 20 3a 20 62 79 74 65 0d  traintOp : byte.
4dd0: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
4de0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
4df0: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
4e00: 76 61 6c 75 65 20 72 65 70 72 65 73 65 6e 74 73  value represents
4e10: 20 74 68 65 20 65 71 75 61 6c 69 74 79 20 6f 70   the equality op
4e20: 65 72 61 74 6f 72 2e 0d 0a 20 20 20 20 20 20 20  erator...       
4e30: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
4e40: 0a 20 20 20 20 20 20 20 20 45 71 75 61 6c 54 6f  .        EqualTo
4e50: 20 3d 20 32 2c 0d 0a 0d 0a 20 20 20 20 20 20 20   = 2,....       
4e60: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
4e70: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
4e80: 20 76 61 6c 75 65 20 72 65 70 72 65 73 65 6e 74   value represent
4e90: 73 20 74 68 65 20 67 72 65 61 74 65 72 20 74 68  s the greater th
4ea0: 61 6e 20 6f 70 65 72 61 74 6f 72 2e 0d 0a 20 20  an operator...  
4eb0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
4ec0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 47 72  ary>..        Gr
4ed0: 65 61 74 65 72 54 68 61 6e 20 3d 20 34 2c 0d 0a  eaterThan = 4,..
4ee0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
4ef0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
4f00: 20 2f 2f 2f 20 54 68 69 73 20 76 61 6c 75 65 20   /// This value 
4f10: 72 65 70 72 65 73 65 6e 74 73 20 74 68 65 20 6c  represents the l
4f20: 65 73 73 20 74 68 61 6e 20 6f 72 20 65 71 75 61  ess than or equa
4f30: 6c 20 74 6f 20 6f 70 65 72 61 74 6f 72 2e 0d 0a  l to operator...
4f40: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
4f50: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
4f60: 4c 65 73 73 54 68 61 6e 4f 72 45 71 75 61 6c 54  LessThanOrEqualT
4f70: 6f 20 3d 20 38 2c 0d 0a 0d 0a 20 20 20 20 20 20  o = 8,....      
4f80: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
4f90: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
4fa0: 73 20 76 61 6c 75 65 20 72 65 70 72 65 73 65 6e  s value represen
4fb0: 74 73 20 74 68 65 20 6c 65 73 73 20 74 68 61 6e  ts the less than
4fc0: 20 6f 70 65 72 61 74 6f 72 2e 0d 0a 20 20 20 20   operator...    
4fd0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
4fe0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 4c 65 73 73  y>..        Less
4ff0: 54 68 61 6e 20 3d 20 31 36 2c 0d 0a 0d 0a 20 20  Than = 16,....  
5000: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
5010: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
5020: 20 54 68 69 73 20 76 61 6c 75 65 20 72 65 70 72   This value repr
5030: 65 73 65 6e 74 73 20 74 68 65 20 67 72 65 61 74  esents the great
5040: 65 72 20 74 68 61 6e 20 6f 72 20 65 71 75 61 6c  er than or equal
5050: 20 74 6f 20 6f 70 65 72 61 74 6f 72 2e 0d 0a 20   to operator... 
5060: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
5070: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 47  mary>..        G
5080: 72 65 61 74 65 72 54 68 61 6e 4f 72 45 71 75 61  reaterThanOrEqua
5090: 6c 54 6f 20 3d 20 33 32 2c 0d 0a 0d 0a 20 20 20  lTo = 32,....   
50a0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
50b0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
50c0: 54 68 69 73 20 76 61 6c 75 65 20 72 65 70 72 65  This value repre
50d0: 73 65 6e 74 73 20 74 68 65 20 4d 41 54 43 48 20  sents the MATCH 
50e0: 6f 70 65 72 61 74 6f 72 2e 0d 0a 20 20 20 20 20  operator...     
50f0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
5100: 3e 0d 0a 20 20 20 20 20 20 20 20 4d 61 74 63 68  >..        Match
5110: 20 3d 20 36 34 0d 0a 20 20 20 20 7d 0d 0a 20 20   = 64..    }..  
5120: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
5130: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
5140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
5180: 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53  ...    #region S
5190: 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72  QLiteIndexConstr
51a0: 61 69 6e 74 20 48 65 6c 70 65 72 20 43 6c 61 73  aint Helper Clas
51b0: 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  s..    /// <summ
51c0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
51d0: 69 73 20 63 6c 61 73 73 20 72 65 70 72 65 73 65  is class represe
51e0: 6e 74 73 20 74 68 65 20 6e 61 74 69 76 65 20 73  nts the native s
51f0: 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e  qlite3_index_con
5200: 73 74 72 61 69 6e 74 20 73 74 72 75 63 74 75 72  straint structur
5210: 65 0d 0a 20 20 20 20 2f 2f 2f 20 66 72 6f 6d 20  e..    /// from 
5220: 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
5230: 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 2f 2f  library...    //
5240: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
5250: 20 20 70 75 62 6c 69 63 20 73 65 61 6c 65 64 20    public sealed 
5260: 63 6c 61 73 73 20 53 51 4c 69 74 65 49 6e 64 65  class SQLiteInde
5270: 78 43 6f 6e 73 74 72 61 69 6e 74 0d 0a 20 20 20  xConstraint..   
5280: 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67   {..        #reg
5290: 69 6f 6e 20 49 6e 74 65 72 6e 61 6c 20 43 6f 6e  ion Internal Con
52a0: 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20  structors..     
52b0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
52c0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f  ..        /// Co
52d0: 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74  nstructs an inst
52e0: 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61  ance of this cla
52f0: 73 73 20 75 73 69 6e 67 20 74 68 65 20 73 70 65  ss using the spe
5300: 63 69 66 69 65 64 20 6e 61 74 69 76 65 0d 0a 20  cified native.. 
5310: 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74         /// sqlit
5320: 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61  e3_index_constra
5330: 69 6e 74 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  int structure...
5340: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
5350: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
5360: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
5370: 22 63 6f 6e 73 74 72 61 69 6e 74 22 3e 0d 0a 20  "constraint">.. 
5380: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
5390: 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 69 6e  ative sqlite3_in
53a0: 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 20 73  dex_constraint s
53b0: 74 72 75 63 74 75 72 65 20 74 6f 20 75 73 65 2e  tructure to use.
53c0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
53d0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
53e0: 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 49  internal SQLiteI
53f0: 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 28 0d  ndexConstraint(.
5400: 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73  .            Uns
5410: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
5420: 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63  .sqlite3_index_c
5430: 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e 73 74 72  onstraint constr
5440: 61 69 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20  aint..          
5450: 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
5460: 20 3a 20 74 68 69 73 28 63 6f 6e 73 74 72 61 69   : this(constrai
5470: 6e 74 2e 69 43 6f 6c 75 6d 6e 2c 20 63 6f 6e 73  nt.iColumn, cons
5480: 74 72 61 69 6e 74 2e 6f 70 2c 20 63 6f 6e 73 74  traint.op, const
5490: 72 61 69 6e 74 2e 75 73 61 62 6c 65 2c 0d 0a 20  raint.usable,.. 
54a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
54b0: 20 20 63 6f 6e 73 74 72 61 69 6e 74 2e 69 54 65    constraint.iTe
54c0: 72 6d 4f 66 66 73 65 74 29 0d 0a 20 20 20 20 20  rmOffset)..     
54d0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
54e0: 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
54f0: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
5500: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
5510: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
5520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5550: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5560: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
5570: 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43 6f 6e  gion Private Con
5580: 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20  structors..     
5590: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
55a0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f  ..        /// Co
55b0: 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74  nstructs an inst
55c0: 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61  ance of this cla
55d0: 73 73 20 75 73 69 6e 67 20 74 68 65 20 73 70 65  ss using the spe
55e0: 63 69 66 69 65 64 20 66 69 65 6c 64 0d 0a 20 20  cified field..  
55f0: 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 73        /// values
5600: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
5610: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
5620: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
5630: 6d 65 3d 22 69 43 6f 6c 75 6d 6e 22 3e 0d 0a 20  me="iColumn">.. 
5640: 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6c 75 6d         /// Colum
5650: 6e 20 6f 6e 20 6c 65 66 74 2d 68 61 6e 64 20 73  n on left-hand s
5660: 69 64 65 20 6f 66 20 63 6f 6e 73 74 72 61 69 6e  ide of constrain
5670: 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  t...        /// 
5680: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
5690: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
56a0: 65 3d 22 6f 70 22 3e 0d 0a 20 20 20 20 20 20 20  e="op">..       
56b0: 20 2f 2f 2f 20 43 6f 6e 73 74 72 61 69 6e 74 20   /// Constraint 
56c0: 6f 70 65 72 61 74 6f 72 20 28 3c 73 65 65 20 63  operator (<see c
56d0: 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78  ref="SQLiteIndex
56e0: 43 6f 6e 73 74 72 61 69 6e 74 4f 70 22 20 2f 3e  ConstraintOp" />
56f0: 29 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  )...        /// 
5700: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
5710: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
5720: 65 3d 22 75 73 61 62 6c 65 22 3e 0d 0a 20 20 20  e="usable">..   
5730: 20 20 20 20 20 2f 2f 2f 20 54 72 75 65 20 69 66       /// True if
5740: 20 74 68 69 73 20 63 6f 6e 73 74 72 61 69 6e 74   this constraint
5750: 20 69 73 20 75 73 61 62 6c 65 2e 0d 0a 20 20 20   is usable...   
5760: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
5770: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
5780: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 54 65 72  param name="iTer
5790: 6d 4f 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20  mOffset">..     
57a0: 20 20 20 2f 2f 2f 20 55 73 65 64 20 69 6e 74 65     /// Used inte
57b0: 72 6e 61 6c 6c 79 20 2d 20 3c 73 65 65 20 63 72  rnally - <see cr
57c0: 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67  ef="ISQLiteManag
57d0: 65 64 4d 6f 64 75 6c 65 2e 42 65 73 74 49 6e 64  edModule.BestInd
57e0: 65 78 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20  ex" />..        
57f0: 2f 2f 2f 20 73 68 6f 75 6c 64 20 69 67 6e 6f 72  /// should ignor
5800: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
5810: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
5820: 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65    private SQLite
5830: 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 28  IndexConstraint(
5840: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
5850: 74 20 69 43 6f 6c 75 6d 6e 2c 0d 0a 20 20 20 20  t iColumn,..    
5860: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e          SQLiteIn
5870: 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 4f 70 20  dexConstraintOp 
5880: 6f 70 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  op,..           
5890: 20 62 79 74 65 20 75 73 61 62 6c 65 2c 0d 0a 20   byte usable,.. 
58a0: 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69             int i
58b0: 54 65 72 6d 4f 66 66 73 65 74 0d 0a 20 20 20 20  TermOffset..    
58c0: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
58d0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
58e0: 20 20 74 68 69 73 2e 69 43 6f 6c 75 6d 6e 20 3d    this.iColumn =
58f0: 20 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20   iColumn;..     
5900: 20 20 20 20 20 20 20 74 68 69 73 2e 6f 70 20 3d         this.op =
5910: 20 6f 70 3b 0d 0a 20 20 20 20 20 20 20 20 20 20   op;..          
5920: 20 20 74 68 69 73 2e 75 73 61 62 6c 65 20 3d 20    this.usable = 
5930: 75 73 61 62 6c 65 3b 0d 0a 20 20 20 20 20 20 20  usable;..       
5940: 20 20 20 20 20 74 68 69 73 2e 69 54 65 72 6d 4f       this.iTermO
5950: 66 66 73 65 74 20 3d 20 69 54 65 72 6d 4f 66 66  ffset = iTermOff
5960: 73 65 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  set;..        }.
5970: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
5980: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
5990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
59a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
59b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
59c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
59d0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
59e0: 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
59f0: 46 69 65 6c 64 73 0d 0a 20 20 20 20 20 20 20 20  Fields..        
5a00: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
5a10: 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6c 75 6d         /// Colum
5a20: 6e 20 6f 6e 20 6c 65 66 74 2d 68 61 6e 64 20 73  n on left-hand s
5a30: 69 64 65 20 6f 66 20 63 6f 6e 73 74 72 61 69 6e  ide of constrain
5a40: 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  t...        /// 
5a50: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
5a60: 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 69      public int i
5a70: 43 6f 6c 75 6d 6e 3b 0d 0a 0d 0a 20 20 20 20 20  Column;....     
5a80: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
5a90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5aa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5ab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
5ad0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
5ae0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
5af0: 43 6f 6e 73 74 72 61 69 6e 74 20 6f 70 65 72 61  Constraint opera
5b00: 74 6f 72 20 28 3c 73 65 65 20 63 72 65 66 3d 22  tor (<see cref="
5b10: 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74  SQLiteIndexConst
5b20: 72 61 69 6e 74 4f 70 22 20 2f 3e 29 2e 0d 0a 20  raintOp" />)... 
5b30: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
5b40: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
5b50: 75 62 6c 69 63 20 53 51 4c 69 74 65 49 6e 64 65  ublic SQLiteInde
5b60: 78 43 6f 6e 73 74 72 61 69 6e 74 4f 70 20 6f 70  xConstraintOp op
5b70: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
5b80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5bc0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
5bd0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
5be0: 20 20 20 20 20 20 2f 2f 2f 20 54 72 75 65 20 69        /// True i
5bf0: 66 20 74 68 69 73 20 63 6f 6e 73 74 72 61 69 6e  f this constrain
5c00: 74 20 69 73 20 75 73 61 62 6c 65 2e 0d 0a 20 20  t is usable...  
5c10: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
5c20: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
5c30: 62 6c 69 63 20 62 79 74 65 20 75 73 61 62 6c 65  blic byte usable
5c40: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
5c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5c90: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
5ca0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
5cb0: 20 20 20 20 20 20 2f 2f 2f 20 55 73 65 64 20 69        /// Used i
5cc0: 6e 74 65 72 6e 61 6c 6c 79 20 2d 20 3c 73 65 65  nternally - <see
5cd0: 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61   cref="ISQLiteMa
5ce0: 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 42 65 73 74  nagedModule.Best
5cf0: 49 6e 64 65 78 22 20 2f 3e 0d 0a 20 20 20 20 20  Index" />..     
5d00: 20 20 20 2f 2f 2f 20 73 68 6f 75 6c 64 20 69 67     /// should ig
5d10: 6e 6f 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  nore...        /
5d20: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
5d30: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
5d40: 74 20 69 54 65 72 6d 4f 66 66 73 65 74 3b 0d 0a  t iTermOffset;..
5d50: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
5d60: 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23  on..    }..    #
5d70: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
5d80: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
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 0d 0a 0d 0a  ////////////....
5dd0: 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69      #region SQLi
5de0: 74 65 49 6e 64 65 78 4f 72 64 65 72 42 79 20 48  teIndexOrderBy H
5df0: 65 6c 70 65 72 20 43 6c 61 73 73 0d 0a 20 20 20  elper Class..   
5e00: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
5e10: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61      /// This cla
5e20: 73 73 20 72 65 70 72 65 73 65 6e 74 73 20 74 68  ss represents th
5e30: 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33  e native sqlite3
5e40: 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 20 73  _index_orderby s
5e50: 74 72 75 63 74 75 72 65 20 66 72 6f 6d 0d 0a 20  tructure from.. 
5e60: 20 20 20 2f 2f 2f 20 74 68 65 20 53 51 4c 69 74     /// the SQLit
5e70: 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d  e core library..
5e80: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
5e90: 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  ry>..    public 
5ea0: 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c  sealed class SQL
5eb0: 69 74 65 49 6e 64 65 78 4f 72 64 65 72 42 79 0d  iteIndexOrderBy.
5ec0: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
5ed0: 23 72 65 67 69 6f 6e 20 49 6e 74 65 72 6e 61 6c  #region Internal
5ee0: 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20   Constructors.. 
5ef0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
5f00: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
5f10: 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20  / Constructs an 
5f20: 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73  instance of this
5f30: 20 63 6c 61 73 73 20 75 73 69 6e 67 20 74 68 65   class using the
5f40: 20 73 70 65 63 69 66 69 65 64 20 6e 61 74 69 76   specified nativ
5f50: 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  e..        /// s
5f60: 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64  qlite3_index_ord
5f70: 65 72 62 79 20 73 74 72 75 63 74 75 72 65 2e 0d  erby structure..
5f80: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
5f90: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
5fa0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
5fb0: 3d 22 6f 72 64 65 72 42 79 22 3e 0d 0a 20 20 20  ="orderBy">..   
5fc0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
5fd0: 69 76 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65  ive sqlite3_inde
5fe0: 78 5f 6f 72 64 65 72 62 79 20 73 74 72 75 63 74  x_orderby struct
5ff0: 75 72 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20  ure to use...   
6000: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
6010: 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72  >..        inter
6020: 6e 61 6c 20 53 51 4c 69 74 65 49 6e 64 65 78 4f  nal SQLiteIndexO
6030: 72 64 65 72 42 79 28 0d 0a 20 20 20 20 20 20 20  rderBy(..       
6040: 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
6050: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
6060: 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 20 6f  _index_orderby o
6070: 72 64 65 72 42 79 0d 0a 20 20 20 20 20 20 20 20  rderBy..        
6080: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
6090: 20 20 20 3a 20 74 68 69 73 28 6f 72 64 65 72 42     : this(orderB
60a0: 79 2e 69 43 6f 6c 75 6d 6e 2c 20 6f 72 64 65 72  y.iColumn, order
60b0: 42 79 2e 64 65 73 63 29 0d 0a 20 20 20 20 20 20  By.desc)..      
60c0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
60d0: 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
60e0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
60f0: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
6100: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
6110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6150: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
6160: 69 6f 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73  ion Private Cons
6170: 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20  tructors..      
6180: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
6190: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e  .        /// Con
61a0: 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61  structs an insta
61b0: 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73  nce of this clas
61c0: 73 20 75 73 69 6e 67 20 74 68 65 20 73 70 65 63  s using the spec
61d0: 69 66 69 65 64 20 66 69 65 6c 64 0d 0a 20 20 20  ified field..   
61e0: 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 73 2e       /// values.
61f0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
6200: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
6210: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
6220: 65 3d 22 69 43 6f 6c 75 6d 6e 22 3e 0d 0a 20 20  e="iColumn">..  
6230: 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6c 75 6d 6e        /// Column
6240: 20 6e 75 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20   number...      
6250: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
6260: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
6270: 61 6d 20 6e 61 6d 65 3d 22 64 65 73 63 22 3e 0d  am name="desc">.
6280: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 72 75  .        /// Tru
6290: 65 20 66 6f 72 20 44 45 53 43 2e 20 20 46 61 6c  e for DESC.  Fal
62a0: 73 65 20 66 6f 72 20 41 53 43 2e 0d 0a 20 20 20  se for ASC...   
62b0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
62c0: 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
62d0: 74 65 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 72  te SQLiteIndexOr
62e0: 64 65 72 42 79 28 0d 0a 20 20 20 20 20 20 20 20  derBy(..        
62f0: 20 20 20 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 2c      int iColumn,
6300: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 79  ..            by
6310: 74 65 20 64 65 73 63 0d 0a 20 20 20 20 20 20 20  te desc..       
6320: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
6330: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  {..            t
6340: 68 69 73 2e 69 43 6f 6c 75 6d 6e 20 3d 20 69 43  his.iColumn = iC
6350: 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20  olumn;..        
6360: 20 20 20 20 74 68 69 73 2e 64 65 73 63 20 3d 20      this.desc = 
6370: 64 65 73 63 3b 0d 0a 20 20 20 20 20 20 20 20 7d  desc;..        }
6380: 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
6390: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
63a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
63b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
63c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
63d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
63e0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
63f0: 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63    #region Public
6400: 20 46 69 65 6c 64 73 0d 0a 20 20 20 20 20 20 20   Fields..       
6410: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
6420: 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6c 75          /// Colu
6430: 6d 6e 20 6e 75 6d 62 65 72 2e 0d 0a 20 20 20 20  mn number...    
6440: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
6450: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
6460: 69 63 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b 0d  ic int iColumn;.
6470: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
6480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
64a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
64b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
64c0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
64d0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
64e0: 20 20 20 20 2f 2f 2f 20 54 72 75 65 20 66 6f 72      /// True for
64f0: 20 44 45 53 43 2e 20 20 46 61 6c 73 65 20 66 6f   DESC.  False fo
6500: 72 20 41 53 43 2e 0d 0a 20 20 20 20 20 20 20 20  r ASC...        
6510: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
6520: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62          public b
6530: 79 74 65 20 64 65 73 63 3b 0d 0a 20 20 20 20 20  yte desc;..     
6540: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20     #endregion.. 
6550: 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65     }..    #endre
6560: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  gion....    ////
6570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
65a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
65b0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23  ///////....    #
65c0: 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 49 6e 64  region SQLiteInd
65d0: 65 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  exConstraintUsag
65e0: 65 20 48 65 6c 70 65 72 20 43 6c 61 73 73 0d 0a  e Helper Class..
65f0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
6600: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  >..    /// This 
6610: 63 6c 61 73 73 20 72 65 70 72 65 73 65 6e 74 73  class represents
6620: 20 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69   the native sqli
6630: 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72  te3_index_constr
6640: 61 69 6e 74 5f 75 73 61 67 65 0d 0a 20 20 20 20  aint_usage..    
6650: 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 20 66 72  /// structure fr
6660: 6f 6d 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  om the SQLite co
6670: 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  re library...   
6680: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
6690: 0a 20 20 20 20 70 75 62 6c 69 63 20 73 65 61 6c  .    public seal
66a0: 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 49  ed class SQLiteI
66b0: 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55 73  ndexConstraintUs
66c0: 61 67 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  age..    {..    
66d0: 20 20 20 20 23 72 65 67 69 6f 6e 20 49 6e 74 65      #region Inte
66e0: 72 6e 61 6c 20 43 6f 6e 73 74 72 75 63 74 6f 72  rnal Constructor
66f0: 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
6700: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
6710: 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73    /// Constructs
6720: 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20   an instance of 
6730: 74 68 69 73 20 63 6c 61 73 73 20 75 73 69 6e 67  this class using
6740: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6e   the specified n
6750: 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f  ative..        /
6760: 2f 2f 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  // sqlite3_index
6770: 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61 67  _constraint_usag
6780: 65 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20  e structure...  
6790: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
67a0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
67b0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63  / <param name="c
67c0: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 22 3e  onstraintUsage">
67d0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
67e0: 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33  e native sqlite3
67f0: 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e  _index_constrain
6800: 74 5f 75 73 61 67 65 20 73 74 72 75 63 74 75 72  t_usage structur
6810: 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20 20  e to use...     
6820: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
6830: 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61  .        interna
6840: 6c 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e  l SQLiteIndexCon
6850: 73 74 72 61 69 6e 74 55 73 61 67 65 28 0d 0a 20  straintUsage(.. 
6860: 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66             Unsaf
6870: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
6880: 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e  qlite3_index_con
6890: 73 74 72 61 69 6e 74 5f 75 73 61 67 65 20 63 6f  straint_usage co
68a0: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 0d 0a 20  nstraintUsage.. 
68b0: 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
68c0: 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73            : this
68d0: 28 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  (constraintUsage
68e0: 2e 61 72 67 76 49 6e 64 65 78 2c 20 63 6f 6e 73  .argvIndex, cons
68f0: 74 72 61 69 6e 74 55 73 61 67 65 2e 6f 6d 69 74  traintUsage.omit
6900: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
6910: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20            // do 
6920: 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20  nothing...      
6930: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
6940: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
6950: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
6960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
69a0: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69       #region Pri
69b0: 76 61 74 65 20 43 6f 6e 73 74 72 75 63 74 6f 72  vate Constructor
69c0: 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
69d0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
69e0: 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73    /// Constructs
69f0: 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20   an instance of 
6a00: 74 68 69 73 20 63 6c 61 73 73 20 75 73 69 6e 67  this class using
6a10: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 66   the specified f
6a20: 69 65 6c 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ield..        //
6a30: 2f 20 76 61 6c 75 65 73 2e 0d 0a 20 20 20 20 20  / values...     
6a40: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
6a50: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
6a60: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 76  param name="argv
6a70: 49 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20 20 20  Index">..       
6a80: 20 2f 2f 2f 20 49 66 20 67 72 65 61 74 65 72 20   /// If greater 
6a90: 74 68 61 6e 20 30 2c 20 63 6f 6e 73 74 72 61 69  than 0, constrai
6aa0: 6e 74 20 69 73 20 70 61 72 74 20 6f 66 20 61 72  nt is part of ar
6ab0: 67 76 20 74 6f 20 78 46 69 6c 74 65 72 2e 0d 0a  gv to xFilter...
6ac0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
6ad0: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
6ae0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f  / <param name="o
6af0: 6d 69 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mit">..        /
6b00: 2f 2f 20 44 6f 20 6e 6f 74 20 63 6f 64 65 20 61  // Do not code a
6b10: 20 74 65 73 74 20 66 6f 72 20 74 68 69 73 20 63   test for this c
6b20: 6f 6e 73 74 72 61 69 6e 74 2e 0d 0a 20 20 20 20  onstraint...    
6b30: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
6b40: 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
6b50: 65 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e  e SQLiteIndexCon
6b60: 73 74 72 61 69 6e 74 55 73 61 67 65 28 0d 0a 20  straintUsage(.. 
6b70: 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 61             int a
6b80: 72 67 76 49 6e 64 65 78 2c 0d 0a 20 20 20 20 20  rgvIndex,..     
6b90: 20 20 20 20 20 20 20 62 79 74 65 20 6f 6d 69 74         byte omit
6ba0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
6bb0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
6bc0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 61 72 67          this.arg
6bd0: 76 49 6e 64 65 78 20 3d 20 61 72 67 76 49 6e 64  vIndex = argvInd
6be0: 65 78 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ex;..           
6bf0: 20 74 68 69 73 2e 6f 6d 69 74 20 3d 20 6f 6d 69   this.omit = omi
6c00: 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  t;..        }.. 
6c10: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
6c20: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
6c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6c70: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
6c80: 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 46  #region Public F
6c90: 69 65 6c 64 73 0d 0a 20 20 20 20 20 20 20 20 2f  ields..        /
6ca0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
6cb0: 20 20 20 20 20 20 2f 2f 2f 20 49 66 20 67 72 65        /// If gre
6cc0: 61 74 65 72 20 74 68 61 6e 20 30 2c 20 63 6f 6e  ater than 0, con
6cd0: 73 74 72 61 69 6e 74 20 69 73 20 70 61 72 74 20  straint is part 
6ce0: 6f 66 20 61 72 67 76 20 74 6f 20 78 46 69 6c 74  of argv to xFilt
6cf0: 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  er...        ///
6d00: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
6d10: 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
6d20: 61 72 67 76 49 6e 64 65 78 3b 0d 0a 0d 0a 20 20  argvIndex;....  
6d30: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
6d40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
6d80: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
6d90: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
6da0: 2f 2f 2f 20 44 6f 20 6e 6f 74 20 63 6f 64 65 20  /// Do not code 
6db0: 61 20 74 65 73 74 20 66 6f 72 20 74 68 69 73 20  a test for this 
6dc0: 63 6f 6e 73 74 72 61 69 6e 74 2e 0d 0a 20 20 20  constraint...   
6dd0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
6de0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ry>..        pub
6df0: 6c 69 63 20 62 79 74 65 20 6f 6d 69 74 3b 0d 0a  lic byte omit;..
6e00: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
6e10: 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23  on..    }..    #
6e20: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
6e30: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
6e40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
6e80: 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69      #region SQLi
6e90: 74 65 49 6e 64 65 78 49 6e 70 75 74 73 20 48 65  teIndexInputs He
6ea0: 6c 70 65 72 20 43 6c 61 73 73 0d 0a 20 20 20 20  lper Class..    
6eb0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
6ec0: 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73     /// This clas
6ed0: 73 20 72 65 70 72 65 73 65 6e 74 73 20 74 68 65  s represents the
6ee0: 20 76 61 72 69 6f 75 73 20 69 6e 70 75 74 73 20   various inputs 
6ef0: 70 72 6f 76 69 64 65 64 20 62 79 20 74 68 65 20  provided by the 
6f00: 53 51 4c 69 74 65 20 63 6f 72 65 0d 0a 20 20 20  SQLite core..   
6f10: 20 2f 2f 2f 20 6c 69 62 72 61 72 79 20 74 6f 20   /// library to 
6f20: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
6f30: 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64  SQLiteManagedMod
6f40: 75 6c 65 2e 42 65 73 74 49 6e 64 65 78 22 20 2f  ule.BestIndex" /
6f50: 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 2f  > method...    /
6f60: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
6f70: 20 20 20 70 75 62 6c 69 63 20 73 65 61 6c 65 64     public sealed
6f80: 20 63 6c 61 73 73 20 53 51 4c 69 74 65 49 6e 64   class SQLiteInd
6f90: 65 78 49 6e 70 75 74 73 0d 0a 20 20 20 20 7b 0d  exInputs..    {.
6fa0: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
6fb0: 20 49 6e 74 65 72 6e 61 6c 20 43 6f 6e 73 74 72   Internal Constr
6fc0: 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20  uctors..        
6fd0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
6fe0: 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74         /// Const
6ff0: 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63  ructs an instanc
7000: 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73 2e  e of this class.
7010: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
7020: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
7030: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
7040: 65 3d 22 6e 43 6f 6e 73 74 72 61 69 6e 74 22 3e  e="nConstraint">
7050: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
7060: 65 20 6e 75 6d 62 65 72 20 6f 66 20 3c 73 65 65  e number of <see
7070: 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64   cref="SQLiteInd
7080: 65 78 43 6f 6e 73 74 72 61 69 6e 74 22 20 2f 3e  exConstraint" />
7090: 20 69 6e 73 74 61 6e 63 65 73 20 74 6f 0d 0a 20   instances to.. 
70a0: 20 20 20 20 20 20 20 2f 2f 2f 20 70 72 65 2d 61         /// pre-a
70b0: 6c 6c 6f 63 61 74 65 20 73 70 61 63 65 20 66 6f  llocate space fo
70c0: 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
70d0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
70e0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
70f0: 65 3d 22 6e 4f 72 64 65 72 42 79 22 3e 0d 0a 20  e="nOrderBy">.. 
7100: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
7110: 75 6d 62 65 72 20 6f 66 20 3c 73 65 65 20 63 72  umber of <see cr
7120: 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 4f  ef="SQLiteIndexO
7130: 72 64 65 72 42 79 22 20 2f 3e 20 69 6e 73 74 61  rderBy" /> insta
7140: 6e 63 65 73 20 74 6f 0d 0a 20 20 20 20 20 20 20  nces to..       
7150: 20 2f 2f 2f 20 70 72 65 2d 61 6c 6c 6f 63 61 74   /// pre-allocat
7160: 65 20 73 70 61 63 65 20 66 6f 72 2e 0d 0a 20 20  e space for...  
7170: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
7180: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65  m>..        inte
7190: 72 6e 61 6c 20 53 51 4c 69 74 65 49 6e 64 65 78  rnal SQLiteIndex
71a0: 49 6e 70 75 74 73 28 69 6e 74 20 6e 43 6f 6e 73  Inputs(int nCons
71b0: 74 72 61 69 6e 74 2c 20 69 6e 74 20 6e 4f 72 64  traint, int nOrd
71c0: 65 72 42 79 29 0d 0a 20 20 20 20 20 20 20 20 7b  erBy)..        {
71d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f  ..            co
71e0: 6e 73 74 72 61 69 6e 74 73 20 3d 20 6e 65 77 20  nstraints = new 
71f0: 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74  SQLiteIndexConst
7200: 72 61 69 6e 74 5b 6e 43 6f 6e 73 74 72 61 69 6e  raint[nConstrain
7210: 74 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t];..           
7220: 20 6f 72 64 65 72 42 79 73 20 3d 20 6e 65 77 20   orderBys = new 
7230: 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65 72  SQLiteIndexOrder
7240: 42 79 5b 6e 4f 72 64 65 72 42 79 5d 3b 0d 0a 20  By[nOrderBy];.. 
7250: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
7260: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
7270: 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
72b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
72c0: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
72d0: 6f 6e 20 50 75 62 6c 69 63 20 50 72 6f 70 65 72  on Public Proper
72e0: 74 69 65 73 0d 0a 20 20 20 20 20 20 20 20 70 72  ties..        pr
72f0: 69 76 61 74 65 20 53 51 4c 69 74 65 49 6e 64 65  ivate SQLiteInde
7300: 78 43 6f 6e 73 74 72 61 69 6e 74 5b 5d 20 63 6f  xConstraint[] co
7310: 6e 73 74 72 61 69 6e 74 73 3b 0d 0a 20 20 20 20  nstraints;..    
7320: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
7330: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
7340: 6e 20 61 72 72 61 79 20 6f 66 20 3c 73 65 65 20  n array of <see 
7350: 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65  cref="SQLiteInde
7360: 78 43 6f 6e 73 74 72 61 69 6e 74 22 20 2f 3e 20  xConstraint" /> 
7370: 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 73  object instances
7380: 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 65  ,..        /// e
7390: 61 63 68 20 63 6f 6e 74 61 69 6e 69 6e 67 20 69  ach containing i
73a0: 6e 66 6f 72 6d 61 74 69 6f 6e 20 73 75 70 70 6c  nformation suppl
73b0: 69 65 64 20 62 79 20 74 68 65 20 53 51 4c 69 74  ied by the SQLit
73c0: 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d  e core library..
73d0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
73e0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
73f0: 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 49 6e   public SQLiteIn
7400: 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 5b 5d 20  dexConstraint[] 
7410: 43 6f 6e 73 74 72 61 69 6e 74 73 0d 0a 20 20 20  Constraints..   
7420: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
7430: 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e      get { return
7440: 20 63 6f 6e 73 74 72 61 69 6e 74 73 3b 20 7d 0d   constraints; }.
7450: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
7460: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
7470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
74a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
74b0: 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
74c0: 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65   SQLiteIndexOrde
74d0: 72 42 79 5b 5d 20 6f 72 64 65 72 42 79 73 3b 0d  rBy[] orderBys;.
74e0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
74f0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
7500: 2f 2f 2f 20 41 6e 20 61 72 72 61 79 20 6f 66 20  /// An array of 
7510: 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
7520: 65 49 6e 64 65 78 4f 72 64 65 72 42 79 22 20 2f  eIndexOrderBy" /
7530: 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
7540: 65 73 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  es,..        ///
7550: 20 65 61 63 68 20 63 6f 6e 74 61 69 6e 69 6e 67   each containing
7560: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 73 75 70   information sup
7570: 70 6c 69 65 64 20 62 79 20 74 68 65 20 53 51 4c  plied by the SQL
7580: 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
7590: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
75a0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
75b0: 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
75c0: 49 6e 64 65 78 4f 72 64 65 72 42 79 5b 5d 20 4f  IndexOrderBy[] O
75d0: 72 64 65 72 42 79 73 0d 0a 20 20 20 20 20 20 20  rderBys..       
75e0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
75f0: 67 65 74 20 7b 20 72 65 74 75 72 6e 20 6f 72 64  get { return ord
7600: 65 72 42 79 73 3b 20 7d 0d 0a 20 20 20 20 20 20  erBys; }..      
7610: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
7620: 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a  dregion..    }..
7630: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
7640: 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
7650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7690: 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
76a0: 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 75 74 70   SQLiteIndexOutp
76b0: 75 74 73 20 48 65 6c 70 65 72 20 43 6c 61 73 73  uts Helper Class
76c0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
76d0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69  ry>..    /// Thi
76e0: 73 20 63 6c 61 73 73 20 72 65 70 72 65 73 65 6e  s class represen
76f0: 74 73 20 74 68 65 20 76 61 72 69 6f 75 73 20 6f  ts the various o
7700: 75 74 70 75 74 73 20 70 72 6f 76 69 64 65 64 20  utputs provided 
7710: 74 6f 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  to the SQLite co
7720: 72 65 0d 0a 20 20 20 20 2f 2f 2f 20 6c 69 62 72  re..    /// libr
7730: 61 72 79 20 62 79 20 74 68 65 20 3c 73 65 65 20  ary by the <see 
7740: 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e  cref="ISQLiteMan
7750: 61 67 65 64 4d 6f 64 75 6c 65 2e 42 65 73 74 49  agedModule.BestI
7760: 6e 64 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  ndex" /> method.
7770: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
7780: 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63  ary>..    public
7790: 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51   sealed class SQ
77a0: 4c 69 74 65 49 6e 64 65 78 4f 75 74 70 75 74 73  LiteIndexOutputs
77b0: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
77c0: 20 23 72 65 67 69 6f 6e 20 49 6e 74 65 72 6e 61   #region Interna
77d0: 6c 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a  l Constructors..
77e0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
77f0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
7800: 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e  // Constructs an
7810: 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69   instance of thi
7820: 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20  s class...      
7830: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
7840: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
7850: 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 43 6f 6e 73  aram name="nCons
7860: 74 72 61 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20  traint">..      
7870: 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72    /// The number
7880: 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53   of <see cref="S
7890: 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72  QLiteIndexConstr
78a0: 61 69 6e 74 55 73 61 67 65 22 20 2f 3e 20 69 6e  aintUsage" /> in
78b0: 73 74 61 6e 63 65 73 0d 0a 20 20 20 20 20 20 20  stances..       
78c0: 20 2f 2f 2f 20 74 6f 20 70 72 65 2d 61 6c 6c 6f   /// to pre-allo
78d0: 63 61 74 65 20 73 70 61 63 65 20 66 6f 72 2e 0d  cate space for..
78e0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
78f0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 69  aram>..        i
7900: 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 49 6e  nternal SQLiteIn
7910: 64 65 78 4f 75 74 70 75 74 73 28 69 6e 74 20 6e  dexOutputs(int n
7920: 43 6f 6e 73 74 72 61 69 6e 74 29 0d 0a 20 20 20  Constraint)..   
7930: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
7940: 20 20 20 20 63 6f 6e 73 74 72 61 69 6e 74 55 73      constraintUs
7950: 61 67 65 73 20 3d 20 6e 65 77 20 53 51 4c 69 74  ages = new SQLit
7960: 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74  eIndexConstraint
7970: 55 73 61 67 65 5b 6e 43 6f 6e 73 74 72 61 69 6e  Usage[nConstrain
7980: 74 5d 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  t];..        }..
7990: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
79a0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
79b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
79c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
79d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
79e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
79f0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
7a00: 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
7a10: 50 72 6f 70 65 72 74 69 65 73 0d 0a 20 20 20 20  Properties..    
7a20: 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69      private SQLi
7a30: 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
7a40: 74 55 73 61 67 65 5b 5d 20 63 6f 6e 73 74 72 61  tUsage[] constra
7a50: 69 6e 74 55 73 61 67 65 73 3b 0d 0a 20 20 20 20  intUsages;..    
7a60: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
7a70: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
7a80: 6e 20 61 72 72 61 79 20 6f 66 20 3c 73 65 65 20  n array of <see 
7a90: 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65  cref="SQLiteInde
7aa0: 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  xConstraintUsage
7ab0: 22 20 2f 3e 20 6f 62 6a 65 63 74 0d 0a 20 20 20  " /> object..   
7ac0: 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63       /// instanc
7ad0: 65 73 2c 20 65 61 63 68 20 63 6f 6e 74 61 69 6e  es, each contain
7ae0: 69 6e 67 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  ing information 
7af0: 74 6f 20 62 65 20 73 75 70 70 6c 69 65 64 20 74  to be supplied t
7b00: 6f 20 74 68 65 20 53 51 4c 69 74 65 0d 0a 20 20  o the SQLite..  
7b10: 20 20 20 20 20 20 2f 2f 2f 20 63 6f 72 65 20 6c        /// core l
7b20: 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20  ibrary...       
7b30: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
7b40: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
7b50: 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74  SQLiteIndexConst
7b60: 72 61 69 6e 74 55 73 61 67 65 5b 5d 20 43 6f 6e  raintUsage[] Con
7b70: 73 74 72 61 69 6e 74 55 73 61 67 65 73 0d 0a 20  straintUsages.. 
7b80: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
7b90: 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75        get { retu
7ba0: 72 6e 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61  rn constraintUsa
7bb0: 67 65 73 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  ges; }..        
7bc0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
7bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7c10: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
7c20: 70 72 69 76 61 74 65 20 69 6e 74 20 69 6e 64 65  private int inde
7c30: 78 4e 75 6d 62 65 72 3b 0d 0a 20 20 20 20 20 20  xNumber;..      
7c40: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
7c50: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 75 6d  .        /// Num
7c60: 62 65 72 20 75 73 65 64 20 74 6f 20 68 65 6c 70  ber used to help
7c70: 20 69 64 65 6e 74 69 66 79 20 74 68 65 20 73 65   identify the se
7c80: 6c 65 63 74 65 64 20 69 6e 64 65 78 2e 20 20 54  lected index.  T
7c90: 68 69 73 20 76 61 6c 75 65 20 77 69 6c 6c 0d 0a  his value will..
7ca0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 61 74 65          /// late
7cb0: 72 20 62 65 20 70 72 6f 76 69 64 65 64 20 74 6f  r be provided to
7cc0: 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
7cd0: 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f  ISQLiteManagedMo
7ce0: 64 75 6c 65 2e 46 69 6c 74 65 72 22 20 2f 3e 0d  dule.Filter" />.
7cf0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74  .        /// met
7d00: 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
7d10: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
7d20: 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
7d30: 20 49 6e 64 65 78 4e 75 6d 62 65 72 0d 0a 20 20   IndexNumber..  
7d40: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
7d50: 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
7d60: 6e 20 69 6e 64 65 78 4e 75 6d 62 65 72 3b 20 7d  n indexNumber; }
7d70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65  ..            se
7d80: 74 20 7b 20 69 6e 64 65 78 4e 75 6d 62 65 72 20  t { indexNumber 
7d90: 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20  = value; }..    
7da0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
7db0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
7dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7dd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7de0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7df0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
7e00: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 72 69      private stri
7e10: 6e 67 20 69 6e 64 65 78 53 74 72 69 6e 67 3b 0d  ng indexString;.
7e20: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
7e30: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
7e40: 2f 2f 2f 20 53 74 72 69 6e 67 20 75 73 65 64 20  /// String used 
7e50: 74 6f 20 68 65 6c 70 20 69 64 65 6e 74 69 66 79  to help identify
7e60: 20 74 68 65 20 73 65 6c 65 63 74 65 64 20 69 6e   the selected in
7e70: 64 65 78 2e 20 20 54 68 69 73 20 76 61 6c 75 65  dex.  This value
7e80: 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f   will..        /
7e90: 2f 2f 20 6c 61 74 65 72 20 62 65 20 70 72 6f 76  // later be prov
7ea0: 69 64 65 64 20 74 6f 20 74 68 65 20 3c 73 65 65  ided to the <see
7eb0: 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61   cref="ISQLiteMa
7ec0: 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 46 69 6c 74  nagedModule.Filt
7ed0: 65 72 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20  er" />..        
7ee0: 2f 2f 2f 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20  /// method...   
7ef0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
7f00: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ry>..        pub
7f10: 6c 69 63 20 73 74 72 69 6e 67 20 49 6e 64 65 78  lic string Index
7f20: 53 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 20  String..        
7f30: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67  {..            g
7f40: 65 74 20 7b 20 72 65 74 75 72 6e 20 69 6e 64 65  et { return inde
7f50: 78 53 74 72 69 6e 67 3b 20 7d 0d 0a 20 20 20 20  xString; }..    
7f60: 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 69 6e          set { in
7f70: 64 65 78 53 74 72 69 6e 67 20 3d 20 76 61 6c 75  dexString = valu
7f80: 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d  e; }..        }.
7f90: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
7ff0: 69 76 61 74 65 20 69 6e 74 20 6e 65 65 64 54 6f  ivate int needTo
8000: 46 72 65 65 49 6e 64 65 78 53 74 72 69 6e 67 3b  FreeIndexString;
8010: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
8020: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
8030: 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66   /// Non-zero if
8040: 20 74 68 65 20 69 6e 64 65 78 20 73 74 72 69 6e   the index strin
8050: 67 20 6d 75 73 74 20 62 65 20 66 72 65 65 64 20  g must be freed 
8060: 62 79 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  by the SQLite co
8070: 72 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  re..        /// 
8080: 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20  library...      
8090: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
80a0: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
80b0: 20 69 6e 74 20 4e 65 65 64 54 6f 46 72 65 65 49   int NeedToFreeI
80c0: 6e 64 65 78 53 74 72 69 6e 67 0d 0a 20 20 20 20  ndexString..    
80d0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
80e0: 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
80f0: 6e 65 65 64 54 6f 46 72 65 65 49 6e 64 65 78 53  needToFreeIndexS
8100: 74 72 69 6e 67 3b 20 7d 0d 0a 20 20 20 20 20 20  tring; }..      
8110: 20 20 20 20 20 20 73 65 74 20 7b 20 6e 65 65 64        set { need
8120: 54 6f 46 72 65 65 49 6e 64 65 78 53 74 72 69 6e  ToFreeIndexStrin
8130: 67 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20  g = value; }..  
8140: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
8150: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
8160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
81a0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 69 6e        private in
81b0: 74 20 6f 72 64 65 72 42 79 43 6f 6e 73 75 6d 65  t orderByConsume
81c0: 64 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d;..        /// 
81d0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
81e0: 20 20 20 2f 2f 2f 20 54 72 75 65 20 69 66 20 6f     /// True if o
81f0: 75 74 70 75 74 20 69 73 20 61 6c 72 65 61 64 79  utput is already
8200: 20 6f 72 64 65 72 65 64 2e 0d 0a 20 20 20 20 20   ordered...     
8210: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
8220: 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
8230: 63 20 69 6e 74 20 4f 72 64 65 72 42 79 43 6f 6e  c int OrderByCon
8240: 73 75 6d 65 64 0d 0a 20 20 20 20 20 20 20 20 7b  sumed..        {
8250: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
8260: 74 20 7b 20 72 65 74 75 72 6e 20 6f 72 64 65 72  t { return order
8270: 42 79 43 6f 6e 73 75 6d 65 64 3b 20 7d 0d 0a 20  ByConsumed; }.. 
8280: 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b             set {
8290: 20 6f 72 64 65 72 42 79 43 6f 6e 73 75 6d 65 64   orderByConsumed
82a0: 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20   = value; }..   
82b0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
82c0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
82d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
82e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
82f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
8310: 20 20 20 20 20 70 72 69 76 61 74 65 20 64 6f 75       private dou
8320: 62 6c 65 20 65 73 74 69 6d 61 74 65 64 43 6f 73  ble estimatedCos
8330: 74 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  t;..        /// 
8340: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
8350: 20 20 20 2f 2f 2f 20 45 73 74 69 6d 61 74 65 64     /// Estimated
8360: 20 63 6f 73 74 20 6f 66 20 75 73 69 6e 67 20 74   cost of using t
8370: 68 69 73 20 69 6e 64 65 78 2e 0d 0a 20 20 20 20  his index...    
8380: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
8390: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
83a0: 69 63 20 64 6f 75 62 6c 65 20 45 73 74 69 6d 61  ic double Estima
83b0: 74 65 64 43 6f 73 74 0d 0a 20 20 20 20 20 20 20  tedCost..       
83c0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
83d0: 67 65 74 20 7b 20 72 65 74 75 72 6e 20 65 73 74  get { return est
83e0: 69 6d 61 74 65 64 43 6f 73 74 3b 20 7d 0d 0a 20  imatedCost; }.. 
83f0: 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b             set {
8400: 20 65 73 74 69 6d 61 74 65 64 43 6f 73 74 20 3d   estimatedCost =
8410: 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20   value; }..     
8420: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
8430: 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d  ndregion..    }.
8440: 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
8450: 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
8460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
84a0: 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
84b0: 6e 20 53 51 4c 69 74 65 49 6e 64 65 78 20 48 65  n SQLiteIndex He
84c0: 6c 70 65 72 20 43 6c 61 73 73 0d 0a 20 20 20 20  lper Class..    
84d0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
84e0: 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73     /// This clas
84f0: 73 20 72 65 70 72 65 73 65 6e 74 73 20 74 68 65  s represents the
8500: 20 76 61 72 69 6f 75 73 20 69 6e 70 75 74 73 20   various inputs 
8510: 61 6e 64 20 6f 75 74 70 75 74 73 20 75 73 65 64  and outputs used
8520: 20 77 69 74 68 20 74 68 65 0d 0a 20 20 20 20 2f   with the..    /
8530: 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  // <see cref="IS
8540: 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75  QLiteManagedModu
8550: 6c 65 2e 42 65 73 74 49 6e 64 65 78 22 20 2f 3e  le.BestIndex" />
8560: 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f   method...    //
8570: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
8580: 20 20 70 75 62 6c 69 63 20 73 65 61 6c 65 64 20    public sealed 
8590: 63 6c 61 73 73 20 53 51 4c 69 74 65 49 6e 64 65  class SQLiteInde
85a0: 78 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  x..    {..      
85b0: 20 20 23 72 65 67 69 6f 6e 20 49 6e 74 65 72 6e    #region Intern
85c0: 61 6c 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d  al Constructors.
85d0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
85e0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
85f0: 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61  /// Constructs a
8600: 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68  n instance of th
8610: 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20  is class...     
8620: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
8630: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
8640: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 43 6f 6e  param name="nCon
8650: 73 74 72 61 69 6e 74 22 3e 0d 0a 20 20 20 20 20  straint">..     
8660: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65     /// The numbe
8670: 72 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22  r of <see cref="
8680: 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74  SQLiteIndexConst
8690: 72 61 69 6e 74 22 20 2f 3e 20 28 61 6e 64 0d 0a  raint" /> (and..
86a0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
86b0: 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64   cref="SQLiteInd
86c0: 65 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  exConstraintUsag
86d0: 65 22 20 2f 3e 29 20 69 6e 73 74 61 6e 63 65 73  e" />) instances
86e0: 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   to..        ///
86f0: 20 70 72 65 2d 61 6c 6c 6f 63 61 74 65 20 73 70   pre-allocate sp
8700: 61 63 65 20 66 6f 72 2e 0d 0a 20 20 20 20 20 20  ace for...      
8710: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
8720: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
8730: 61 6d 20 6e 61 6d 65 3d 22 6e 4f 72 64 65 72 42  am name="nOrderB
8740: 79 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  y">..        ///
8750: 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 3c   The number of <
8760: 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
8770: 49 6e 64 65 78 4f 72 64 65 72 42 79 22 20 2f 3e  IndexOrderBy" />
8780: 20 69 6e 73 74 61 6e 63 65 73 20 74 6f 0d 0a 20   instances to.. 
8790: 20 20 20 20 20 20 20 2f 2f 2f 20 70 72 65 2d 61         /// pre-a
87a0: 6c 6c 6f 63 61 74 65 20 73 70 61 63 65 20 66 6f  llocate space fo
87b0: 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
87c0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
87d0: 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74    internal SQLit
87e0: 65 49 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20  eIndex(..       
87f0: 20 20 20 20 20 69 6e 74 20 6e 43 6f 6e 73 74 72       int nConstr
8800: 61 69 6e 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  aint,..         
8810: 20 20 20 69 6e 74 20 6e 4f 72 64 65 72 42 79 0d     int nOrderBy.
8820: 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
8830: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
8840: 20 20 20 20 20 20 20 69 6e 70 75 74 73 20 3d 20         inputs = 
8850: 6e 65 77 20 53 51 4c 69 74 65 49 6e 64 65 78 49  new SQLiteIndexI
8860: 6e 70 75 74 73 28 6e 43 6f 6e 73 74 72 61 69 6e  nputs(nConstrain
8870: 74 2c 20 6e 4f 72 64 65 72 42 79 29 3b 0d 0a 20  t, nOrderBy);.. 
8880: 20 20 20 20 20 20 20 20 20 20 20 6f 75 74 70 75             outpu
8890: 74 73 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 49  ts = new SQLiteI
88a0: 6e 64 65 78 4f 75 74 70 75 74 73 28 6e 43 6f 6e  ndexOutputs(nCon
88b0: 73 74 72 61 69 6e 74 29 3b 0d 0a 20 20 20 20 20  straint);..     
88c0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
88d0: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
88e0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
88f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
8930: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
8940: 75 62 6c 69 63 20 50 72 6f 70 65 72 74 69 65 73  ublic Properties
8950: 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
8960: 65 20 53 51 4c 69 74 65 49 6e 64 65 78 49 6e 70  e SQLiteIndexInp
8970: 75 74 73 20 69 6e 70 75 74 73 3b 0d 0a 20 20 20  uts inputs;..   
8980: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
8990: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
89a0: 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
89b0: 51 4c 69 74 65 49 6e 64 65 78 49 6e 70 75 74 73  QLiteIndexInputs
89c0: 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
89d0: 61 6e 63 65 20 63 6f 6e 74 61 69 6e 69 6e 67 0d  ance containing.
89e0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  .        /// the
89f0: 20 69 6e 70 75 74 73 20 74 6f 20 74 68 65 20 3c   inputs to the <
8a00: 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
8a10: 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 42  eManagedModule.B
8a20: 65 73 74 49 6e 64 65 78 22 20 2f 3e 0d 0a 20 20  estIndex" />..  
8a30: 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64        /// method
8a40: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
8a50: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
8a60: 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
8a70: 49 6e 64 65 78 49 6e 70 75 74 73 20 49 6e 70 75  IndexInputs Inpu
8a80: 74 73 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ts..        {.. 
8a90: 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
8aa0: 20 72 65 74 75 72 6e 20 69 6e 70 75 74 73 3b 20   return inputs; 
8ab0: 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
8ac0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
8ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
8b10: 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ...        priva
8b20: 74 65 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 75  te SQLiteIndexOu
8b30: 74 70 75 74 73 20 6f 75 74 70 75 74 73 3b 0d 0a  tputs outputs;..
8b40: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
8b50: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
8b60: 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
8b70: 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 4f 75 74  ="SQLiteIndexOut
8b80: 70 75 74 73 22 20 2f 3e 20 6f 62 6a 65 63 74 20  puts" /> object 
8b90: 69 6e 73 74 61 6e 63 65 20 63 6f 6e 74 61 69 6e  instance contain
8ba0: 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ing..        ///
8bb0: 20 74 68 65 20 6f 75 74 70 75 74 73 20 66 72 6f   the outputs fro
8bc0: 6d 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  m the <see cref=
8bd0: 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d  "ISQLiteManagedM
8be0: 6f 64 75 6c 65 2e 42 65 73 74 49 6e 64 65 78 22  odule.BestIndex"
8bf0: 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   />..        ///
8c00: 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
8c10: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
8c20: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
8c30: 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 75 74 70   SQLiteIndexOutp
8c40: 75 74 73 20 4f 75 74 70 75 74 73 0d 0a 20 20 20  uts Outputs..   
8c50: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
8c60: 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e      get { return
8c70: 20 6f 75 74 70 75 74 73 3b 20 7d 0d 0a 20 20 20   outputs; }..   
8c80: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
8c90: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20  #endregion..    
8ca0: 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  }..    #endregio
8cb0: 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  n....    ///////
8cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8d00: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
8d10: 69 6f 6e 20 53 51 4c 69 74 65 56 69 72 74 75 61  ion SQLiteVirtua
8d20: 6c 54 61 62 6c 65 20 42 61 73 65 20 43 6c 61 73  lTable Base Clas
8d30: 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  s..    /// <summ
8d40: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
8d50: 69 73 20 63 6c 61 73 73 20 72 65 70 72 65 73 65  is class represe
8d60: 6e 74 73 20 61 20 6d 61 6e 61 67 65 64 20 76 69  nts a managed vi
8d70: 72 74 75 61 6c 20 74 61 62 6c 65 20 69 6d 70 6c  rtual table impl
8d80: 65 6d 65 6e 74 61 74 69 6f 6e 2e 20 20 49 74 20  ementation.  It 
8d90: 69 73 0d 0a 20 20 20 20 2f 2f 2f 20 6e 6f 74 20  is..    /// not 
8da0: 73 65 61 6c 65 64 20 61 6e 64 20 73 68 6f 75 6c  sealed and shoul
8db0: 64 20 62 65 20 75 73 65 64 20 61 73 20 74 68 65  d be used as the
8dc0: 20 62 61 73 65 20 63 6c 61 73 73 20 66 6f 72 20   base class for 
8dd0: 61 6e 79 20 75 73 65 72 2d 64 65 66 69 6e 65 64  any user-defined
8de0: 0d 0a 20 20 20 20 2f 2f 2f 20 76 69 72 74 75 61  ..    /// virtua
8df0: 6c 20 74 61 62 6c 65 20 63 6c 61 73 73 65 73 20  l table classes 
8e00: 69 6d 70 6c 65 6d 65 6e 74 65 64 20 69 6e 20 6d  implemented in m
8e10: 61 6e 61 67 65 64 20 63 6f 64 65 2e 0d 0a 20 20  anaged code...  
8e20: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
8e30: 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 63 6c 61  ..    public cla
8e40: 73 73 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c  ss SQLiteVirtual
8e50: 54 61 62 6c 65 20 3a 0d 0a 20 20 20 20 20 20 20  Table :..       
8e60: 20 20 20 20 20 49 53 51 4c 69 74 65 4e 61 74 69       ISQLiteNati
8e70: 76 65 48 61 6e 64 6c 65 2c 20 49 44 69 73 70 6f  veHandle, IDispo
8e80: 73 61 62 6c 65 20 2f 2a 20 4e 4f 54 20 53 45 41  sable /* NOT SEA
8e90: 4c 45 44 20 2a 2f 0d 0a 20 20 20 20 7b 0d 0a 20  LED */..    {.. 
8ea0: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
8eb0: 72 69 76 61 74 65 20 43 6f 6e 73 74 61 6e 74 73  rivate Constants
8ec0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
8ed0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
8ee0: 20 2f 2f 2f 20 54 68 65 20 69 6e 64 65 78 20 77   /// The index w
8ef0: 69 74 68 69 6e 20 74 68 65 20 61 72 72 61 79 20  ithin the array 
8f00: 6f 66 20 73 74 72 69 6e 67 73 20 70 72 6f 76 69  of strings provi
8f10: 64 65 64 20 74 6f 20 74 68 65 0d 0a 20 20 20 20  ded to the..    
8f20: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
8f30: 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65  f="ISQLiteManage
8f40: 64 4d 6f 64 75 6c 65 2e 43 72 65 61 74 65 22 20  dModule.Create" 
8f50: 2f 3e 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20  /> and..        
8f60: 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
8f70: 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64  SQLiteManagedMod
8f80: 75 6c 65 2e 43 6f 6e 6e 65 63 74 22 20 2f 3e 20  ule.Connect" /> 
8f90: 6d 65 74 68 6f 64 73 20 63 6f 6e 74 61 69 6e 69  methods containi
8fa0: 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  ng the..        
8fb0: 2f 2f 2f 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  /// name of the 
8fc0: 6d 6f 64 75 6c 65 20 69 6d 70 6c 65 6d 65 6e 74  module implement
8fd0: 69 6e 67 20 74 68 69 73 20 76 69 72 74 75 61 6c  ing this virtual
8fe0: 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20   table...       
8ff0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
9000: 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
9010: 20 63 6f 6e 73 74 20 69 6e 74 20 4d 6f 64 75 6c   const int Modul
9020: 65 4e 61 6d 65 49 6e 64 65 78 20 3d 20 30 3b 0d  eNameIndex = 0;.
9030: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
9040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9080: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
9090: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
90a0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 64       /// The ind
90b0: 65 78 20 77 69 74 68 69 6e 20 74 68 65 20 61 72  ex within the ar
90c0: 72 61 79 20 6f 66 20 73 74 72 69 6e 67 73 20 70  ray of strings p
90d0: 72 6f 76 69 64 65 64 20 74 6f 20 74 68 65 0d 0a  rovided to the..
90e0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
90f0: 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61   cref="ISQLiteMa
9100: 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43 72 65 61  nagedModule.Crea
9110: 74 65 22 20 2f 3e 20 61 6e 64 0d 0a 20 20 20 20  te" /> and..    
9120: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
9130: 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65  f="ISQLiteManage
9140: 64 4d 6f 64 75 6c 65 2e 43 6f 6e 6e 65 63 74 22  dModule.Connect"
9150: 20 2f 3e 20 6d 65 74 68 6f 64 73 20 63 6f 6e 74   /> methods cont
9160: 61 69 6e 69 6e 67 20 74 68 65 0d 0a 20 20 20 20  aining the..    
9170: 20 20 20 20 2f 2f 2f 20 6e 61 6d 65 20 6f 66 20      /// name of 
9180: 74 68 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e  the database con
9190: 74 61 69 6e 69 6e 67 20 74 68 69 73 20 76 69 72  taining this vir
91a0: 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20  tual table...   
91b0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
91c0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
91d0: 76 61 74 65 20 63 6f 6e 73 74 20 69 6e 74 20 44  vate const int D
91e0: 61 74 61 62 61 73 65 4e 61 6d 65 49 6e 64 65 78  atabaseNameIndex
91f0: 20 3d 20 31 3b 0d 0a 0d 0a 20 20 20 20 20 20 20   = 1;....       
9200: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
9210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9240: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
9250: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
9260: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
9270: 68 65 20 69 6e 64 65 78 20 77 69 74 68 69 6e 20  he index within 
9280: 74 68 65 20 61 72 72 61 79 20 6f 66 20 73 74 72  the array of str
9290: 69 6e 67 73 20 70 72 6f 76 69 64 65 64 20 74 6f  ings provided to
92a0: 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
92b0: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  / <see cref="ISQ
92c0: 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c  LiteManagedModul
92d0: 65 2e 43 72 65 61 74 65 22 20 2f 3e 20 61 6e 64  e.Create" /> and
92e0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
92f0: 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
9300: 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43 6f  ManagedModule.Co
9310: 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64  nnect" /> method
9320: 73 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65  s containing the
9330: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 61  ..        /// na
9340: 6d 65 20 6f 66 20 74 68 65 20 76 69 72 74 75 61  me of the virtua
9350: 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  l table...      
9360: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
9370: 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
9380: 65 20 63 6f 6e 73 74 20 69 6e 74 20 54 61 62 6c  e const int Tabl
9390: 65 4e 61 6d 65 49 6e 64 65 78 20 3d 20 32 3b 0d  eNameIndex = 2;.
93a0: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
93b0: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
93c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
93d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
93e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
93f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9400: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
9410: 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63    #region Public
9420: 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20   Constructors.. 
9430: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
9440: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
9450: 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20  / Constructs an 
9460: 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73  instance of this
9470: 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20   class...       
9480: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
9490: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
94a0: 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 75 6d 65  ram name="argume
94b0: 6e 74 73 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  nts">..        /
94c0: 2f 2f 20 54 68 65 20 6f 72 69 67 69 6e 61 6c 20  // The original 
94d0: 61 72 72 61 79 20 6f 66 20 73 74 72 69 6e 67 73  array of strings
94e0: 20 70 72 6f 76 69 64 65 64 20 74 6f 20 74 68 65   provided to the
94f0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
9500: 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
9510: 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43 72  ManagedModule.Cr
9520: 65 61 74 65 22 20 2f 3e 20 61 6e 64 0d 0a 20 20  eate" /> and..  
9530: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
9540: 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61  ref="ISQLiteMana
9550: 67 65 64 4d 6f 64 75 6c 65 2e 43 6f 6e 6e 65 63  gedModule.Connec
9560: 74 22 20 2f 3e 20 6d 65 74 68 6f 64 73 2e 0d 0a  t" /> methods...
9570: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
9580: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ram>..        pu
9590: 62 6c 69 63 20 53 51 4c 69 74 65 56 69 72 74 75  blic SQLiteVirtu
95a0: 61 6c 54 61 62 6c 65 28 0d 0a 20 20 20 20 20 20  alTable(..      
95b0: 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 61        string[] a
95c0: 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20  rguments..      
95d0: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
95e0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
95f0: 74 68 69 73 2e 61 72 67 75 6d 65 6e 74 73 20 3d  this.arguments =
9600: 20 61 72 67 75 6d 65 6e 74 73 3b 0d 0a 20 20 20   arguments;..   
9610: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
9620: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
9630: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
9640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
9680: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
9690: 20 50 75 62 6c 69 63 20 50 72 6f 70 65 72 74 69   Public Properti
96a0: 65 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  es..        priv
96b0: 61 74 65 20 73 74 72 69 6e 67 5b 5d 20 61 72 67  ate string[] arg
96c0: 75 6d 65 6e 74 73 3b 0d 0a 20 20 20 20 20 20 20  uments;..       
96d0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
96e0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
96f0: 6f 72 69 67 69 6e 61 6c 20 61 72 72 61 79 20 6f  original array o
9700: 66 20 73 74 72 69 6e 67 73 20 70 72 6f 76 69 64  f strings provid
9710: 65 64 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20  ed to the..     
9720: 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
9730: 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64  ="ISQLiteManaged
9740: 4d 6f 64 75 6c 65 2e 43 72 65 61 74 65 22 20 2f  Module.Create" /
9750: 3e 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 2f  > and..        /
9760: 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  // <see cref="IS
9770: 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75  QLiteManagedModu
9780: 6c 65 2e 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d  le.Connect" /> m
9790: 65 74 68 6f 64 73 2e 0d 0a 20 20 20 20 20 20 20  ethods...       
97a0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
97b0: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
97c0: 76 69 72 74 75 61 6c 20 73 74 72 69 6e 67 5b 5d  virtual string[]
97d0: 20 41 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20   Arguments..    
97e0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
97f0: 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44 69     get { CheckDi
9800: 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75 72 6e  sposed(); return
9810: 20 61 72 67 75 6d 65 6e 74 73 3b 20 7d 0d 0a 20   arguments; }.. 
9820: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
9830: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
9840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
9880: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
9890: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
98a0: 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68  / The name of th
98b0: 65 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65 6d 65  e module impleme
98c0: 6e 74 69 6e 67 20 74 68 69 73 20 76 69 72 74 75  nting this virtu
98d0: 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20  al table...     
98e0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
98f0: 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
9900: 63 20 76 69 72 74 75 61 6c 20 73 74 72 69 6e 67  c virtual string
9910: 20 4d 6f 64 75 6c 65 4e 61 6d 65 0d 0a 20 20 20   ModuleName..   
9920: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
9930: 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20      get..       
9940: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
9950: 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73          CheckDis
9960: 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20  posed();....    
9970: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
9980: 6e 67 5b 5d 20 61 72 67 75 6d 65 6e 74 73 20 3d  ng[] arguments =
9990: 20 41 72 67 75 6d 65 6e 74 73 3b 0d 0a 0d 0a 20   Arguments;.... 
99a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
99b0: 66 20 28 28 61 72 67 75 6d 65 6e 74 73 20 21 3d  f ((arguments !=
99c0: 20 6e 75 6c 6c 29 20 26 26 0d 0a 20 20 20 20 20   null) &&..     
99d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
99e0: 61 72 67 75 6d 65 6e 74 73 2e 4c 65 6e 67 74 68  arguments.Length
99f0: 20 3e 20 4d 6f 64 75 6c 65 4e 61 6d 65 49 6e 64   > ModuleNameInd
9a00: 65 78 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ex))..          
9a10: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
9a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
9a30: 75 72 6e 20 61 72 67 75 6d 65 6e 74 73 5b 4d 6f  urn arguments[Mo
9a40: 64 75 6c 65 4e 61 6d 65 49 6e 64 65 78 5d 3b 0d  duleNameIndex];.
9a50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9a60: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
9a70: 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20      else..      
9a80: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
9a90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9aa0: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20   return null;.. 
9ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
9ac0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
9ad0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
9ae0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
9af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
9b30: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
9b40: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
9b50: 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20  /// The name of 
9b60: 74 68 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e  the database con
9b70: 74 61 69 6e 69 6e 67 20 74 68 69 73 20 76 69 72  taining this vir
9b80: 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20  tual table...   
9b90: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
9ba0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ry>..        pub
9bb0: 6c 69 63 20 76 69 72 74 75 61 6c 20 73 74 72 69  lic virtual stri
9bc0: 6e 67 20 44 61 74 61 62 61 73 65 4e 61 6d 65 0d  ng DatabaseName.
9bd0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
9be0: 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20          get..   
9bf0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
9c00: 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63              Chec
9c10: 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a  kDisposed();....
9c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9c30: 73 74 72 69 6e 67 5b 5d 20 61 72 67 75 6d 65 6e  string[] argumen
9c40: 74 73 20 3d 20 41 72 67 75 6d 65 6e 74 73 3b 0d  ts = Arguments;.
9c50: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
9c60: 20 20 20 69 66 20 28 28 61 72 67 75 6d 65 6e 74     if ((argument
9c70: 73 20 21 3d 20 6e 75 6c 6c 29 20 26 26 0d 0a 20  s != null) &&.. 
9c80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9c90: 20 20 20 28 61 72 67 75 6d 65 6e 74 73 2e 4c 65     (arguments.Le
9ca0: 6e 67 74 68 20 3e 20 44 61 74 61 62 61 73 65 4e  ngth > DatabaseN
9cb0: 61 6d 65 49 6e 64 65 78 29 29 0d 0a 20 20 20 20  ameIndex))..    
9cc0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
9cd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9ce0: 20 20 20 72 65 74 75 72 6e 20 61 72 67 75 6d 65     return argume
9cf0: 6e 74 73 5b 44 61 74 61 62 61 73 65 4e 61 6d 65  nts[DatabaseName
9d00: 49 6e 64 65 78 5d 3b 0d 0a 20 20 20 20 20 20 20  Index];..       
9d10: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
9d20: 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
9d30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9d40: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
9d50: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
9d60: 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20  null;..         
9d70: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
9d80: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
9d90: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f  ////////////////
9dd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9de0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
9df0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
9e00: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
9e10: 6e 61 6d 65 20 6f 66 20 74 68 65 20 76 69 72 74  name of the virt
9e20: 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
9e30: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
9e40: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
9e50: 69 63 20 76 69 72 74 75 61 6c 20 73 74 72 69 6e  ic virtual strin
9e60: 67 20 54 61 62 6c 65 4e 61 6d 65 0d 0a 20 20 20  g TableName..   
9e70: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
9e80: 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20      get..       
9e90: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
9ea0: 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73          CheckDis
9eb0: 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20  posed();....    
9ec0: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
9ed0: 6e 67 5b 5d 20 61 72 67 75 6d 65 6e 74 73 20 3d  ng[] arguments =
9ee0: 20 41 72 67 75 6d 65 6e 74 73 3b 0d 0a 0d 0a 20   Arguments;.... 
9ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
9f00: 66 20 28 28 61 72 67 75 6d 65 6e 74 73 20 21 3d  f ((arguments !=
9f10: 20 6e 75 6c 6c 29 20 26 26 0d 0a 20 20 20 20 20   null) &&..     
9f20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
9f30: 61 72 67 75 6d 65 6e 74 73 2e 4c 65 6e 67 74 68  arguments.Length
9f40: 20 3e 20 54 61 62 6c 65 4e 61 6d 65 49 6e 64 65   > TableNameInde
9f50: 78 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  x))..           
9f60: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
9f70: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
9f80: 72 6e 20 61 72 67 75 6d 65 6e 74 73 5b 54 61 62  rn arguments[Tab
9f90: 6c 65 4e 61 6d 65 49 6e 64 65 78 5d 3b 0d 0a 20  leNameIndex];.. 
9fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
9fb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9fc0: 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20    else..        
9fd0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
9fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
9ff0: 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20  eturn null;..   
a000: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
a010: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
a020: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
a030: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
a040: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
a050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
a090: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
a0a0: 6f 6e 20 50 75 62 6c 69 63 20 4d 65 74 68 6f 64  on Public Method
a0b0: 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
a0c0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
a0d0: 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74    /// Attempts t
a0e0: 6f 20 72 65 63 6f 72 64 20 74 68 65 20 72 65 6e  o record the ren
a0f0: 61 6d 69 6e 67 20 6f 66 20 74 68 65 20 76 69 72  aming of the vir
a100: 74 75 61 6c 20 74 61 62 6c 65 20 61 73 73 6f 63  tual table assoc
a110: 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f  iated..        /
a120: 2f 2f 20 77 69 74 68 20 74 68 69 73 20 6f 62 6a  // with this obj
a130: 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20  ect instance... 
a140: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
a150: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
a160: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
a170: 6e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  name">..        
a180: 2f 2f 2f 20 54 68 65 20 6e 65 77 20 6e 61 6d 65  /// The new name
a190: 20 66 6f 72 20 74 68 65 20 76 69 72 74 75 61 6c   for the virtual
a1a0: 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20   table...       
a1b0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
a1c0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
a1d0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
a1e0: 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 75 70 6f 6e 20  / Non-zero upon 
a1f0: 73 75 63 63 65 73 73 2e 0d 0a 20 20 20 20 20 20  success...      
a200: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
a210: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
a220: 20 76 69 72 74 75 61 6c 20 62 6f 6f 6c 20 52 65   virtual bool Re
a230: 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20  name(..         
a240: 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 0d 0a     string name..
a250: 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
a260: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
a270: 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f        CheckDispo
a280: 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  sed();....      
a290: 20 20 20 20 20 20 69 66 20 28 28 61 72 67 75 6d        if ((argum
a2a0: 65 6e 74 73 20 21 3d 20 6e 75 6c 6c 29 20 26 26  ents != null) &&
a2b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a2c0: 20 20 28 61 72 67 75 6d 65 6e 74 73 2e 4c 65 6e    (arguments.Len
a2d0: 67 74 68 20 3e 20 54 61 62 6c 65 4e 61 6d 65 49  gth > TableNameI
a2e0: 6e 64 65 78 29 29 0d 0a 20 20 20 20 20 20 20 20  ndex))..        
a2f0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
a300: 20 20 20 20 20 20 20 61 72 67 75 6d 65 6e 74 73         arguments
a310: 5b 54 61 62 6c 65 4e 61 6d 65 49 6e 64 65 78 5d  [TableNameIndex]
a320: 20 3d 20 6e 61 6d 65 3b 0d 0a 20 20 20 20 20 20   = name;..      
a330: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
a340: 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
a350: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
a360: 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
a370: 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  e;..        }.. 
a380: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
a390: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
a3a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a3b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a3c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a3d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a3e0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
a3f0: 23 72 65 67 69 6f 6e 20 49 53 51 4c 69 74 65 4e  #region ISQLiteN
a400: 61 74 69 76 65 48 61 6e 64 6c 65 20 4d 65 6d 62  ativeHandle Memb
a410: 65 72 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ers..        pri
a420: 76 61 74 65 20 49 6e 74 50 74 72 20 6e 61 74 69  vate IntPtr nati
a430: 76 65 48 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20  veHandle;..     
a440: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
a450: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65  ..        /// Re
a460: 74 75 72 6e 73 20 74 68 65 20 75 6e 64 65 72 6c  turns the underl
a470: 79 69 6e 67 20 53 51 4c 69 74 65 20 6e 61 74 69  ying SQLite nati
a480: 76 65 20 68 61 6e 64 6c 65 20 61 73 73 6f 63 69  ve handle associ
a490: 61 74 65 64 20 77 69 74 68 20 74 68 69 73 0d 0a  ated with this..
a4a0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 62 6a 65          /// obje
a4b0: 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20  ct instance...  
a4c0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
a4d0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
a4e0: 62 6c 69 63 20 76 69 72 74 75 61 6c 20 49 6e 74  blic virtual Int
a4f0: 50 74 72 20 4e 61 74 69 76 65 48 61 6e 64 6c 65  Ptr NativeHandle
a500: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
a510: 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 43           get { C
a520: 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20  heckDisposed(); 
a530: 72 65 74 75 72 6e 20 6e 61 74 69 76 65 48 61 6e  return nativeHan
a540: 64 6c 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  dle; }..        
a550: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 74      internal set
a560: 20 7b 20 6e 61 74 69 76 65 48 61 6e 64 6c 65 20   { nativeHandle 
a570: 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20  = value; }..    
a580: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
a590: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
a5a0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
a5b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a5c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a5d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a5e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
a5f0: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
a600: 49 44 69 73 70 6f 73 61 62 6c 65 20 4d 65 6d 62  IDisposable Memb
a610: 65 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ers..        ///
a620: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
a630: 20 20 20 20 2f 2f 2f 20 44 69 73 70 6f 73 65 73      /// Disposes
a640: 20 6f 66 20 74 68 69 73 20 6f 62 6a 65 63 74 20   of this object 
a650: 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20  instance...     
a660: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
a670: 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
a680: 63 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 29  c void Dispose()
a690: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
a6a0: 20 20 20 20 20 20 20 20 20 44 69 73 70 6f 73 65           Dispose
a6b0: 28 74 72 75 65 29 3b 0d 0a 20 20 20 20 20 20 20  (true);..       
a6c0: 20 20 20 20 20 47 43 2e 53 75 70 70 72 65 73 73       GC.Suppress
a6d0: 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d  Finalize(this);.
a6e0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
a6f0: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
a700: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
a710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a750: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
a760: 67 69 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c 65  gion IDisposable
a770: 20 22 50 61 74 74 65 72 6e 22 20 4d 65 6d 62 65   "Pattern" Membe
a780: 72 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  rs..        priv
a790: 61 74 65 20 62 6f 6f 6c 20 64 69 73 70 6f 73 65  ate bool dispose
a7a0: 64 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d;..        /// 
a7b0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
a7c0: 20 20 20 2f 2f 2f 20 54 68 72 6f 77 73 20 61 6e     /// Throws an
a7d0: 20 3c 73 65 65 20 63 72 65 66 3d 22 4f 62 6a 65   <see cref="Obje
a7e0: 63 74 44 69 73 70 6f 73 65 64 45 78 63 65 70 74  ctDisposedExcept
a7f0: 69 6f 6e 22 2f 3e 20 69 66 20 74 68 69 73 20 6f  ion"/> if this o
a800: 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20 2f  bject..        /
a810: 2f 2f 20 69 6e 73 74 61 6e 63 65 20 68 61 73 20  // instance has 
a820: 62 65 65 6e 20 64 69 73 70 6f 73 65 64 2e 0d 0a  been disposed...
a830: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
a840: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
a850: 70 72 69 76 61 74 65 20 76 6f 69 64 20 43 68 65  private void Che
a860: 63 6b 44 69 73 70 6f 73 65 64 28 29 20 2f 2a 20  ckDisposed() /* 
a870: 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
a880: 20 20 7b 0d 0a 23 69 66 20 54 48 52 4f 57 5f 4f    {..#if THROW_O
a890: 4e 5f 44 49 53 50 4f 53 45 44 0d 0a 20 20 20 20  N_DISPOSED..    
a8a0: 20 20 20 20 20 20 20 20 69 66 20 28 64 69 73 70          if (disp
a8b0: 6f 73 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20  osed)..         
a8c0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
a8d0: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
a8e0: 4f 62 6a 65 63 74 44 69 73 70 6f 73 65 64 45 78  ObjectDisposedEx
a8f0: 63 65 70 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20  ception(..      
a900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 79                ty
a910: 70 65 6f 66 28 53 51 4c 69 74 65 56 69 72 74 75  peof(SQLiteVirtu
a920: 61 6c 54 61 62 6c 65 29 2e 4e 61 6d 65 29 3b 0d  alTable).Name);.
a930: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
a940: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
a950: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
a960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a9a0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
a9b0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
a9c0: 20 20 20 20 20 20 20 2f 2f 2f 20 44 69 73 70 6f         /// Dispo
a9d0: 73 65 73 20 6f 66 20 74 68 69 73 20 6f 62 6a 65  ses of this obje
a9e0: 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20  ct instance...  
a9f0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
aa00: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
aa10: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64  / <param name="d
aa20: 69 73 70 6f 73 69 6e 67 22 3e 0d 0a 20 20 20 20  isposing">..    
aa30: 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
aa40: 20 69 66 20 74 68 69 73 20 6d 65 74 68 6f 64 20   if this method 
aa50: 69 73 20 62 65 69 6e 67 20 63 61 6c 6c 65 64 20  is being called 
aa60: 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20 20  from the..      
aa70: 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
aa80: 22 44 69 73 70 6f 73 65 28 29 22 20 2f 3e 20 6d  "Dispose()" /> m
aa90: 65 74 68 6f 64 2e 20 20 5a 65 72 6f 20 69 66 20  ethod.  Zero if 
aaa0: 74 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 62  this method is b
aab0: 65 69 6e 67 20 63 61 6c 6c 65 64 0d 0a 20 20 20  eing called..   
aac0: 20 20 20 20 20 2f 2f 2f 20 66 72 6f 6d 20 74 68       /// from th
aad0: 65 20 66 69 6e 61 6c 69 7a 65 72 2e 0d 0a 20 20  e finalizer...  
aae0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
aaf0: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74  m>..        prot
ab00: 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 76 6f  ected virtual vo
ab10: 69 64 20 44 69 73 70 6f 73 65 28 62 6f 6f 6c 20  id Dispose(bool 
ab20: 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20  disposing)..    
ab30: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
ab40: 20 20 20 69 66 20 28 21 64 69 73 70 6f 73 65 64     if (!disposed
ab50: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
ab60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ab70: 20 20 2f 2f 69 66 20 28 64 69 73 70 6f 73 69 6e    //if (disposin
ab80: 67 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g)..            
ab90: 20 20 20 20 2f 2f 7b 0d 0a 20 20 20 20 20 20 20      //{..       
aba0: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 2f           //    /
abb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
abc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
abd0: 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ///..           
abe0: 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 20 64 69       //    // di
abf0: 73 70 6f 73 65 20 6d 61 6e 61 67 65 64 20 72 65  spose managed re
ac00: 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d  sources here....
ac10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ac20: 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f   //    /////////
ac30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ac40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
ac50: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 7d               //}
ac60: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
ac70: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
ac80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ac90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
aca0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 72              // r
acb0: 65 6c 65 61 73 65 20 75 6e 6d 61 6e 61 67 65 64  elease unmanaged
acc0: 20 72 65 73 6f 75 72 63 65 73 20 68 65 72 65 2e   resources here.
acd0: 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
ace0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
acf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ad00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
ad10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 69                di
ad20: 73 70 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a  sposed = true;..
ad30: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
ad40: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
ad50: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
ad60: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
ad70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ad80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ad90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ada0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
adb0: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
adc0: 6f 6e 20 44 65 73 74 72 75 63 74 6f 72 0d 0a 20  on Destructor.. 
add0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
ade0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
adf0: 2f 20 46 69 6e 61 6c 69 7a 65 73 20 74 68 69 73  / Finalizes this
ae00: 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
ae10: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
ae20: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
ae30: 20 20 20 7e 53 51 4c 69 74 65 56 69 72 74 75 61     ~SQLiteVirtua
ae40: 6c 54 61 62 6c 65 28 29 0d 0a 20 20 20 20 20 20  lTable()..      
ae50: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
ae60: 20 44 69 73 70 6f 73 65 28 66 61 6c 73 65 29 3b   Dispose(false);
ae70: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
ae80: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
ae90: 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64  .    }..    #end
aea0: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
aeb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
af00: 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 56   #region SQLiteV
af10: 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f  irtualTableCurso
af20: 72 20 42 61 73 65 20 43 6c 61 73 73 0d 0a 20 20  r Base Class..  
af30: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
af40: 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c  .    /// This cl
af50: 61 73 73 20 72 65 70 72 65 73 65 6e 74 73 20 61  ass represents a
af60: 20 6d 61 6e 61 67 65 64 20 76 69 72 74 75 61 6c   managed virtual
af70: 20 74 61 62 6c 65 20 63 75 72 73 6f 72 20 69 6d   table cursor im
af80: 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d 0a 20  plementation... 
af90: 20 20 20 2f 2f 2f 20 49 74 20 69 73 20 6e 6f 74     /// It is not
afa0: 20 73 65 61 6c 65 64 20 61 6e 64 20 73 68 6f 75   sealed and shou
afb0: 6c 64 20 62 65 20 75 73 65 64 20 61 73 20 74 68  ld be used as th
afc0: 65 20 62 61 73 65 20 63 6c 61 73 73 20 66 6f 72  e base class for
afd0: 20 61 6e 79 0d 0a 20 20 20 20 2f 2f 2f 20 75 73   any..    /// us
afe0: 65 72 2d 64 65 66 69 6e 65 64 20 76 69 72 74 75  er-defined virtu
aff0: 61 6c 20 74 61 62 6c 65 20 63 75 72 73 6f 72 20  al table cursor 
b000: 63 6c 61 73 73 65 73 20 69 6d 70 6c 65 6d 65 6e  classes implemen
b010: 74 65 64 20 69 6e 20 6d 61 6e 61 67 65 64 20 63  ted in managed c
b020: 6f 64 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ode...    /// </
b030: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75  summary>..    pu
b040: 62 6c 69 63 20 63 6c 61 73 73 20 53 51 4c 69 74  blic class SQLit
b050: 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72  eVirtualTableCur
b060: 73 6f 72 20 3a 0d 0a 20 20 20 20 20 20 20 20 20  sor :..         
b070: 20 20 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65     ISQLiteNative
b080: 48 61 6e 64 6c 65 2c 20 49 44 69 73 70 6f 73 61  Handle, IDisposa
b090: 62 6c 65 20 2f 2a 20 4e 4f 54 20 53 45 41 4c 45  ble /* NOT SEALE
b0a0: 44 20 2a 2f 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  D */..    {..   
b0b0: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62       #region Pub
b0c0: 6c 69 63 20 43 6f 6e 73 74 72 75 63 74 6f 72 73  lic Constructors
b0d0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
b0e0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
b0f0: 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20   /// Constructs 
b100: 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74  an instance of t
b110: 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20  his class...    
b120: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
b130: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
b140: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62  <param name="tab
b150: 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  le">..        //
b160: 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
b170: 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  "SQLiteVirtualTa
b180: 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  ble" /> object i
b190: 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74  nstance associat
b1a0: 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
b1b0: 77 69 74 68 20 74 68 69 73 20 6f 62 6a 65 63 74  with this object
b1c0: 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20   instance...    
b1d0: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
b1e0: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
b1f0: 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
b200: 62 6c 65 43 75 72 73 6f 72 28 0d 0a 20 20 20 20  bleCursor(..    
b210: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69          SQLiteVi
b220: 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65  rtualTable table
b230: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
b240: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
b250: 20 20 20 20 20 20 20 20 74 68 69 73 2e 74 61 62          this.tab
b260: 6c 65 20 3d 20 74 61 62 6c 65 3b 0d 0a 20 20 20  le = table;..   
b270: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
b280: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
b290: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
b2a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b2b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b2c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b2d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
b2e0: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
b2f0: 20 50 75 62 6c 69 63 20 50 72 6f 70 65 72 74 69   Public Properti
b300: 65 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  es..        priv
b310: 61 74 65 20 53 51 4c 69 74 65 56 69 72 74 75 61  ate SQLiteVirtua
b320: 6c 54 61 62 6c 65 20 74 61 62 6c 65 3b 0d 0a 20  lTable table;.. 
b330: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
b340: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
b350: 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
b360: 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  "SQLiteVirtualTa
b370: 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  ble" /> object i
b380: 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74  nstance associat
b390: 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
b3a0: 77 69 74 68 20 74 68 69 73 20 6f 62 6a 65 63 74  with this object
b3b0: 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20   instance...    
b3c0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
b3d0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
b3e0: 69 63 20 76 69 72 74 75 61 6c 20 53 51 4c 69 74  ic virtual SQLit
b3f0: 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 54 61  eVirtualTable Ta
b400: 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ble..        {..
b410: 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
b420: 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  { CheckDisposed(
b430: 29 3b 20 72 65 74 75 72 6e 20 74 61 62 6c 65 3b  ); return table;
b440: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
b450: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
b460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b4a0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
b4b0: 61 74 65 20 69 6e 74 20 69 6e 64 65 78 4e 75 6d  ate int indexNum
b4c0: 62 65 72 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ber;..        //
b4d0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
b4e0: 20 20 20 20 20 2f 2f 2f 20 4e 75 6d 62 65 72 20       /// Number 
b4f0: 75 73 65 64 20 74 6f 20 68 65 6c 70 20 69 64 65  used to help ide
b500: 6e 74 69 66 79 20 74 68 65 20 73 65 6c 65 63 74  ntify the select
b510: 65 64 20 69 6e 64 65 78 2e 20 20 54 68 69 73 20  ed index.  This 
b520: 76 61 6c 75 65 20 77 69 6c 6c 0d 0a 20 20 20 20  value will..    
b530: 20 20 20 20 2f 2f 2f 20 62 65 20 73 65 74 20 76      /// be set v
b540: 69 61 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ia the <see cref
b550: 3d 22 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74  ="Filter" /> met
b560: 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
b570: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
b580: 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 69 72        public vir
b590: 74 75 61 6c 20 69 6e 74 20 49 6e 64 65 78 4e 75  tual int IndexNu
b5a0: 6d 62 65 72 0d 0a 20 20 20 20 20 20 20 20 7b 0d  mber..        {.
b5b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
b5c0: 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64   { CheckDisposed
b5d0: 28 29 3b 20 72 65 74 75 72 6e 20 69 6e 64 65 78  (); return index
b5e0: 4e 75 6d 62 65 72 3b 20 7d 0d 0a 20 20 20 20 20  Number; }..     
b5f0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
b600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b640: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
b650: 20 20 20 70 72 69 76 61 74 65 20 73 74 72 69 6e     private strin
b660: 67 20 69 6e 64 65 78 53 74 72 69 6e 67 3b 0d 0a  g indexString;..
b670: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
b680: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
b690: 2f 2f 20 53 74 72 69 6e 67 20 75 73 65 64 20 74  // String used t
b6a0: 6f 20 68 65 6c 70 20 69 64 65 6e 74 69 66 79 20  o help identify 
b6b0: 74 68 65 20 73 65 6c 65 63 74 65 64 20 69 6e 64  the selected ind
b6c0: 65 78 2e 20 20 54 68 69 73 20 76 61 6c 75 65 20  ex.  This value 
b6d0: 77 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f  will..        //
b6e0: 2f 20 62 65 20 73 65 74 20 76 69 61 20 74 68 65  / be set via the
b6f0: 20 3c 73 65 65 20 63 72 65 66 3d 22 46 69 6c 74   <see cref="Filt
b700: 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  er" /> method...
b710: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
b720: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
b730: 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 73  public virtual s
b740: 74 72 69 6e 67 20 49 6e 64 65 78 53 74 72 69 6e  tring IndexStrin
b750: 67 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  g..        {..  
b760: 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20            get { 
b770: 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
b780: 20 72 65 74 75 72 6e 20 69 6e 64 65 78 53 74 72   return indexStr
b790: 69 6e 67 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  ing; }..        
b7a0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
b7b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b7c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b7d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b7e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b7f0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
b800: 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 56 61  private SQLiteVa
b810: 6c 75 65 5b 5d 20 76 61 6c 75 65 73 3b 0d 0a 20  lue[] values;.. 
b820: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
b830: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
b840: 2f 20 54 68 65 20 76 61 6c 75 65 73 20 75 73 65  / The values use
b850: 64 20 74 6f 20 66 69 6c 74 65 72 20 74 68 65 20  d to filter the 
b860: 72 6f 77 73 20 72 65 74 75 72 6e 65 64 20 76 69  rows returned vi
b870: 61 20 74 68 69 73 20 63 75 72 73 6f 72 20 6f 62  a this cursor ob
b880: 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ject..        //
b890: 2f 20 69 6e 73 74 61 6e 63 65 2e 20 20 54 68 69  / instance.  Thi
b8a0: 73 20 76 61 6c 75 65 20 77 69 6c 6c 20 62 65 20  s value will be 
b8b0: 73 65 74 20 76 69 61 20 74 68 65 20 3c 73 65 65  set via the <see
b8c0: 20 63 72 65 66 3d 22 46 69 6c 74 65 72 22 20 2f   cref="Filter" /
b8d0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d  >..        /// m
b8e0: 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
b8f0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
b900: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76          public v
b910: 69 72 74 75 61 6c 20 53 51 4c 69 74 65 56 61 6c  irtual SQLiteVal
b920: 75 65 5b 5d 20 56 61 6c 75 65 73 0d 0a 20 20 20  ue[] Values..   
b930: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
b940: 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44      get { CheckD
b950: 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75 72  isposed(); retur
b960: 6e 20 76 61 6c 75 65 73 3b 20 7d 0d 0a 20 20 20  n values; }..   
b970: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
b980: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
b990: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
b9a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b9b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b9c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b9d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
b9e0: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
b9f0: 20 50 72 6f 74 65 63 74 65 64 20 4d 65 74 68 6f   Protected Metho
ba00: 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
ba10: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
ba20: 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20     /// Attempts 
ba30: 74 6f 20 70 65 72 73 69 73 74 20 74 68 65 20 73  to persist the s
ba40: 70 65 63 69 66 69 65 64 20 3c 73 65 65 20 63 72  pecified <see cr
ba50: 65 66 3d 22 53 51 4c 69 74 65 56 61 6c 75 65 22  ef="SQLiteValue"
ba60: 20 2f 3e 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20   /> object..    
ba70: 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63 65      /// instance
ba80: 73 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 6d 61  s in order to ma
ba90: 6b 65 20 74 68 65 6d 20 61 76 61 69 6c 61 62 6c  ke them availabl
baa0: 65 20 61 66 74 65 72 20 74 68 65 0d 0a 20 20 20  e after the..   
bab0: 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
bac0: 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67  ef="ISQLiteManag
bad0: 65 64 4d 6f 64 75 6c 65 2e 46 69 6c 74 65 72 22  edModule.Filter"
bae0: 20 2f 3e 20 6d 65 74 68 6f 64 20 72 65 74 75 72   /> method retur
baf0: 6e 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns...        ///
bb00: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
bb10: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
bb20: 6e 61 6d 65 3d 22 76 61 6c 75 65 73 22 3e 0d 0a  name="values">..
bb30: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
bb40: 61 72 72 61 79 20 6f 66 20 3c 73 65 65 20 63 72  array of <see cr
bb50: 65 66 3d 22 53 51 4c 69 74 65 56 61 6c 75 65 22  ef="SQLiteValue"
bb60: 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
bb70: 6e 63 65 73 20 74 6f 20 62 65 0d 0a 20 20 20 20  nces to be..    
bb80: 20 20 20 20 2f 2f 2f 20 70 65 72 73 69 73 74 65      /// persiste
bb90: 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
bba0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
bbb0: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
bbc0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
bbd0: 20 6e 75 6d 62 65 72 20 6f 66 20 3c 73 65 65 20   number of <see 
bbe0: 63 72 65 66 3d 22 53 51 4c 69 74 65 56 61 6c 75  cref="SQLiteValu
bbf0: 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  e" /> object ins
bc00: 74 61 6e 63 65 73 20 74 68 61 74 20 77 65 72 65  tances that were
bc10: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 75  ..        /// su
bc20: 63 63 65 73 73 66 75 6c 6c 79 20 70 65 72 73 69  ccessfully persi
bc30: 73 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  sted...        /
bc40: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
bc50: 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64         protected
bc60: 20 76 69 72 74 75 61 6c 20 69 6e 74 20 54 72 79   virtual int Try
bc70: 50 65 72 73 69 73 74 56 61 6c 75 65 73 28 0d 0a  PersistValues(..
bc80: 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
bc90: 74 65 56 61 6c 75 65 5b 5d 20 76 61 6c 75 65 73  teValue[] values
bca0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
bcb0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
bcc0: 20 20 20 20 20 20 20 20 69 6e 74 20 72 65 73 75          int resu
bcd0: 6c 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20  lt = 0;....     
bce0: 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65         if (value
bcf0: 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  s != null)..    
bd00: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
bd10: 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61             forea
bd20: 63 68 20 28 53 51 4c 69 74 65 56 61 6c 75 65 20  ch (SQLiteValue 
bd30: 76 61 6c 75 65 20 69 6e 20 76 61 6c 75 65 73 29  value in values)
bd40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bd50: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
bd60: 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c           if (val
bd70: 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ue == null)..   
bd80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bd90: 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a       continue;..
bda0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bdb0: 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 2e        if (value.
bdc0: 50 65 72 73 69 73 74 28 29 29 0d 0a 20 20 20 20  Persist())..    
bdd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bde0: 20 20 20 20 72 65 73 75 6c 74 2b 2b 3b 0d 0a 20      result++;.. 
bdf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
be00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
be10: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
be20: 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20  eturn result;.. 
be30: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
be40: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
be50: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
be60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
be70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
be80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
be90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
bea0: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
beb0: 6f 6e 20 50 75 62 6c 69 63 20 4d 65 74 68 6f 64  on Public Method
bec0: 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
bed0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
bee0: 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
bef0: 64 20 73 68 6f 75 6c 64 20 6e 6f 72 6d 61 6c 6c  d should normall
bf00: 79 20 62 65 20 75 73 65 64 20 62 79 20 74 68 65  y be used by the
bf10: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
bf20: 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
bf30: 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 46 69  ManagedModule.Fi
bf40: 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 20  lter" /> method 
bf50: 69 6e 20 6f 72 64 65 72 20 74 6f 0d 0a 20 20 20  in order to..   
bf60: 20 20 20 20 20 2f 2f 2f 20 70 65 72 66 6f 72 6d       /// perform
bf70: 20 66 69 6c 74 65 72 69 6e 67 20 6f 66 20 74 68   filtering of th
bf80: 65 20 72 65 73 75 6c 74 20 72 6f 77 73 20 61 6e  e result rows an
bf90: 64 2f 6f 72 20 74 6f 20 72 65 63 6f 72 64 20 74  d/or to record t
bfa0: 68 65 20 66 69 6c 74 65 72 69 6e 67 0d 0a 20 20  he filtering..  
bfb0: 20 20 20 20 20 20 2f 2f 2f 20 63 72 69 74 65 72        /// criter
bfc0: 69 61 20 70 72 6f 76 69 64 65 64 20 62 79 20 74  ia provided by t
bfd0: 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c  he SQLite core l
bfe0: 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20  ibrary...       
bff0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
c000: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
c010: 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78 4e  ram name="indexN
c020: 75 6d 62 65 72 22 3e 0d 0a 20 20 20 20 20 20 20  umber">..       
c030: 20 2f 2f 2f 20 4e 75 6d 62 65 72 20 75 73 65 64   /// Number used
c040: 20 74 6f 20 68 65 6c 70 20 69 64 65 6e 74 69 66   to help identif
c050: 79 20 74 68 65 20 73 65 6c 65 63 74 65 64 20 69  y the selected i
c060: 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ndex...        /
c070: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
c080: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
c090: 6e 61 6d 65 3d 22 69 6e 64 65 78 53 74 72 69 6e  name="indexStrin
c0a0: 67 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  g">..        ///
c0b0: 20 53 74 72 69 6e 67 20 75 73 65 64 20 74 6f 20   String used to 
c0c0: 68 65 6c 70 20 69 64 65 6e 74 69 66 79 20 74 68  help identify th
c0d0: 65 20 73 65 6c 65 63 74 65 64 20 69 6e 64 65 78  e selected index
c0e0: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
c0f0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
c100: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
c110: 3d 22 76 61 6c 75 65 73 22 3e 0d 0a 20 20 20 20  ="values">..    
c120: 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75      /// The valu
c130: 65 73 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67  es corresponding
c140: 20 74 6f 20 65 61 63 68 20 63 6f 6c 75 6d 6e 20   to each column 
c150: 69 6e 20 74 68 65 20 73 65 6c 65 63 74 65 64 20  in the selected 
c160: 69 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20 20 20  index...        
c170: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
c180: 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 69 72        public vir
c190: 74 75 61 6c 20 76 6f 69 64 20 46 69 6c 74 65 72  tual void Filter
c1a0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  (..            i
c1b0: 6e 74 20 69 6e 64 65 78 4e 75 6d 62 65 72 2c 0d  nt indexNumber,.
c1c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72  .            str
c1d0: 69 6e 67 20 69 6e 64 65 78 53 74 72 69 6e 67 2c  ing indexString,
c1e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
c1f0: 4c 69 74 65 56 61 6c 75 65 5b 5d 20 76 61 6c 75  LiteValue[] valu
c200: 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  es..            
c210: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
c220: 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 44            CheckD
c230: 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20  isposed();....  
c240: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28 76            if ((v
c250: 61 6c 75 65 73 20 21 3d 20 6e 75 6c 6c 29 20 26  alues != null) &
c260: 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  &..             
c270: 20 20 20 28 54 72 79 50 65 72 73 69 73 74 56 61     (TryPersistVa
c280: 6c 75 65 73 28 76 61 6c 75 65 73 29 20 21 3d 20  lues(values) != 
c290: 76 61 6c 75 65 73 2e 4c 65 6e 67 74 68 29 29 0d  values.Length)).
c2a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
c2b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c2c0: 74 68 72 6f 77 20 6e 65 77 20 53 51 4c 69 74 65  throw new SQLite
c2d0: 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20 20 20  Exception(..    
c2e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c2f0: 22 66 61 69 6c 65 64 20 74 6f 20 70 65 72 73 69  "failed to persi
c300: 73 74 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 76  st one or more v
c310: 61 6c 75 65 73 22 29 3b 0d 0a 20 20 20 20 20 20  alues");..      
c320: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
c330: 20 20 20 20 20 20 20 74 68 69 73 2e 69 6e 64 65         this.inde
c340: 78 4e 75 6d 62 65 72 20 3d 20 69 6e 64 65 78 4e  xNumber = indexN
c350: 75 6d 62 65 72 3b 0d 0a 20 20 20 20 20 20 20 20  umber;..        
c360: 20 20 20 20 74 68 69 73 2e 69 6e 64 65 78 53 74      this.indexSt
c370: 72 69 6e 67 20 3d 20 69 6e 64 65 78 53 74 72 69  ring = indexStri
c380: 6e 67 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng;..           
c390: 20 74 68 69 73 2e 76 61 6c 75 65 73 20 3d 20 76   this.values = v
c3a0: 61 6c 75 65 73 3b 0d 0a 20 20 20 20 20 20 20 20  alues;..        
c3b0: 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
c3c0: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
c3d0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
c3e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c3f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c410: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
c420: 20 20 20 20 23 72 65 67 69 6f 6e 20 49 53 51 4c      #region ISQL
c430: 69 74 65 4e 61 74 69 76 65 48 61 6e 64 6c 65 20  iteNativeHandle 
c440: 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20  Members..       
c450: 20 70 72 69 76 61 74 65 20 49 6e 74 50 74 72 20   private IntPtr 
c460: 6e 61 74 69 76 65 48 61 6e 64 6c 65 3b 0d 0a 20  nativeHandle;.. 
c470: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
c480: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
c490: 2f 20 52 65 74 75 72 6e 73 20 74 68 65 20 75 6e  / Returns the un
c4a0: 64 65 72 6c 79 69 6e 67 20 53 51 4c 69 74 65 20  derlying SQLite 
c4b0: 6e 61 74 69 76 65 20 68 61 6e 64 6c 65 20 61 73  native handle as
c4c0: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
c4d0: 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  is..        /// 
c4e0: 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e  object instance.
c4f0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
c500: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
c510: 20 20 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c    public virtual
c520: 20 49 6e 74 50 74 72 20 4e 61 74 69 76 65 48 61   IntPtr NativeHa
c530: 6e 64 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ndle..        {.
c540: 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
c550: 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64   { CheckDisposed
c560: 28 29 3b 20 72 65 74 75 72 6e 20 6e 61 74 69 76  (); return nativ
c570: 65 48 61 6e 64 6c 65 3b 20 7d 0d 0a 20 20 20 20  eHandle; }..    
c580: 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
c590: 20 73 65 74 20 7b 20 6e 61 74 69 76 65 48 61 6e   set { nativeHan
c5a0: 64 6c 65 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a  dle = value; }..
c5b0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
c5c0: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
c5d0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
c5e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c5f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c620: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
c630: 69 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c 65 20  ion IDisposable 
c640: 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20  Members..       
c650: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
c660: 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 69 73 70          /// Disp
c670: 6f 73 65 73 20 6f 66 20 74 68 69 73 20 6f 62 6a  oses of this obj
c680: 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20  ect instance... 
c690: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
c6a0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
c6b0: 75 62 6c 69 63 20 76 6f 69 64 20 44 69 73 70 6f  ublic void Dispo
c6c0: 73 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  se()..        {.
c6d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 44 69 73  .            Dis
c6e0: 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20 20 20  pose(true);..   
c6f0: 20 20 20 20 20 20 20 20 20 47 43 2e 53 75 70 70           GC.Supp
c700: 72 65 73 73 46 69 6e 61 6c 69 7a 65 28 74 68 69  ressFinalize(thi
c710: 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  s);..        }..
c720: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
c730: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
c740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c780: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
c790: 20 23 72 65 67 69 6f 6e 20 49 44 69 73 70 6f 73   #region IDispos
c7a0: 61 62 6c 65 20 22 50 61 74 74 65 72 6e 22 20 4d  able "Pattern" M
c7b0: 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20  embers..        
c7c0: 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 64 69 73  private bool dis
c7d0: 70 6f 73 65 64 3b 0d 0a 20 20 20 20 20 20 20 20  posed;..        
c7e0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
c7f0: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 72 6f 77         /// Throw
c800: 73 20 61 6e 20 3c 73 65 65 20 63 72 65 66 3d 22  s an <see cref="
c810: 4f 62 6a 65 63 74 44 69 73 70 6f 73 65 64 45 78  ObjectDisposedEx
c820: 63 65 70 74 69 6f 6e 22 2f 3e 20 69 66 20 74 68  ception"/> if th
c830: 69 73 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20  is object..     
c840: 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 20     /// instance 
c850: 68 61 73 20 62 65 65 6e 20 64 69 73 70 6f 73 65  has been dispose
c860: 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
c870: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
c880: 20 20 20 20 70 72 69 76 61 74 65 20 76 6f 69 64      private void
c890: 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
c8a0: 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
c8b0: 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 54 48 52        {..#if THR
c8c0: 4f 57 5f 4f 4e 5f 44 49 53 50 4f 53 45 44 0d 0a  OW_ON_DISPOSED..
c8d0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
c8e0: 64 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20 20  disposed)..     
c8f0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
c900: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
c910: 6e 65 77 20 4f 62 6a 65 63 74 44 69 73 70 6f 73  new ObjectDispos
c920: 65 64 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20  edException(..  
c930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c940: 20 20 74 79 70 65 6f 66 28 53 51 4c 69 74 65 56    typeof(SQLiteV
c950: 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f  irtualTableCurso
c960: 72 29 2e 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20  r).Name);..     
c970: 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
c980: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
c990: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
c9a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c9b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c9c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c9d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
c9e0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
c9f0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
ca00: 20 2f 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f 66   /// Disposes of
ca10: 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73   this object ins
ca20: 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20  tance...        
ca30: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
ca40: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
ca50: 61 6d 20 6e 61 6d 65 3d 22 64 69 73 70 6f 73 69  am name="disposi
ca60: 6e 67 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ng">..        //
ca70: 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68  / Non-zero if th
ca80: 69 73 20 6d 65 74 68 6f 64 20 69 73 20 62 65 69  is method is bei
ca90: 6e 67 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 74  ng called from t
caa0: 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
cab0: 3c 73 65 65 20 63 72 65 66 3d 22 44 69 73 70 6f  <see cref="Dispo
cac0: 73 65 28 29 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  se()" /> method.
cad0: 20 20 5a 65 72 6f 20 69 66 20 74 68 69 73 20 6d    Zero if this m
cae0: 65 74 68 6f 64 20 69 73 20 62 65 69 6e 67 20 63  ethod is being c
caf0: 61 6c 6c 65 64 0d 0a 20 20 20 20 20 20 20 20 2f  alled..        /
cb00: 2f 2f 20 66 72 6f 6d 20 74 68 65 20 66 69 6e 61  // from the fina
cb10: 6c 69 7a 65 72 2e 0d 0a 20 20 20 20 20 20 20 20  lizer...        
cb20: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
cb30: 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20        protected 
cb40: 76 69 72 74 75 61 6c 20 76 6f 69 64 20 44 69 73  virtual void Dis
cb50: 70 6f 73 65 28 62 6f 6f 6c 20 64 69 73 70 6f 73  pose(bool dispos
cb60: 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ing)..        {.
cb70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
cb80: 28 21 64 69 73 70 6f 73 65 64 29 0d 0a 20 20 20  (!disposed)..   
cb90: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
cba0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 69 66              //if
cbb0: 20 28 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20   (disposing)..  
cbc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
cbd0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
cbe0: 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f     //    ///////
cbf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cc00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
cc10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
cc20: 2f 20 20 20 20 2f 2f 20 64 69 73 70 6f 73 65 20  /    // dispose 
cc30: 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72 63 65  managed resource
cc40: 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20  s here.....     
cc50: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
cc60: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
cc70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cc80: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20  /////..         
cc90: 20 20 20 20 20 20 20 2f 2f 7d 0d 0a 0d 0a 20 20         //}....  
cca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
ccb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ccc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ccd0: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  ////..          
cce0: 20 20 20 20 20 20 2f 2f 20 72 65 6c 65 61 73 65        // release
ccf0: 20 75 6e 6d 61 6e 61 67 65 64 20 72 65 73 6f 75   unmanaged resou
cd00: 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20  rces here.....  
cd10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
cd20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cd30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cd40: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
cd50: 20 20 20 20 20 20 20 20 64 69 73 70 6f 73 65 64          disposed
cd60: 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20   = true;..      
cd70: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
cd80: 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
cd90: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
cda0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
cdb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cdc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cdd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cde0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
cdf0: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44 65 73       #region Des
ce00: 74 72 75 63 74 6f 72 0d 0a 20 20 20 20 20 20 20  tructor..       
ce10: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
ce20: 20 20 20 20 20 20 20 20 2f 2f 2f 20 46 69 6e 61          /// Fina
ce30: 6c 69 7a 65 73 20 74 68 69 73 20 6f 62 6a 65 63  lizes this objec
ce40: 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  t instance...   
ce50: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
ce60: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 7e 53 51  ry>..        ~SQ
ce70: 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
ce80: 43 75 72 73 6f 72 28 29 0d 0a 20 20 20 20 20 20  Cursor()..      
ce90: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
cea0: 20 44 69 73 70 6f 73 65 28 66 61 6c 73 65 29 3b   Dispose(false);
ceb0: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
cec0: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
ced0: 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64  .    }..    #end
cee0: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
cef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cf00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cf10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cf20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cf30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
cf40: 20 23 72 65 67 69 6f 6e 20 49 53 51 4c 69 74 65   #region ISQLite
cf50: 4e 61 74 69 76 65 48 61 6e 64 6c 65 20 49 6e 74  NativeHandle Int
cf60: 65 72 66 61 63 65 0d 0a 20 20 20 20 2f 2f 2f 20  erface..    /// 
cf70: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
cf80: 2f 2f 20 54 68 69 73 20 69 6e 74 65 72 66 61 63  // This interfac
cf90: 65 20 72 65 70 72 65 73 65 6e 74 73 20 61 20 6e  e represents a n
cfa0: 61 74 69 76 65 20 68 61 6e 64 6c 65 20 70 72 6f  ative handle pro
cfb0: 76 69 64 65 64 20 62 79 20 74 68 65 20 53 51 4c  vided by the SQL
cfc0: 69 74 65 20 63 6f 72 65 0d 0a 20 20 20 20 2f 2f  ite core..    //
cfd0: 2f 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20  / library...    
cfe0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
cff0: 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 65 72      public inter
d000: 66 61 63 65 20 49 53 51 4c 69 74 65 4e 61 74 69  face ISQLiteNati
d010: 76 65 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d  veHandle..    {.
d020: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
d030: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
d040: 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 68  /// The native h
d050: 61 6e 64 6c 65 20 76 61 6c 75 65 2e 0d 0a 20 20  andle value...  
d060: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
d070: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 49 6e  ary>..        In
d080: 74 50 74 72 20 4e 61 74 69 76 65 48 61 6e 64 6c  tPtr NativeHandl
d090: 65 20 7b 20 67 65 74 3b 20 7d 0d 0a 20 20 20 20  e { get; }..    
d0a0: 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  }..    #endregio
d0b0: 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  n....    ///////
d0c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d0d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d0e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d0f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d100: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
d110: 69 6f 6e 20 49 53 51 4c 69 74 65 4e 61 74 69 76  ion ISQLiteNativ
d120: 65 4d 6f 64 75 6c 65 20 49 6e 74 65 72 66 61 63  eModule Interfac
d130: 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  e..    /// <summ
d140: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
d150: 69 73 20 69 6e 74 65 72 66 61 63 65 20 72 65 70  is interface rep
d160: 72 65 73 65 6e 74 73 20 61 20 76 69 72 74 75 61  resents a virtua
d170: 6c 20 74 61 62 6c 65 20 69 6d 70 6c 65 6d 65 6e  l table implemen
d180: 74 61 74 69 6f 6e 20 77 72 69 74 74 65 6e 20 69  tation written i
d190: 6e 0d 0a 20 20 20 20 2f 2f 2f 20 6e 61 74 69 76  n..    /// nativ
d1a0: 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 2f 2f 2f  e code...    ///
d1b0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
d1c0: 20 70 75 62 6c 69 63 20 69 6e 74 65 72 66 61 63   public interfac
d1d0: 65 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  e ISQLiteNativeM
d1e0: 6f 64 75 6c 65 0d 0a 20 20 20 20 7b 0d 0a 20 20  odule..    {..  
d1f0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
d200: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
d210: 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
d220: 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64   /// This method
d230: 20 69 73 20 63 61 6c 6c 65 64 20 74 6f 20 63 72   is called to cr
d240: 65 61 74 65 20 61 20 6e 65 77 20 69 6e 73 74 61  eate a new insta
d250: 6e 63 65 20 6f 66 20 61 20 76 69 72 74 75 61 6c  nce of a virtual
d260: 20 74 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20   table..        
d270: 2f 2f 2f 20 69 6e 20 72 65 73 70 6f 6e 73 65 20  /// in response 
d280: 74 6f 20 61 20 43 52 45 41 54 45 20 56 49 52 54  to a CREATE VIRT
d290: 55 41 4c 20 54 41 42 4c 45 20 73 74 61 74 65 6d  UAL TABLE statem
d2a0: 65 6e 74 2e 20 54 68 65 20 64 62 20 70 61 72 61  ent. The db para
d2b0: 6d 65 74 65 72 0d 0a 20 20 20 20 20 20 20 20 2f  meter..        /
d2c0: 2f 2f 20 69 73 20 61 20 70 6f 69 6e 74 65 72 20  // is a pointer 
d2d0: 74 6f 20 74 68 65 20 53 51 4c 69 74 65 20 64 61  to the SQLite da
d2e0: 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
d2f0: 6e 20 74 68 61 74 20 69 73 20 65 78 65 63 75 74  n that is execut
d300: 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ing..        ///
d310: 20 74 68 65 20 43 52 45 41 54 45 20 56 49 52 54   the CREATE VIRT
d320: 55 41 4c 20 54 41 42 4c 45 20 73 74 61 74 65 6d  UAL TABLE statem
d330: 65 6e 74 2e 20 54 68 65 20 70 41 75 78 20 61 72  ent. The pAux ar
d340: 67 75 6d 65 6e 74 20 69 73 20 74 68 65 20 63 6f  gument is the co
d350: 70 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  py..        /// 
d360: 6f 66 20 74 68 65 20 63 6c 69 65 6e 74 20 64 61  of the client da
d370: 74 61 20 70 6f 69 6e 74 65 72 20 74 68 61 74 20  ta pointer that 
d380: 77 61 73 20 74 68 65 20 66 6f 75 72 74 68 20 61  was the fourth a
d390: 72 67 75 6d 65 6e 74 20 74 6f 20 74 68 65 0d 0a  rgument to the..
d3a0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69          /// sqli
d3b0: 74 65 33 5f 63 72 65 61 74 65 5f 6d 6f 64 75 6c  te3_create_modul
d3c0: 65 28 29 20 6f 72 20 73 71 6c 69 74 65 33 5f 63  e() or sqlite3_c
d3d0: 72 65 61 74 65 5f 6d 6f 64 75 6c 65 5f 76 32 28  reate_module_v2(
d3e0: 29 20 63 61 6c 6c 20 74 68 61 74 0d 0a 20 20 20  ) call that..   
d3f0: 20 20 20 20 20 2f 2f 2f 20 72 65 67 69 73 74 65       /// registe
d400: 72 65 64 20 74 68 65 20 76 69 72 74 75 61 6c 20  red the virtual 
d410: 74 61 62 6c 65 20 6d 6f 64 75 6c 65 2e 20 54 68  table module. Th
d420: 65 20 61 72 67 76 20 70 61 72 61 6d 65 74 65 72  e argv parameter
d430: 20 69 73 20 61 6e 0d 0a 20 20 20 20 20 20 20 20   is an..        
d440: 2f 2f 2f 20 61 72 72 61 79 20 6f 66 20 61 72 67  /// array of arg
d450: 63 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 6e 75  c pointers to nu
d460: 6c 6c 20 74 65 72 6d 69 6e 61 74 65 64 20 73 74  ll terminated st
d470: 72 69 6e 67 73 2e 20 54 68 65 20 66 69 72 73 74  rings. The first
d480: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74  ..        /// st
d490: 72 69 6e 67 2c 20 61 72 67 76 5b 30 5d 2c 20 69  ring, argv[0], i
d4a0: 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68  s the name of th
d4b0: 65 20 6d 6f 64 75 6c 65 20 62 65 69 6e 67 20 69  e module being i
d4c0: 6e 76 6f 6b 65 64 2e 20 54 68 65 0d 0a 20 20 20  nvoked. The..   
d4d0: 20 20 20 20 20 2f 2f 2f 20 6d 6f 64 75 6c 65 20       /// module 
d4e0: 6e 61 6d 65 20 69 73 20 74 68 65 20 6e 61 6d 65  name is the name
d4f0: 20 70 72 6f 76 69 64 65 64 20 61 73 20 74 68 65   provided as the
d500: 20 73 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74   second argument
d510: 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   to..        ///
d520: 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f   sqlite3_create_
d530: 6d 6f 64 75 6c 65 28 29 20 61 6e 64 20 61 73 20  module() and as 
d540: 74 68 65 20 61 72 67 75 6d 65 6e 74 20 74 6f 20  the argument to 
d550: 74 68 65 20 55 53 49 4e 47 20 63 6c 61 75 73 65  the USING clause
d560: 20 6f 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   of..        ///
d570: 20 74 68 65 20 43 52 45 41 54 45 20 56 49 52 54   the CREATE VIRT
d580: 55 41 4c 20 54 41 42 4c 45 20 73 74 61 74 65 6d  UAL TABLE statem
d590: 65 6e 74 20 74 68 61 74 20 69 73 20 72 75 6e 6e  ent that is runn
d5a0: 69 6e 67 2e 20 54 68 65 20 73 65 63 6f 6e 64 2c  ing. The second,
d5b0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 72  ..        /// ar
d5c0: 67 76 5b 31 5d 2c 20 69 73 20 74 68 65 20 6e 61  gv[1], is the na
d5d0: 6d 65 20 6f 66 20 74 68 65 20 64 61 74 61 62 61  me of the databa
d5e0: 73 65 20 69 6e 20 77 68 69 63 68 20 74 68 65 20  se in which the 
d5f0: 6e 65 77 20 76 69 72 74 75 61 6c 20 74 61 62 6c  new virtual tabl
d600: 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  e..        /// i
d610: 73 20 62 65 69 6e 67 20 63 72 65 61 74 65 64 2e  s being created.
d620: 20 54 68 65 20 64 61 74 61 62 61 73 65 20 6e 61   The database na
d630: 6d 65 20 69 73 20 22 6d 61 69 6e 22 20 66 6f 72  me is "main" for
d640: 20 74 68 65 20 70 72 69 6d 61 72 79 0d 0a 20 20   the primary..  
d650: 20 20 20 20 20 20 2f 2f 2f 20 64 61 74 61 62 61        /// databa
d660: 73 65 2c 20 6f 72 20 22 74 65 6d 70 22 20 66 6f  se, or "temp" fo
d670: 72 20 54 45 4d 50 20 64 61 74 61 62 61 73 65 2c  r TEMP database,
d680: 20 6f 72 20 74 68 65 20 6e 61 6d 65 20 67 69 76   or the name giv
d690: 65 6e 20 61 74 20 74 68 65 0d 0a 20 20 20 20 20  en at the..     
d6a0: 20 20 20 2f 2f 2f 20 65 6e 64 20 6f 66 20 74 68     /// end of th
d6b0: 65 20 41 54 54 41 43 48 20 73 74 61 74 65 6d 65  e ATTACH stateme
d6c0: 6e 74 20 66 6f 72 20 61 74 74 61 63 68 65 64 20  nt for attached 
d6d0: 64 61 74 61 62 61 73 65 73 2e 20 54 68 65 20 74  databases. The t
d6e0: 68 69 72 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hird..        //
d6f0: 2f 20 65 6c 65 6d 65 6e 74 20 6f 66 20 74 68 65  / element of the
d700: 20 61 72 72 61 79 2c 20 61 72 67 76 5b 32 5d 2c   array, argv[2],
d710: 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20   is the name of 
d720: 74 68 65 20 6e 65 77 20 76 69 72 74 75 61 6c 0d  the new virtual.
d730: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 61 62  .        /// tab
d740: 6c 65 2c 20 61 73 20 73 70 65 63 69 66 69 65 64  le, as specified
d750: 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 68 65 20 54   following the T
d760: 41 42 4c 45 20 6b 65 79 77 6f 72 64 20 69 6e 20  ABLE keyword in 
d770: 74 68 65 20 43 52 45 41 54 45 0d 0a 20 20 20 20  the CREATE..    
d780: 20 20 20 20 2f 2f 2f 20 56 49 52 54 55 41 4c 20      /// VIRTUAL 
d790: 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 2e  TABLE statement.
d7a0: 20 49 66 20 70 72 65 73 65 6e 74 2c 20 74 68 65   If present, the
d7b0: 20 66 6f 75 72 74 68 20 61 6e 64 20 73 75 62 73   fourth and subs
d7c0: 65 71 75 65 6e 74 0d 0a 20 20 20 20 20 20 20 20  equent..        
d7d0: 2f 2f 2f 20 73 74 72 69 6e 67 73 20 69 6e 20 74  /// strings in t
d7e0: 68 65 20 61 72 67 76 5b 5d 20 61 72 72 61 79 20  he argv[] array 
d7f0: 72 65 70 6f 72 74 20 74 68 65 20 61 72 67 75 6d  report the argum
d800: 65 6e 74 73 20 74 6f 20 74 68 65 20 6d 6f 64 75  ents to the modu
d810: 6c 65 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20  le name..       
d820: 20 2f 2f 2f 20 69 6e 20 74 68 65 20 43 52 45 41   /// in the CREA
d830: 54 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45  TE VIRTUAL TABLE
d840: 20 73 74 61 74 65 6d 65 6e 74 2e 0d 0a 20 20 20   statement...   
d850: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
d860: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
d870: 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
d880: 2f 20 54 68 65 20 6a 6f 62 20 6f 66 20 74 68 69  / The job of thi
d890: 73 20 6d 65 74 68 6f 64 20 69 73 20 74 6f 20 63  s method is to c
d8a0: 6f 6e 73 74 72 75 63 74 20 74 68 65 20 6e 65 77  onstruct the new
d8b0: 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 6f   virtual table o
d8c0: 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20 2f  bject..        /
d8d0: 2f 2f 20 28 61 6e 20 73 71 6c 69 74 65 33 5f 76  // (an sqlite3_v
d8e0: 74 61 62 20 6f 62 6a 65 63 74 29 20 61 6e 64 20  tab object) and 
d8f0: 72 65 74 75 72 6e 20 61 20 70 6f 69 6e 74 65 72  return a pointer
d900: 20 74 6f 20 69 74 20 69 6e 20 2a 70 70 56 54 61   to it in *ppVTa
d910: 62 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  b...        /// 
d920: 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
d930: 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
d940: 20 20 20 20 20 2f 2f 2f 20 41 73 20 70 61 72 74       /// As part
d950: 20 6f 66 20 74 68 65 20 74 61 73 6b 20 6f 66 20   of the task of 
d960: 63 72 65 61 74 69 6e 67 20 61 20 6e 65 77 20 73  creating a new s
d970: 71 6c 69 74 65 33 5f 76 74 61 62 20 73 74 72 75  qlite3_vtab stru
d980: 63 74 75 72 65 2c 20 74 68 69 73 0d 0a 20 20 20  cture, this..   
d990: 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 20       /// method 
d9a0: 6d 75 73 74 20 69 6e 76 6f 6b 65 20 73 71 6c 69  must invoke sqli
d9b0: 74 65 33 5f 64 65 63 6c 61 72 65 5f 76 74 61 62  te3_declare_vtab
d9c0: 28 29 20 74 6f 20 74 65 6c 6c 20 74 68 65 20 53  () to tell the S
d9d0: 51 4c 69 74 65 20 63 6f 72 65 0d 0a 20 20 20 20  QLite core..    
d9e0: 20 20 20 20 2f 2f 2f 20 61 62 6f 75 74 20 74 68      /// about th
d9f0: 65 20 63 6f 6c 75 6d 6e 73 20 61 6e 64 20 64 61  e columns and da
da00: 74 61 74 79 70 65 73 20 69 6e 20 74 68 65 20 76  tatypes in the v
da10: 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 20 54 68  irtual table. Th
da20: 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  e..        /// s
da30: 71 6c 69 74 65 33 5f 64 65 63 6c 61 72 65 5f 76  qlite3_declare_v
da40: 74 61 62 28 29 20 41 50 49 20 68 61 73 20 74 68  tab() API has th
da50: 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 70 72 6f 74  e following prot
da60: 6f 74 79 70 65 3a 0d 0a 20 20 20 20 20 20 20 20  otype:..        
da70: 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20  /// </para>..   
da80: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
da90: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 63 6f  .        /// <co
daa0: 64 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de>..        ///
dab0: 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 64 65 63   int sqlite3_dec
dac0: 6c 61 72 65 5f 76 74 61 62 28 73 71 6c 69 74 65  lare_vtab(sqlite
dad0: 33 20 2a 64 62 2c 20 63 6f 6e 73 74 20 63 68 61  3 *db, const cha
dae0: 72 20 2a 7a 43 72 65 61 74 65 54 61 62 6c 65 29  r *zCreateTable)
daf0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
db00: 63 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f  code>..        /
db10: 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20  // </para>..    
db20: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a      /// <para>..
db30: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
db40: 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20 74  first argument t
db50: 6f 20 73 71 6c 69 74 65 33 5f 64 65 63 6c 61 72  o sqlite3_declar
db60: 65 5f 76 74 61 62 28 29 20 6d 75 73 74 20 62 65  e_vtab() must be
db70: 20 74 68 65 20 73 61 6d 65 0d 0a 20 20 20 20 20   the same..     
db80: 20 20 20 2f 2f 2f 20 64 61 74 61 62 61 73 65 20     /// database 
db90: 63 6f 6e 6e 65 63 74 69 6f 6e 20 70 6f 69 6e 74  connection point
dba0: 65 72 20 61 73 20 74 68 65 20 66 69 72 73 74 20  er as the first 
dbb0: 70 61 72 61 6d 65 74 65 72 20 74 6f 20 74 68 69  parameter to thi
dbc0: 73 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  s method...     
dbd0: 20 20 20 2f 2f 2f 20 54 68 65 20 73 65 63 6f 6e     /// The secon
dbe0: 64 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 73 71  d argument to sq
dbf0: 6c 69 74 65 33 5f 64 65 63 6c 61 72 65 5f 76 74  lite3_declare_vt
dc00: 61 62 28 29 20 6d 75 73 74 20 61 0d 0a 20 20 20  ab() must a..   
dc10: 20 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 2d 74 65       /// zero-te
dc20: 72 6d 69 6e 61 74 65 64 20 55 54 46 2d 38 20 73  rminated UTF-8 s
dc30: 74 72 69 6e 67 20 74 68 61 74 20 63 6f 6e 74 61  tring that conta
dc40: 69 6e 73 20 61 20 77 65 6c 6c 2d 66 6f 72 6d 65  ins a well-forme
dc50: 64 20 43 52 45 41 54 45 0d 0a 20 20 20 20 20 20  d CREATE..      
dc60: 20 20 2f 2f 2f 20 54 41 42 4c 45 20 73 74 61 74    /// TABLE stat
dc70: 65 6d 65 6e 74 20 74 68 61 74 20 64 65 66 69 6e  ement that defin
dc80: 65 73 20 74 68 65 20 63 6f 6c 75 6d 6e 73 20 69  es the columns i
dc90: 6e 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  n the virtual ta
dca0: 62 6c 65 20 61 6e 64 0d 0a 20 20 20 20 20 20 20  ble and..       
dcb0: 20 2f 2f 2f 20 74 68 65 69 72 20 64 61 74 61 20   /// their data 
dcc0: 74 79 70 65 73 2e 20 54 68 65 20 6e 61 6d 65 20  types. The name 
dcd0: 6f 66 20 74 68 65 20 74 61 62 6c 65 20 69 6e 20  of the table in 
dce0: 74 68 69 73 20 43 52 45 41 54 45 20 54 41 42 4c  this CREATE TABL
dcf0: 45 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  E..        /// s
dd00: 74 61 74 65 6d 65 6e 74 20 69 73 20 69 67 6e 6f  tatement is igno
dd10: 72 65 64 2c 20 61 73 20 61 72 65 20 61 6c 6c 20  red, as are all 
dd20: 63 6f 6e 73 74 72 61 69 6e 74 73 2e 20 4f 6e 6c  constraints. Onl
dd30: 79 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6e 61 6d  y the column nam
dd40: 65 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  es..        /// 
dd50: 61 6e 64 20 64 61 74 61 74 79 70 65 73 20 6d 61  and datatypes ma
dd60: 74 74 65 72 2e 20 54 68 65 20 43 52 45 41 54 45  tter. The CREATE
dd70: 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74   TABLE statement
dd80: 20 73 74 72 69 6e 67 20 6e 65 65 64 20 6e 6f 74   string need not
dd90: 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   to..        ///
dda0: 20 62 65 20 68 65 6c 64 20 69 6e 20 70 65 72 73   be held in pers
ddb0: 69 73 74 65 6e 74 20 6d 65 6d 6f 72 79 2e 20 54  istent memory. T
ddc0: 68 65 20 73 74 72 69 6e 67 20 63 61 6e 20 62 65  he string can be
ddd0: 20 64 65 61 6c 6c 6f 63 61 74 65 64 20 61 6e 64   deallocated and
dde0: 2f 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /or..        ///
ddf0: 20 72 65 75 73 65 64 20 61 73 20 73 6f 6f 6e 20   reused as soon 
de00: 61 73 20 74 68 65 20 73 71 6c 69 74 65 33 5f 64  as the sqlite3_d
de10: 65 63 6c 61 72 65 5f 76 74 61 62 28 29 20 72 6f  eclare_vtab() ro
de20: 75 74 69 6e 65 20 72 65 74 75 72 6e 73 2e 0d 0a  utine returns...
de30: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
de40: 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
de50: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
de60: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
de70: 6e 61 6d 65 3d 22 70 44 62 22 3e 0d 0a 20 20 20  name="pDb">..   
de80: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
de90: 69 76 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e  ive database con
dea0: 6e 65 63 74 69 6f 6e 20 68 61 6e 64 6c 65 2e 0d  nection handle..
deb0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
dec0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
ded0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
dee0: 70 41 75 78 22 3e 0d 0a 20 20 20 20 20 20 20 20  pAux">..        
def0: 2f 2f 2f 20 54 68 65 20 6f 72 69 67 69 6e 61 6c  /// The original
df00: 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
df10: 76 61 6c 75 65 20 74 68 61 74 20 77 61 73 20 70  value that was p
df20: 72 6f 76 69 64 65 64 20 74 6f 20 74 68 65 0d 0a  rovided to the..
df30: 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69          /// sqli
df40: 74 65 33 5f 63 72 65 61 74 65 5f 6d 6f 64 75 6c  te3_create_modul
df50: 65 28 29 2c 20 73 71 6c 69 74 65 33 5f 63 72 65  e(), sqlite3_cre
df60: 61 74 65 5f 6d 6f 64 75 6c 65 5f 76 32 28 29 20  ate_module_v2() 
df70: 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  or..        /// 
df80: 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 64  sqlite3_create_d
df90: 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65  isposable_module
dfa0: 28 29 20 66 75 6e 63 74 69 6f 6e 73 2e 0d 0a 20  () functions... 
dfb0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
dfc0: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
dfd0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72   <param name="ar
dfe0: 67 63 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  gc">..        //
dff0: 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  / The number of 
e000: 61 72 67 75 6d 65 6e 74 73 20 66 72 6f 6d 20 74  arguments from t
e010: 68 65 20 43 52 45 41 54 45 20 56 49 52 54 55 41  he CREATE VIRTUA
e020: 4c 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e  L TABLE statemen
e030: 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  t...        /// 
e040: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
e050: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
e060: 65 3d 22 61 72 67 76 22 3e 0d 0a 20 20 20 20 20  e="argv">..     
e070: 20 20 20 2f 2f 2f 20 54 68 65 20 61 72 72 61 79     /// The array
e080: 20 6f 66 20 73 74 72 69 6e 67 20 61 72 67 75 6d   of string argum
e090: 65 6e 74 73 20 66 72 6f 6d 20 74 68 65 20 43 52  ents from the CR
e0a0: 45 41 54 45 20 56 49 52 54 55 41 4c 20 54 41 42  EATE VIRTUAL TAB
e0b0: 4c 45 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  LE..        /// 
e0c0: 73 74 61 74 65 6d 65 6e 74 2e 0d 0a 20 20 20 20  statement...    
e0d0: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
e0e0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
e0f0: 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62  aram name="pVtab
e100: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
e110: 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68  Upon success, th
e120: 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73  is parameter mus
e130: 74 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f  t be modified to
e140: 20 70 6f 69 6e 74 20 74 6f 20 74 68 65 20 6e 65   point to the ne
e150: 77 6c 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  wly..        ///
e160: 20 63 72 65 61 74 65 64 20 6e 61 74 69 76 65 20   created native 
e170: 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72  sqlite3_vtab der
e180: 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d  ived structure..
e190: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
e1a0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
e1b0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
e1c0: 70 45 72 72 6f 72 22 3e 0d 0a 20 20 20 20 20 20  pError">..      
e1d0: 20 20 2f 2f 2f 20 55 70 6f 6e 20 66 61 69 6c 75    /// Upon failu
e1e0: 72 65 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74  re, this paramet
e1f0: 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66  er must be modif
e200: 69 65 64 20 74 6f 20 70 6f 69 6e 74 20 74 6f 20  ied to point to 
e210: 74 68 65 20 65 72 72 6f 72 0d 0a 20 20 20 20 20  the error..     
e220: 20 20 20 2f 2f 2f 20 6d 65 73 73 61 67 65 2c 20     /// message, 
e230: 77 69 74 68 20 74 68 65 20 75 6e 64 65 72 6c 79  with the underly
e240: 69 6e 67 20 6d 65 6d 6f 72 79 20 68 61 76 69 6e  ing memory havin
e250: 67 20 62 65 65 6e 20 6f 62 74 61 69 6e 65 64 20  g been obtained 
e260: 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20 20  from the..      
e270: 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 6d 61    /// sqlite3_ma
e280: 6c 6c 6f 63 28 29 20 66 75 6e 63 74 69 6f 6e 2e  lloc() function.
e290: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
e2a0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
e2b0: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
e2c0: 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61         /// A sta
e2d0: 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74  ndard SQLite ret
e2e0: 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  urn code...     
e2f0: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
e300: 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  >..        SQLit
e310: 65 45 72 72 6f 72 43 6f 64 65 20 78 43 72 65 61  eErrorCode xCrea
e320: 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  te(..           
e330: 20 49 6e 74 50 74 72 20 70 44 62 2c 0d 0a 20 20   IntPtr pDb,..  
e340: 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
e350: 20 70 41 75 78 2c 0d 0a 20 20 20 20 20 20 20 20   pAux,..        
e360: 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20      int argc,.. 
e370: 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
e380: 72 20 61 72 67 76 2c 0d 0a 20 20 20 20 20 20 20  r argv,..       
e390: 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20       ref IntPtr 
e3a0: 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20  pVtab,..        
e3b0: 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70      ref IntPtr p
e3c0: 45 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 20  Error..         
e3d0: 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20     );....       
e3e0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
e3f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e420: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
e430: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
e440: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
e450: 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
e460: 2f 2f 20 54 68 65 20 78 43 6f 6e 6e 65 63 74 20  // The xConnect 
e470: 6d 65 74 68 6f 64 20 69 73 20 76 65 72 79 20 73  method is very s
e480: 69 6d 69 6c 61 72 20 74 6f 20 78 43 72 65 61 74  imilar to xCreat
e490: 65 2e 20 49 74 20 68 61 73 20 74 68 65 20 73 61  e. It has the sa
e4a0: 6d 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  me..        /// 
e4b0: 70 61 72 61 6d 65 74 65 72 73 20 61 6e 64 20 63  parameters and c
e4c0: 6f 6e 73 74 72 75 63 74 73 20 61 20 6e 65 77 20  onstructs a new 
e4d0: 73 71 6c 69 74 65 33 5f 76 74 61 62 20 73 74 72  sqlite3_vtab str
e4e0: 75 63 74 75 72 65 20 6a 75 73 74 20 6c 69 6b 65  ucture just like
e4f0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 78 43  ..        /// xC
e500: 72 65 61 74 65 2e 20 41 6e 64 20 69 74 20 6d 75  reate. And it mu
e510: 73 74 20 61 6c 73 6f 20 63 61 6c 6c 20 73 71 6c  st also call sql
e520: 69 74 65 33 5f 64 65 63 6c 61 72 65 5f 76 74 61  ite3_declare_vta
e530: 62 28 29 20 6c 69 6b 65 20 78 43 72 65 61 74 65  b() like xCreate
e540: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
e550: 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
e560: 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
e570: 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 69 66 66      /// The diff
e580: 65 72 65 6e 63 65 20 69 73 20 74 68 61 74 20 78  erence is that x
e590: 43 6f 6e 6e 65 63 74 20 69 73 20 63 61 6c 6c 65  Connect is calle
e5a0: 64 20 74 6f 20 65 73 74 61 62 6c 69 73 68 20 61  d to establish a
e5b0: 20 6e 65 77 0d 0a 20 20 20 20 20 20 20 20 2f 2f   new..        //
e5c0: 2f 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20  / connection to 
e5d0: 61 6e 20 65 78 69 73 74 69 6e 67 20 76 69 72 74  an existing virt
e5e0: 75 61 6c 20 74 61 62 6c 65 20 77 68 65 72 65 61  ual table wherea
e5f0: 73 20 78 43 72 65 61 74 65 20 69 73 20 63 61 6c  s xCreate is cal
e600: 6c 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  led..        ///
e610: 20 74 6f 20 63 72 65 61 74 65 20 61 20 6e 65 77   to create a new
e620: 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 66   virtual table f
e630: 72 6f 6d 20 73 63 72 61 74 63 68 2e 0d 0a 20 20  rom scratch...  
e640: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
e650: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
e660: 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
e670: 2f 2f 20 54 68 65 20 78 43 72 65 61 74 65 20 61  // The xCreate a
e680: 6e 64 20 78 43 6f 6e 6e 65 63 74 20 6d 65 74 68  nd xConnect meth
e690: 6f 64 73 20 61 72 65 20 6f 6e 6c 79 20 64 69 66  ods are only dif
e6a0: 66 65 72 65 6e 74 20 77 68 65 6e 20 74 68 65 0d  ferent when the.
e6b0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 69 72  .        /// vir
e6c0: 74 75 61 6c 20 74 61 62 6c 65 20 68 61 73 20 73  tual table has s
e6d0: 6f 6d 65 20 6b 69 6e 64 20 6f 66 20 62 61 63 6b  ome kind of back
e6e0: 69 6e 67 20 73 74 6f 72 65 20 74 68 61 74 20 6d  ing store that m
e6f0: 75 73 74 20 62 65 0d 0a 20 20 20 20 20 20 20 20  ust be..        
e700: 2f 2f 2f 20 69 6e 69 74 69 61 6c 69 7a 65 64 20  /// initialized 
e710: 74 68 65 20 66 69 72 73 74 20 74 69 6d 65 20 74  the first time t
e720: 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
e730: 20 69 73 20 63 72 65 61 74 65 64 2e 20 54 68 65   is created. The
e740: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 78 43  ..        /// xC
e750: 72 65 61 74 65 20 6d 65 74 68 6f 64 20 63 72 65  reate method cre
e760: 61 74 65 73 20 61 6e 64 20 69 6e 69 74 69 61 6c  ates and initial
e770: 69 7a 65 73 20 74 68 65 20 62 61 63 6b 69 6e 67  izes the backing
e780: 20 73 74 6f 72 65 2e 20 54 68 65 0d 0a 20 20 20   store. The..   
e790: 20 20 20 20 20 2f 2f 2f 20 78 43 6f 6e 6e 65 63       /// xConnec
e7a0: 74 20 6d 65 74 68 6f 64 20 6a 75 73 74 20 63 6f  t method just co
e7b0: 6e 6e 65 63 74 73 20 74 6f 20 61 6e 20 65 78 69  nnects to an exi
e7c0: 73 74 69 6e 67 20 62 61 63 6b 69 6e 67 20 73 74  sting backing st
e7d0: 6f 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ore...        //
e7e0: 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20  / </para>..     
e7f0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20     /// <para>.. 
e800: 20 20 20 20 20 20 20 2f 2f 2f 20 41 73 20 61 6e         /// As an
e810: 20 65 78 61 6d 70 6c 65 2c 20 63 6f 6e 73 69 64   example, consid
e820: 65 72 20 61 20 76 69 72 74 75 61 6c 20 74 61 62  er a virtual tab
e830: 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  le implementatio
e840: 6e 20 74 68 61 74 0d 0a 20 20 20 20 20 20 20 20  n that..        
e850: 2f 2f 2f 20 70 72 6f 76 69 64 65 73 20 72 65 61  /// provides rea
e860: 64 2d 6f 6e 6c 79 20 61 63 63 65 73 73 20 74 6f  d-only access to
e870: 20 65 78 69 73 74 69 6e 67 20 63 6f 6d 6d 61 2d   existing comma-
e880: 73 65 70 61 72 61 74 65 64 2d 76 61 6c 75 65 20  separated-value 
e890: 28 43 53 56 29 0d 0a 20 20 20 20 20 20 20 20 2f  (CSV)..        /
e8a0: 2f 2f 20 66 69 6c 65 73 20 6f 6e 20 64 69 73 6b  // files on disk
e8b0: 2e 20 54 68 65 72 65 20 69 73 20 6e 6f 20 62 61  . There is no ba
e8c0: 63 6b 69 6e 67 20 73 74 6f 72 65 20 74 68 61 74  cking store that
e8d0: 20 6e 65 65 64 73 20 74 6f 20 62 65 20 63 72 65   needs to be cre
e8e0: 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ated..        //
e8f0: 2f 20 6f 72 20 69 6e 69 74 69 61 6c 69 7a 65 64  / or initialized
e900: 20 66 6f 72 20 73 75 63 68 20 61 20 76 69 72 74   for such a virt
e910: 75 61 6c 20 74 61 62 6c 65 20 28 73 69 6e 63 65  ual table (since
e920: 20 74 68 65 20 43 53 56 20 66 69 6c 65 73 0d 0a   the CSV files..
e930: 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 6c 72 65          /// alre
e940: 61 64 79 20 65 78 69 73 74 20 6f 6e 20 64 69 73  ady exist on dis
e950: 6b 29 20 73 6f 20 74 68 65 20 78 43 72 65 61 74  k) so the xCreat
e960: 65 20 61 6e 64 20 78 43 6f 6e 6e 65 63 74 20 6d  e and xConnect m
e970: 65 74 68 6f 64 73 20 77 69 6c 6c 20 62 65 0d 0a  ethods will be..
e980: 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 64 65 6e          /// iden
e990: 74 69 63 61 6c 20 66 6f 72 20 74 68 61 74 20 6d  tical for that m
e9a0: 6f 64 75 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20  odule...        
e9b0: 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20  /// </para>..   
e9c0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
e9d0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 6e 6f  .        /// Ano
e9e0: 74 68 65 72 20 65 78 61 6d 70 6c 65 20 69 73 20  ther example is 
e9f0: 61 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  a virtual table 
ea00: 74 68 61 74 20 69 6d 70 6c 65 6d 65 6e 74 73 20  that implements 
ea10: 61 20 66 75 6c 6c 2d 74 65 78 74 0d 0a 20 20 20  a full-text..   
ea20: 20 20 20 20 20 2f 2f 2f 20 69 6e 64 65 78 2e 20       /// index. 
ea30: 54 68 65 20 78 43 72 65 61 74 65 20 6d 65 74 68  The xCreate meth
ea40: 6f 64 20 6d 75 73 74 20 63 72 65 61 74 65 20 61  od must create a
ea50: 6e 64 20 69 6e 69 74 69 61 6c 69 7a 65 20 64 61  nd initialize da
ea60: 74 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ta..        /// 
ea70: 73 74 72 75 63 74 75 72 65 73 20 74 6f 20 68 6f  structures to ho
ea80: 6c 64 20 74 68 65 20 64 69 63 74 69 6f 6e 61 72  ld the dictionar
ea90: 79 20 61 6e 64 20 70 6f 73 74 69 6e 67 20 6c 69  y and posting li
eaa0: 73 74 73 20 66 6f 72 20 74 68 61 74 20 69 6e 64  sts for that ind
eab0: 65 78 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ex...        ///
eac0: 20 54 68 65 20 78 43 6f 6e 6e 65 63 74 20 6d 65   The xConnect me
ead0: 74 68 6f 64 2c 20 6f 6e 20 74 68 65 20 6f 74 68  thod, on the oth
eae0: 65 72 20 68 61 6e 64 2c 20 6f 6e 6c 79 20 68 61  er hand, only ha
eaf0: 73 20 74 6f 20 6c 6f 63 61 74 65 20 61 6e 64 20  s to locate and 
eb00: 75 73 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  use..        ///
eb10: 20 61 6e 20 65 78 69 73 74 69 6e 67 20 64 69 63   an existing dic
eb20: 74 69 6f 6e 61 72 79 20 61 6e 64 20 70 6f 73 74  tionary and post
eb30: 69 6e 67 20 6c 69 73 74 73 20 74 68 61 74 20 77  ing lists that w
eb40: 65 72 65 20 63 72 65 61 74 65 64 20 62 79 20 61  ere created by a
eb50: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 72  ..        /// pr
eb60: 69 6f 72 20 78 43 72 65 61 74 65 20 63 61 6c 6c  ior xCreate call
eb70: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
eb80: 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
eb90: 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
eba0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 78 43 6f 6e      /// The xCon
ebb0: 6e 65 63 74 20 6d 65 74 68 6f 64 20 6d 75 73 74  nect method must
ebc0: 20 72 65 74 75 72 6e 20 53 51 4c 49 54 45 5f 4f   return SQLITE_O
ebd0: 4b 20 69 66 20 69 74 20 69 73 20 73 75 63 63 65  K if it is succe
ebe0: 73 73 66 75 6c 20 69 6e 0d 0a 20 20 20 20 20 20  ssful in..      
ebf0: 20 20 2f 2f 2f 20 63 72 65 61 74 69 6e 67 20 74    /// creating t
ec00: 68 65 20 6e 65 77 20 76 69 72 74 75 61 6c 20 74  he new virtual t
ec10: 61 62 6c 65 2c 20 6f 72 20 53 51 4c 49 54 45 5f  able, or SQLITE_
ec20: 45 52 52 4f 52 20 69 66 20 69 74 20 69 73 20 6e  ERROR if it is n
ec30: 6f 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ot..        /// 
ec40: 73 75 63 63 65 73 73 66 75 6c 2e 20 49 66 20 6e  successful. If n
ec50: 6f 74 20 73 75 63 63 65 73 73 66 75 6c 2c 20 74  ot successful, t
ec60: 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20  he sqlite3_vtab 
ec70: 73 74 72 75 63 74 75 72 65 20 6d 75 73 74 20 6e  structure must n
ec80: 6f 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ot..        /// 
ec90: 62 65 20 61 6c 6c 6f 63 61 74 65 64 2e 20 41 6e  be allocated. An
eca0: 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 6d   error message m
ecb0: 61 79 20 6f 70 74 69 6f 6e 61 6c 6c 79 20 62 65  ay optionally be
ecc0: 20 72 65 74 75 72 6e 65 64 20 69 6e 20 2a 70 7a   returned in *pz
ecd0: 45 72 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  Err..        ///
ece0: 20 69 66 20 75 6e 73 75 63 63 65 73 73 66 75 6c   if unsuccessful
ecf0: 2e 20 53 70 61 63 65 20 74 6f 20 68 6f 6c 64 20  . Space to hold 
ed00: 74 68 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67  the error messag
ed10: 65 20 73 74 72 69 6e 67 20 6d 75 73 74 20 62 65  e string must be
ed20: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 6c  ..        /// al
ed30: 6c 6f 63 61 74 65 64 20 75 73 69 6e 67 20 61 6e  located using an
ed40: 20 53 51 4c 69 74 65 20 6d 65 6d 6f 72 79 20 61   SQLite memory a
ed50: 6c 6c 6f 63 61 74 69 6f 6e 20 66 75 6e 63 74 69  llocation functi
ed60: 6f 6e 20 6c 69 6b 65 0d 0a 20 20 20 20 20 20 20  on like..       
ed70: 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 6d 61 6c   /// sqlite3_mal
ed80: 6c 6f 63 28 29 20 6f 72 20 73 71 6c 69 74 65 33  loc() or sqlite3
ed90: 5f 6d 70 72 69 6e 74 66 28 29 20 61 73 20 74 68  _mprintf() as th
eda0: 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 77 69  e SQLite core wi
edb0: 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ll..        /// 
edc0: 61 74 74 65 6d 70 74 20 74 6f 20 66 72 65 65 20  attempt to free 
edd0: 74 68 65 20 73 70 61 63 65 20 75 73 69 6e 67 20  the space using 
ede0: 73 71 6c 69 74 65 33 5f 66 72 65 65 28 29 20 61  sqlite3_free() a
edf0: 66 74 65 72 20 74 68 65 20 65 72 72 6f 72 20 68  fter the error h
ee00: 61 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  as..        /// 
ee10: 62 65 65 6e 20 72 65 70 6f 72 74 65 64 20 75 70  been reported up
ee20: 20 74 6f 20 74 68 65 20 61 70 70 6c 69 63 61 74   to the applicat
ee30: 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ion...        //
ee40: 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20  / </para>..     
ee50: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20     /// <para>.. 
ee60: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 78         /// The x
ee70: 43 6f 6e 6e 65 63 74 20 6d 65 74 68 6f 64 20 69  Connect method i
ee80: 73 20 72 65 71 75 69 72 65 64 20 66 6f 72 20 65  s required for e
ee90: 76 65 72 79 20 76 69 72 74 75 61 6c 20 74 61 62  very virtual tab
eea0: 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  le..        /// 
eeb0: 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2c 20  implementation, 
eec0: 74 68 6f 75 67 68 20 74 68 65 20 78 43 72 65 61  though the xCrea
eed0: 74 65 20 61 6e 64 20 78 43 6f 6e 6e 65 63 74 20  te and xConnect 
eee0: 70 6f 69 6e 74 65 72 73 20 6f 66 20 74 68 65 0d  pointers of the.
eef0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c  .        /// sql
ef00: 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6f 62 6a 65  ite3_module obje
ef10: 63 74 20 6d 61 79 20 70 6f 69 6e 74 20 74 6f 20  ct may point to 
ef20: 74 68 65 20 73 61 6d 65 20 66 75 6e 63 74 69 6f  the same functio
ef30: 6e 20 74 68 65 20 76 69 72 74 75 61 6c 0d 0a 20  n the virtual.. 
ef40: 20 20 20 20 20 20 20 2f 2f 2f 20 74 61 62 6c 65         /// table
ef50: 20 64 6f 65 73 20 6e 6f 74 20 6e 65 65 64 20 74   does not need t
ef60: 6f 20 69 6e 69 74 69 61 6c 69 7a 65 20 62 61 63  o initialize bac
ef70: 6b 69 6e 67 20 73 74 6f 72 65 2e 0d 0a 20 20 20  king store...   
ef80: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
ef90: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
efa0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
efb0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
efc0: 65 3d 22 70 44 62 22 3e 0d 0a 20 20 20 20 20 20  e="pDb">..      
efd0: 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
efe0: 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
eff0: 74 69 6f 6e 20 68 61 6e 64 6c 65 2e 0d 0a 20 20  tion handle...  
f000: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
f010: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
f020: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 41 75  <param name="pAu
f030: 78 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  x">..        ///
f040: 20 54 68 65 20 6f 72 69 67 69 6e 61 6c 20 6e 61   The original na
f050: 74 69 76 65 20 70 6f 69 6e 74 65 72 20 76 61 6c  tive pointer val
f060: 75 65 20 74 68 61 74 20 77 61 73 20 70 72 6f 76  ue that was prov
f070: 69 64 65 64 20 74 6f 20 74 68 65 0d 0a 20 20 20  ided to the..   
f080: 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33       /// sqlite3
f090: 5f 63 72 65 61 74 65 5f 6d 6f 64 75 6c 65 28 29  _create_module()
f0a0: 2c 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65  , sqlite3_create
f0b0: 5f 6d 6f 64 75 6c 65 5f 76 32 28 29 20 6f 72 0d  _module_v2() or.
f0c0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c  .        /// sql
f0d0: 69 74 65 33 5f 63 72 65 61 74 65 5f 64 69 73 70  ite3_create_disp
f0e0: 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65 28 29 20  osable_module() 
f0f0: 66 75 6e 63 74 69 6f 6e 73 2e 0d 0a 20 20 20 20  functions...    
f100: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
f110: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
f120: 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 63 22  aram name="argc"
f130: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
f140: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 61 72 67  he number of arg
f150: 75 6d 65 6e 74 73 20 66 72 6f 6d 20 74 68 65 20  uments from the 
f160: 43 52 45 41 54 45 20 56 49 52 54 55 41 4c 20 54  CREATE VIRTUAL T
f170: 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 2e 0d  ABLE statement..
f180: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
f190: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
f1a0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
f1b0: 61 72 67 76 22 3e 0d 0a 20 20 20 20 20 20 20 20  argv">..        
f1c0: 2f 2f 2f 20 54 68 65 20 61 72 72 61 79 20 6f 66  /// The array of
f1d0: 20 73 74 72 69 6e 67 20 61 72 67 75 6d 65 6e 74   string argument
f1e0: 73 20 66 72 6f 6d 20 74 68 65 20 43 52 45 41 54  s from the CREAT
f1f0: 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45 0d  E VIRTUAL TABLE.
f200: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 61  .        /// sta
f210: 74 65 6d 65 6e 74 2e 0d 0a 20 20 20 20 20 20 20  tement...       
f220: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
f230: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
f240: 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d  m name="pVtab">.
f250: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f  .        /// Upo
f260: 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69 73 20  n success, this 
f270: 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62  parameter must b
f280: 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 70 6f  e modified to po
f290: 69 6e 74 20 74 6f 20 74 68 65 20 6e 65 77 6c 79  int to the newly
f2a0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 72  ..        /// cr
f2b0: 65 61 74 65 64 20 6e 61 74 69 76 65 20 73 71 6c  eated native sql
f2c0: 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65  ite3_vtab derive
f2d0: 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20  d structure...  
f2e0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
f2f0: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
f300: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 45 72  <param name="pEr
f310: 72 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ror">..        /
f320: 2f 2f 20 55 70 6f 6e 20 66 61 69 6c 75 72 65 2c  // Upon failure,
f330: 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20   this parameter 
f340: 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64  must be modified
f350: 20 74 6f 20 70 6f 69 6e 74 20 74 6f 20 74 68 65   to point to the
f360: 20 65 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20   error..        
f370: 2f 2f 2f 20 6d 65 73 73 61 67 65 2c 20 77 69 74  /// message, wit
f380: 68 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67  h the underlying
f390: 20 6d 65 6d 6f 72 79 20 68 61 76 69 6e 67 20 62   memory having b
f3a0: 65 65 6e 20 6f 62 74 61 69 6e 65 64 20 66 72 6f  een obtained fro
f3b0: 6d 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  m the..        /
f3c0: 2f 2f 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f  // sqlite3_mallo
f3d0: 63 28 29 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20  c() function... 
f3e0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
f3f0: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
f400: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
f410: 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61      /// A standa
f420: 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e  rd SQLite return
f430: 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
f440: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
f450: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72          SQLiteEr
f460: 72 6f 72 43 6f 64 65 20 78 43 6f 6e 6e 65 63 74  rorCode xConnect
f470: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  (..            I
f480: 6e 74 50 74 72 20 70 44 62 2c 0d 0a 20 20 20 20  ntPtr pDb,..    
f490: 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
f4a0: 41 75 78 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  Aux,..          
f4b0: 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20    int argc,..   
f4c0: 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
f4d0: 61 72 67 76 2c 0d 0a 20 20 20 20 20 20 20 20 20  argv,..         
f4e0: 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 56     ref IntPtr pV
f4f0: 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  tab,..          
f500: 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 45 72    ref IntPtr pEr
f510: 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ror..           
f520: 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   );....        /
f530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f550: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f570: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
f580: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
f590: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
f5a0: 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
f5b0: 20 53 51 4c 69 74 65 20 75 73 65 73 20 74 68 65   SQLite uses the
f5c0: 20 78 42 65 73 74 49 6e 64 65 78 20 6d 65 74 68   xBestIndex meth
f5d0: 6f 64 20 6f 66 20 61 20 76 69 72 74 75 61 6c 20  od of a virtual 
f5e0: 74 61 62 6c 65 20 6d 6f 64 75 6c 65 20 74 6f 0d  table module to.
f5f0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 65 74  .        /// det
f600: 65 72 6d 69 6e 65 20 74 68 65 20 62 65 73 74 20  ermine the best 
f610: 77 61 79 20 74 6f 20 61 63 63 65 73 73 20 74 68  way to access th
f620: 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e  e virtual table.
f630: 20 54 68 65 20 78 42 65 73 74 49 6e 64 65 78 0d   The xBestIndex.
f640: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74  .        /// met
f650: 68 6f 64 20 68 61 73 20 61 20 70 72 6f 74 6f 74  hod has a protot
f660: 79 70 65 20 6c 69 6b 65 20 74 68 69 73 3a 0d 0a  ype like this:..
f670: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
f680: 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
f690: 20 3c 63 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20   <code>..       
f6a0: 20 2f 2f 2f 20 69 6e 74 20 28 2a 78 42 65 73 74   /// int (*xBest
f6b0: 49 6e 64 65 78 29 28 73 71 6c 69 74 65 33 5f 76  Index)(sqlite3_v
f6c0: 74 61 62 20 2a 70 56 54 61 62 2c 20 73 71 6c 69  tab *pVTab, sqli
f6d0: 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 2a 29  te3_index_info*)
f6e0: 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ;..        /// <
f6f0: 2f 63 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20 20  /code>..        
f700: 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
f710: 20 20 20 20 2f 2f 2f 20 54 68 65 20 53 51 4c 69      /// The SQLi
f720: 74 65 20 63 6f 72 65 20 63 6f 6d 6d 75 6e 69 63  te core communic
f730: 61 74 65 73 20 77 69 74 68 20 74 68 65 20 78 42  ates with the xB
f740: 65 73 74 49 6e 64 65 78 20 6d 65 74 68 6f 64 20  estIndex method 
f750: 62 79 20 66 69 6c 6c 69 6e 67 0d 0a 20 20 20 20  by filling..    
f760: 20 20 20 20 2f 2f 2f 20 69 6e 20 63 65 72 74 61      /// in certa
f770: 69 6e 20 66 69 65 6c 64 73 20 6f 66 20 74 68 65  in fields of the
f780: 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69   sqlite3_index_i
f790: 6e 66 6f 20 73 74 72 75 63 74 75 72 65 20 61 6e  nfo structure an
f7a0: 64 20 70 61 73 73 69 6e 67 20 61 0d 0a 20 20 20  d passing a..   
f7b0: 20 20 20 20 20 2f 2f 2f 20 70 6f 69 6e 74 65 72       /// pointer
f7c0: 20 74 6f 20 74 68 61 74 20 73 74 72 75 63 74 75   to that structu
f7d0: 72 65 20 69 6e 74 6f 20 78 42 65 73 74 49 6e 64  re into xBestInd
f7e0: 65 78 20 61 73 20 74 68 65 20 73 65 63 6f 6e 64  ex as the second
f7f0: 20 70 61 72 61 6d 65 74 65 72 2e 0d 0a 20 20 20   parameter...   
f800: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 78 42 65       /// The xBe
f810: 73 74 49 6e 64 65 78 20 6d 65 74 68 6f 64 20 66  stIndex method f
f820: 69 6c 6c 73 20 6f 75 74 20 6f 74 68 65 72 20 66  ills out other f
f830: 69 65 6c 64 73 20 6f 66 20 74 68 69 73 20 73 74  ields of this st
f840: 72 75 63 74 75 72 65 0d 0a 20 20 20 20 20 20 20  ructure..       
f850: 20 2f 2f 2f 20 77 68 69 63 68 20 66 6f 72 6d 73   /// which forms
f860: 20 74 68 65 20 72 65 70 6c 79 2e 20 54 68 65 20   the reply. The 
f870: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e  sqlite3_index_in
f880: 66 6f 20 73 74 72 75 63 74 75 72 65 20 6c 6f 6f  fo structure loo
f890: 6b 73 20 6c 69 6b 65 0d 0a 20 20 20 20 20 20 20  ks like..       
f8a0: 20 2f 2f 2f 20 74 68 69 73 3a 0d 0a 20 20 20 20   /// this:..    
f8b0: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d      /// </para>.
f8c0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 63 6f  .        /// <co
f8d0: 64 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de>..        ///
f8e0: 20 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33    struct sqlite3
f8f0: 5f 69 6e 64 65 78 5f 69 6e 66 6f 20 7b 0d 0a 20  _index_info {.. 
f900: 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 2f 2a         ///    /*
f910: 20 49 6e 70 75 74 73 20 2a 2f 0d 0a 20 20 20 20   Inputs */..    
f920: 20 20 20 20 2f 2f 2f 20 20 20 20 63 6f 6e 73 74      ///    const
f930: 20 69 6e 74 20 6e 43 6f 6e 73 74 72 61 69 6e 74   int nConstraint
f940: 3b 20 20 20 2f 2a 20 4e 75 6d 62 65 72 20 6f 66  ;   /* Number of
f950: 20 65 6e 74 72 69 65 73 20 69 6e 20 61 43 6f 6e   entries in aCon
f960: 73 74 72 61 69 6e 74 20 2a 2f 0d 0a 20 20 20 20  straint */..    
f970: 20 20 20 20 2f 2f 2f 20 20 20 20 63 6f 6e 73 74      ///    const
f980: 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f   struct sqlite3_
f990: 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74  index_constraint
f9a0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20   {..        /// 
f9b0: 20 20 20 20 20 20 69 6e 74 20 69 43 6f 6c 75 6d        int iColum
f9c0: 6e 3b 20 20 20 20 20 20 20 20 20 20 2f 2a 20 43  n;          /* C
f9d0: 6f 6c 75 6d 6e 20 6f 6e 20 6c 65 66 74 2d 68 61  olumn on left-ha
f9e0: 6e 64 20 73 69 64 65 20 6f 66 0d 0a 20 20 20 20  nd side of..    
f9f0: 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20      ///         
fa00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fa10: 20 20 20 20 20 2a 20 63 6f 6e 73 74 72 61 69 6e       * constrain
fa20: 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f  t */..        //
fa30: 2f 20 20 20 20 20 20 20 75 6e 73 69 67 6e 65 64  /       unsigned
fa40: 20 63 68 61 72 20 6f 70 3b 20 20 20 20 20 2f 2a   char op;     /*
fa50: 20 43 6f 6e 73 74 72 61 69 6e 74 20 6f 70 65 72   Constraint oper
fa60: 61 74 6f 72 20 2a 2f 0d 0a 20 20 20 20 20 20 20  ator */..       
fa70: 20 2f 2f 2f 20 20 20 20 20 20 20 75 6e 73 69 67   ///       unsig
fa80: 6e 65 64 20 63 68 61 72 20 75 73 61 62 6c 65 3b  ned char usable;
fa90: 20 2f 2a 20 54 72 75 65 20 69 66 20 74 68 69 73   /* True if this
faa0: 20 63 6f 6e 73 74 72 61 69 6e 74 20 69 73 20 75   constraint is u
fab0: 73 61 62 6c 65 20 2a 2f 0d 0a 20 20 20 20 20 20  sable */..      
fac0: 20 20 2f 2f 2f 20 20 20 20 20 20 20 69 6e 74 20    ///       int 
fad0: 69 54 65 72 6d 4f 66 66 73 65 74 3b 20 20 20 20  iTermOffset;    
fae0: 20 20 2f 2a 20 55 73 65 64 20 69 6e 74 65 72 6e    /* Used intern
faf0: 61 6c 6c 79 20 2d 20 78 42 65 73 74 49 6e 64 65  ally - xBestInde
fb00: 78 20 73 68 6f 75 6c 64 0d 0a 20 20 20 20 20 20  x should..      
fb10: 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20 20 20    ///           
fb20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fb30: 20 20 20 2a 20 69 67 6e 6f 72 65 20 2a 2f 0d 0a     * ignore */..
fb40: 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 7d          ///    }
fb50: 20 2a 63 6f 6e 73 74 20 61 43 6f 6e 73 74 72 61   *const aConstra
fb60: 69 6e 74 3b 20 20 20 20 2f 2a 20 54 61 62 6c 65  int;    /* Table
fb70: 20 6f 66 20 57 48 45 52 45 20 63 6c 61 75 73 65   of WHERE clause
fb80: 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 2a 2f 0d   constraints */.
fb90: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20  .        ///    
fba0: 63 6f 6e 73 74 20 69 6e 74 20 6e 4f 72 64 65 72  const int nOrder
fbb0: 42 79 3b 20 20 20 20 20 20 2f 2a 20 4e 75 6d 62  By;      /* Numb
fbc0: 65 72 20 6f 66 20 74 65 72 6d 73 20 69 6e 20 74  er of terms in t
fbd0: 68 65 20 4f 52 44 45 52 20 42 59 0d 0a 20 20 20  he ORDER BY..   
fbe0: 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20       ///        
fbf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fc00: 20 20 20 20 20 20 2a 20 63 6c 61 75 73 65 20 2a        * clause *
fc10: 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20  /..        ///  
fc20: 20 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 73    const struct s
fc30: 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64  qlite3_index_ord
fc40: 65 72 62 79 20 7b 0d 0a 20 20 20 20 20 20 20 20  erby {..        
fc50: 2f 2f 2f 20 20 20 20 20 20 20 69 6e 74 20 69 43  ///       int iC
fc60: 6f 6c 75 6d 6e 3b 20 20 20 20 20 20 20 20 20 20  olumn;          
fc70: 2f 2a 20 43 6f 6c 75 6d 6e 20 6e 75 6d 62 65 72  /* Column number
fc80: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   */..        ///
fc90: 20 20 20 20 20 20 20 75 6e 73 69 67 6e 65 64 20         unsigned 
fca0: 63 68 61 72 20 64 65 73 63 3b 20 20 20 2f 2a 20  char desc;   /* 
fcb0: 54 72 75 65 20 66 6f 72 20 44 45 53 43 2e 20 20  True for DESC.  
fcc0: 46 61 6c 73 65 20 66 6f 72 20 41 53 43 2e 20 2a  False for ASC. *
fcd0: 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20  /..        ///  
fce0: 20 20 7d 20 2a 63 6f 6e 73 74 20 61 4f 72 64 65    } *const aOrde
fcf0: 72 42 79 3b 20 20 20 20 20 20 20 2f 2a 20 54 68  rBy;       /* Th
fd00: 65 20 4f 52 44 45 52 20 42 59 20 63 6c 61 75 73  e ORDER BY claus
fd10: 65 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f  e */..        //
fd20: 2f 20 20 20 20 2f 2a 20 4f 75 74 70 75 74 73 20  /    /* Outputs 
fd30: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  */..        /// 
fd40: 20 20 20 73 74 72 75 63 74 20 73 71 6c 69 74 65     struct sqlite
fd50: 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69  3_index_constrai
fd60: 6e 74 5f 75 73 61 67 65 20 7b 0d 0a 20 20 20 20  nt_usage {..    
fd70: 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 69 6e 74      ///      int
fd80: 20 61 72 67 76 49 6e 64 65 78 3b 20 20 20 20 20   argvIndex;     
fd90: 20 20 20 20 2f 2a 20 69 66 20 67 72 65 61 74 65      /* if greate
fda0: 72 20 74 68 61 6e 20 7a 65 72 6f 2c 20 63 6f 6e  r than zero, con
fdb0: 73 74 72 61 69 6e 74 20 69 73 0d 0a 20 20 20 20  straint is..    
fdc0: 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20      ///         
fdd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fde0: 20 20 20 20 20 2a 20 70 61 72 74 20 6f 66 20 61       * part of a
fdf0: 72 67 76 20 74 6f 20 78 46 69 6c 74 65 72 20 2a  rgv to xFilter *
fe00: 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20  /..        ///  
fe10: 20 20 20 20 75 6e 73 69 67 6e 65 64 20 63 68 61      unsigned cha
fe20: 72 20 6f 6d 69 74 3b 20 20 20 20 2f 2a 20 44 6f  r omit;    /* Do
fe30: 20 6e 6f 74 20 63 6f 64 65 20 61 20 74 65 73 74   not code a test
fe40: 20 66 6f 72 20 74 68 69 73 0d 0a 20 20 20 20 20   for this..     
fe50: 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20 20     ///          
fe60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fe70: 20 20 20 20 2a 20 63 6f 6e 73 74 72 61 69 6e 74      * constraint
fe80: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   */..        ///
fe90: 20 20 20 20 7d 20 2a 63 6f 6e 73 74 20 61 43 6f      } *const aCo
fea0: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 3b 0d 0a  nstraintUsage;..
feb0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 69          ///    i
fec0: 6e 74 20 69 64 78 4e 75 6d 3b 20 20 20 20 20 20  nt idxNum;      
fed0: 20 20 20 20 20 20 20 20 2f 2a 20 4e 75 6d 62 65          /* Numbe
fee0: 72 20 75 73 65 64 20 74 6f 20 69 64 65 6e 74 69  r used to identi
fef0: 66 79 20 74 68 65 20 69 6e 64 65 78 20 2a 2f 0d  fy the index */.
ff00: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20  .        ///    
ff10: 63 68 61 72 20 2a 69 64 78 53 74 72 3b 20 20 20  char *idxStr;   
ff20: 20 20 20 20 20 20 20 20 20 2f 2a 20 53 74 72 69           /* Stri
ff30: 6e 67 2c 20 70 6f 73 73 69 62 6c 79 20 6f 62 74  ng, possibly obt
ff40: 61 69 6e 65 64 20 66 72 6f 6d 0d 0a 20 20 20 20  ained from..    
ff50: 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20      ///         
ff60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ff70: 20 20 20 20 20 2a 20 73 71 6c 69 74 65 33 5f 6d       * sqlite3_m
ff80: 61 6c 6c 6f 63 28 29 20 2a 2f 0d 0a 20 20 20 20  alloc() */..    
ff90: 20 20 20 20 2f 2f 2f 20 20 20 20 69 6e 74 20 6e      ///    int n
ffa0: 65 65 64 54 6f 46 72 65 65 49 64 78 53 74 72 3b  eedToFreeIdxStr;
ffb0: 20 20 20 20 2f 2a 20 46 72 65 65 20 69 64 78 53      /* Free idxS
ffc0: 74 72 20 75 73 69 6e 67 20 73 71 6c 69 74 65 33  tr using sqlite3
ffd0: 5f 66 72 65 65 28 29 20 69 66 0d 0a 20 20 20 20  _free() if..    
ffe0: 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20      ///         
fff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10000 20 20 20 20 20 2a 20 74 72 75 65 20 2a 2f 0d 0a       * true */..
10010 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 69          ///    i
10020 6e 74 20 6f 72 64 65 72 42 79 43 6f 6e 73 75 6d  nt orderByConsum
10030 65 64 3b 20 20 20 20 20 2f 2a 20 54 72 75 65 20  ed;     /* True 
10040 69 66 20 6f 75 74 70 75 74 20 69 73 20 61 6c 72  if output is alr
10050 65 61 64 79 20 6f 72 64 65 72 65 64 20 2a 2f 0d  eady ordered */.
10060 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20  .        ///    
10070 64 6f 75 62 6c 65 20 65 73 74 69 6d 61 74 65 64  double estimated
10080 43 6f 73 74 3b 20 20 20 20 2f 2a 20 45 73 74 69  Cost;    /* Esti
10090 6d 61 74 65 64 20 63 6f 73 74 20 6f 66 20 75 73  mated cost of us
100a0 69 6e 67 20 74 68 69 73 20 69 6e 64 65 78 20 2a  ing this index *
100b0 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20  /..        ///  
100c0 7d 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  };..        /// 
100d0 3c 2f 63 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20  </code>..       
100e0 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
100f0 20 20 20 20 20 2f 2f 2f 20 49 6e 20 61 64 64 69       /// In addi
10100 74 69 6f 6e 2c 20 74 68 65 72 65 20 61 72 65 20  tion, there are 
10110 73 6f 6d 65 20 64 65 66 69 6e 65 64 20 63 6f 6e  some defined con
10120 73 74 61 6e 74 73 3a 0d 0a 20 20 20 20 20 20 20  stants:..       
10130 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
10140 20 20 20 20 20 20 2f 2f 2f 20 3c 63 6f 64 65 3e        /// <code>
10150 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 23  ..        ///  #
10160 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4e  define SQLITE_IN
10170 44 45 58 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 45  DEX_CONSTRAINT_E
10180 51 20 20 20 20 32 0d 0a 20 20 20 20 20 20 20 20  Q    2..        
10190 2f 2f 2f 20 20 23 64 65 66 69 6e 65 20 53 51 4c  ///  #define SQL
101a0 49 54 45 5f 49 4e 44 45 58 5f 43 4f 4e 53 54 52  ITE_INDEX_CONSTR
101b0 41 49 4e 54 5f 47 54 20 20 20 20 34 0d 0a 20 20  AINT_GT    4..  
101c0 20 20 20 20 20 20 2f 2f 2f 20 20 23 64 65 66 69        ///  #defi
101d0 6e 65 20 53 51 4c 49 54 45 5f 49 4e 44 45 58 5f  ne SQLITE_INDEX_
101e0 43 4f 4e 53 54 52 41 49 4e 54 5f 4c 45 20 20 20  CONSTRAINT_LE   
101f0 20 38 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20   8..        /// 
10200 20 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f   #define SQLITE_
10210 49 4e 44 45 58 5f 43 4f 4e 53 54 52 41 49 4e 54  INDEX_CONSTRAINT
10220 5f 4c 54 20 20 20 20 31 36 0d 0a 20 20 20 20 20  _LT    16..     
10230 20 20 20 2f 2f 2f 20 20 23 64 65 66 69 6e 65 20     ///  #define 
10240 53 51 4c 49 54 45 5f 49 4e 44 45 58 5f 43 4f 4e  SQLITE_INDEX_CON
10250 53 54 52 41 49 4e 54 5f 47 45 20 20 20 20 33 32  STRAINT_GE    32
10260 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 23  ..        ///  #
10270 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4e  define SQLITE_IN
10280 44 45 58 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 4d  DEX_CONSTRAINT_M
10290 41 54 43 48 20 36 34 0d 0a 20 20 20 20 20 20 20  ATCH 64..       
102a0 20 2f 2f 2f 20 3c 2f 63 6f 64 65 3e 0d 0a 20 20   /// </code>..  
102b0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
102c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
102d0 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 63 61  e SQLite core ca
102e0 6c 6c 73 20 74 68 65 20 78 42 65 73 74 49 6e 64  lls the xBestInd
102f0 65 78 20 6d 65 74 68 6f 64 20 77 68 65 6e 20 69  ex method when i
10300 74 20 69 73 20 63 6f 6d 70 69 6c 69 6e 67 20 61  t is compiling a
10310 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 71 75  ..        /// qu
10320 65 72 79 20 74 68 61 74 20 69 6e 76 6f 6c 76 65  ery that involve
10330 73 20 61 20 76 69 72 74 75 61 6c 20 74 61 62 6c  s a virtual tabl
10340 65 2e 20 49 6e 20 6f 74 68 65 72 20 77 6f 72 64  e. In other word
10350 73 2c 20 53 51 4c 69 74 65 20 63 61 6c 6c 73 0d  s, SQLite calls.
10360 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 69  .        /// thi
10370 73 20 6d 65 74 68 6f 64 20 77 68 65 6e 20 69 74  s method when it
10380 20 69 73 20 72 75 6e 6e 69 6e 67 20 73 71 6c 69   is running sqli
10390 74 65 33 5f 70 72 65 70 61 72 65 28 29 20 6f 72  te3_prepare() or
103a0 20 74 68 65 20 65 71 75 69 76 61 6c 65 6e 74 2e   the equivalent.
103b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 42 79  ..        /// By
103c0 20 63 61 6c 6c 69 6e 67 20 74 68 69 73 20 6d 65   calling this me
103d0 74 68 6f 64 2c 20 74 68 65 20 53 51 4c 69 74 65  thod, the SQLite
103e0 20 63 6f 72 65 20 69 73 20 73 61 79 69 6e 67 20   core is saying 
103f0 74 6f 20 74 68 65 20 76 69 72 74 75 61 6c 0d 0a  to the virtual..
10400 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 61 62 6c          /// tabl
10410 65 20 74 68 61 74 20 69 74 20 6e 65 65 64 73 20  e that it needs 
10420 74 6f 20 61 63 63 65 73 73 20 73 6f 6d 65 20 73  to access some s
10430 75 62 73 65 74 20 6f 66 20 74 68 65 20 72 6f 77  ubset of the row
10440 73 20 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20  s in the..      
10450 20 20 2f 2f 2f 20 76 69 72 74 75 61 6c 20 74 61    /// virtual ta
10460 62 6c 65 20 61 6e 64 20 69 74 20 77 61 6e 74 73  ble and it wants
10470 20 74 6f 20 6b 6e 6f 77 20 74 68 65 20 6d 6f 73   to know the mos
10480 74 20 65 66 66 69 63 69 65 6e 74 20 77 61 79 20  t efficient way 
10490 74 6f 20 64 6f 0d 0a 20 20 20 20 20 20 20 20 2f  to do..        /
104a0 2f 2f 20 74 68 61 74 20 61 63 63 65 73 73 2e 20  // that access. 
104b0 54 68 65 20 78 42 65 73 74 49 6e 64 65 78 20 6d  The xBestIndex m
104c0 65 74 68 6f 64 20 72 65 70 6c 69 65 73 20 77 69  ethod replies wi
104d0 74 68 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 74  th information t
104e0 68 61 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  hat..        ///
104f0 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
10500 20 63 61 6e 20 74 68 65 6e 20 75 73 65 20 74 6f   can then use to
10510 20 63 6f 6e 64 75 63 74 20 61 6e 20 65 66 66 69   conduct an effi
10520 63 69 65 6e 74 20 73 65 61 72 63 68 20 6f 66 20  cient search of 
10530 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
10540 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d   virtual table..
10550 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
10560 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
10570 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
10580 20 20 2f 2f 2f 20 57 68 69 6c 65 20 63 6f 6d 70    /// While comp
10590 69 6c 69 6e 67 20 61 20 73 69 6e 67 6c 65 20 53  iling a single S
105a0 51 4c 20 71 75 65 72 79 2c 20 74 68 65 20 53 51  QL query, the SQ
105b0 4c 69 74 65 20 63 6f 72 65 20 6d 69 67 68 74 20  Lite core might 
105c0 63 61 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f  call..        //
105d0 2f 20 78 42 65 73 74 49 6e 64 65 78 20 6d 75 6c  / xBestIndex mul
105e0 74 69 70 6c 65 20 74 69 6d 65 73 20 77 69 74 68  tiple times with
105f0 20 64 69 66 66 65 72 65 6e 74 20 73 65 74 74 69   different setti
10600 6e 67 73 20 69 6e 0d 0a 20 20 20 20 20 20 20 20  ngs in..        
10610 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 69 6e 64 65  /// sqlite3_inde
10620 78 5f 69 6e 66 6f 2e 20 54 68 65 20 53 51 4c 69  x_info. The SQLi
10630 74 65 20 63 6f 72 65 20 77 69 6c 6c 20 74 68 65  te core will the
10640 6e 20 73 65 6c 65 63 74 20 74 68 65 0d 0a 20 20  n select the..  
10650 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6d 62 69 6e        /// combin
10660 61 74 69 6f 6e 20 74 68 61 74 20 61 70 70 65 61  ation that appea
10670 72 73 20 74 6f 20 67 69 76 65 20 74 68 65 20 62  rs to give the b
10680 65 73 74 20 70 65 72 66 6f 72 6d 61 6e 63 65 2e  est performance.
10690 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
106a0 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
106b0 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20  // <para>..     
106c0 20 20 20 2f 2f 2f 20 42 65 66 6f 72 65 20 63 61     /// Before ca
106d0 6c 6c 69 6e 67 20 74 68 69 73 20 6d 65 74 68 6f  lling this metho
106e0 64 2c 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  d, the SQLite co
106f0 72 65 20 69 6e 69 74 69 61 6c 69 7a 65 73 20 61  re initializes a
10700 6e 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20  n instance..    
10710 20 20 20 20 2f 2f 2f 20 6f 66 20 74 68 65 20 73      /// of the s
10720 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66  qlite3_index_inf
10730 6f 20 73 74 72 75 63 74 75 72 65 20 77 69 74 68  o structure with
10740 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f   information abo
10750 75 74 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  ut the..        
10760 2f 2f 2f 20 71 75 65 72 79 20 74 68 61 74 20 69  /// query that i
10770 74 20 69 73 20 63 75 72 72 65 6e 74 6c 79 20 74  t is currently t
10780 72 79 69 6e 67 20 74 6f 20 70 72 6f 63 65 73 73  rying to process
10790 2e 20 54 68 69 73 20 69 6e 66 6f 72 6d 61 74 69  . This informati
107a0 6f 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  on..        /// 
107b0 64 65 72 69 76 65 73 20 6d 61 69 6e 6c 79 20 66  derives mainly f
107c0 72 6f 6d 20 74 68 65 20 57 48 45 52 45 20 63 6c  rom the WHERE cl
107d0 61 75 73 65 20 61 6e 64 20 4f 52 44 45 52 20 42  ause and ORDER B
107e0 59 20 6f 72 20 47 52 4f 55 50 20 42 59 0d 0a 20  Y or GROUP BY.. 
107f0 20 20 20 20 20 20 20 2f 2f 2f 20 63 6c 61 75 73         /// claus
10800 65 73 20 6f 66 20 74 68 65 20 71 75 65 72 79 2c  es of the query,
10810 20 62 75 74 20 61 6c 73 6f 20 66 72 6f 6d 20 61   but also from a
10820 6e 79 20 4f 4e 20 6f 72 20 55 53 49 4e 47 20 63  ny ON or USING c
10830 6c 61 75 73 65 73 20 69 66 20 74 68 65 0d 0a 20  lauses if the.. 
10840 20 20 20 20 20 20 20 2f 2f 2f 20 71 75 65 72 79         /// query
10850 20 69 73 20 61 20 6a 6f 69 6e 2e 20 54 68 65 20   is a join. The 
10860 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 74 68 61 74  information that
10870 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
10880 20 70 72 6f 76 69 64 65 73 20 74 6f 0d 0a 20 20   provides to..  
10890 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 78 42        /// the xB
108a0 65 73 74 49 6e 64 65 78 20 6d 65 74 68 6f 64 20  estIndex method 
108b0 69 73 20 68 65 6c 64 20 69 6e 20 74 68 65 20 70  is held in the p
108c0 61 72 74 20 6f 66 20 74 68 65 20 73 74 72 75 63  art of the struc
108d0 74 75 72 65 20 74 68 61 74 20 69 73 0d 0a 20 20  ture that is..  
108e0 20 20 20 20 20 20 2f 2f 2f 20 6d 61 72 6b 65 64        /// marked
108f0 20 61 73 20 22 49 6e 70 75 74 73 22 2e 20 54 68   as "Inputs". Th
10900 65 20 22 4f 75 74 70 75 74 73 22 20 73 65 63 74  e "Outputs" sect
10910 69 6f 6e 20 69 73 20 69 6e 69 74 69 61 6c 69 7a  ion is initializ
10920 65 64 20 74 6f 20 7a 65 72 6f 2e 0d 0a 20 20 20  ed to zero...   
10930 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
10940 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
10950 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
10960 2f 20 54 68 65 20 69 6e 66 6f 72 6d 61 74 69 6f  / The informatio
10970 6e 20 69 6e 20 74 68 65 20 73 71 6c 69 74 65 33  n in the sqlite3
10980 5f 69 6e 64 65 78 5f 69 6e 66 6f 20 73 74 72 75  _index_info stru
10990 63 74 75 72 65 20 69 73 20 65 70 68 65 6d 65 72  cture is ephemer
109a0 61 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  al..        /// 
109b0 61 6e 64 20 6d 61 79 20 62 65 20 6f 76 65 72 77  and may be overw
109c0 72 69 74 74 65 6e 20 6f 72 20 64 65 61 6c 6c 6f  ritten or deallo
109d0 63 61 74 65 64 20 61 73 20 73 6f 6f 6e 20 61 73  cated as soon as
109e0 20 74 68 65 20 78 42 65 73 74 49 6e 64 65 78 0d   the xBestIndex.
109f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74  .        /// met
10a00 68 6f 64 20 72 65 74 75 72 6e 73 2e 20 49 66 20  hod returns. If 
10a10 74 68 65 20 78 42 65 73 74 49 6e 64 65 78 20 6d  the xBestIndex m
10a20 65 74 68 6f 64 20 6e 65 65 64 73 20 74 6f 20 72  ethod needs to r
10a30 65 6d 65 6d 62 65 72 20 61 6e 79 20 70 61 72 74  emember any part
10a40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 66  ..        /// of
10a50 20 74 68 65 20 73 71 6c 69 74 65 33 5f 69 6e 64   the sqlite3_ind
10a60 65 78 5f 69 6e 66 6f 20 73 74 72 75 63 74 75 72  ex_info structur
10a70 65 2c 20 69 74 20 73 68 6f 75 6c 64 20 6d 61 6b  e, it should mak
10a80 65 20 61 20 63 6f 70 79 2e 20 43 61 72 65 0d 0a  e a copy. Care..
10a90 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 75 73 74          /// must
10aa0 20 62 65 20 74 61 6b 65 20 74 6f 20 73 74 6f 72   be take to stor
10ab0 65 20 74 68 65 20 63 6f 70 79 20 69 6e 20 61 20  e the copy in a 
10ac0 70 6c 61 63 65 20 77 68 65 72 65 20 69 74 20 77  place where it w
10ad0 69 6c 6c 20 62 65 0d 0a 20 20 20 20 20 20 20 20  ill be..        
10ae0 2f 2f 2f 20 64 65 61 6c 6c 6f 63 61 74 65 64 2c  /// deallocated,
10af0 20 73 75 63 68 20 61 73 20 69 6e 20 74 68 65 20   such as in the 
10b00 69 64 78 53 74 72 20 66 69 65 6c 64 20 77 69 74  idxStr field wit
10b10 68 20 6e 65 65 64 54 6f 46 72 65 65 49 64 78 53  h needToFreeIdxS
10b20 74 72 20 73 65 74 0d 0a 20 20 20 20 20 20 20 20  tr set..        
10b30 2f 2f 2f 20 74 6f 20 31 2e 0d 0a 20 20 20 20 20  /// to 1...     
10b40 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a     /// </para>..
10b50 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
10b60 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
10b70 4e 6f 74 65 20 74 68 61 74 20 78 42 65 73 74 49  Note that xBestI
10b80 6e 64 65 78 20 77 69 6c 6c 20 61 6c 77 61 79 73  ndex will always
10b90 20 62 65 20 63 61 6c 6c 65 64 20 62 65 66 6f 72   be called befor
10ba0 65 20 78 46 69 6c 74 65 72 2c 20 73 69 6e 63 65  e xFilter, since
10bb0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68  ..        /// th
10bc0 65 20 69 64 78 4e 75 6d 20 61 6e 64 20 69 64 78  e idxNum and idx
10bd0 53 74 72 20 6f 75 74 70 75 74 73 20 66 72 6f 6d  Str outputs from
10be0 20 78 42 65 73 74 49 6e 64 65 78 20 61 72 65 20   xBestIndex are 
10bf0 72 65 71 75 69 72 65 64 20 69 6e 70 75 74 73 0d  required inputs.
10c00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20  .        /// to 
10c10 78 46 69 6c 74 65 72 2e 20 48 6f 77 65 76 65 72  xFilter. However
10c20 2c 20 74 68 65 72 65 20 69 73 20 6e 6f 20 67 75  , there is no gu
10c30 61 72 61 6e 74 65 65 20 74 68 61 74 20 78 46 69  arantee that xFi
10c40 6c 74 65 72 20 77 69 6c 6c 20 62 65 0d 0a 20 20  lter will be..  
10c50 20 20 20 20 20 20 2f 2f 2f 20 63 61 6c 6c 65 64        /// called
10c60 20 66 6f 6c 6c 6f 77 69 6e 67 20 61 20 73 75 63   following a suc
10c70 63 65 73 73 66 75 6c 20 78 42 65 73 74 49 6e 64  cessful xBestInd
10c80 65 78 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ex...        ///
10c90 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20   </para>..      
10ca0 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20    /// <para>..  
10cb0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 78 42        /// The xB
10cc0 65 73 74 49 6e 64 65 78 20 6d 65 74 68 6f 64 20  estIndex method 
10cd0 69 73 20 72 65 71 75 69 72 65 64 20 66 6f 72 20  is required for 
10ce0 65 76 65 72 79 20 76 69 72 74 75 61 6c 20 74 61  every virtual ta
10cf0 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ble..        ///
10d00 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e   implementation.
10d10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
10d20 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
10d30 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20  // <para>..     
10d40 20 20 20 2f 2f 2f 20 32 2e 33 2e 31 20 49 6e 70     /// 2.3.1 Inp
10d50 75 74 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  uts..        ///
10d60 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20   </para>..      
10d70 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20    /// <para>..  
10d80 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61        /// The ma
10d90 69 6e 20 74 68 69 6e 67 20 74 68 61 74 20 74 68  in thing that th
10da0 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 69 73  e SQLite core is
10db0 20 74 72 79 69 6e 67 20 74 6f 20 63 6f 6d 6d 75   trying to commu
10dc0 6e 69 63 61 74 65 20 74 6f 20 74 68 65 0d 0a 20  nicate to the.. 
10dd0 20 20 20 20 20 20 20 2f 2f 2f 20 76 69 72 74 75         /// virtu
10de0 61 6c 20 74 61 62 6c 65 20 69 73 20 74 68 65 20  al table is the 
10df0 63 6f 6e 73 74 72 61 69 6e 74 73 20 74 68 61 74  constraints that
10e00 20 61 72 65 20 61 76 61 69 6c 61 62 6c 65 20 74   are available t
10e10 6f 20 6c 69 6d 69 74 20 74 68 65 0d 0a 20 20 20  o limit the..   
10e20 20 20 20 20 20 2f 2f 2f 20 6e 75 6d 62 65 72 20       /// number 
10e30 6f 66 20 72 6f 77 73 20 74 68 61 74 20 6e 65 65  of rows that nee
10e40 64 20 74 6f 20 62 65 20 73 65 61 72 63 68 65 64  d to be searched
10e50 2e 20 54 68 65 20 61 43 6f 6e 73 74 72 61 69 6e  . The aConstrain
10e60 74 5b 5d 20 61 72 72 61 79 0d 0a 20 20 20 20 20  t[] array..     
10e70 20 20 20 2f 2f 2f 20 63 6f 6e 74 61 69 6e 73 20     /// contains 
10e80 6f 6e 65 20 65 6e 74 72 79 20 66 6f 72 20 65 61  one entry for ea
10e90 63 68 20 63 6f 6e 73 74 72 61 69 6e 74 2e 20 54  ch constraint. T
10ea0 68 65 72 65 20 77 69 6c 6c 20 62 65 20 65 78 61  here will be exa
10eb0 63 74 6c 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ctly..        //
10ec0 2f 20 6e 43 6f 6e 73 74 72 61 69 6e 74 20 65 6e  / nConstraint en
10ed0 74 72 69 65 73 20 69 6e 20 74 68 61 74 20 61 72  tries in that ar
10ee0 72 61 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ray...        //
10ef0 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20  / </para>..     
10f00 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20     /// <para>.. 
10f10 20 20 20 20 20 20 20 2f 2f 2f 20 45 61 63 68 20         /// Each 
10f20 63 6f 6e 73 74 72 61 69 6e 74 20 77 69 6c 6c 20  constraint will 
10f30 63 6f 72 72 65 73 70 6f 6e 64 20 74 6f 20 61 20  correspond to a 
10f40 74 65 72 6d 20 69 6e 20 74 68 65 20 57 48 45 52  term in the WHER
10f50 45 20 63 6c 61 75 73 65 20 6f 72 20 69 6e 0d 0a  E clause or in..
10f60 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 20 55 53          /// a US
10f70 49 4e 47 20 6f 72 20 4f 4e 20 63 6c 61 75 73 65  ING or ON clause
10f80 20 74 68 61 74 20 69 73 20 6f 66 20 74 68 65 20   that is of the 
10f90 66 6f 72 6d 0d 0a 20 20 20 20 20 20 20 20 2f 2f  form..        //
10fa0 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20  / </para>..     
10fb0 20 20 20 2f 2f 2f 20 3c 63 6f 64 65 3e 0d 0a 20     /// <code>.. 
10fc0 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 63         ///     c
10fd0 6f 6c 75 6d 6e 20 4f 50 20 45 58 50 52 0d 0a 20  olumn OP EXPR.. 
10fe0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 63 6f 64         /// </cod
10ff0 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e>..        /// 
11000 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
11010 2f 2f 2f 20 57 68 65 72 65 20 22 63 6f 6c 75 6d  /// Where "colum
11020 6e 22 20 69 73 20 61 20 63 6f 6c 75 6d 6e 20 69  n" is a column i
11030 6e 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  n the virtual ta
11040 62 6c 65 2c 20 4f 50 20 69 73 20 61 6e 20 6f 70  ble, OP is an op
11050 65 72 61 74 6f 72 0d 0a 20 20 20 20 20 20 20 20  erator..        
11060 2f 2f 2f 20 6c 69 6b 65 20 22 3d 22 20 6f 72 20  /// like "=" or 
11070 22 26 6c 74 3b 22 2c 20 61 6e 64 20 45 58 50 52  "&lt;", and EXPR
11080 20 69 73 20 61 6e 20 61 72 62 69 74 72 61 72 79   is an arbitrary
11090 20 65 78 70 72 65 73 73 69 6f 6e 2e 20 53 6f 2c   expression. So,
110a0 20 66 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f   for..        //
110b0 2f 20 65 78 61 6d 70 6c 65 2c 20 69 66 20 74 68  / example, if th
110c0 65 20 57 48 45 52 45 20 63 6c 61 75 73 65 20 63  e WHERE clause c
110d0 6f 6e 74 61 69 6e 65 64 20 61 20 74 65 72 6d 20  ontained a term 
110e0 6c 69 6b 65 20 74 68 69 73 3a 0d 0a 20 20 20 20  like this:..    
110f0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d      /// </para>.
11100 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 63 6f  .        /// <co
11110 64 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de>..        ///
11120 20 20 20 20 20 20 20 20 20 20 61 20 3d 20 35 0d            a = 5.
11130 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 63  .        /// </c
11140 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode>..        //
11150 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
11160 20 20 2f 2f 2f 20 54 68 65 6e 20 6f 6e 65 20 6f    /// Then one o
11170 66 20 74 68 65 20 63 6f 6e 73 74 72 61 69 6e 74  f the constraint
11180 73 20 77 6f 75 6c 64 20 62 65 20 6f 6e 20 74 68  s would be on th
11190 65 20 22 61 22 20 63 6f 6c 75 6d 6e 20 77 69 74  e "a" column wit
111a0 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f  h..        /// o
111b0 70 65 72 61 74 6f 72 20 22 3d 22 20 61 6e 64 20  perator "=" and 
111c0 61 6e 20 65 78 70 72 65 73 73 69 6f 6e 20 6f 66  an expression of
111d0 20 22 35 22 2e 20 43 6f 6e 73 74 72 61 69 6e 74   "5". Constraint
111e0 73 20 6e 65 65 64 20 6e 6f 74 20 68 61 76 65 20  s need not have 
111f0 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c  a..        /// l
11200 69 74 65 72 61 6c 20 72 65 70 72 65 73 65 6e 74  iteral represent
11210 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 57 48 45  ation of the WHE
11220 52 45 20 63 6c 61 75 73 65 2e 20 54 68 65 20 71  RE clause. The q
11230 75 65 72 79 20 6f 70 74 69 6d 69 7a 65 72 0d 0a  uery optimizer..
11240 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 69 67 68          /// migh
11250 74 20 6d 61 6b 65 20 74 72 61 6e 73 66 6f 72 6d  t make transform
11260 61 74 69 6f 6e 73 20 74 6f 20 74 68 65 20 57 48  ations to the WH
11270 45 52 45 20 63 6c 61 75 73 65 20 69 6e 20 6f 72  ERE clause in or
11280 64 65 72 20 74 6f 20 65 78 74 72 61 63 74 0d 0a  der to extract..
11290 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 73 20 6d          /// as m
112a0 61 6e 79 20 63 6f 6e 73 74 72 61 69 6e 74 73 20  any constraints 
112b0 61 73 20 69 74 20 63 61 6e 2e 20 53 6f 2c 20 66  as it can. So, f
112c0 6f 72 20 65 78 61 6d 70 6c 65 2c 20 69 66 20 74  or example, if t
112d0 68 65 20 57 48 45 52 45 20 63 6c 61 75 73 65 0d  he WHERE clause.
112e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e  .        /// con
112f0 74 61 69 6e 65 64 20 73 6f 6d 65 74 68 69 6e 67  tained something
11300 20 6c 69 6b 65 20 74 68 69 73 3a 0d 0a 20 20 20   like this:..   
11310 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
11320 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 63  ..        /// <c
11330 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode>..        //
11340 2f 20 20 20 20 20 20 20 20 20 20 78 20 42 45 54  /          x BET
11350 57 45 45 4e 20 31 30 20 41 4e 44 20 31 30 30 20  WEEN 10 AND 100 
11360 41 4e 44 20 39 39 39 26 67 74 3b 79 0d 0a 20 20  AND 999&gt;y..  
11370 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 63 6f 64 65        /// </code
11380 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
11390 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
113a0 2f 2f 20 54 68 65 20 71 75 65 72 79 20 6f 70 74  // The query opt
113b0 69 6d 69 7a 65 72 20 6d 69 67 68 74 20 74 72 61  imizer might tra
113c0 6e 73 6c 61 74 65 20 74 68 69 73 20 69 6e 74 6f  nslate this into
113d0 20 74 68 72 65 65 20 73 65 70 61 72 61 74 65 0d   three separate.
113e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e  .        /// con
113f0 73 74 72 61 69 6e 74 73 3a 0d 0a 20 20 20 20 20  straints:..     
11400 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a     /// </para>..
11410 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 63 6f 64          /// <cod
11420 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e>..        /// 
11430 20 20 20 20 20 20 20 20 20 78 20 26 67 74 3b 3d           x &gt;=
11440 20 31 30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   10..        ///
11450 20 20 20 20 20 20 20 20 20 20 78 20 26 6c 74 3b            x &lt;
11460 3d 20 31 30 30 0d 0a 20 20 20 20 20 20 20 20 2f  = 100..        /
11470 2f 2f 20 20 20 20 20 20 20 20 20 20 79 20 26 6c  //          y &l
11480 74 3b 20 39 39 39 0d 0a 20 20 20 20 20 20 20 20  t; 999..        
11490 2f 2f 2f 20 3c 2f 63 6f 64 65 3e 0d 0a 20 20 20  /// </code>..   
114a0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
114b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 46 6f 72  .        /// For
114c0 20 65 61 63 68 20 63 6f 6e 73 74 72 61 69 6e 74   each constraint
114d0 2c 20 74 68 65 20 61 43 6f 6e 73 74 72 61 69 6e  , the aConstrain
114e0 74 5b 5d 2e 69 43 6f 6c 75 6d 6e 20 66 69 65 6c  t[].iColumn fiel
114f0 64 20 69 6e 64 69 63 61 74 65 73 0d 0a 20 20 20  d indicates..   
11500 20 20 20 20 20 2f 2f 2f 20 77 68 69 63 68 20 63       /// which c
11510 6f 6c 75 6d 6e 20 61 70 70 65 61 72 73 20 6f 6e  olumn appears on
11520 20 74 68 65 20 6c 65 66 74 2d 68 61 6e 64 20 73   the left-hand s
11530 69 64 65 20 6f 66 20 74 68 65 20 63 6f 6e 73 74  ide of the const
11540 72 61 69 6e 74 2e 20 54 68 65 0d 0a 20 20 20 20  raint. The..    
11550 20 20 20 20 2f 2f 2f 20 66 69 72 73 74 20 63 6f      /// first co
11560 6c 75 6d 6e 20 6f 66 20 74 68 65 20 76 69 72 74  lumn of the virt
11570 75 61 6c 20 74 61 62 6c 65 20 69 73 20 63 6f 6c  ual table is col
11580 75 6d 6e 20 30 2e 20 54 68 65 20 72 6f 77 69 64  umn 0. The rowid
11590 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20 20 20   of the..       
115a0 20 2f 2f 2f 20 76 69 72 74 75 61 6c 20 74 61 62   /// virtual tab
115b0 6c 65 20 69 73 20 63 6f 6c 75 6d 6e 20 2d 31 2e  le is column -1.
115c0 20 54 68 65 20 61 43 6f 6e 73 74 72 61 69 6e 74   The aConstraint
115d0 5b 5d 2e 6f 70 20 66 69 65 6c 64 20 69 6e 64 69  [].op field indi
115e0 63 61 74 65 73 0d 0a 20 20 20 20 20 20 20 20 2f  cates..        /
115f0 2f 2f 20 77 68 69 63 68 20 6f 70 65 72 61 74 6f  // which operato
11600 72 20 69 73 20 75 73 65 64 2e 20 54 68 65 20 53  r is used. The S
11610 51 4c 49 54 45 5f 49 4e 44 45 58 5f 43 4f 4e 53  QLITE_INDEX_CONS
11620 54 52 41 49 4e 54 5f 2a 20 63 6f 6e 73 74 61 6e  TRAINT_* constan
11630 74 73 20 6d 61 70 0d 0a 20 20 20 20 20 20 20 20  ts map..        
11640 2f 2f 2f 20 69 6e 74 65 67 65 72 20 63 6f 6e 73  /// integer cons
11650 74 61 6e 74 73 20 69 6e 74 6f 20 6f 70 65 72 61  tants into opera
11660 74 6f 72 20 76 61 6c 75 65 73 2e 20 43 6f 6c 75  tor values. Colu
11670 6d 6e 73 20 6f 63 63 75 72 20 69 6e 20 74 68 65  mns occur in the
11680 20 6f 72 64 65 72 0d 0a 20 20 20 20 20 20 20 20   order..        
11690 2f 2f 2f 20 74 68 65 79 20 77 65 72 65 20 64 65  /// they were de
116a0 66 69 6e 65 64 20 62 79 20 74 68 65 20 63 61 6c  fined by the cal
116b0 6c 20 74 6f 20 73 71 6c 69 74 65 33 5f 64 65 63  l to sqlite3_dec
116c0 6c 61 72 65 5f 76 74 61 62 28 29 20 69 6e 20 74  lare_vtab() in t
116d0 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
116e0 78 43 72 65 61 74 65 20 6f 72 20 78 43 6f 6e 6e  xCreate or xConn
116f0 65 63 74 20 6d 65 74 68 6f 64 2e 20 48 69 64 64  ect method. Hidd
11700 65 6e 20 63 6f 6c 75 6d 6e 73 20 61 72 65 20 63  en columns are c
11710 6f 75 6e 74 65 64 20 77 68 65 6e 0d 0a 20 20 20  ounted when..   
11720 20 20 20 20 20 2f 2f 2f 20 64 65 74 65 72 6d 69       /// determi
11730 6e 69 6e 67 20 74 68 65 20 63 6f 6c 75 6d 6e 20  ning the column 
11740 69 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20 20 20  index...        
11750 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20  /// </para>..   
11760 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
11770 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
11780 20 61 43 6f 6e 73 74 72 61 69 6e 74 5b 5d 20 61   aConstraint[] a
11790 72 72 61 79 20 63 6f 6e 74 61 69 6e 73 20 69 6e  rray contains in
117a0 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20  formation about 
117b0 61 6c 6c 20 63 6f 6e 73 74 72 61 69 6e 74 73 0d  all constraints.
117c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 61  .        /// tha
117d0 74 20 61 70 70 6c 79 20 74 6f 20 74 68 65 20 76  t apply to the v
117e0 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 20 42 75  irtual table. Bu
117f0 74 20 73 6f 6d 65 20 6f 66 20 74 68 65 20 63 6f  t some of the co
11800 6e 73 74 72 61 69 6e 74 73 20 6d 69 67 68 74 0d  nstraints might.
11810 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 6f 74  .        /// not
11820 20 62 65 20 75 73 61 62 6c 65 20 62 65 63 61 75   be usable becau
11830 73 65 20 6f 66 20 74 68 65 20 77 61 79 20 74 61  se of the way ta
11840 62 6c 65 73 20 61 72 65 20 6f 72 64 65 72 65 64  bles are ordered
11850 20 69 6e 20 61 20 6a 6f 69 6e 2e 20 54 68 65 0d   in a join. The.
11860 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 78 42 65  .        /// xBe
11870 73 74 49 6e 64 65 78 20 6d 65 74 68 6f 64 20 6d  stIndex method m
11880 75 73 74 20 74 68 65 72 65 66 6f 72 65 20 6f 6e  ust therefore on
11890 6c 79 20 63 6f 6e 73 69 64 65 72 20 63 6f 6e 73  ly consider cons
118a0 74 72 61 69 6e 74 73 20 74 68 61 74 0d 0a 20 20  traints that..  
118b0 20 20 20 20 20 20 2f 2f 2f 20 68 61 76 65 20 61        /// have a
118c0 6e 20 61 43 6f 6e 73 74 72 61 69 6e 74 5b 5d 2e  n aConstraint[].
118d0 75 73 61 62 6c 65 20 66 6c 61 67 20 77 68 69 63  usable flag whic
118e0 68 20 69 73 20 74 72 75 65 2e 0d 0a 20 20 20 20  h is true...    
118f0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d      /// </para>.
11900 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
11910 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
11920 20 49 6e 20 61 64 64 69 74 69 6f 6e 20 74 6f 20   In addition to 
11930 57 48 45 52 45 20 63 6c 61 75 73 65 20 63 6f 6e  WHERE clause con
11940 73 74 72 61 69 6e 74 73 2c 20 74 68 65 20 53 51  straints, the SQ
11950 4c 69 74 65 20 63 6f 72 65 20 61 6c 73 6f 20 74  Lite core also t
11960 65 6c 6c 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ells..        //
11970 2f 20 74 68 65 20 78 42 65 73 74 49 6e 64 65 78  / the xBestIndex
11980 20 6d 65 74 68 6f 64 20 61 62 6f 75 74 20 74 68   method about th
11990 65 20 4f 52 44 45 52 20 42 59 20 63 6c 61 75 73  e ORDER BY claus
119a0 65 2e 20 28 49 6e 20 61 6e 20 61 67 67 72 65 67  e. (In an aggreg
119b0 61 74 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ate..        ///
119c0 20 71 75 65 72 79 2c 20 74 68 65 20 53 51 4c 69   query, the SQLi
119d0 74 65 20 63 6f 72 65 20 6d 69 67 68 74 20 70 75  te core might pu
119e0 74 20 69 6e 20 47 52 4f 55 50 20 42 59 20 63 6c  t in GROUP BY cl
119f0 61 75 73 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  ause information
11a00 20 69 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   in..        ///
11a10 20 70 6c 61 63 65 20 6f 66 20 74 68 65 20 4f 52   place of the OR
11a20 44 45 52 20 42 59 20 63 6c 61 75 73 65 20 69 6e  DER BY clause in
11a30 66 6f 72 6d 61 74 69 6f 6e 2c 20 62 75 74 20 74  formation, but t
11a40 68 69 73 20 66 61 63 74 20 73 68 6f 75 6c 64 20  his fact should 
11a50 6e 6f 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  not..        ///
11a60 20 6d 61 6b 65 20 61 6e 79 20 64 69 66 66 65 72   make any differ
11a70 65 6e 63 65 20 74 6f 20 74 68 65 20 78 42 65 73  ence to the xBes
11a80 74 49 6e 64 65 78 20 6d 65 74 68 6f 64 2e 29 20  tIndex method.) 
11a90 49 66 20 61 6c 6c 20 74 65 72 6d 73 20 6f 66 20  If all terms of 
11aa0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
11ab0 20 4f 52 44 45 52 20 42 59 20 63 6c 61 75 73 65   ORDER BY clause
11ac0 20 61 72 65 20 63 6f 6c 75 6d 6e 73 20 69 6e 20   are columns in 
11ad0 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c  the virtual tabl
11ae0 65 2c 20 74 68 65 6e 20 6e 4f 72 64 65 72 42 79  e, then nOrderBy
11af0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69  ..        /// wi
11b00 6c 6c 20 62 65 20 74 68 65 20 6e 75 6d 62 65 72  ll be the number
11b10 20 6f 66 20 74 65 72 6d 73 20 69 6e 20 74 68 65   of terms in the
11b20 20 4f 52 44 45 52 20 42 59 20 63 6c 61 75 73 65   ORDER BY clause
11b30 20 61 6e 64 20 74 68 65 0d 0a 20 20 20 20 20 20   and the..      
11b40 20 20 2f 2f 2f 20 61 4f 72 64 65 72 42 79 5b 5d    /// aOrderBy[]
11b50 20 61 72 72 61 79 20 77 69 6c 6c 20 69 64 65 6e   array will iden
11b60 74 69 66 79 20 74 68 65 20 63 6f 6c 75 6d 6e 20  tify the column 
11b70 66 6f 72 20 65 61 63 68 20 74 65 72 6d 20 69 6e  for each term in
11b80 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
11b90 2f 20 6f 72 64 65 72 20 62 79 20 63 6c 61 75 73  / order by claus
11ba0 65 20 61 6e 64 20 77 68 65 74 68 65 72 20 6f 72  e and whether or
11bb0 20 6e 6f 74 20 74 68 61 74 20 63 6f 6c 75 6d 6e   not that column
11bc0 20 69 73 20 41 53 43 20 6f 72 20 44 45 53 43 2e   is ASC or DESC.
11bd0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
11be0 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
11bf0 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20  // <para>..     
11c00 20 20 20 2f 2f 2f 20 32 2e 33 2e 32 20 4f 75 74     /// 2.3.2 Out
11c10 70 75 74 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  puts..        //
11c20 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20  / </para>..     
11c30 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20     /// <para>.. 
11c40 20 20 20 20 20 20 20 2f 2f 2f 20 47 69 76 65 6e         /// Given
11c50 20 61 6c 6c 20 6f 66 20 74 68 65 20 69 6e 66 6f   all of the info
11c60 72 6d 61 74 69 6f 6e 20 61 62 6f 76 65 2c 20 74  rmation above, t
11c70 68 65 20 6a 6f 62 20 6f 66 20 74 68 65 20 78 42  he job of the xB
11c80 65 73 74 49 6e 64 65 78 0d 0a 20 20 20 20 20 20  estIndex..      
11c90 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 20 69 74 20    /// method it 
11ca0 74 6f 20 66 69 67 75 72 65 20 6f 75 74 20 74 68  to figure out th
11cb0 65 20 62 65 73 74 20 77 61 79 20 74 6f 20 73 65  e best way to se
11cc0 61 72 63 68 20 74 68 65 20 76 69 72 74 75 61 6c  arch the virtual
11cd0 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20   table...       
11ce0 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
11cf0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
11d00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
11d10 65 20 78 42 65 73 74 49 6e 64 65 78 20 6d 65 74  e xBestIndex met
11d20 68 6f 64 20 66 69 6c 6c 73 20 74 68 65 20 69 64  hod fills the id
11d30 78 4e 75 6d 20 61 6e 64 20 69 64 78 53 74 72 20  xNum and idxStr 
11d40 66 69 65 6c 64 73 20 77 69 74 68 0d 0a 20 20 20  fields with..   
11d50 20 20 20 20 20 2f 2f 2f 20 69 6e 66 6f 72 6d 61       /// informa
11d60 74 69 6f 6e 20 74 68 61 74 20 63 6f 6d 6d 75 6e  tion that commun
11d70 69 63 61 74 65 73 20 61 6e 20 69 6e 64 65 78 69  icates an indexi
11d80 6e 67 20 73 74 72 61 74 65 67 79 20 74 6f 20 74  ng strategy to t
11d90 68 65 20 78 46 69 6c 74 65 72 0d 0a 20 20 20 20  he xFilter..    
11da0 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 2e 20      /// method. 
11db0 54 68 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  The information 
11dc0 69 6e 20 69 64 78 4e 75 6d 20 61 6e 64 20 69 64  in idxNum and id
11dd0 78 53 74 72 20 69 73 20 61 72 62 69 74 72 61 72  xStr is arbitrar
11de0 79 20 61 73 20 66 61 72 20 61 73 0d 0a 20 20 20  y as far as..   
11df0 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 53 51 4c       /// the SQL
11e00 69 74 65 20 63 6f 72 65 20 69 73 20 63 6f 6e 63  ite core is conc
11e10 65 72 6e 65 64 2e 20 54 68 65 20 53 51 4c 69 74  erned. The SQLit
11e20 65 20 63 6f 72 65 20 6a 75 73 74 20 63 6f 70 69  e core just copi
11e30 65 73 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  es the..        
11e40 2f 2f 2f 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  /// information 
11e50 74 68 72 6f 75 67 68 20 74 6f 20 74 68 65 20 78  through to the x
11e60 46 69 6c 74 65 72 20 6d 65 74 68 6f 64 2e 20 41  Filter method. A
11e70 6e 79 20 64 65 73 69 72 65 64 20 6d 65 61 6e 69  ny desired meani
11e80 6e 67 20 63 61 6e 0d 0a 20 20 20 20 20 20 20 20  ng can..        
11e90 2f 2f 2f 20 62 65 20 61 73 73 69 67 6e 65 64 20  /// be assigned 
11ea0 74 6f 20 69 64 78 4e 75 6d 20 61 6e 64 20 69 64  to idxNum and id
11eb0 78 53 74 72 20 61 73 20 6c 6f 6e 67 20 61 73 20  xStr as long as 
11ec0 78 42 65 73 74 49 6e 64 65 78 20 61 6e 64 20 78  xBestIndex and x
11ed0 46 69 6c 74 65 72 0d 0a 20 20 20 20 20 20 20 20  Filter..        
11ee0 2f 2f 2f 20 61 67 72 65 65 20 6f 6e 20 77 68 61  /// agree on wha
11ef0 74 20 74 68 61 74 20 6d 65 61 6e 69 6e 67 20 69  t that meaning i
11f00 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s...        /// 
11f10 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
11f20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
11f30 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 69 64 78       /// The idx
11f40 53 74 72 20 76 61 6c 75 65 20 6d 61 79 20 62 65  Str value may be
11f50 20 61 20 73 74 72 69 6e 67 20 6f 62 74 61 69 6e   a string obtain
11f60 65 64 20 66 72 6f 6d 20 61 6e 20 53 51 4c 69 74  ed from an SQLit
11f70 65 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20  e memory..      
11f80 20 20 2f 2f 2f 20 61 6c 6c 6f 63 61 74 69 6f 6e    /// allocation
11f90 20 66 75 6e 63 74 69 6f 6e 20 73 75 63 68 20 61   function such a
11fa0 73 20 73 71 6c 69 74 65 33 5f 6d 70 72 69 6e 74  s sqlite3_mprint
11fb0 66 28 29 2e 20 49 66 20 74 68 69 73 20 69 73 20  f(). If this is 
11fc0 74 68 65 20 63 61 73 65 2c 0d 0a 20 20 20 20 20  the case,..     
11fd0 20 20 20 2f 2f 2f 20 74 68 65 6e 20 74 68 65 20     /// then the 
11fe0 6e 65 65 64 54 6f 46 72 65 65 49 64 78 53 74 72  needToFreeIdxStr
11ff0 20 66 6c 61 67 20 6d 75 73 74 20 62 65 20 73 65   flag must be se
12000 74 20 74 6f 20 74 72 75 65 20 73 6f 20 74 68 61  t to true so tha
12010 74 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  t the..        /
12020 2f 2f 20 53 51 4c 69 74 65 20 63 6f 72 65 20 77  // SQLite core w
12030 69 6c 6c 20 6b 6e 6f 77 20 74 6f 20 63 61 6c 6c  ill know to call
12040 20 73 71 6c 69 74 65 33 5f 66 72 65 65 28 29 20   sqlite3_free() 
12050 6f 6e 20 74 68 61 74 20 73 74 72 69 6e 67 20 77  on that string w
12060 68 65 6e 20 69 74 0d 0a 20 20 20 20 20 20 20 20  hen it..        
12070 2f 2f 2f 20 68 61 73 20 66 69 6e 69 73 68 65 64  /// has finished
12080 20 77 69 74 68 20 69 74 2c 20 61 6e 64 20 74 68   with it, and th
12090 75 73 20 61 76 6f 69 64 20 61 20 6d 65 6d 6f 72  us avoid a memor
120a0 79 20 6c 65 61 6b 2e 0d 0a 20 20 20 20 20 20 20  y leak...       
120b0 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
120c0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
120d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 49 66  ..        /// If
120e0 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
120f0 6c 65 20 77 69 6c 6c 20 6f 75 74 70 75 74 20 72  le will output r
12100 6f 77 73 20 69 6e 20 74 68 65 20 6f 72 64 65 72  ows in the order
12110 20 73 70 65 63 69 66 69 65 64 20 62 79 20 74 68   specified by th
12120 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4f  e..        /// O
12130 52 44 45 52 20 42 59 20 63 6c 61 75 73 65 2c 20  RDER BY clause, 
12140 74 68 65 6e 20 74 68 65 20 6f 72 64 65 72 42 79  then the orderBy
12150 43 6f 6e 73 75 6d 65 64 20 66 6c 61 67 20 6d 61  Consumed flag ma
12160 79 20 62 65 20 73 65 74 20 74 6f 20 74 72 75 65  y be set to true
12170 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 49  ...        /// I
12180 66 20 74 68 65 20 6f 75 74 70 75 74 20 69 73 20  f the output is 
12190 6e 6f 74 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  not automaticall
121a0 79 20 69 6e 20 74 68 65 20 63 6f 72 72 65 63 74  y in the correct
121b0 20 6f 72 64 65 72 20 74 68 65 6e 0d 0a 20 20 20   order then..   
121c0 20 20 20 20 20 2f 2f 2f 20 6f 72 64 65 72 42 79       /// orderBy
121d0 43 6f 6e 73 75 6d 65 64 20 6d 75 73 74 20 62 65  Consumed must be
121e0 20 6c 65 66 74 20 69 6e 20 69 74 73 20 64 65 66   left in its def
121f0 61 75 6c 74 20 66 61 6c 73 65 20 73 65 74 74 69  ault false setti
12200 6e 67 2e 20 54 68 69 73 0d 0a 20 20 20 20 20 20  ng. This..      
12210 20 20 2f 2f 2f 20 77 69 6c 6c 20 69 6e 64 69 63    /// will indic
12220 61 74 65 20 74 6f 20 74 68 65 20 53 51 4c 69 74  ate to the SQLit
12230 65 20 63 6f 72 65 20 74 68 61 74 20 69 74 20 77  e core that it w
12240 69 6c 6c 20 6e 65 65 64 20 74 6f 20 64 6f 20 61  ill need to do a
12250 20 73 65 70 61 72 61 74 65 0d 0a 20 20 20 20 20   separate..     
12260 20 20 20 2f 2f 2f 20 73 6f 72 74 69 6e 67 20 70     /// sorting p
12270 61 73 73 20 6f 76 65 72 20 74 68 65 20 64 61 74  ass over the dat
12280 61 20 61 66 74 65 72 20 69 74 20 63 6f 6d 65 73  a after it comes
12290 20 6f 75 74 20 6f 66 20 74 68 65 20 76 69 72 74   out of the virt
122a0 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
122b0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d      /// </para>.
122c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
122d0 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
122e0 20 54 68 65 20 65 73 74 69 6d 61 74 65 64 43 6f   The estimatedCo
122f0 73 74 20 66 69 65 6c 64 20 73 68 6f 75 6c 64 20  st field should 
12300 62 65 20 73 65 74 20 74 6f 20 74 68 65 20 65 73  be set to the es
12310 74 69 6d 61 74 65 64 20 6e 75 6d 62 65 72 20 6f  timated number o
12320 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64  f..        /// d
12330 69 73 6b 20 61 63 63 65 73 73 20 6f 70 65 72 61  isk access opera
12340 74 69 6f 6e 73 20 72 65 71 75 69 72 65 64 20 74  tions required t
12350 6f 20 65 78 65 63 75 74 65 20 74 68 69 73 20 71  o execute this q
12360 75 65 72 79 20 61 67 61 69 6e 73 74 20 74 68 65  uery against the
12370 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 69  ..        /// vi
12380 72 74 75 61 6c 20 74 61 62 6c 65 2e 20 54 68 65  rtual table. The
12390 20 53 51 4c 69 74 65 20 63 6f 72 65 20 77 69 6c   SQLite core wil
123a0 6c 20 6f 66 74 65 6e 20 63 61 6c 6c 20 78 42 65  l often call xBe
123b0 73 74 49 6e 64 65 78 20 6d 75 6c 74 69 70 6c 65  stIndex multiple
123c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 69  ..        /// ti
123d0 6d 65 73 20 77 69 74 68 20 64 69 66 66 65 72 65  mes with differe
123e0 6e 74 20 63 6f 6e 73 74 72 61 69 6e 74 73 2c 20  nt constraints, 
123f0 6f 62 74 61 69 6e 20 6d 75 6c 74 69 70 6c 65 20  obtain multiple 
12400 63 6f 73 74 20 65 73 74 69 6d 61 74 65 73 2c 0d  cost estimates,.
12410 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  .        /// the
12420 6e 20 63 68 6f 6f 73 65 20 74 68 65 20 71 75 65  n choose the que
12430 72 79 20 70 6c 61 6e 20 74 68 61 74 20 67 69 76  ry plan that giv
12440 65 73 20 74 68 65 20 6c 6f 77 65 73 74 20 65 73  es the lowest es
12450 74 69 6d 61 74 65 2e 0d 0a 20 20 20 20 20 20 20  timate...       
12460 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
12470 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
12480 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
12490 65 20 61 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  e aConstraintUsa
124a0 67 65 5b 5d 20 61 72 72 61 79 20 63 6f 6e 74 61  ge[] array conta
124b0 69 6e 73 20 6f 6e 65 20 65 6c 65 6d 65 6e 74 20  ins one element 
124c0 66 6f 72 20 65 61 63 68 20 6f 66 20 74 68 65 0d  for each of the.
124d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 43 6f  .        /// nCo
124e0 6e 73 74 72 61 69 6e 74 20 63 6f 6e 73 74 72 61  nstraint constra
124f0 69 6e 74 73 20 69 6e 20 74 68 65 20 69 6e 70 75  ints in the inpu
12500 74 73 20 73 65 63 74 69 6f 6e 20 6f 66 20 74 68  ts section of th
12510 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  e..        /// s
12520 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66  qlite3_index_inf
12530 6f 20 73 74 72 75 63 74 75 72 65 2e 20 54 68 65  o structure. The
12540 20 61 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67   aConstraintUsag
12550 65 5b 5d 20 61 72 72 61 79 20 69 73 20 75 73 65  e[] array is use
12560 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 62  d..        /// b
12570 79 20 78 42 65 73 74 49 6e 64 65 78 20 74 6f 20  y xBestIndex to 
12580 74 65 6c 6c 20 74 68 65 20 63 6f 72 65 20 68 6f  tell the core ho
12590 77 20 69 74 20 69 73 20 75 73 69 6e 67 20 74 68  w it is using th
125a0 65 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 0d 0a  e constraints...
125b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
125c0 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
125d0 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
125e0 20 2f 2f 2f 20 54 68 65 20 78 42 65 73 74 49 6e   /// The xBestIn
125f0 64 65 78 20 6d 65 74 68 6f 64 20 6d 61 79 20 73  dex method may s
12600 65 74 20 61 43 6f 6e 73 74 72 61 69 6e 74 55 73  et aConstraintUs
12610 61 67 65 5b 5d 2e 61 72 67 76 49 6e 64 65 78 20  age[].argvIndex 
12620 65 6e 74 72 69 65 73 0d 0a 20 20 20 20 20 20 20  entries..       
12630 20 2f 2f 2f 20 74 6f 20 76 61 6c 75 65 73 20 67   /// to values g
12640 72 65 61 74 65 72 20 74 68 61 6e 20 6f 6e 65 2e  reater than one.
12650 20 45 78 61 63 74 6c 79 20 6f 6e 65 20 65 6e 74   Exactly one ent
12660 72 79 20 73 68 6f 75 6c 64 20 62 65 20 73 65 74  ry should be set
12670 20 74 6f 20 31 2c 0d 0a 20 20 20 20 20 20 20 20   to 1,..        
12680 2f 2f 2f 20 61 6e 6f 74 68 65 72 20 74 6f 20 32  /// another to 2
12690 2c 20 61 6e 6f 74 68 65 72 20 74 6f 20 33 2c 20  , another to 3, 
126a0 61 6e 64 20 73 6f 20 66 6f 72 74 68 20 75 70 20  and so forth up 
126b0 74 6f 20 61 73 20 6d 61 6e 79 20 6f 72 20 61 73  to as many or as
126c0 20 66 65 77 20 61 73 0d 0a 20 20 20 20 20 20 20   few as..       
126d0 20 2f 2f 2f 20 74 68 65 20 78 42 65 73 74 49 6e   /// the xBestIn
126e0 64 65 78 20 6d 65 74 68 6f 64 20 77 61 6e 74 73  dex method wants
126f0 2e 20 54 68 65 20 45 58 50 52 20 6f 66 20 74 68  . The EXPR of th
12700 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 0d  e corresponding.
12710 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e  .        /// con
12720 73 74 72 61 69 6e 74 73 20 77 69 6c 6c 20 74 68  straints will th
12730 65 6e 20 62 65 20 70 61 73 73 65 64 20 69 6e 20  en be passed in 
12740 61 73 20 74 68 65 20 61 72 67 76 5b 5d 20 70 61  as the argv[] pa
12750 72 61 6d 65 74 65 72 73 20 74 6f 0d 0a 20 20 20  rameters to..   
12760 20 20 20 20 20 2f 2f 2f 20 78 46 69 6c 74 65 72       /// xFilter
12770 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
12780 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
12790 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
127a0 20 20 20 20 2f 2f 2f 20 46 6f 72 20 65 78 61 6d      /// For exam
127b0 70 6c 65 2c 20 69 66 20 74 68 65 20 61 43 6f 6e  ple, if the aCon
127c0 73 74 72 61 69 6e 74 5b 33 5d 2e 61 72 67 76 49  straint[3].argvI
127d0 6e 64 65 78 20 69 73 20 73 65 74 20 74 6f 20 31  ndex is set to 1
127e0 2c 20 74 68 65 6e 20 77 68 65 6e 0d 0a 20 20 20  , then when..   
127f0 20 20 20 20 20 2f 2f 2f 20 78 46 69 6c 74 65 72       /// xFilter
12800 20 69 73 20 63 61 6c 6c 65 64 2c 20 74 68 65 20   is called, the 
12810 61 72 67 76 5b 30 5d 20 70 61 73 73 65 64 20 74  argv[0] passed t
12820 6f 20 78 46 69 6c 74 65 72 20 77 69 6c 6c 20 68  o xFilter will h
12830 61 76 65 20 74 68 65 20 45 58 50 52 0d 0a 20 20  ave the EXPR..  
12840 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 20        /// value 
12850 6f 66 20 74 68 65 20 61 43 6f 6e 73 74 72 61 69  of the aConstrai
12860 6e 74 5b 33 5d 20 63 6f 6e 73 74 72 61 69 6e 74  nt[3] constraint
12870 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
12880 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
12890 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
128a0 20 20 20 20 2f 2f 2f 20 42 79 20 64 65 66 61 75      /// By defau
128b0 6c 74 2c 20 74 68 65 20 53 51 4c 69 74 65 20 63  lt, the SQLite c
128c0 6f 72 65 20 64 6f 75 62 6c 65 20 63 68 65 63 6b  ore double check
128d0 73 20 61 6c 6c 20 63 6f 6e 73 74 72 61 69 6e 74  s all constraint
128e0 73 20 6f 6e 20 65 61 63 68 0d 0a 20 20 20 20 20  s on each..     
128f0 20 20 20 2f 2f 2f 20 72 6f 77 20 6f 66 20 74 68     /// row of th
12900 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  e virtual table 
12910 74 68 61 74 20 69 74 20 72 65 63 65 69 76 65 73  that it receives
12920 2e 20 49 66 20 73 75 63 68 20 61 20 63 68 65 63  . If such a chec
12930 6b 20 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  k is..        //
12940 2f 20 72 65 64 75 6e 64 61 6e 74 2c 20 74 68 65  / redundant, the
12950 20 78 42 65 73 74 46 69 6c 74 65 72 20 6d 65 74   xBestFilter met
12960 68 6f 64 20 63 61 6e 20 73 75 70 70 72 65 73 73  hod can suppress
12970 20 74 68 61 74 20 64 6f 75 62 6c 65 2d 63 68 65   that double-che
12980 63 6b 20 62 79 0d 0a 20 20 20 20 20 20 20 20 2f  ck by..        /
12990 2f 2f 20 73 65 74 74 69 6e 67 20 61 43 6f 6e 73  // setting aCons
129a0 74 72 61 69 6e 74 55 73 61 67 65 5b 5d 2e 6f 6d  traintUsage[].om
129b0 69 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  it...        ///
129c0 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20   </para>..      
129d0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
129e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
129f0 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62  aram name="pVtab
12a00 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
12a10 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  The native point
12a20 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65  er to the sqlite
12a30 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73  3_vtab derived s
12a40 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20  tructure...     
12a50 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
12a60 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
12a70 72 61 6d 20 6e 61 6d 65 3d 22 70 49 6e 64 65 78  ram name="pIndex
12a80 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
12a90 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  The native point
12aa0 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65  er to the sqlite
12ab0 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 20 73 74 72  3_index_info str
12ac0 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ucture...       
12ad0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
12ae0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
12af0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
12b00 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c  / A standard SQL
12b10 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e  ite return code.
12b20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
12b30 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
12b40 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64    SQLiteErrorCod
12b50 65 20 78 42 65 73 74 49 6e 64 65 78 28 0d 0a 20  e xBestIndex(.. 
12b60 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
12b70 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20  r pVtab,..      
12b80 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 49 6e        IntPtr pIn
12b90 64 65 78 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dex..           
12ba0 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   );....        /
12bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12bf0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
12c00 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
12c10 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
12c20 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
12c30 20 54 68 69 73 20 6d 65 74 68 6f 64 20 72 65 6c   This method rel
12c40 65 61 73 65 73 20 61 20 63 6f 6e 6e 65 63 74 69  eases a connecti
12c50 6f 6e 20 74 6f 20 61 20 76 69 72 74 75 61 6c 20  on to a virtual 
12c60 74 61 62 6c 65 2e 20 4f 6e 6c 79 20 74 68 65 0d  table. Only the.
12c70 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c  .        /// sql
12c80 69 74 65 33 5f 76 74 61 62 20 6f 62 6a 65 63 74  ite3_vtab object
12c90 20 69 73 20 64 65 73 74 72 6f 79 65 64 2e 20 54   is destroyed. T
12ca0 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
12cb0 20 69 73 20 6e 6f 74 0d 0a 20 20 20 20 20 20 20   is not..       
12cc0 20 2f 2f 2f 20 64 65 73 74 72 6f 79 65 64 20 61   /// destroyed a
12cd0 6e 64 20 61 6e 79 20 62 61 63 6b 69 6e 67 20 73  nd any backing s
12ce0 74 6f 72 65 20 61 73 73 6f 63 69 61 74 65 64 20  tore associated 
12cf0 77 69 74 68 20 74 68 65 20 76 69 72 74 75 61 6c  with the virtual
12d00 20 74 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20   table..        
12d10 2f 2f 2f 20 70 65 72 73 69 73 74 73 2e 20 54 68  /// persists. Th
12d20 69 73 20 6d 65 74 68 6f 64 20 75 6e 64 6f 65 73  is method undoes
12d30 20 74 68 65 20 77 6f 72 6b 20 6f 66 20 78 43 6f   the work of xCo
12d40 6e 6e 65 63 74 2e 0d 0a 20 20 20 20 20 20 20 20  nnect...        
12d50 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20  /// </para>..   
12d60 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
12d70 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
12d80 73 20 6d 65 74 68 6f 64 20 69 73 20 61 20 64 65  s method is a de
12d90 73 74 72 75 63 74 6f 72 20 66 6f 72 20 61 20 63  structor for a c
12da0 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20 74 68 65  onnection to the
12db0 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d   virtual table..
12dc0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e  .        /// Con
12dd0 74 72 61 73 74 20 74 68 69 73 20 6d 65 74 68 6f  trast this metho
12de0 64 20 77 69 74 68 20 78 44 65 73 74 72 6f 79 2e  d with xDestroy.
12df0 20 54 68 65 20 78 44 65 73 74 72 6f 79 20 69 73   The xDestroy is
12e00 20 61 20 64 65 73 74 72 75 63 74 6f 72 0d 0a 20   a destructor.. 
12e10 20 20 20 20 20 20 20 2f 2f 2f 20 66 6f 72 20 74         /// for t
12e20 68 65 20 65 6e 74 69 72 65 20 76 69 72 74 75 61  he entire virtua
12e30 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  l table...      
12e40 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
12e50 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
12e60 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
12e70 68 65 20 78 44 69 73 63 6f 6e 6e 65 63 74 20 6d  he xDisconnect m
12e80 65 74 68 6f 64 20 69 73 20 72 65 71 75 69 72 65  ethod is require
12e90 64 20 66 6f 72 20 65 76 65 72 79 20 76 69 72 74  d for every virt
12ea0 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20 20  ual table..     
12eb0 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74     /// implement
12ec0 61 74 69 6f 6e 2c 20 74 68 6f 75 67 68 20 69 74  ation, though it
12ed0 20 69 73 20 61 63 63 65 70 74 61 62 6c 65 20 66   is acceptable f
12ee0 6f 72 20 74 68 65 20 78 44 69 73 63 6f 6e 6e 65  or the xDisconne
12ef0 63 74 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20  ct and..        
12f00 2f 2f 2f 20 78 44 65 73 74 72 6f 79 20 6d 65 74  /// xDestroy met
12f10 68 6f 64 73 20 74 6f 20 62 65 20 74 68 65 20 73  hods to be the s
12f20 61 6d 65 20 66 75 6e 63 74 69 6f 6e 20 69 66 20  ame function if 
12f30 74 68 61 74 20 6d 61 6b 65 73 20 73 65 6e 73 65  that makes sense
12f40 20 66 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f   for..        //
12f50 2f 20 74 68 65 20 70 61 72 74 69 63 75 6c 61 72  / the particular
12f60 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d   virtual table..
12f70 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
12f80 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
12f90 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
12fa0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
12fb0 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a   name="pVtab">..
12fc0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
12fd0 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
12fe0 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74  o the sqlite3_vt
12ff0 61 62 20 64 65 72 69 76 65 64 20 73 74 72 75 63  ab derived struc
13000 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ture...        /
13010 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
13020 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
13030 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
13040 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74  A standard SQLit
13050 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a  e return code...
13060 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
13070 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
13080 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
13090 78 44 69 73 63 6f 6e 6e 65 63 74 28 0d 0a 20 20  xDisconnect(..  
130a0 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
130b0 20 70 56 74 61 62 0d 0a 20 20 20 20 20 20 20 20   pVtab..        
130c0 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20      );....      
130d0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
130e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
130f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13110 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
13120 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
13130 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
13140 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
13150 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20  /// This method 
13160 72 65 6c 65 61 73 65 73 20 61 20 63 6f 6e 6e 65  releases a conne
13170 63 74 69 6f 6e 20 74 6f 20 61 20 76 69 72 74 75  ction to a virtu
13180 61 6c 20 74 61 62 6c 65 2c 20 6a 75 73 74 20 6c  al table, just l
13190 69 6b 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ike the..       
131a0 20 2f 2f 2f 20 78 44 69 73 63 6f 6e 6e 65 63 74   /// xDisconnect
131b0 20 6d 65 74 68 6f 64 2c 20 61 6e 64 20 69 74 20   method, and it 
131c0 61 6c 73 6f 20 64 65 73 74 72 6f 79 73 20 74 68  also destroys th
131d0 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 74 61 62  e underlying tab
131e0 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  le..        /// 
131f0 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 20  implementation. 
13200 54 68 69 73 20 6d 65 74 68 6f 64 20 75 6e 64 6f  This method undo
13210 65 73 20 74 68 65 20 77 6f 72 6b 20 6f 66 20 78  es the work of x
13220 43 72 65 61 74 65 2e 0d 0a 20 20 20 20 20 20 20  Create...       
13230 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
13240 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
13250 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
13260 65 20 78 44 69 73 63 6f 6e 6e 65 63 74 20 6d 65  e xDisconnect me
13270 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 77  thod is called w
13280 68 65 6e 65 76 65 72 20 61 20 64 61 74 61 62 61  henever a databa
13290 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 0d 0a 20  se connection.. 
132a0 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 61 74 20         /// that 
132b0 75 73 65 73 20 61 20 76 69 72 74 75 61 6c 20 74  uses a virtual t
132c0 61 62 6c 65 20 69 73 20 63 6c 6f 73 65 64 2e 20  able is closed. 
132d0 54 68 65 20 78 44 65 73 74 72 6f 79 20 6d 65 74  The xDestroy met
132e0 68 6f 64 20 69 73 20 6f 6e 6c 79 0d 0a 20 20 20  hod is only..   
132f0 20 20 20 20 20 2f 2f 2f 20 63 61 6c 6c 65 64 20       /// called 
13300 77 68 65 6e 20 61 20 44 52 4f 50 20 54 41 42 4c  when a DROP TABL
13310 45 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 65  E statement is e
13320 78 65 63 75 74 65 64 20 61 67 61 69 6e 73 74 20  xecuted against 
13330 74 68 65 20 76 69 72 74 75 61 6c 0d 0a 20 20 20  the virtual..   
13340 20 20 20 20 20 2f 2f 2f 20 74 61 62 6c 65 2e 0d       /// table..
13350 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
13360 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
13370 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
13380 20 20 2f 2f 2f 20 54 68 65 20 78 44 65 73 74 72    /// The xDestr
13390 6f 79 20 6d 65 74 68 6f 64 20 69 73 20 72 65 71  oy method is req
133a0 75 69 72 65 64 20 66 6f 72 20 65 76 65 72 79 20  uired for every 
133b0 76 69 72 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20  virtual table.. 
133c0 20 20 20 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65         /// imple
133d0 6d 65 6e 74 61 74 69 6f 6e 2c 20 74 68 6f 75 67  mentation, thoug
133e0 68 20 69 74 20 69 73 20 61 63 63 65 70 74 61 62  h it is acceptab
133f0 6c 65 20 66 6f 72 20 74 68 65 20 78 44 69 73 63  le for the xDisc
13400 6f 6e 6e 65 63 74 20 61 6e 64 0d 0a 20 20 20 20  onnect and..    
13410 20 20 20 20 2f 2f 2f 20 78 44 65 73 74 72 6f 79      /// xDestroy
13420 20 6d 65 74 68 6f 64 73 20 74 6f 20 62 65 20 74   methods to be t
13430 68 65 20 73 61 6d 65 20 66 75 6e 63 74 69 6f 6e  he same function
13440 20 69 66 20 74 68 61 74 20 6d 61 6b 65 73 20 73   if that makes s
13450 65 6e 73 65 20 66 6f 72 0d 0a 20 20 20 20 20 20  ense for..      
13460 20 20 2f 2f 2f 20 74 68 65 20 70 61 72 74 69 63    /// the partic
13470 75 6c 61 72 20 76 69 72 74 75 61 6c 20 74 61 62  ular virtual tab
13480 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le...        ///
13490 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20   </para>..      
134a0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
134b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
134c0 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62  aram name="pVtab
134d0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
134e0 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  The native point
134f0 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65  er to the sqlite
13500 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73  3_vtab derived s
13510 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20  tructure...     
13520 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
13530 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
13540 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
13550 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53  /// A standard S
13560 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64  QLite return cod
13570 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
13580 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
13590 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43      SQLiteErrorC
135a0 6f 64 65 20 78 44 65 73 74 72 6f 79 28 0d 0a 20  ode xDestroy(.. 
135b0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
135c0 72 20 70 56 74 61 62 0d 0a 20 20 20 20 20 20 20  r pVtab..       
135d0 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20       );....     
135e0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
135f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13600 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20  //////////....  
13630 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
13640 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
13650 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
13660 20 2f 2f 2f 20 54 68 65 20 78 4f 70 65 6e 20 6d   /// The xOpen m
13670 65 74 68 6f 64 20 63 72 65 61 74 65 73 20 61 20  ethod creates a 
13680 6e 65 77 20 63 75 72 73 6f 72 20 75 73 65 64 20  new cursor used 
13690 66 6f 72 20 61 63 63 65 73 73 69 6e 67 20 28 72  for accessing (r
136a0 65 61 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ead..        ///
136b0 20 61 6e 64 2f 6f 72 20 77 72 69 74 69 6e 67 29   and/or writing)
136c0 20 61 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65   a virtual table
136d0 2e 20 41 20 73 75 63 63 65 73 73 66 75 6c 20 69  . A successful i
136e0 6e 76 6f 63 61 74 69 6f 6e 20 6f 66 20 74 68 69  nvocation of thi
136f0 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d  s..        /// m
13700 65 74 68 6f 64 20 77 69 6c 6c 20 61 6c 6c 6f 63  ethod will alloc
13710 61 74 65 20 74 68 65 20 6d 65 6d 6f 72 79 20 66  ate the memory f
13720 6f 72 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76  or the sqlite3_v
13730 74 61 62 5f 63 75 72 73 6f 72 20 28 6f 72 20 61  tab_cursor (or a
13740 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 75  ..        /// su
13750 62 63 6c 61 73 73 29 2c 20 69 6e 69 74 69 61 6c  bclass), initial
13760 69 7a 65 20 74 68 65 20 6e 65 77 20 6f 62 6a 65  ize the new obje
13770 63 74 2c 20 61 6e 64 20 6d 61 6b 65 20 2a 70 70  ct, and make *pp
13780 43 75 72 73 6f 72 20 70 6f 69 6e 74 20 74 6f 0d  Cursor point to.
13790 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  .        /// the
137a0 20 6e 65 77 20 6f 62 6a 65 63 74 2e 20 54 68 65   new object. The
137b0 20 73 75 63 63 65 73 73 66 75 6c 20 63 61 6c 6c   successful call
137c0 20 74 68 65 6e 20 72 65 74 75 72 6e 73 20 53 51   then returns SQ
137d0 4c 49 54 45 5f 4f 4b 2e 0d 0a 20 20 20 20 20 20  LITE_OK...      
137e0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
137f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
13800 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 46  >..        /// F
13810 6f 72 20 65 76 65 72 79 20 73 75 63 63 65 73 73  or every success
13820 66 75 6c 20 63 61 6c 6c 20 74 6f 20 74 68 69 73  ful call to this
13830 20 6d 65 74 68 6f 64 2c 20 74 68 65 20 53 51 4c   method, the SQL
13840 69 74 65 20 63 6f 72 65 20 77 69 6c 6c 0d 0a 20  ite core will.. 
13850 20 20 20 20 20 20 20 2f 2f 2f 20 6c 61 74 65 72         /// later
13860 20 69 6e 76 6f 6b 65 20 74 68 65 20 78 43 6c 6f   invoke the xClo
13870 73 65 20 6d 65 74 68 6f 64 20 74 6f 20 64 65 73  se method to des
13880 74 72 6f 79 20 74 68 65 20 61 6c 6c 6f 63 61 74  troy the allocat
13890 65 64 20 63 75 72 73 6f 72 2e 0d 0a 20 20 20 20  ed cursor...    
138a0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d      /// </para>.
138b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
138c0 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
138d0 20 54 68 65 20 78 4f 70 65 6e 20 6d 65 74 68 6f   The xOpen metho
138e0 64 20 6e 65 65 64 20 6e 6f 74 20 69 6e 69 74 69  d need not initi
138f0 61 6c 69 7a 65 20 74 68 65 20 70 56 74 61 62 20  alize the pVtab 
13900 66 69 65 6c 64 20 6f 66 20 74 68 65 0d 0a 20 20  field of the..  
13910 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65        /// sqlite
13920 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 73 74  3_vtab_cursor st
13930 72 75 63 74 75 72 65 2e 20 54 68 65 20 53 51 4c  ructure. The SQL
13940 69 74 65 20 63 6f 72 65 20 77 69 6c 6c 20 74 61  ite core will ta
13950 6b 65 20 63 61 72 65 20 6f 66 0d 0a 20 20 20 20  ke care of..    
13960 20 20 20 20 2f 2f 2f 20 74 68 61 74 20 63 68 6f      /// that cho
13970 72 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  re automatically
13980 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
13990 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
139a0 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
139b0 20 20 20 20 2f 2f 2f 20 41 20 76 69 72 74 75 61      /// A virtua
139c0 6c 20 74 61 62 6c 65 20 69 6d 70 6c 65 6d 65 6e  l table implemen
139d0 74 61 74 69 6f 6e 20 6d 75 73 74 20 62 65 20 61  tation must be a
139e0 62 6c 65 20 74 6f 20 73 75 70 70 6f 72 74 20 61  ble to support a
139f0 6e 20 61 72 62 69 74 72 61 72 79 0d 0a 20 20 20  n arbitrary..   
13a00 20 20 20 20 20 2f 2f 2f 20 6e 75 6d 62 65 72 20       /// number 
13a10 6f 66 20 73 69 6d 75 6c 74 61 6e 65 6f 75 73 6c  of simultaneousl
13a20 79 20 6f 70 65 6e 20 63 75 72 73 6f 72 73 2e 0d  y open cursors..
13a30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
13a40 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
13a50 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
13a60 20 20 2f 2f 2f 20 57 68 65 6e 20 69 6e 69 74 69    /// When initi
13a70 61 6c 6c 79 20 6f 70 65 6e 65 64 2c 20 74 68 65  ally opened, the
13a80 20 63 75 72 73 6f 72 20 69 73 20 69 6e 20 61 6e   cursor is in an
13a90 20 75 6e 64 65 66 69 6e 65 64 20 73 74 61 74 65   undefined state
13aa0 2e 20 54 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  . The..        /
13ab0 2f 2f 20 53 51 4c 69 74 65 20 63 6f 72 65 20 77  // SQLite core w
13ac0 69 6c 6c 20 69 6e 76 6f 6b 65 20 74 68 65 20 78  ill invoke the x
13ad0 46 69 6c 74 65 72 20 6d 65 74 68 6f 64 20 6f 6e  Filter method on
13ae0 20 74 68 65 20 63 75 72 73 6f 72 20 70 72 69 6f   the cursor prio
13af0 72 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f  r to..        //
13b00 2f 20 61 6e 79 20 61 74 74 65 6d 70 74 20 74 6f  / any attempt to
13b10 20 70 6f 73 69 74 69 6f 6e 20 6f 72 20 72 65 61   position or rea
13b20 64 20 66 72 6f 6d 20 74 68 65 20 63 75 72 73 6f  d from the curso
13b30 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
13b40 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
13b50 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
13b60 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 78 4f 70       /// The xOp
13b70 65 6e 20 6d 65 74 68 6f 64 20 69 73 20 72 65 71  en method is req
13b80 75 69 72 65 64 20 66 6f 72 20 65 76 65 72 79 20  uired for every 
13b90 76 69 72 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20  virtual table.. 
13ba0 20 20 20 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65         /// imple
13bb0 6d 65 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20  mentation...    
13bc0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d      /// </para>.
13bd0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
13be0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
13bf0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
13c00 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20  ="pVtab">..     
13c10 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
13c20 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
13c30 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65   sqlite3_vtab de
13c40 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2e  rived structure.
13c50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
13c60 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
13c70 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
13c80 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20  "pCursor">..    
13c90 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63      /// Upon suc
13ca0 63 65 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d  cess, this param
13cb0 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64  eter must be mod
13cc0 69 66 69 65 64 20 74 6f 20 70 6f 69 6e 74 20 74  ified to point t
13cd0 6f 20 74 68 65 20 6e 65 77 6c 79 0d 0a 20 20 20  o the newly..   
13ce0 20 20 20 20 20 2f 2f 2f 20 63 72 65 61 74 65 64       /// created
13cf0 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f   native sqlite3_
13d00 76 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69  vtab_cursor deri
13d10 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  ved structure...
13d20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
13d30 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
13d40 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
13d50 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64       /// A stand
13d60 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72  ard SQLite retur
13d70 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  n code...       
13d80 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
13d90 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45  .        SQLiteE
13da0 72 72 6f 72 43 6f 64 65 20 78 4f 70 65 6e 28 0d  rrorCode xOpen(.
13db0 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
13dc0 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
13dd0 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50          ref IntP
13de0 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20  tr pCursor..    
13df0 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20          );....  
13e00 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
13e50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
13e60 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
13e70 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
13e80 20 20 20 20 2f 2f 2f 20 54 68 65 20 78 43 6c 6f      /// The xClo
13e90 73 65 20 6d 65 74 68 6f 64 20 63 6c 6f 73 65 73  se method closes
13ea0 20 61 20 63 75 72 73 6f 72 20 70 72 65 76 69 6f   a cursor previo
13eb0 75 73 6c 79 20 6f 70 65 6e 65 64 20 62 79 20 78  usly opened by x
13ec0 4f 70 65 6e 2e 20 54 68 65 0d 0a 20 20 20 20 20  Open. The..     
13ed0 20 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 63 6f     /// SQLite co
13ee0 72 65 20 77 69 6c 6c 20 61 6c 77 61 79 73 20 63  re will always c
13ef0 61 6c 6c 20 78 43 6c 6f 73 65 20 6f 6e 63 65 20  all xClose once 
13f00 66 6f 72 20 65 61 63 68 20 63 75 72 73 6f 72 20  for each cursor 
13f10 6f 70 65 6e 65 64 0d 0a 20 20 20 20 20 20 20 20  opened..        
13f20 2f 2f 2f 20 75 73 69 6e 67 20 78 4f 70 65 6e 2e  /// using xOpen.
13f30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
13f40 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
13f50 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20  // <para>..     
13f60 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68     /// This meth
13f70 6f 64 20 6d 75 73 74 20 72 65 6c 65 61 73 65 20  od must release 
13f80 61 6c 6c 20 72 65 73 6f 75 72 63 65 73 20 61 6c  all resources al
13f90 6c 6f 63 61 74 65 64 20 62 79 20 74 68 65 0d 0a  located by the..
13fa0 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 72 72          /// corr
13fb0 65 73 70 6f 6e 64 69 6e 67 20 78 4f 70 65 6e 20  esponding xOpen 
13fc0 63 61 6c 6c 2e 20 54 68 65 20 72 6f 75 74 69 6e  call. The routin
13fd0 65 20 77 69 6c 6c 20 6e 6f 74 20 62 65 20 63 61  e will not be ca
13fe0 6c 6c 65 64 20 61 67 61 69 6e 20 65 76 65 6e 0d  lled again even.
13ff0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 66 20  .        /// if 
14000 69 74 20 72 65 74 75 72 6e 73 20 61 6e 20 65 72  it returns an er
14010 72 6f 72 2e 20 54 68 65 20 53 51 4c 69 74 65 20  ror. The SQLite 
14020 63 6f 72 65 20 77 69 6c 6c 20 6e 6f 74 20 75 73  core will not us
14030 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  e the..        /
14040 2f 2f 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f  // sqlite3_vtab_
14050 63 75 72 73 6f 72 20 61 67 61 69 6e 20 61 66 74  cursor again aft
14060 65 72 20 69 74 20 68 61 73 20 62 65 65 6e 20 63  er it has been c
14070 6c 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20  losed...        
14080 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20  /// </para>..   
14090 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
140a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
140b0 20 78 43 6c 6f 73 65 20 6d 65 74 68 6f 64 20 69   xClose method i
140c0 73 20 72 65 71 75 69 72 65 64 20 66 6f 72 20 65  s required for e
140d0 76 65 72 79 20 76 69 72 74 75 61 6c 20 74 61 62  very virtual tab
140e0 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  le..        /// 
140f0 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d  implementation..
14100 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
14110 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
14120 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
14130 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
14140 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e   name="pCursor">
14150 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
14160 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
14170 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
14180 76 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69  vtab_cursor deri
14190 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  ved structure...
141a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
141b0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
141c0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
141d0 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64       /// A stand
141e0 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72  ard SQLite retur
141f0 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  n code...       
14200 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
14210 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45  .        SQLiteE
14220 72 72 6f 72 43 6f 64 65 20 78 43 6c 6f 73 65 28  rrorCode xClose(
14230 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
14240 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20  tPtr pCursor..  
14250 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a            );....
14260 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
14270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
142a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
142b0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
142c0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
142d0 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20    /// <para>..  
142e0 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d        /// This m
142f0 65 74 68 6f 64 20 62 65 67 69 6e 73 20 61 20 73  ethod begins a s
14300 65 61 72 63 68 20 6f 66 20 61 20 76 69 72 74 75  earch of a virtu
14310 61 6c 20 74 61 62 6c 65 2e 20 54 68 65 20 66 69  al table. The fi
14320 72 73 74 20 61 72 67 75 6d 65 6e 74 0d 0a 20 20  rst argument..  
14330 20 20 20 20 20 20 2f 2f 2f 20 69 73 20 61 20 63        /// is a c
14340 75 72 73 6f 72 20 6f 70 65 6e 65 64 20 62 79 20  ursor opened by 
14350 78 4f 70 65 6e 2e 20 54 68 65 20 6e 65 78 74 20  xOpen. The next 
14360 74 77 6f 20 61 72 67 75 6d 65 6e 74 20 64 65 66  two argument def
14370 69 6e 65 20 61 0d 0a 20 20 20 20 20 20 20 20 2f  ine a..        /
14380 2f 2f 20 70 61 72 74 69 63 75 6c 61 72 20 73 65  // particular se
14390 61 72 63 68 20 69 6e 64 65 78 20 70 72 65 76 69  arch index previ
143a0 6f 75 73 6c 79 20 63 68 6f 73 65 6e 20 62 79 20  ously chosen by 
143b0 78 42 65 73 74 49 6e 64 65 78 2e 20 54 68 65 0d  xBestIndex. The.
143c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 70 65  .        /// spe
143d0 63 69 66 69 63 20 6d 65 61 6e 69 6e 67 73 20 6f  cific meanings o
143e0 66 20 69 64 78 4e 75 6d 20 61 6e 64 20 69 64 78  f idxNum and idx
143f0 53 74 72 20 61 72 65 20 75 6e 69 6d 70 6f 72 74  Str are unimport
14400 61 6e 74 20 61 73 20 6c 6f 6e 67 20 61 73 0d 0a  ant as long as..
14410 20 20 20 20 20 20 20 20 2f 2f 2f 20 78 46 69 6c          /// xFil
14420 74 65 72 20 61 6e 64 20 78 42 65 73 74 49 6e 64  ter and xBestInd
14430 65 78 20 61 67 72 65 65 20 6f 6e 20 77 68 61 74  ex agree on what
14440 20 74 68 61 74 20 6d 65 61 6e 69 6e 67 20 69 73   that meaning is
14450 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
14460 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
14470 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
14480 20 20 20 20 2f 2f 2f 20 54 68 65 20 78 42 65 73      /// The xBes
14490 74 49 6e 64 65 78 20 66 75 6e 63 74 69 6f 6e 20  tIndex function 
144a0 6d 61 79 20 68 61 76 65 20 72 65 71 75 65 73 74  may have request
144b0 65 64 20 74 68 65 20 76 61 6c 75 65 73 20 6f 66  ed the values of
144c0 20 63 65 72 74 61 69 6e 0d 0a 20 20 20 20 20 20   certain..      
144d0 20 20 2f 2f 2f 20 65 78 70 72 65 73 73 69 6f 6e    /// expression
144e0 73 20 75 73 69 6e 67 20 74 68 65 20 61 43 6f 6e  s using the aCon
144f0 73 74 72 61 69 6e 74 55 73 61 67 65 5b 5d 2e 61  straintUsage[].a
14500 72 67 76 49 6e 64 65 78 20 76 61 6c 75 65 73 20  rgvIndex values 
14510 6f 66 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  of the..        
14520 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 69 6e 64 65  /// sqlite3_inde
14530 78 5f 69 6e 66 6f 20 73 74 72 75 63 74 75 72 65  x_info structure
14540 2e 20 54 68 6f 73 65 20 76 61 6c 75 65 73 20 61  . Those values a
14550 72 65 20 70 61 73 73 65 64 20 74 6f 20 78 46 69  re passed to xFi
14560 6c 74 65 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f  lter..        //
14570 2f 20 75 73 69 6e 67 20 74 68 65 20 61 72 67 63  / using the argc
14580 20 61 6e 64 20 61 72 67 76 20 70 61 72 61 6d 65   and argv parame
14590 74 65 72 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ters...        /
145a0 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20  // </para>..    
145b0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a      /// <para>..
145c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 49 66 20 74          /// If t
145d0 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
145e0 20 63 6f 6e 74 61 69 6e 73 20 6f 6e 65 20 6f 72   contains one or
145f0 20 6d 6f 72 65 20 72 6f 77 73 20 74 68 61 74 20   more rows that 
14600 6d 61 74 63 68 20 74 68 65 0d 0a 20 20 20 20 20  match the..     
14610 20 20 20 2f 2f 2f 20 73 65 61 72 63 68 20 63 72     /// search cr
14620 69 74 65 72 69 61 2c 20 74 68 65 6e 20 74 68 65  iteria, then the
14630 20 63 75 72 73 6f 72 20 6d 75 73 74 20 62 65 20   cursor must be 
14640 6c 65 66 74 20 70 6f 69 6e 74 20 61 74 20 74 68  left point at th
14650 65 20 66 69 72 73 74 0d 0a 20 20 20 20 20 20 20  e first..       
14660 20 2f 2f 2f 20 72 6f 77 2e 20 53 75 62 73 65 71   /// row. Subseq
14670 75 65 6e 74 20 63 61 6c 6c 73 20 74 6f 20 78 45  uent calls to xE
14680 6f 66 20 6d 75 73 74 20 72 65 74 75 72 6e 20 66  of must return f
14690 61 6c 73 65 20 28 7a 65 72 6f 29 2e 20 49 66 20  alse (zero). If 
146a0 74 68 65 72 65 0d 0a 20 20 20 20 20 20 20 20 2f  there..        /
146b0 2f 2f 20 61 72 65 20 6e 6f 20 72 6f 77 73 20 6d  // are no rows m
146c0 61 74 63 68 2c 20 74 68 65 6e 20 74 68 65 20 63  atch, then the c
146d0 75 72 73 6f 72 20 6d 75 73 74 20 62 65 20 6c 65  ursor must be le
146e0 66 74 20 69 6e 20 61 20 73 74 61 74 65 20 74 68  ft in a state th
146f0 61 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  at..        /// 
14700 77 69 6c 6c 20 63 61 75 73 65 20 74 68 65 20 78  will cause the x
14710 45 6f 66 20 74 6f 20 72 65 74 75 72 6e 20 74 72  Eof to return tr
14720 75 65 20 28 6e 6f 6e 2d 7a 65 72 6f 29 2e 20 54  ue (non-zero). T
14730 68 65 20 53 51 4c 69 74 65 20 65 6e 67 69 6e 65  he SQLite engine
14740 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69  ..        /// wi
14750 6c 6c 20 75 73 65 20 74 68 65 20 78 43 6f 6c 75  ll use the xColu
14760 6d 6e 20 61 6e 64 20 78 52 6f 77 69 64 20 6d 65  mn and xRowid me
14770 74 68 6f 64 73 20 74 6f 20 61 63 63 65 73 73 20  thods to access 
14780 74 68 61 74 20 72 6f 77 20 63 6f 6e 74 65 6e 74  that row content
14790 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  ...        /// T
147a0 68 65 20 78 4e 65 78 74 20 6d 65 74 68 6f 64 20  he xNext method 
147b0 77 69 6c 6c 20 62 65 20 75 73 65 64 20 74 6f 20  will be used to 
147c0 61 64 76 61 6e 63 65 20 74 6f 20 74 68 65 20 6e  advance to the n
147d0 65 78 74 20 72 6f 77 2e 0d 0a 20 20 20 20 20 20  ext row...      
147e0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
147f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
14800 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
14810 68 69 73 20 6d 65 74 68 6f 64 20 6d 75 73 74 20  his method must 
14820 72 65 74 75 72 6e 20 53 51 4c 49 54 45 5f 4f 4b  return SQLITE_OK
14830 20 69 66 20 73 75 63 63 65 73 73 66 75 6c 2c 20   if successful, 
14840 6f 72 20 61 6e 20 73 71 6c 69 74 65 20 65 72 72  or an sqlite err
14850 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  or..        /// 
14860 63 6f 64 65 20 69 66 20 61 6e 20 65 72 72 6f 72  code if an error
14870 20 6f 63 63 75 72 73 2e 0d 0a 20 20 20 20 20 20   occurs...      
14880 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
14890 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
148a0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
148b0 68 65 20 78 46 69 6c 74 65 72 20 6d 65 74 68 6f  he xFilter metho
148c0 64 20 69 73 20 72 65 71 75 69 72 65 64 20 66 6f  d is required fo
148d0 72 20 65 76 65 72 79 20 76 69 72 74 75 61 6c 20  r every virtual 
148e0 74 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f  table..        /
148f0 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  // implementatio
14900 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  n...        /// 
14910 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
14920 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
14930 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
14940 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f  ram name="pCurso
14950 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  r">..        ///
14960 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e   The native poin
14970 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74  ter to the sqlit
14980 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 64  e3_vtab_cursor d
14990 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65  erived structure
149a0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
149b0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
149c0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
149d0 3d 22 69 64 78 4e 75 6d 22 3e 0d 0a 20 20 20 20  ="idxNum">..    
149e0 20 20 20 20 2f 2f 2f 20 4e 75 6d 62 65 72 20 75      /// Number u
149f0 73 65 64 20 74 6f 20 68 65 6c 70 20 69 64 65 6e  sed to help iden
14a00 74 69 66 79 20 74 68 65 20 73 65 6c 65 63 74 65  tify the selecte
14a10 64 20 69 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20  d index...      
14a20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
14a30 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
14a40 61 6d 20 6e 61 6d 65 3d 22 69 64 78 53 74 72 22  am name="idxStr"
14a50 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
14a60 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
14a70 72 20 74 6f 20 74 68 65 20 55 54 46 2d 38 20 65  r to the UTF-8 e
14a80 6e 63 6f 64 65 64 20 73 74 72 69 6e 67 20 63 6f  ncoded string co
14a90 6e 74 61 69 6e 69 6e 67 20 74 68 65 0d 0a 20 20  ntaining the..  
14aa0 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 69 6e 67        /// string
14ab0 20 75 73 65 64 20 74 6f 20 68 65 6c 70 20 69 64   used to help id
14ac0 65 6e 74 69 66 79 20 74 68 65 20 73 65 6c 65 63  entify the selec
14ad0 74 65 64 20 69 6e 64 65 78 2e 0d 0a 20 20 20 20  ted index...    
14ae0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
14af0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
14b00 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 63 22  aram name="argc"
14b10 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
14b20 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 6e 61 74  he number of nat
14b30 69 76 65 20 70 6f 69 6e 74 65 72 73 20 74 6f 20  ive pointers to 
14b40 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 20 73 74  sqlite3_value st
14b50 72 75 63 74 75 72 65 73 20 73 70 65 63 69 66 69  ructures specifi
14b60 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
14b70 69 6e 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d  in <paramref nam
14b80 65 3d 22 61 72 67 76 22 20 2f 3e 2e 0d 0a 20 20  e="argv" />...  
14b90 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
14ba0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
14bb0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67  <param name="arg
14bc0 76 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  v">..        ///
14bd0 20 41 6e 20 61 72 72 61 79 20 6f 66 20 6e 61 74   An array of nat
14be0 69 76 65 20 70 6f 69 6e 74 65 72 73 20 74 6f 20  ive pointers to 
14bf0 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 20 73 74  sqlite3_value st
14c00 72 75 63 74 75 72 65 73 20 63 6f 6e 74 61 69 6e  ructures contain
14c10 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ing..        ///
14c20 20 66 69 6c 74 65 72 69 6e 67 20 63 72 69 74 65   filtering crite
14c30 72 69 61 20 66 6f 72 20 74 68 65 20 73 65 6c 65  ria for the sele
14c40 63 74 65 64 20 69 6e 64 65 78 2e 0d 0a 20 20 20  cted index...   
14c50 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
14c60 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
14c70 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
14c80 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64    /// A standard
14c90 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63   SQLite return c
14ca0 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode...        //
14cb0 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
14cc0 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f        SQLiteErro
14cd0 72 43 6f 64 65 20 78 46 69 6c 74 65 72 28 0d 0a  rCode xFilter(..
14ce0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
14cf0 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20  tr pCursor,..   
14d00 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 64 78           int idx
14d10 4e 75 6d 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  Num,..          
14d20 20 20 49 6e 74 50 74 72 20 69 64 78 53 74 72 2c    IntPtr idxStr,
14d30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
14d40 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20  t argc,..       
14d50 20 20 20 20 20 49 6e 74 50 74 72 20 61 72 67 76       IntPtr argv
14d60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b  ..            );
14d70 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
14d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14dc0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
14dd0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
14de0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
14df0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
14e00 65 20 78 4e 65 78 74 20 6d 65 74 68 6f 64 20 61  e xNext method a
14e10 64 76 61 6e 63 65 73 20 61 20 76 69 72 74 75 61  dvances a virtua
14e20 6c 20 74 61 62 6c 65 20 63 75 72 73 6f 72 20 74  l table cursor t
14e30 6f 20 74 68 65 20 6e 65 78 74 20 72 6f 77 20 6f  o the next row o
14e40 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61  f..        /// a
14e50 20 72 65 73 75 6c 74 20 73 65 74 20 69 6e 69 74   result set init
14e60 69 61 74 65 64 20 62 79 20 78 46 69 6c 74 65 72  iated by xFilter
14e70 2e 20 49 66 20 74 68 65 20 63 75 72 73 6f 72 20  . If the cursor 
14e80 69 73 20 61 6c 72 65 61 64 79 0d 0a 20 20 20 20  is already..    
14e90 20 20 20 20 2f 2f 2f 20 70 6f 69 6e 74 69 6e 67      /// pointing
14ea0 20 61 74 20 74 68 65 20 6c 61 73 74 20 72 6f 77   at the last row
14eb0 20 77 68 65 6e 20 74 68 69 73 20 72 6f 75 74 69   when this routi
14ec0 6e 65 20 69 73 20 63 61 6c 6c 65 64 2c 20 74 68  ne is called, th
14ed0 65 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  en the..        
14ee0 2f 2f 2f 20 63 75 72 73 6f 72 20 6e 6f 20 6c 6f  /// cursor no lo
14ef0 6e 67 65 72 20 70 6f 69 6e 74 73 20 74 6f 20 76  nger points to v
14f00 61 6c 69 64 20 64 61 74 61 20 61 6e 64 20 61 20  alid data and a 
14f10 73 75 62 73 65 71 75 65 6e 74 20 63 61 6c 6c 20  subsequent call 
14f20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
14f30 2f 2f 2f 20 78 45 6f 66 20 6d 65 74 68 6f 64 20  /// xEof method 
14f40 6d 75 73 74 20 72 65 74 75 72 6e 20 74 72 75 65  must return true
14f50 20 28 6e 6f 6e 2d 7a 65 72 6f 29 2e 20 49 66 20   (non-zero). If 
14f60 74 68 65 20 63 75 72 73 6f 72 20 69 73 0d 0a 20  the cursor is.. 
14f70 20 20 20 20 20 20 20 2f 2f 2f 20 73 75 63 63 65         /// succe
14f80 73 73 66 75 6c 6c 79 20 61 64 76 61 6e 63 65 64  ssfully advanced
14f90 20 74 6f 20 61 6e 6f 74 68 65 72 20 72 6f 77 20   to another row 
14fa0 6f 66 20 63 6f 6e 74 65 6e 74 2c 20 74 68 65 6e  of content, then
14fb0 20 73 75 62 73 65 71 75 65 6e 74 0d 0a 20 20 20   subsequent..   
14fc0 20 20 20 20 20 2f 2f 2f 20 63 61 6c 6c 73 20 74       /// calls t
14fd0 6f 20 78 45 6f 66 20 6d 75 73 74 20 72 65 74 75  o xEof must retu
14fe0 72 6e 20 66 61 6c 73 65 20 28 7a 65 72 6f 29 2e  rn false (zero).
14ff0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
15000 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
15010 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20  // <para>..     
15020 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68     /// This meth
15030 6f 64 20 6d 75 73 74 20 72 65 74 75 72 6e 20 53  od must return S
15040 51 4c 49 54 45 5f 4f 4b 20 69 66 20 73 75 63 63  QLITE_OK if succ
15050 65 73 73 66 75 6c 2c 20 6f 72 20 61 6e 20 73 71  essful, or an sq
15060 6c 69 74 65 20 65 72 72 6f 72 0d 0a 20 20 20 20  lite error..    
15070 20 20 20 20 2f 2f 2f 20 63 6f 64 65 20 69 66 20      /// code if 
15080 61 6e 20 65 72 72 6f 72 20 6f 63 63 75 72 73 2e  an error occurs.
15090 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
150a0 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
150b0 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20  // <para>..     
150c0 20 20 20 2f 2f 2f 20 54 68 65 20 78 4e 65 78 74     /// The xNext
150d0 20 6d 65 74 68 6f 64 20 69 73 20 72 65 71 75 69   method is requi
150e0 72 65 64 20 66 6f 72 20 65 76 65 72 79 20 76 69  red for every vi
150f0 72 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20  rtual table..   
15100 20 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65       /// impleme
15110 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ntation...      
15120 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
15130 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
15140 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
15150 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
15160 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20  pCursor">..     
15170 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
15180 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
15190 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75   sqlite3_vtab_cu
151a0 72 73 6f 72 20 64 65 72 69 76 65 64 20 73 74 72  rsor derived str
151b0 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ucture...       
151c0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
151d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
151e0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
151f0 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c  / A standard SQL
15200 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e  ite return code.
15210 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
15220 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
15230 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64    SQLiteErrorCod
15240 65 20 78 4e 65 78 74 28 0d 0a 20 20 20 20 20 20  e xNext(..      
15250 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75        IntPtr pCu
15260 72 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20  rsor..          
15270 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    );....        
15280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
152a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
152b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
152c0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
152d0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
152e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
152f0 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
15300 2f 20 54 68 65 20 78 45 6f 66 20 6d 65 74 68 6f  / The xEof metho
15310 64 20 6d 75 73 74 20 72 65 74 75 72 6e 20 66 61  d must return fa
15320 6c 73 65 20 28 7a 65 72 6f 29 20 69 66 20 74 68  lse (zero) if th
15330 65 20 73 70 65 63 69 66 69 65 64 20 63 75 72 73  e specified curs
15340 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  or..        /// 
15350 63 75 72 72 65 6e 74 6c 79 20 70 6f 69 6e 74 73  currently points
15360 20 74 6f 20 61 20 76 61 6c 69 64 20 72 6f 77 20   to a valid row 
15370 6f 66 20 64 61 74 61 2c 20 6f 72 20 74 72 75 65  of data, or true
15380 20 28 6e 6f 6e 2d 7a 65 72 6f 29 0d 0a 20 20 20   (non-zero)..   
15390 20 20 20 20 20 2f 2f 2f 20 6f 74 68 65 72 77 69       /// otherwi
153a0 73 65 2e 20 54 68 69 73 20 6d 65 74 68 6f 64 20  se. This method 
153b0 69 73 20 63 61 6c 6c 65 64 20 62 79 20 74 68 65  is called by the
153c0 20 53 51 4c 20 65 6e 67 69 6e 65 20 69 6d 6d 65   SQL engine imme
153d0 64 69 61 74 65 6c 79 0d 0a 20 20 20 20 20 20 20  diately..       
153e0 20 2f 2f 2f 20 61 66 74 65 72 20 65 61 63 68 20   /// after each 
153f0 78 46 69 6c 74 65 72 20 61 6e 64 20 78 4e 65 78  xFilter and xNex
15400 74 20 69 6e 76 6f 63 61 74 69 6f 6e 2e 0d 0a 20  t invocation... 
15410 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
15420 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
15430 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
15440 2f 2f 2f 20 54 68 65 20 78 45 6f 66 20 6d 65 74  /// The xEof met
15450 68 6f 64 20 69 73 20 72 65 71 75 69 72 65 64 20  hod is required 
15460 66 6f 72 20 65 76 65 72 79 20 76 69 72 74 75 61  for every virtua
15470 6c 20 74 61 62 6c 65 20 69 6d 70 6c 65 6d 65 6e  l table implemen
15480 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  tation...       
15490 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
154a0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
154b0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
154c0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
154d0 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20  Cursor">..      
154e0 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
154f0 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
15500 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72  sqlite3_vtab_cur
15510 73 6f 72 20 64 65 72 69 76 65 64 20 73 74 72 75  sor derived stru
15520 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  cture...        
15530 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
15540 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
15550 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
15560 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 6e 6f 20   Non-zero if no 
15570 6d 6f 72 65 20 72 6f 77 73 20 61 72 65 20 61 76  more rows are av
15580 61 69 6c 61 62 6c 65 3b 20 7a 65 72 6f 20 6f 74  ailable; zero ot
15590 68 65 72 77 69 73 65 2e 0d 0a 20 20 20 20 20 20  herwise...      
155a0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
155b0 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 78 45  ..        int xE
155c0 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  of(..           
155d0 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d   IntPtr pCursor.
155e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d  .            );.
155f0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
15600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15640 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
15650 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
15660 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
15670 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
15680 20 53 51 4c 69 74 65 20 63 6f 72 65 20 69 6e 76   SQLite core inv
15690 6f 6b 65 73 20 74 68 69 73 20 6d 65 74 68 6f 64  okes this method
156a0 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 66 69 6e   in order to fin
156b0 64 20 74 68 65 20 76 61 6c 75 65 20 66 6f 72 0d  d the value for.
156c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  .        /// the
156d0 20 4e 2d 74 68 20 63 6f 6c 75 6d 6e 20 6f 66 20   N-th column of 
156e0 74 68 65 20 63 75 72 72 65 6e 74 20 72 6f 77 2e  the current row.
156f0 20 4e 20 69 73 20 7a 65 72 6f 2d 62 61 73 65 64   N is zero-based
15700 20 73 6f 20 74 68 65 20 66 69 72 73 74 0d 0a 20   so the first.. 
15710 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6c 75 6d         /// colum
15720 6e 20 69 73 20 6e 75 6d 62 65 72 65 64 20 30 2e  n is numbered 0.
15730 20 54 68 65 20 78 43 6f 6c 75 6d 6e 20 6d 65 74   The xColumn met
15740 68 6f 64 20 6d 61 79 20 72 65 74 75 72 6e 20 69  hod may return i
15750 74 73 20 72 65 73 75 6c 74 20 62 61 63 6b 0d 0a  ts result back..
15760 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20 53          /// to S
15770 51 4c 69 74 65 20 75 73 69 6e 67 20 6f 6e 65 20  QLite using one 
15780 6f 66 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  of the following
15790 20 69 6e 74 65 72 66 61 63 65 3a 0d 0a 20 20 20   interface:..   
157a0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
157b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 63  ..        /// <c
157c0 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode>..        //
157d0 2f 20 20 20 20 20 73 71 6c 69 74 65 33 5f 72 65  /     sqlite3_re
157e0 73 75 6c 74 5f 62 6c 6f 62 28 29 0d 0a 20 20 20  sult_blob()..   
157f0 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 73 71 6c       ///     sql
15800 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62  ite3_result_doub
15810 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f  le()..        //
15820 2f 20 20 20 20 20 73 71 6c 69 74 65 33 5f 72 65  /     sqlite3_re
15830 73 75 6c 74 5f 69 6e 74 28 29 0d 0a 20 20 20 20  sult_int()..    
15840 20 20 20 20 2f 2f 2f 20 20 20 20 20 73 71 6c 69      ///     sqli
15850 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36 34  te3_result_int64
15860 28 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ()..        /// 
15870 20 20 20 20 73 71 6c 69 74 65 33 5f 72 65 73 75      sqlite3_resu
15880 6c 74 5f 6e 75 6c 6c 28 29 0d 0a 20 20 20 20 20  lt_null()..     
15890 20 20 20 2f 2f 2f 20 20 20 20 20 73 71 6c 69 74     ///     sqlit
158a0 65 33 5f 72 65 73 75 6c 74 5f 74 65 78 74 28 29  e3_result_text()
158b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20  ..        ///   
158c0 20 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74    sqlite3_result
158d0 5f 74 65 78 74 31 36 28 29 0d 0a 20 20 20 20 20  _text16()..     
158e0 20 20 20 2f 2f 2f 20 20 20 20 20 73 71 6c 69 74     ///     sqlit
158f0 65 33 5f 72 65 73 75 6c 74 5f 74 65 78 74 31 36  e3_result_text16
15900 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f  le()..        //
15910 2f 20 20 20 20 20 73 71 6c 69 74 65 33 5f 72 65  /     sqlite3_re
15920 73 75 6c 74 5f 74 65 78 74 31 36 62 65 28 29 0d  sult_text16be().
15930 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20  .        ///    
15940 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
15950 7a 65 72 6f 62 6c 6f 62 28 29 0d 0a 20 20 20 20  zeroblob()..    
15960 20 20 20 20 2f 2f 2f 20 3c 2f 63 6f 64 65 3e 0d      /// </code>.
15970 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
15980 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
15990 20 49 66 20 74 68 65 20 78 43 6f 6c 75 6d 6e 20   If the xColumn 
159a0 6d 65 74 68 6f 64 20 69 6d 70 6c 65 6d 65 6e 74  method implement
159b0 61 74 69 6f 6e 20 63 61 6c 6c 73 20 6e 6f 6e 65  ation calls none
159c0 20 6f 66 20 74 68 65 20 66 75 6e 63 74 69 6f 6e   of the function
159d0 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61  s..        /// a
159e0 62 6f 76 65 2c 20 74 68 65 6e 20 74 68 65 20 76  bove, then the v
159f0 61 6c 75 65 20 6f 66 20 74 68 65 20 63 6f 6c 75  alue of the colu
15a00 6d 6e 20 64 65 66 61 75 6c 74 73 20 74 6f 20 61  mn defaults to a
15a10 6e 20 53 51 4c 20 4e 55 4c 4c 2e 0d 0a 20 20 20  n SQL NULL...   
15a20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
15a30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
15a40 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
15a50 2f 20 54 6f 20 72 61 69 73 65 20 61 6e 20 65 72  / To raise an er
15a60 72 6f 72 2c 20 74 68 65 20 78 43 6f 6c 75 6d 6e  ror, the xColumn
15a70 20 6d 65 74 68 6f 64 20 73 68 6f 75 6c 64 20 75   method should u
15a80 73 65 20 6f 6e 65 20 6f 66 20 74 68 65 0d 0a 20  se one of the.. 
15a90 20 20 20 20 20 20 20 2f 2f 2f 20 72 65 73 75 6c         /// resul
15aa0 74 5f 74 65 78 74 28 29 20 6d 65 74 68 6f 64 73  t_text() methods
15ab0 20 74 6f 20 73 65 74 20 74 68 65 20 65 72 72 6f   to set the erro
15ac0 72 20 6d 65 73 73 61 67 65 20 74 65 78 74 2c 20  r message text, 
15ad0 74 68 65 6e 20 72 65 74 75 72 6e 20 61 6e 0d 0a  then return an..
15ae0 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 70 70 72          /// appr
15af0 6f 70 72 69 61 74 65 20 65 72 72 6f 72 20 63 6f  opriate error co
15b00 64 65 2e 20 54 68 65 20 78 43 6f 6c 75 6d 6e 20  de. The xColumn 
15b10 6d 65 74 68 6f 64 20 6d 75 73 74 20 72 65 74 75  method must retu
15b20 72 6e 20 53 51 4c 49 54 45 5f 4f 4b 20 6f 6e 0d  rn SQLITE_OK on.
15b30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 75 63  .        /// suc
15b40 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  cess...        /
15b50 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20  // </para>..    
15b60 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a      /// <para>..
15b70 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
15b80 78 43 6f 6c 75 6d 6e 20 6d 65 74 68 6f 64 20 69  xColumn method i
15b90 73 20 72 65 71 75 69 72 65 64 20 66 6f 72 20 65  s required for e
15ba0 76 65 72 79 20 76 69 72 74 75 61 6c 20 74 61 62  very virtual tab
15bb0 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  le..        /// 
15bc0 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d  implementation..
15bd0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
15be0 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
15bf0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
15c00 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
15c10 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e   name="pCursor">
15c20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
15c30 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
15c40 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
15c50 76 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69  vtab_cursor deri
15c60 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  ved structure...
15c70 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
15c80 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
15c90 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
15ca0 43 6f 6e 74 65 78 74 22 3e 0d 0a 20 20 20 20 20  Context">..     
15cb0 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
15cc0 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
15cd0 20 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74   sqlite3_context
15ce0 20 73 74 72 75 63 74 75 72 65 20 74 6f 20 62 65   structure to be
15cf0 20 75 73 65 64 0d 0a 20 20 20 20 20 20 20 20 2f   used..        /
15d00 2f 2f 20 66 6f 72 20 72 65 74 75 72 6e 69 6e 67  // for returning
15d10 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 63   the specified c
15d20 6f 6c 75 6d 6e 20 76 61 6c 75 65 20 74 6f 20 74  olumn value to t
15d30 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 0d 0a  he SQLite core..
15d40 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 69 62 72          /// libr
15d50 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary...        //
15d60 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
15d70 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
15d80 61 6d 65 3d 22 69 6e 64 65 78 22 3e 0d 0a 20 20  ame="index">..  
15d90 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 7a 65        /// The ze
15da0 72 6f 2d 62 61 73 65 64 20 69 6e 64 65 78 20 63  ro-based index c
15db0 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20  orresponding to 
15dc0 74 68 65 20 63 6f 6c 75 6d 6e 20 63 6f 6e 74 61  the column conta
15dd0 69 6e 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20  ining the..     
15de0 20 20 20 2f 2f 2f 20 76 61 6c 75 65 20 74 6f 20     /// value to 
15df0 62 65 20 72 65 74 75 72 6e 65 64 2e 0d 0a 20 20  be returned...  
15e00 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
15e10 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
15e20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
15e30 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72     /// A standar
15e40 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20  d SQLite return 
15e50 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  code...        /
15e60 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
15e70 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72         SQLiteErr
15e80 6f 72 43 6f 64 65 20 78 43 6f 6c 75 6d 6e 28 0d  orCode xColumn(.
15e90 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
15ea0 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20  Ptr pCursor,..  
15eb0 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
15ec0 20 70 43 6f 6e 74 65 78 74 2c 0d 0a 20 20 20 20   pContext,..    
15ed0 20 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65          int inde
15ee0 78 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  x..            )
15ef0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
15f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f40 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
15f50 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
15f60 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
15f70 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
15f80 20 73 75 63 63 65 73 73 66 75 6c 20 69 6e 76 6f   successful invo
15f90 63 61 74 69 6f 6e 20 6f 66 20 74 68 69 73 20 6d  cation of this m
15fa0 65 74 68 6f 64 20 77 69 6c 6c 20 63 61 75 73 65  ethod will cause
15fb0 20 2a 70 52 6f 77 69 64 20 74 6f 20 62 65 0d 0a   *pRowid to be..
15fc0 20 20 20 20 20 20 20 20 2f 2f 2f 20 66 69 6c 6c          /// fill
15fd0 65 64 20 77 69 74 68 20 74 68 65 20 72 6f 77 69  ed with the rowi
15fe0 64 20 6f 66 20 72 6f 77 20 74 68 61 74 20 74 68  d of row that th
15ff0 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  e virtual table 
16000 63 75 72 73 6f 72 20 70 43 75 72 20 69 73 0d 0a  cursor pCur is..
16010 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 75 72 72          /// curr
16020 65 6e 74 6c 79 20 70 6f 69 6e 74 69 6e 67 20 61  ently pointing a
16030 74 2e 20 54 68 69 73 20 6d 65 74 68 6f 64 20 72  t. This method r
16040 65 74 75 72 6e 73 20 53 51 4c 49 54 45 5f 4f 4b  eturns SQLITE_OK
16050 20 6f 6e 20 73 75 63 63 65 73 73 2e 20 49 74 0d   on success. It.
16060 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 72 65 74  .        /// ret
16070 75 72 6e 73 20 61 6e 20 61 70 70 72 6f 70 72 69  urns an appropri
16080 61 74 65 20 65 72 72 6f 72 20 63 6f 64 65 20 6f  ate error code o
16090 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20  n failure...    
160a0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d      /// </para>.
160b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
160c0 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
160d0 20 54 68 65 20 78 52 6f 77 69 64 20 6d 65 74 68   The xRowid meth
160e0 6f 64 20 69 73 20 72 65 71 75 69 72 65 64 20 66  od is required f
160f0 6f 72 20 65 76 65 72 79 20 76 69 72 74 75 61 6c  or every virtual
16100 20 74 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20   table..        
16110 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  /// implementati
16120 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  on...        ///
16130 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20   </para>..      
16140 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
16150 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
16160 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73  aram name="pCurs
16170 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  or">..        //
16180 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69  / The native poi
16190 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69  nter to the sqli
161a0 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20  te3_vtab_cursor 
161b0 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72  derived structur
161c0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
161d0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
161e0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
161f0 65 3d 22 72 6f 77 49 64 22 3e 0d 0a 20 20 20 20  e="rowId">..    
16200 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63      /// Upon suc
16210 63 65 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d  cess, this param
16220 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64  eter must be mod
16230 69 66 69 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e  ified to contain
16240 20 74 68 65 20 75 6e 69 71 75 65 0d 0a 20 20 20   the unique..   
16250 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65 67 65 72       /// integer
16260 20 72 6f 77 20 69 64 65 6e 74 69 66 69 65 72 20   row identifier 
16270 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20  for the current 
16280 72 6f 77 20 66 6f 72 20 74 68 65 20 73 70 65 63  row for the spec
16290 69 66 69 65 64 20 63 75 72 73 6f 72 2e 0d 0a 20  ified cursor... 
162a0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
162b0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
162c0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
162d0 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61      /// A standa
162e0 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e  rd SQLite return
162f0 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
16300 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
16310 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72          SQLiteEr
16320 72 6f 72 43 6f 64 65 20 78 52 6f 77 49 64 28 0d  rorCode xRowId(.
16330 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
16340 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20  Ptr pCursor,..  
16350 20 20 20 20 20 20 20 20 20 20 72 65 66 20 6c 6f            ref lo
16360 6e 67 20 72 6f 77 49 64 0d 0a 20 20 20 20 20 20  ng rowId..      
16370 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20        );....    
16380 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
16390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
163a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
163b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
163c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
163d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
163e0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
163f0 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
16400 20 20 2f 2f 2f 20 41 6c 6c 20 63 68 61 6e 67 65    /// All change
16410 73 20 74 6f 20 61 20 76 69 72 74 75 61 6c 20 74  s to a virtual t
16420 61 62 6c 65 20 61 72 65 20 6d 61 64 65 20 75 73  able are made us
16430 69 6e 67 20 74 68 65 20 78 55 70 64 61 74 65 20  ing the xUpdate 
16440 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
16450 20 2f 2f 2f 20 54 68 69 73 20 6f 6e 65 20 6d 65   /// This one me
16460 74 68 6f 64 20 63 61 6e 20 62 65 20 75 73 65 64  thod can be used
16470 20 74 6f 20 69 6e 73 65 72 74 2c 20 64 65 6c 65   to insert, dele
16480 74 65 2c 20 6f 72 20 75 70 64 61 74 65 2e 0d 0a  te, or update...
16490 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
164a0 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
164b0 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
164c0 20 2f 2f 2f 20 54 68 65 20 61 72 67 63 20 70 61   /// The argc pa
164d0 72 61 6d 65 74 65 72 20 73 70 65 63 69 66 69 65  rameter specifie
164e0 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  s the number of 
164f0 65 6e 74 72 69 65 73 20 69 6e 20 74 68 65 20 61  entries in the a
16500 72 67 76 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  rgv..        ///
16510 20 61 72 72 61 79 2e 20 54 68 65 20 76 61 6c 75   array. The valu
16520 65 20 6f 66 20 61 72 67 63 20 77 69 6c 6c 20 62  e of argc will b
16530 65 20 31 20 66 6f 72 20 61 20 70 75 72 65 20 64  e 1 for a pure d
16540 65 6c 65 74 65 20 6f 70 65 72 61 74 69 6f 6e 20  elete operation 
16550 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  or..        /// 
16560 4e 2b 32 20 66 6f 72 20 61 6e 20 69 6e 73 65 72  N+2 for an inser
16570 74 20 6f 72 20 72 65 70 6c 61 63 65 20 6f 72 20  t or replace or 
16580 75 70 64 61 74 65 20 77 68 65 72 65 20 4e 20 69  update where N i
16590 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 0d  s the number of.
165a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6c  .        /// col
165b0 75 6d 6e 73 20 69 6e 20 74 68 65 20 74 61 62 6c  umns in the tabl
165c0 65 2e 20 49 6e 20 74 68 65 20 70 72 65 76 69 6f  e. In the previo
165d0 75 73 20 73 65 6e 74 65 6e 63 65 2c 20 4e 20 69  us sentence, N i
165e0 6e 63 6c 75 64 65 73 20 61 6e 79 0d 0a 20 20 20  ncludes any..   
165f0 20 20 20 20 20 2f 2f 2f 20 68 69 64 64 65 6e 20       /// hidden 
16600 63 6f 6c 75 6d 6e 73 2e 0d 0a 20 20 20 20 20 20  columns...      
16610 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
16620 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
16630 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 45  >..        /// E
16640 76 65 72 79 20 61 72 67 76 20 65 6e 74 72 79 20  very argv entry 
16650 77 69 6c 6c 20 68 61 76 65 20 61 20 6e 6f 6e 2d  will have a non-
16660 4e 55 4c 4c 20 76 61 6c 75 65 20 69 6e 20 43 20  NULL value in C 
16670 62 75 74 20 6d 61 79 20 63 6f 6e 74 61 69 6e 0d  but may contain.
16680 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  .        /// the
16690 20 53 51 4c 20 76 61 6c 75 65 20 4e 55 4c 4c 2e   SQL value NULL.
166a0 20 49 6e 20 6f 74 68 65 72 20 77 6f 72 64 73 2c   In other words,
166b0 20 69 74 20 69 73 20 61 6c 77 61 79 73 20 74 72   it is always tr
166c0 75 65 20 74 68 61 74 0d 0a 20 20 20 20 20 20 20  ue that..       
166d0 20 2f 2f 2f 20 61 72 67 76 5b 69 5d 21 3d 30 20   /// argv[i]!=0 
166e0 66 6f 72 20 69 20 62 65 74 77 65 65 6e 20 30 20  for i between 0 
166f0 61 6e 64 20 61 72 67 63 2d 31 2e 20 48 6f 77 65  and argc-1. Howe
16700 76 65 72 2c 20 69 74 20 6d 69 67 68 74 20 62 65  ver, it might be
16710 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
16720 2f 20 63 61 73 65 20 74 68 61 74 20 73 71 6c 69  / case that sqli
16730 74 65 33 5f 76 61 6c 75 65 5f 74 79 70 65 28 61  te3_value_type(a
16740 72 67 76 5b 69 5d 29 3d 3d 53 51 4c 49 54 45 5f  rgv[i])==SQLITE_
16750 4e 55 4c 4c 2e 0d 0a 20 20 20 20 20 20 20 20 2f  NULL...        /
16760 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20  // </para>..    
16770 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a      /// <para>..
16780 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
16790 61 72 67 76 5b 30 5d 20 70 61 72 61 6d 65 74 65  argv[0] paramete
167a0 72 20 69 73 20 74 68 65 20 72 6f 77 69 64 20 6f  r is the rowid o
167b0 66 20 61 20 72 6f 77 20 69 6e 20 74 68 65 20 76  f a row in the v
167c0 69 72 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20  irtual table..  
167d0 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20 62 65 20        /// to be 
167e0 64 65 6c 65 74 65 64 2e 20 49 66 20 61 72 67 76  deleted. If argv
167f0 5b 30 5d 20 69 73 20 61 6e 20 53 51 4c 20 4e 55  [0] is an SQL NU
16800 4c 4c 2c 20 74 68 65 6e 20 6e 6f 20 64 65 6c 65  LL, then no dele
16810 74 69 6f 6e 20 6f 63 63 75 72 73 2e 0d 0a 20 20  tion occurs...  
16820 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
16830 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
16840 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
16850 2f 2f 20 54 68 65 20 61 72 67 76 5b 31 5d 20 70  // The argv[1] p
16860 61 72 61 6d 65 74 65 72 20 69 73 20 74 68 65 20  arameter is the 
16870 72 6f 77 69 64 20 6f 66 20 61 20 6e 65 77 20 72  rowid of a new r
16880 6f 77 20 74 6f 20 62 65 20 69 6e 73 65 72 74 65  ow to be inserte
16890 64 20 69 6e 74 6f 0d 0a 20 20 20 20 20 20 20 20  d into..        
168a0 2f 2f 2f 20 74 68 65 20 76 69 72 74 75 61 6c 20  /// the virtual 
168b0 74 61 62 6c 65 2e 20 49 66 20 61 72 67 76 5b 31  table. If argv[1
168c0 5d 20 69 73 20 61 6e 20 53 51 4c 20 4e 55 4c 4c  ] is an SQL NULL
168d0 2c 20 74 68 65 6e 20 74 68 65 0d 0a 20 20 20 20  , then the..    
168e0 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e      /// implemen
168f0 74 61 74 69 6f 6e 20 6d 75 73 74 20 63 68 6f 6f  tation must choo
16900 73 65 20 61 20 72 6f 77 69 64 20 66 6f 72 20 74  se a rowid for t
16910 68 65 20 6e 65 77 6c 79 20 69 6e 73 65 72 74 65  he newly inserte
16920 64 20 72 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20  d row...        
16930 2f 2f 2f 20 53 75 62 73 65 71 75 65 6e 74 20 61  /// Subsequent a
16940 72 67 76 5b 5d 20 65 6e 74 72 69 65 73 20 63 6f  rgv[] entries co
16950 6e 74 61 69 6e 20 76 61 6c 75 65 73 20 6f 66 20  ntain values of 
16960 74 68 65 20 63 6f 6c 75 6d 6e 73 20 6f 66 20 74  the columns of t
16970 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
16980 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2c 20 69  virtual table, i
16990 6e 20 74 68 65 20 6f 72 64 65 72 20 74 68 61 74  n the order that
169a0 20 74 68 65 20 63 6f 6c 75 6d 6e 73 20 77 65 72   the columns wer
169b0 65 20 64 65 63 6c 61 72 65 64 2e 20 54 68 65 0d  e declared. The.
169c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 75 6d  .        /// num
169d0 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 77  ber of columns w
169e0 69 6c 6c 20 6d 61 74 63 68 20 74 68 65 20 74 61  ill match the ta
169f0 62 6c 65 20 64 65 63 6c 61 72 61 74 69 6f 6e 20  ble declaration 
16a00 74 68 61 74 20 74 68 65 0d 0a 20 20 20 20 20 20  that the..      
16a10 20 20 2f 2f 2f 20 78 43 6f 6e 6e 65 63 74 20 6f    /// xConnect o
16a20 72 20 78 43 72 65 61 74 65 20 6d 65 74 68 6f 64  r xCreate method
16a30 20 6d 61 64 65 20 75 73 69 6e 67 20 74 68 65 20   made using the 
16a40 73 71 6c 69 74 65 33 5f 64 65 63 6c 61 72 65 5f  sqlite3_declare_
16a50 76 74 61 62 28 29 0d 0a 20 20 20 20 20 20 20 20  vtab()..        
16a60 2f 2f 2f 20 63 61 6c 6c 2e 20 41 6c 6c 20 68 69  /// call. All hi
16a70 64 64 65 6e 20 63 6f 6c 75 6d 6e 73 20 61 72 65  dden columns are
16a80 20 69 6e 63 6c 75 64 65 64 2e 0d 0a 20 20 20 20   included...    
16a90 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d      /// </para>.
16aa0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
16ab0 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
16ac0 20 57 68 65 6e 20 64 6f 69 6e 67 20 61 6e 20 69   When doing an i
16ad0 6e 73 65 72 74 20 77 69 74 68 6f 75 74 20 61 20  nsert without a 
16ae0 72 6f 77 69 64 20 28 61 72 67 63 3e 31 2c 20 61  rowid (argc>1, a
16af0 72 67 76 5b 31 5d 20 69 73 20 61 6e 20 53 51 4c  rgv[1] is an SQL
16b00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 55  ..        /// NU
16b10 4c 4c 29 2c 20 74 68 65 20 69 6d 70 6c 65 6d 65  LL), the impleme
16b20 6e 74 61 74 69 6f 6e 20 6d 75 73 74 20 73 65 74  ntation must set
16b30 20 2a 70 52 6f 77 69 64 20 74 6f 20 74 68 65 20   *pRowid to the 
16b40 72 6f 77 69 64 20 6f 66 20 74 68 65 0d 0a 20 20  rowid of the..  
16b50 20 20 20 20 20 20 2f 2f 2f 20 6e 65 77 6c 79 20        /// newly 
16b60 69 6e 73 65 72 74 65 64 20 72 6f 77 3b 20 74 68  inserted row; th
16b70 69 73 20 77 69 6c 6c 20 62 65 63 6f 6d 65 20 74  is will become t
16b80 68 65 20 76 61 6c 75 65 20 72 65 74 75 72 6e 65  he value returne
16b90 64 20 62 79 20 74 68 65 0d 0a 20 20 20 20 20 20  d by the..      
16ba0 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 6c 61    /// sqlite3_la
16bb0 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28  st_insert_rowid(
16bc0 29 20 66 75 6e 63 74 69 6f 6e 2e 20 53 65 74 74  ) function. Sett
16bd0 69 6e 67 20 74 68 69 73 20 76 61 6c 75 65 20 69  ing this value i
16be0 6e 20 61 6c 6c 20 74 68 65 0d 0a 20 20 20 20 20  n all the..     
16bf0 20 20 20 2f 2f 2f 20 6f 74 68 65 72 20 63 61 73     /// other cas
16c00 65 73 20 69 73 20 61 20 68 61 72 6d 6c 65 73 73  es is a harmless
16c10 20 6e 6f 2d 6f 70 3b 20 74 68 65 20 53 51 4c 69   no-op; the SQLi
16c20 74 65 20 65 6e 67 69 6e 65 20 69 67 6e 6f 72 65  te engine ignore
16c30 73 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  s the..        /
16c40 2f 2f 20 2a 70 52 6f 77 69 64 20 72 65 74 75 72  // *pRowid retur
16c50 6e 20 76 61 6c 75 65 20 69 66 20 61 72 67 63 3d  n value if argc=
16c60 3d 31 20 6f 72 20 61 72 67 76 5b 31 5d 20 69 73  =1 or argv[1] is
16c70 20 6e 6f 74 20 61 6e 20 53 51 4c 20 4e 55 4c 4c   not an SQL NULL
16c80 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
16c90 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
16ca0 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
16cb0 20 20 20 20 2f 2f 2f 20 45 61 63 68 20 63 61 6c      /// Each cal
16cc0 6c 20 74 6f 20 78 55 70 64 61 74 65 20 77 69 6c  l to xUpdate wil
16cd0 6c 20 66 61 6c 6c 20 69 6e 74 6f 20 6f 6e 65 20  l fall into one 
16ce0 6f 66 20 63 61 73 65 73 20 73 68 6f 77 6e 20 62  of cases shown b
16cf0 65 6c 6f 77 2e 20 4e 6f 74 65 0d 0a 20 20 20 20  elow. Note..    
16d00 20 20 20 20 2f 2f 2f 20 74 68 61 74 20 72 65 66      /// that ref
16d10 65 72 65 6e 63 65 73 20 74 6f 20 61 72 67 76 5b  erences to argv[
16d20 69 5d 20 6d 65 61 6e 20 74 68 65 20 53 51 4c 20  i] mean the SQL 
16d30 76 61 6c 75 65 20 68 65 6c 64 20 77 69 74 68 69  value held withi
16d40 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  n the..        /
16d50 2f 2f 20 61 72 67 76 5b 69 5d 20 6f 62 6a 65 63  // argv[i] objec
16d60 74 2c 20 6e 6f 74 20 74 68 65 20 61 72 67 76 5b  t, not the argv[
16d70 69 5d 20 6f 62 6a 65 63 74 20 69 74 73 65 6c 66  i] object itself
16d80 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
16d90 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
16da0 2f 2f 2f 20 3c 63 6f 64 65 3e 0d 0a 20 20 20 20  /// <code>..    
16db0 20 20 20 20 2f 2f 2f 20 20 20 20 20 61 72 67 63      ///     argc
16dc0 20 3d 20 31 0d 0a 20 20 20 20 20 20 20 20 2f 2f   = 1..        //
16dd0 2f 20 3c 2f 63 6f 64 65 3e 0d 0a 20 20 20 20 20  / </code>..     
16de0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20     /// <para>.. 
16df0 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20         ///      
16e00 20 20 20 54 68 65 20 73 69 6e 67 6c 65 20 72 6f     The single ro
16e10 77 20 77 69 74 68 20 72 6f 77 69 64 20 65 71 75  w with rowid equ
16e20 61 6c 20 74 6f 20 61 72 67 76 5b 30 5d 20 69 73  al to argv[0] is
16e30 20 64 65 6c 65 74 65 64 2e 20 4e 6f 0d 0a 20 20   deleted. No..  
16e40 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20        ///       
16e50 20 20 69 6e 73 65 72 74 20 6f 63 63 75 72 73 2e    insert occurs.
16e60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
16e70 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
16e80 2f 2f 20 3c 63 6f 64 65 3e 0d 0a 20 20 20 20 20  // <code>..     
16e90 20 20 20 2f 2f 2f 20 20 20 20 20 61 72 67 63 20     ///     argc 
16ea0 3e 20 31 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  > 1..        ///
16eb0 20 20 20 20 20 61 72 67 76 5b 30 5d 20 3d 20 4e       argv[0] = N
16ec0 55 4c 4c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ULL..        ///
16ed0 20 3c 2f 63 6f 64 65 3e 0d 0a 20 20 20 20 20 20   </code>..      
16ee0 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20    /// <para>..  
16ef0 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20        ///       
16f00 20 20 41 20 6e 65 77 20 72 6f 77 20 69 73 20 69    A new row is i
16f10 6e 73 65 72 74 65 64 20 77 69 74 68 20 61 20 72  nserted with a r
16f20 6f 77 69 64 20 61 72 67 76 5b 31 5d 20 61 6e 64  owid argv[1] and
16f30 20 63 6f 6c 75 6d 6e 0d 0a 20 20 20 20 20 20 20   column..       
16f40 20 2f 2f 2f 20 20 20 20 20 20 20 20 20 76 61 6c   ///         val
16f50 75 65 73 20 69 6e 20 61 72 67 76 5b 32 5d 20 61  ues in argv[2] a
16f60 6e 64 20 66 6f 6c 6c 6f 77 69 6e 67 2e 20 49 66  nd following. If
16f70 20 61 72 67 76 5b 31 5d 20 69 73 20 61 6e 20 53   argv[1] is an S
16f80 51 4c 20 4e 55 4c 4c 2c 0d 0a 20 20 20 20 20 20  QL NULL,..      
16f90 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20 74 68    ///         th
16fa0 65 20 61 20 6e 65 77 20 75 6e 69 71 75 65 20 72  e a new unique r
16fb0 6f 77 69 64 20 69 73 20 67 65 6e 65 72 61 74 65  owid is generate
16fc0 64 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e  d automatically.
16fd0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
16fe0 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
16ff0 2f 2f 20 3c 63 6f 64 65 3e 0d 0a 20 20 20 20 20  // <code>..     
17000 20 20 20 2f 2f 2f 20 20 20 20 20 61 72 67 63 20     ///     argc 
17010 3e 20 31 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  > 1..        ///
17020 20 20 20 20 20 61 72 67 76 5b 30 5d 20 3f 20 4e       argv[0] ? N
17030 55 4c 4c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ULL..        ///
17040 20 20 20 20 20 61 72 67 76 5b 30 5d 20 3d 20 61       argv[0] = a
17050 72 67 76 5b 31 5d 0d 0a 20 20 20 20 20 20 20 20  rgv[1]..        
17060 2f 2f 2f 20 3c 2f 63 6f 64 65 3e 0d 0a 20 20 20  /// </code>..   
17070 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
17080 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20  .        ///    
17090 20 20 20 20 20 54 68 65 20 72 6f 77 20 77 69 74       The row wit
170a0 68 20 72 6f 77 69 64 20 61 72 67 76 5b 30 5d 20  h rowid argv[0] 
170b0 69 73 20 75 70 64 61 74 65 64 20 77 69 74 68 20  is updated with 
170c0 6e 65 77 20 76 61 6c 75 65 73 20 69 6e 0d 0a 20  new values in.. 
170d0 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20         ///      
170e0 20 20 20 61 72 67 76 5b 32 5d 20 61 6e 64 20 66     argv[2] and f
170f0 6f 6c 6c 6f 77 69 6e 67 20 70 61 72 61 6d 65 74  ollowing paramet
17100 65 72 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ers...        //
17110 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20  / </para>..     
17120 20 20 20 2f 2f 2f 20 3c 63 6f 64 65 3e 0d 0a 20     /// <code>.. 
17130 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 61         ///     a
17140 72 67 63 20 3e 20 31 0d 0a 20 20 20 20 20 20 20  rgc > 1..       
17150 20 2f 2f 2f 20 20 20 20 20 61 72 67 76 5b 30 5d   ///     argv[0]
17160 20 3f 20 4e 55 4c 4c 0d 0a 20 20 20 20 20 20 20   ? NULL..       
17170 20 2f 2f 2f 20 20 20 20 20 61 72 67 76 5b 30 5d   ///     argv[0]
17180 20 3f 20 61 72 67 76 5b 31 5d 0d 0a 20 20 20 20   ? argv[1]..    
17190 20 20 20 20 2f 2f 2f 20 3c 2f 63 6f 64 65 3e 0d      /// </code>.
171a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
171b0 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
171c0 20 20 20 20 20 20 20 20 20 54 68 65 20 72 6f 77           The row
171d0 20 77 69 74 68 20 72 6f 77 69 64 20 61 72 67 76   with rowid argv
171e0 5b 30 5d 20 69 73 20 75 70 64 61 74 65 64 20 77  [0] is updated w
171f0 69 74 68 20 72 6f 77 69 64 20 61 72 67 76 5b 31  ith rowid argv[1
17200 5d 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20  ]..        ///  
17210 20 20 20 20 20 20 20 61 6e 64 20 6e 65 77 20 76         and new v
17220 61 6c 75 65 73 20 69 6e 20 61 72 67 76 5b 32 5d  alues in argv[2]
17230 20 61 6e 64 20 66 6f 6c 6c 6f 77 69 6e 67 20 70   and following p
17240 61 72 61 6d 65 74 65 72 73 2e 20 54 68 69 73 0d  arameters. This.
17250 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20  .        ///    
17260 20 20 20 20 20 77 69 6c 6c 20 6f 63 63 75 72 20       will occur 
17270 77 68 65 6e 20 61 6e 20 53 51 4c 20 73 74 61 74  when an SQL stat
17280 65 6d 65 6e 74 20 75 70 64 61 74 65 73 20 61 20  ement updates a 
17290 72 6f 77 69 64 2c 20 61 73 20 69 6e 0d 0a 20 20  rowid, as in..  
172a0 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20        ///       
172b0 20 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 3a    the statement:
172c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
172d0 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
172e0 2f 2f 20 3c 63 6f 64 65 3e 0d 0a 20 20 20 20 20  // <code>..     
172f0 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20 20     ///          
17300 20 20 20 55 50 44 41 54 45 20 74 61 62 6c 65 20     UPDATE table 
17310 53 45 54 20 72 6f 77 69 64 3d 72 6f 77 69 64 2b  SET rowid=rowid+
17320 31 20 57 48 45 52 45 20 2e 2e 2e 3b 0d 0a 20 20  1 WHERE ...;..  
17330 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 63 6f 64 65        /// </code
17340 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
17350 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
17360 2f 2f 20 54 68 65 20 78 55 70 64 61 74 65 20 6d  // The xUpdate m
17370 65 74 68 6f 64 20 6d 75 73 74 20 72 65 74 75 72  ethod must retur
17380 6e 20 53 51 4c 49 54 45 5f 4f 4b 20 69 66 20 61  n SQLITE_OK if a
17390 6e 64 20 6f 6e 6c 79 20 69 66 20 69 74 20 69 73  nd only if it is
173a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 75  ..        /// su
173b0 63 63 65 73 73 66 75 6c 2e 20 49 66 20 61 20 66  ccessful. If a f
173c0 61 69 6c 75 72 65 20 6f 63 63 75 72 73 2c 20 74  ailure occurs, t
173d0 68 65 20 78 55 70 64 61 74 65 20 6d 75 73 74 20  he xUpdate must 
173e0 72 65 74 75 72 6e 20 61 6e 0d 0a 20 20 20 20 20  return an..     
173f0 20 20 20 2f 2f 2f 20 61 70 70 72 6f 70 72 69 61     /// appropria
17400 74 65 20 65 72 72 6f 72 20 63 6f 64 65 2e 20 4f  te error code. O
17410 6e 20 61 20 66 61 69 6c 75 72 65 2c 20 74 68 65  n a failure, the
17420 20 70 56 54 61 62 2d 3e 7a 45 72 72 4d 73 67 20   pVTab->zErrMsg 
17430 65 6c 65 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20  element..       
17440 20 2f 2f 2f 20 6d 61 79 20 6f 70 74 69 6f 6e 61   /// may optiona
17450 6c 6c 79 20 62 65 20 72 65 70 6c 61 63 65 64 20  lly be replaced 
17460 77 69 74 68 20 65 72 72 6f 72 20 6d 65 73 73 61  with error messa
17470 67 65 20 74 65 78 74 20 73 74 6f 72 65 64 20 69  ge text stored i
17480 6e 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20  n memory..      
17490 20 20 2f 2f 2f 20 61 6c 6c 6f 63 61 74 65 64 20    /// allocated 
174a0 66 72 6f 6d 20 53 51 4c 69 74 65 20 75 73 69 6e  from SQLite usin
174b0 67 20 66 75 6e 63 74 69 6f 6e 73 20 73 75 63 68  g functions such
174c0 20 61 73 20 73 71 6c 69 74 65 33 5f 6d 70 72 69   as sqlite3_mpri
174d0 6e 74 66 28 29 20 6f 72 0d 0a 20 20 20 20 20 20  ntf() or..      
174e0 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 6d 61    /// sqlite3_ma
174f0 6c 6c 6f 63 28 29 2e 0d 0a 20 20 20 20 20 20 20  lloc()...       
17500 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
17510 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
17520 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 49 66  ..        /// If
17530 20 74 68 65 20 78 55 70 64 61 74 65 20 6d 65 74   the xUpdate met
17540 68 6f 64 20 76 69 6f 6c 61 74 65 73 20 73 6f 6d  hod violates som
17550 65 20 63 6f 6e 73 74 72 61 69 6e 74 20 6f 66 20  e constraint of 
17560 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c  the virtual tabl
17570 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 28  e..        /// (
17580 69 6e 63 6c 75 64 69 6e 67 2c 20 62 75 74 20 6e  including, but n
17590 6f 74 20 6c 69 6d 69 74 65 64 20 74 6f 2c 20 61  ot limited to, a
175a0 74 74 65 6d 70 74 69 6e 67 20 74 6f 20 73 74 6f  ttempting to sto
175b0 72 65 20 61 20 76 61 6c 75 65 20 6f 66 20 74 68  re a value of th
175c0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77  e..        /// w
175d0 72 6f 6e 67 20 64 61 74 61 74 79 70 65 2c 20 61  rong datatype, a
175e0 74 74 65 6d 70 74 69 6e 67 20 74 6f 20 73 74 6f  ttempting to sto
175f0 72 65 20 61 20 76 61 6c 75 65 20 74 68 61 74 20  re a value that 
17600 69 73 20 74 6f 6f 20 6c 61 72 67 65 20 6f 72 0d  is too large or.
17610 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 6f 6f  .        /// too
17620 20 73 6d 61 6c 6c 2c 20 6f 72 20 61 74 74 65 6d   small, or attem
17630 70 74 69 6e 67 20 74 6f 20 63 68 61 6e 67 65 20  pting to change 
17640 61 20 72 65 61 64 2d 6f 6e 6c 79 20 76 61 6c 75  a read-only valu
17650 65 29 20 74 68 65 6e 20 74 68 65 0d 0a 20 20 20  e) then the..   
17660 20 20 20 20 20 2f 2f 2f 20 78 55 70 64 61 74 65       /// xUpdate
17670 20 6d 75 73 74 20 66 61 69 6c 20 77 69 74 68 20   must fail with 
17680 61 6e 20 61 70 70 72 6f 70 72 69 61 74 65 20 65  an appropriate e
17690 72 72 6f 72 20 63 6f 64 65 2e 0d 0a 20 20 20 20  rror code...    
176a0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d      /// </para>.
176b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
176c0 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
176d0 20 54 68 65 72 65 20 6d 69 67 68 74 20 62 65 20   There might be 
176e0 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 73 71 6c 69  one or more sqli
176f0 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20  te3_vtab_cursor 
17700 6f 62 6a 65 63 74 73 20 6f 70 65 6e 20 61 6e 64  objects open and
17710 20 69 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   in..        ///
17720 20 75 73 65 20 6f 6e 20 74 68 65 20 76 69 72 74   use on the virt
17730 75 61 6c 20 74 61 62 6c 65 20 69 6e 73 74 61 6e  ual table instan
17740 63 65 20 61 6e 64 20 70 65 72 68 61 70 73 20 65  ce and perhaps e
17750 76 65 6e 20 6f 6e 20 74 68 65 20 72 6f 77 20 6f  ven on the row o
17760 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  f..        /// t
17770 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
17780 20 77 68 65 6e 20 74 68 65 20 78 55 70 64 61 74   when the xUpdat
17790 65 20 6d 65 74 68 6f 64 20 69 73 20 69 6e 76 6f  e method is invo
177a0 6b 65 64 2e 20 54 68 65 0d 0a 20 20 20 20 20 20  ked. The..      
177b0 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74 61    /// implementa
177c0 74 69 6f 6e 20 6f 66 20 78 55 70 64 61 74 65 20  tion of xUpdate 
177d0 6d 75 73 74 20 62 65 20 70 72 65 70 61 72 65 64  must be prepared
177e0 20 66 6f 72 20 61 74 74 65 6d 70 74 73 20 74 6f   for attempts to
177f0 20 64 65 6c 65 74 65 0d 0a 20 20 20 20 20 20 20   delete..       
17800 20 2f 2f 2f 20 6f 72 20 6d 6f 64 69 66 79 20 72   /// or modify r
17810 6f 77 73 20 6f 66 20 74 68 65 20 74 61 62 6c 65  ows of the table
17820 20 6f 75 74 20 66 72 6f 6d 20 6f 74 68 65 72 20   out from other 
17830 65 78 69 73 74 69 6e 67 20 63 75 72 73 6f 72 73  existing cursors
17840 2e 20 49 66 20 74 68 65 0d 0a 20 20 20 20 20 20  . If the..      
17850 20 20 2f 2f 2f 20 76 69 72 74 75 61 6c 20 74 61    /// virtual ta
17860 62 6c 65 20 63 61 6e 6e 6f 74 20 61 63 63 6f 6d  ble cannot accom
17870 6d 6f 64 61 74 65 20 73 75 63 68 20 63 68 61 6e  modate such chan
17880 67 65 73 2c 20 74 68 65 20 78 55 70 64 61 74 65  ges, the xUpdate
17890 20 6d 65 74 68 6f 64 0d 0a 20 20 20 20 20 20 20   method..       
178a0 20 2f 2f 2f 20 6d 75 73 74 20 72 65 74 75 72 6e   /// must return
178b0 20 61 6e 20 65 72 72 6f 72 20 63 6f 64 65 2e 0d   an error code..
178c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
178d0 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
178e0 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
178f0 20 20 2f 2f 2f 20 54 68 65 20 78 55 70 64 61 74    /// The xUpdat
17900 65 20 6d 65 74 68 6f 64 20 69 73 20 6f 70 74 69  e method is opti
17910 6f 6e 61 6c 2e 20 49 66 20 74 68 65 20 78 55 70  onal. If the xUp
17920 64 61 74 65 20 70 6f 69 6e 74 65 72 20 69 6e 20  date pointer in 
17930 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
17940 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20   sqlite3_module 
17950 66 6f 72 20 61 20 76 69 72 74 75 61 6c 20 74 61  for a virtual ta
17960 62 6c 65 20 69 73 20 61 20 4e 55 4c 4c 20 70 6f  ble is a NULL po
17970 69 6e 74 65 72 2c 20 74 68 65 6e 20 74 68 65 0d  inter, then the.
17980 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 69 72  .        /// vir
17990 74 75 61 6c 20 74 61 62 6c 65 20 69 73 20 72 65  tual table is re
179a0 61 64 2d 6f 6e 6c 79 2e 0d 0a 20 20 20 20 20 20  ad-only...      
179b0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
179c0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
179d0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
179e0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
179f0 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20  pVtab">..       
17a00 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
17a10 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73  pointer to the s
17a20 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69  qlite3_vtab deri
17a30 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  ved structure...
17a40 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
17a50 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
17a60 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61  / <param name="a
17a70 72 67 63 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  rgc">..        /
17a80 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66  // The number of
17a90 20 6e 65 77 20 6f 72 20 6d 6f 64 69 66 69 65 64   new or modified
17aa0 20 63 6f 6c 75 6d 6e 20 76 61 6c 75 65 73 20 63   column values c
17ab0 6f 6e 74 61 69 6e 65 64 20 69 6e 0d 0a 20 20 20  ontained in..   
17ac0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 72       /// <paramr
17ad0 65 66 20 6e 61 6d 65 3d 22 61 72 67 76 22 20 2f  ef name="argv" /
17ae0 3e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  >...        /// 
17af0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
17b00 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
17b10 65 3d 22 61 72 67 76 22 3e 0d 0a 20 20 20 20 20  e="argv">..     
17b20 20 20 20 2f 2f 2f 20 54 68 65 20 61 72 72 61 79     /// The array
17b30 20 6f 66 20 6e 61 74 69 76 65 20 70 6f 69 6e 74   of native point
17b40 65 72 73 20 74 6f 20 73 71 6c 69 74 65 33 5f 76  ers to sqlite3_v
17b50 61 6c 75 65 20 73 74 72 75 63 74 75 72 65 73 20  alue structures 
17b60 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20 20 20  containing..    
17b70 20 20 20 20 2f 2f 2f 20 74 68 65 20 6e 65 77 20      /// the new 
17b80 6f 72 20 6d 6f 64 69 66 69 65 64 20 63 6f 6c 75  or modified colu
17b90 6d 6e 20 76 61 6c 75 65 73 2c 20 69 66 20 61 6e  mn values, if an
17ba0 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y...        /// 
17bb0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
17bc0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
17bd0 65 3d 22 72 6f 77 49 64 22 3e 0d 0a 20 20 20 20  e="rowId">..    
17be0 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63      /// Upon suc
17bf0 63 65 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d  cess, this param
17c00 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64  eter must be mod
17c10 69 66 69 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e  ified to contain
17c20 20 74 68 65 20 75 6e 69 71 75 65 0d 0a 20 20 20   the unique..   
17c30 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65 67 65 72       /// integer
17c40 20 72 6f 77 20 69 64 65 6e 74 69 66 69 65 72 20   row identifier 
17c50 66 6f 72 20 74 68 65 20 72 6f 77 20 74 68 61 74  for the row that
17c60 20 77 61 73 20 69 6e 73 65 72 74 65 64 2c 20 69   was inserted, i
17c70 66 20 61 6e 79 2e 0d 0a 20 20 20 20 20 20 20 20  f any...        
17c80 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
17c90 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
17ca0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
17cb0 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69   A standard SQLi
17cc0 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d  te return code..
17cd0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
17ce0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
17cf0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
17d00 20 78 55 70 64 61 74 65 28 0d 0a 20 20 20 20 20   xUpdate(..     
17d10 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
17d20 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  tab,..          
17d30 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20    int argc,..   
17d40 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
17d50 61 72 67 76 2c 0d 0a 20 20 20 20 20 20 20 20 20  argv,..         
17d60 20 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49     ref long rowI
17d70 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  d..            )
17d80 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
17d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17dd0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
17de0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
17df0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
17e00 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
17e10 68 69 73 20 6d 65 74 68 6f 64 20 62 65 67 69 6e  his method begin
17e20 73 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  s a transaction 
17e30 6f 6e 20 61 20 76 69 72 74 75 61 6c 20 74 61 62  on a virtual tab
17e40 6c 65 2e 20 54 68 69 73 20 69 73 20 6d 65 74 68  le. This is meth
17e50 6f 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  od..        /// 
17e60 69 73 20 6f 70 74 69 6f 6e 61 6c 2e 20 54 68 65  is optional. The
17e70 20 78 42 65 67 69 6e 20 70 6f 69 6e 74 65 72 20   xBegin pointer 
17e80 6f 66 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c  of sqlite3_modul
17e90 65 20 6d 61 79 20 62 65 20 4e 55 4c 4c 2e 0d 0a  e may be NULL...
17ea0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
17eb0 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
17ec0 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
17ed0 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64   /// This method
17ee0 20 69 73 20 61 6c 77 61 79 73 20 66 6f 6c 6c 6f   is always follo
17ef0 77 65 64 20 62 79 20 6f 6e 65 20 63 61 6c 6c 20  wed by one call 
17f00 74 6f 20 65 69 74 68 65 72 20 74 68 65 20 78 43  to either the xC
17f10 6f 6d 6d 69 74 20 6f 72 0d 0a 20 20 20 20 20 20  ommit or..      
17f20 20 20 2f 2f 2f 20 78 52 6f 6c 6c 62 61 63 6b 20    /// xRollback 
17f30 6d 65 74 68 6f 64 2e 20 56 69 72 74 75 61 6c 20  method. Virtual 
17f40 74 61 62 6c 65 20 74 72 61 6e 73 61 63 74 69 6f  table transactio
17f50 6e 73 20 64 6f 20 6e 6f 74 20 6e 65 73 74 2c 20  ns do not nest, 
17f60 73 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  so the..        
17f70 2f 2f 2f 20 78 42 65 67 69 6e 20 6d 65 74 68 6f  /// xBegin metho
17f80 64 20 77 69 6c 6c 20 6e 6f 74 20 62 65 20 69 6e  d will not be in
17f90 76 6f 6b 65 64 20 6d 6f 72 65 20 74 68 61 6e 20  voked more than 
17fa0 6f 6e 63 65 20 6f 6e 20 61 20 73 69 6e 67 6c 65  once on a single
17fb0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 69  ..        /// vi
17fc0 72 74 75 61 6c 20 74 61 62 6c 65 20 77 69 74 68  rtual table with
17fd0 6f 75 74 20 61 6e 20 69 6e 74 65 72 76 65 6e 69  out an interveni
17fe0 6e 67 20 63 61 6c 6c 20 74 6f 20 65 69 74 68 65  ng call to eithe
17ff0 72 20 78 43 6f 6d 6d 69 74 20 6f 72 0d 0a 20 20  r xCommit or..  
18000 20 20 20 20 20 20 2f 2f 2f 20 78 52 6f 6c 6c 62        /// xRollb
18010 61 63 6b 2e 20 4d 75 6c 74 69 70 6c 65 20 63 61  ack. Multiple ca
18020 6c 6c 73 20 74 6f 20 6f 74 68 65 72 20 6d 65 74  lls to other met
18030 68 6f 64 73 20 63 61 6e 20 61 6e 64 20 6c 69 6b  hods can and lik
18040 65 6c 79 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20  ely will..      
18050 20 20 2f 2f 2f 20 6f 63 63 75 72 20 69 6e 20 62    /// occur in b
18060 65 74 77 65 65 6e 20 74 68 65 20 78 42 65 67 69  etween the xBegi
18070 6e 20 61 6e 64 20 74 68 65 20 63 6f 72 72 65 73  n and the corres
18080 70 6f 6e 64 69 6e 67 20 78 43 6f 6d 6d 69 74 20  ponding xCommit 
18090 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  or..        /// 
180a0 78 52 6f 6c 6c 62 61 63 6b 2e 0d 0a 20 20 20 20  xRollback...    
180b0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d      /// </para>.
180c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
180d0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
180e0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
180f0 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20  ="pVtab">..     
18100 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
18110 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
18120 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65   sqlite3_vtab de
18130 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2e  rived structure.
18140 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
18150 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
18160 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
18170 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61         /// A sta
18180 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74  ndard SQLite ret
18190 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  urn code...     
181a0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
181b0 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  >..        SQLit
181c0 65 45 72 72 6f 72 43 6f 64 65 20 78 42 65 67 69  eErrorCode xBegi
181d0 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n(..            
181e0 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20  IntPtr pVtab..  
181f0 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a            );....
18200 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
18210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
18250 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
18260 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
18270 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20    /// <para>..  
18280 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d        /// This m
18290 65 74 68 6f 64 20 73 69 67 6e 61 6c 73 20 74 68  ethod signals th
182a0 65 20 73 74 61 72 74 20 6f 66 20 61 20 74 77 6f  e start of a two
182b0 2d 70 68 61 73 65 20 63 6f 6d 6d 69 74 20 6f 6e  -phase commit on
182c0 20 61 20 76 69 72 74 75 61 6c 0d 0a 20 20 20 20   a virtual..    
182d0 20 20 20 20 2f 2f 2f 20 74 61 62 6c 65 2e 20 54      /// table. T
182e0 68 69 73 20 69 73 20 6d 65 74 68 6f 64 20 69 73  his is method is
182f0 20 6f 70 74 69 6f 6e 61 6c 2e 20 54 68 65 20 78   optional. The x
18300 53 79 6e 63 20 70 6f 69 6e 74 65 72 20 6f 66 0d  Sync pointer of.
18310 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c  .        /// sql
18320 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6d 61 79 20  ite3_module may 
18330 62 65 20 4e 55 4c 4c 2e 0d 0a 20 20 20 20 20 20  be NULL...      
18340 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
18350 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
18360 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
18370 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 6f 6e  his method is on
18380 6c 79 20 69 6e 76 6f 6b 65 64 20 61 66 74 65 72  ly invoked after
18390 20 63 61 6c 6c 20 74 6f 20 74 68 65 20 78 42 65   call to the xBe
183a0 67 69 6e 20 6d 65 74 68 6f 64 20 61 6e 64 0d 0a  gin method and..
183b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 72 69 6f          /// prio
183c0 72 20 74 6f 20 61 6e 20 78 43 6f 6d 6d 69 74 20  r to an xCommit 
183d0 6f 72 20 78 52 6f 6c 6c 62 61 63 6b 2e 20 49 6e  or xRollback. In
183e0 20 6f 72 64 65 72 20 74 6f 20 69 6d 70 6c 65 6d   order to implem
183f0 65 6e 74 20 74 77 6f 2d 70 68 61 73 65 0d 0a 20  ent two-phase.. 
18400 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6d 6d 69         /// commi
18410 74 2c 20 74 68 65 20 78 53 79 6e 63 20 6d 65 74  t, the xSync met
18420 68 6f 64 20 6f 6e 20 61 6c 6c 20 76 69 72 74 75  hod on all virtu
18430 61 6c 20 74 61 62 6c 65 73 20 69 73 20 69 6e 76  al tables is inv
18440 6f 6b 65 64 20 70 72 69 6f 72 20 74 6f 0d 0a 20  oked prior to.. 
18450 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 76 6f 6b         /// invok
18460 69 6e 67 20 74 68 65 20 78 43 6f 6d 6d 69 74 20  ing the xCommit 
18470 6d 65 74 68 6f 64 20 6f 6e 20 61 6e 79 20 76 69  method on any vi
18480 72 74 75 61 6c 20 74 61 62 6c 65 2e 20 49 66 20  rtual table. If 
18490 61 6e 79 20 6f 66 20 74 68 65 0d 0a 20 20 20 20  any of the..    
184a0 20 20 20 20 2f 2f 2f 20 78 53 79 6e 63 20 6d 65      /// xSync me
184b0 74 68 6f 64 73 20 66 61 69 6c 2c 20 74 68 65 20  thods fail, the 
184c0 65 6e 74 69 72 65 20 74 72 61 6e 73 61 63 74 69  entire transacti
184d0 6f 6e 20 69 73 20 72 6f 6c 6c 65 64 20 62 61 63  on is rolled bac
184e0 6b 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  k...        /// 
184f0 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
18500 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
18510 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
18520 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22  ram name="pVtab"
18530 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
18540 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
18550 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33  r to the sqlite3
18560 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74  _vtab derived st
18570 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  ructure...      
18580 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
18590 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
185a0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
185b0 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51  // A standard SQ
185c0 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65  Lite return code
185d0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
185e0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
185f0 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f     SQLiteErrorCo
18600 64 65 20 78 53 79 6e 63 28 0d 0a 20 20 20 20 20  de xSync(..     
18610 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
18620 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tab..           
18630 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   );....        /
18640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18680 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
18690 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
186a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
186b0 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
186c0 20 54 68 69 73 20 6d 65 74 68 6f 64 20 63 61 75   This method cau
186d0 73 65 73 20 61 20 76 69 72 74 75 61 6c 20 74 61  ses a virtual ta
186e0 62 6c 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  ble transaction 
186f0 74 6f 20 63 6f 6d 6d 69 74 2e 20 54 68 69 73 20  to commit. This 
18700 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  is..        /// 
18710 6d 65 74 68 6f 64 20 69 73 20 6f 70 74 69 6f 6e  method is option
18720 61 6c 2e 20 54 68 65 20 78 43 6f 6d 6d 69 74 20  al. The xCommit 
18730 70 6f 69 6e 74 65 72 20 6f 66 20 73 71 6c 69 74  pointer of sqlit
18740 65 33 5f 6d 6f 64 75 6c 65 20 6d 61 79 20 62 65  e3_module may be
18750 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 55  ..        /// NU
18760 4c 4c 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  LL...        ///
18770 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20   </para>..      
18780 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20    /// <para>..  
18790 20 20 20 20 20 20 2f 2f 2f 20 41 20 63 61 6c 6c        /// A call
187a0 20 74 6f 20 74 68 69 73 20 6d 65 74 68 6f 64 20   to this method 
187b0 61 6c 77 61 79 73 20 66 6f 6c 6c 6f 77 73 20 61  always follows a
187c0 20 70 72 69 6f 72 20 63 61 6c 6c 20 74 6f 20 78   prior call to x
187d0 42 65 67 69 6e 20 61 6e 64 0d 0a 20 20 20 20 20  Begin and..     
187e0 20 20 20 2f 2f 2f 20 78 53 79 6e 63 2e 0d 0a 20     /// xSync... 
187f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
18800 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
18810 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
18820 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
18830 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20  ame="pVtab">..  
18840 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
18850 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
18860 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62  the sqlite3_vtab
18870 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75   derived structu
18880 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
18890 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
188a0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
188b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20  ..        /// A 
188c0 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20  standard SQLite 
188d0 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20  return code...  
188e0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
188f0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51  rns>..        SQ
18900 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43  LiteErrorCode xC
18910 6f 6d 6d 69 74 28 0d 0a 20 20 20 20 20 20 20 20  ommit(..        
18920 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
18930 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b  ..            );
18940 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
18950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18990 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
189a0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
189b0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
189c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
189d0 69 73 20 6d 65 74 68 6f 64 20 63 61 75 73 65 73  is method causes
189e0 20 61 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65   a virtual table
189f0 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 74 6f 20   transaction to 
18a00 72 6f 6c 6c 62 61 63 6b 2e 20 54 68 69 73 20 69  rollback. This i
18a10 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d  s..        /// m
18a20 65 74 68 6f 64 20 69 73 20 6f 70 74 69 6f 6e 61  ethod is optiona
18a30 6c 2e 20 54 68 65 20 78 52 6f 6c 6c 62 61 63 6b  l. The xRollback
18a40 20 70 6f 69 6e 74 65 72 20 6f 66 20 73 71 6c 69   pointer of sqli
18a50 74 65 33 5f 6d 6f 64 75 6c 65 20 6d 61 79 20 62  te3_module may b
18a60 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  e..        /// N
18a70 55 4c 4c 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ULL...        //
18a80 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20  / </para>..     
18a90 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20     /// <para>.. 
18aa0 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 63 61 6c         /// A cal
18ab0 6c 20 74 6f 20 74 68 69 73 20 6d 65 74 68 6f 64  l to this method
18ac0 20 61 6c 77 61 79 73 20 66 6f 6c 6c 6f 77 73 20   always follows 
18ad0 61 20 70 72 69 6f 72 20 63 61 6c 6c 20 74 6f 20  a prior call to 
18ae0 78 42 65 67 69 6e 2e 0d 0a 20 20 20 20 20 20 20  xBegin...       
18af0 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
18b00 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
18b10 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
18b20 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
18b30 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
18b40 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70  /// The native p
18b50 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71  ointer to the sq
18b60 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76  lite3_vtab deriv
18b70 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  ed structure... 
18b80 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
18b90 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
18ba0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
18bb0 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61      /// A standa
18bc0 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e  rd SQLite return
18bd0 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
18be0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
18bf0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72          SQLiteEr
18c00 72 6f 72 43 6f 64 65 20 78 52 6f 6c 6c 62 61 63  rorCode xRollbac
18c10 6b 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k(..            
18c20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20  IntPtr pVtab..  
18c30 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a            );....
18c40 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
18c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
18c90 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
18ca0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
18cb0 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20    /// <para>..  
18cc0 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d        /// This m
18cd0 65 74 68 6f 64 20 70 72 6f 76 69 64 65 73 20 6e  ethod provides n
18ce0 6f 74 69 66 69 63 61 74 69 6f 6e 20 74 68 61 74  otification that
18cf0 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
18d00 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  le..        /// 
18d10 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 74  implementation t
18d20 68 61 74 20 74 68 65 20 76 69 72 74 75 61 6c 20  hat the virtual 
18d30 74 61 62 6c 65 20 77 69 6c 6c 20 62 65 20 67 69  table will be gi
18d40 76 65 6e 20 61 20 6e 65 77 20 6e 61 6d 65 2e 20  ven a new name. 
18d50 49 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  If..        /// 
18d60 74 68 69 73 20 6d 65 74 68 6f 64 20 72 65 74 75  this method retu
18d70 72 6e 73 20 53 51 4c 49 54 45 5f 4f 4b 20 74 68  rns SQLITE_OK th
18d80 65 6e 20 53 51 4c 69 74 65 20 72 65 6e 61 6d 65  en SQLite rename
18d90 73 20 74 68 65 20 74 61 62 6c 65 2e 20 49 66 0d  s the table. If.
18da0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 69  .        /// thi
18db0 73 20 6d 65 74 68 6f 64 20 72 65 74 75 72 6e 73  s method returns
18dc0 20 61 6e 20 65 72 72 6f 72 20 63 6f 64 65 20 74   an error code t
18dd0 68 65 6e 20 74 68 65 20 72 65 6e 61 6d 69 6e 67  hen the renaming
18de0 20 69 73 20 70 72 65 76 65 6e 74 65 64 2e 0d 0a   is prevented...
18df0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
18e00 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
18e10 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
18e20 20 2f 2f 2f 20 54 68 65 20 78 52 65 6e 61 6d 65   /// The xRename
18e30 20 6d 65 74 68 6f 64 20 69 73 20 72 65 71 75 69   method is requi
18e40 72 65 64 20 66 6f 72 20 65 76 65 72 79 20 76 69  red for every vi
18e50 72 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20  rtual table..   
18e60 20 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65       /// impleme
18e70 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ntation...      
18e80 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
18e90 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
18ea0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
18eb0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
18ec0 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20  pVtab">..       
18ed0 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
18ee0 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73  pointer to the s
18ef0 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69  qlite3_vtab deri
18f00 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  ved structure...
18f10 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
18f20 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
18f30 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e  / <param name="n
18f40 41 72 67 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  Arg">..        /
18f50 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66  // The number of
18f60 20 61 72 67 75 6d 65 6e 74 73 20 74 6f 20 74 68   arguments to th
18f70 65 20 66 75 6e 63 74 69 6f 6e 20 62 65 69 6e 67  e function being
18f80 20 73 6f 75 67 68 74 2e 0d 0a 20 20 20 20 20 20   sought...      
18f90 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
18fa0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
18fb0 61 6d 20 6e 61 6d 65 3d 22 7a 4e 61 6d 65 22 3e  am name="zName">
18fc0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
18fd0 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 66 75  e name of the fu
18fe0 6e 63 74 69 6f 6e 20 62 65 69 6e 67 20 73 6f 75  nction being sou
18ff0 67 68 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ght...        //
19000 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
19010 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
19020 61 6d 65 3d 22 63 61 6c 6c 62 61 63 6b 22 3e 0d  ame="callback">.
19030 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f  .        /// Upo
19040 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69 73 20  n success, this 
19050 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62  parameter must b
19060 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f  e modified to co
19070 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20 20 20 20  ntain the..     
19080 20 20 20 2f 2f 2f 20 64 65 6c 65 67 61 74 65 20     /// delegate 
19090 72 65 73 70 6f 6e 73 69 62 6c 65 20 66 6f 72 20  responsible for 
190a0 69 6d 70 6c 65 6d 65 6e 74 69 6e 67 20 74 68 65  implementing the
190b0 20 73 70 65 63 69 66 69 65 64 20 66 75 6e 63 74   specified funct
190c0 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ion...        //
190d0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
190e0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
190f0 61 6d 65 3d 22 70 43 6c 69 65 6e 74 44 61 74 61  ame="pClientData
19100 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
19110 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68  Upon success, th
19120 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73  is parameter mus
19130 74 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f  t be modified to
19140 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20   contain the..  
19150 20 20 20 20 20 20 2f 2f 2f 20 6e 61 74 69 76 65        /// native
19160 20 75 73 65 72 2d 64 61 74 61 20 70 6f 69 6e 74   user-data point
19170 65 72 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  er associated wi
19180 74 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  th..        /// 
19190 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22  <paramref name="
191a0 63 61 6c 6c 62 61 63 6b 22 20 2f 3e 2e 0d 0a 20  callback" />... 
191b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
191c0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
191d0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
191e0 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
191f0 20 69 66 20 74 68 65 20 73 70 65 63 69 66 69 65   if the specifie
19200 64 20 66 75 6e 63 74 69 6f 6e 20 77 61 73 20 66  d function was f
19210 6f 75 6e 64 3b 20 7a 65 72 6f 20 6f 74 68 65 72  ound; zero other
19220 77 69 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  wise...        /
19230 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
19240 20 20 20 20 20 20 20 69 6e 74 20 78 46 69 6e 64         int xFind
19250 46 75 6e 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20  Function(..     
19260 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
19270 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  tab,..          
19280 20 20 69 6e 74 20 6e 41 72 67 2c 0d 0a 20 20 20    int nArg,..   
19290 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
192a0 7a 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20  zName,..        
192b0 20 20 20 20 72 65 66 20 53 51 4c 69 74 65 43 61      ref SQLiteCa
192c0 6c 6c 62 61 63 6b 20 63 61 6c 6c 62 61 63 6b 2c  llback callback,
192d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
192e0 66 20 49 6e 74 50 74 72 20 70 43 6c 69 65 6e 74  f IntPtr pClient
192f0 44 61 74 61 0d 0a 20 20 20 20 20 20 20 20 20 20  Data..          
19300 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    );....        
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 2f 2f 2f 2f 2f 2f 2f  ////////////////
19340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19350 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
19360 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
19370 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
19380 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
19390 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 70 72  / This method pr
193a0 6f 76 69 64 65 73 20 6e 6f 74 69 66 69 63 61 74  ovides notificat
193b0 69 6f 6e 20 74 68 61 74 20 74 68 65 20 76 69 72  ion that the vir
193c0 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20  tual table..    
193d0 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e      /// implemen
193e0 74 61 74 69 6f 6e 20 74 68 61 74 20 74 68 65 20  tation that the 
193f0 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 77 69  virtual table wi
19400 6c 6c 20 62 65 20 67 69 76 65 6e 20 61 20 6e 65  ll be given a ne
19410 77 20 6e 61 6d 65 2e 20 49 66 0d 0a 20 20 20 20  w name. If..    
19420 20 20 20 20 2f 2f 2f 20 74 68 69 73 20 6d 65 74      /// this met
19430 68 6f 64 20 72 65 74 75 72 6e 73 20 53 51 4c 49  hod returns SQLI
19440 54 45 5f 4f 4b 20 74 68 65 6e 20 53 51 4c 69 74  TE_OK then SQLit
19450 65 20 72 65 6e 61 6d 65 73 20 74 68 65 20 74 61  e renames the ta
19460 62 6c 65 2e 20 49 66 0d 0a 20 20 20 20 20 20 20  ble. If..       
19470 20 2f 2f 2f 20 74 68 69 73 20 6d 65 74 68 6f 64   /// this method
19480 20 72 65 74 75 72 6e 73 20 61 6e 20 65 72 72 6f   returns an erro
19490 72 20 63 6f 64 65 20 74 68 65 6e 20 74 68 65 20  r code then the 
194a0 72 65 6e 61 6d 69 6e 67 20 69 73 20 70 72 65 76  renaming is prev
194b0 65 6e 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20  ented...        
194c0 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20  /// </para>..   
194d0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
194e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
194f0 20 78 52 65 6e 61 6d 65 20 6d 65 74 68 6f 64 20   xRename method 
19500 69 73 20 72 65 71 75 69 72 65 64 20 66 6f 72 20  is required for 
19510 65 76 65 72 79 20 76 69 72 74 75 61 6c 20 74 61  every virtual ta
19520 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ble..        ///
19530 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e   implementation.
19540 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
19550 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
19560 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
19570 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
19580 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d  m name="pVtab">.
19590 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
195a0 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
195b0 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76  to the sqlite3_v
195c0 74 61 62 20 64 65 72 69 76 65 64 20 73 74 72 75  tab derived stru
195d0 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  cture...        
195e0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
195f0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
19600 20 6e 61 6d 65 3d 22 7a 4e 65 77 22 3e 0d 0a 20   name="zNew">.. 
19610 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
19620 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
19630 20 74 68 65 20 55 54 46 2d 38 20 65 6e 63 6f 64   the UTF-8 encod
19640 65 64 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69  ed string contai
19650 6e 69 6e 67 20 74 68 65 20 6e 65 77 0d 0a 20 20  ning the new..  
19660 20 20 20 20 20 20 2f 2f 2f 20 6e 61 6d 65 20 66        /// name f
19670 6f 72 20 74 68 65 20 76 69 72 74 75 61 6c 20 74  or the virtual t
19680 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  able...        /
19690 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
196a0 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
196b0 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
196c0 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74  A standard SQLit
196d0 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a  e return code...
196e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
196f0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
19700 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
19710 78 52 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20  xRename(..      
19720 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
19730 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ab,..           
19740 20 49 6e 74 50 74 72 20 7a 4e 65 77 0d 0a 20 20   IntPtr zNew..  
19750 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a            );....
19760 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
19770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d  ///////////////.
197b0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
197c0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
197d0 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20    /// <para>..  
197e0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 73 65 20        /// These 
197f0 6d 65 74 68 6f 64 73 20 70 72 6f 76 69 64 65 20  methods provide 
19800 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c  the virtual tabl
19810 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e implementation
19820 20 61 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   an..        ///
19830 20 6f 70 70 6f 72 74 75 6e 69 74 79 20 74 6f 20   opportunity to 
19840 69 6d 70 6c 65 6d 65 6e 74 20 6e 65 73 74 65 64  implement nested
19850 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 2e 20 54   transactions. T
19860 68 65 79 20 61 72 65 20 61 6c 77 61 79 73 0d 0a  hey are always..
19870 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 70 74 69          /// opti
19880 6f 6e 61 6c 20 61 6e 64 20 77 69 6c 6c 20 6f 6e  onal and will on
19890 6c 79 20 62 65 20 63 61 6c 6c 65 64 20 69 6e 20  ly be called in 
198a0 53 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 20 33  SQLite version 3
198b0 2e 37 2e 37 20 61 6e 64 20 6c 61 74 65 72 2e 0d  .7.7 and later..
198c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
198d0 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
198e0 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
198f0 20 20 2f 2f 2f 20 57 68 65 6e 20 78 53 61 76 65    /// When xSave
19900 70 6f 69 6e 74 28 58 2c 4e 29 20 69 73 20 69 6e  point(X,N) is in
19910 76 6f 6b 65 64 2c 20 74 68 61 74 20 69 73 20 61  voked, that is a
19920 20 73 69 67 6e 61 6c 20 74 6f 20 74 68 65 20 76   signal to the v
19930 69 72 74 75 61 6c 0d 0a 20 20 20 20 20 20 20 20  irtual..        
19940 2f 2f 2f 20 74 61 62 6c 65 20 58 20 74 68 61 74  /// table X that
19950 20 69 74 20 73 68 6f 75 6c 64 20 73 61 76 65 20   it should save 
19960 69 74 73 20 63 75 72 72 65 6e 74 20 73 74 61 74  its current stat
19970 65 20 61 73 20 73 61 76 65 70 6f 69 6e 74 20 4e  e as savepoint N
19980 2e 20 41 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  . A..        ///
19990 20 73 75 62 73 65 71 75 65 6e 74 20 63 61 6c 6c   subsequent call
199a0 20 74 6f 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 28   to xRollbackTo(
199b0 58 2c 52 29 20 6d 65 61 6e 73 20 74 68 61 74 20  X,R) means that 
199c0 74 68 65 20 73 74 61 74 65 20 6f 66 20 74 68 65  the state of the
199d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 69  ..        /// vi
199e0 72 74 75 61 6c 20 74 61 62 6c 65 20 73 68 6f 75  rtual table shou
199f0 6c 64 20 72 65 74 75 72 6e 20 74 6f 20 77 68 61  ld return to wha
19a00 74 20 69 74 20 77 61 73 20 77 68 65 6e 20 78 53  t it was when xS
19a10 61 76 65 70 6f 69 6e 74 28 58 2c 52 29 20 77 61  avepoint(X,R) wa
19a20 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c  s..        /// l
19a30 61 73 74 20 63 61 6c 6c 65 64 2e 20 54 68 65 20  ast called. The 
19a40 63 61 6c 6c 20 74 6f 20 78 52 6f 6c 6c 62 61 63  call to xRollbac
19a50 6b 54 6f 28 58 2c 52 29 20 77 69 6c 6c 20 69 6e  kTo(X,R) will in
19a60 76 61 6c 69 64 61 74 65 20 61 6c 6c 0d 0a 20 20  validate all..  
19a70 20 20 20 20 20 20 2f 2f 2f 20 73 61 76 65 70 6f        /// savepo
19a80 69 6e 74 73 20 77 69 74 68 20 4e 3e 52 3b 20 6e  ints with N>R; n
19a90 6f 6e 65 20 6f 66 20 74 68 65 20 69 6e 76 61 6c  one of the inval
19aa0 69 64 65 64 20 73 61 76 65 70 6f 69 6e 74 73 20  ided savepoints 
19ab0 77 69 6c 6c 20 62 65 0d 0a 20 20 20 20 20 20 20  will be..       
19ac0 20 2f 2f 2f 20 72 6f 6c 6c 65 64 20 62 61 63 6b   /// rolled back
19ad0 20 6f 72 20 72 65 6c 65 61 73 65 64 20 77 69 74   or released wit
19ae0 68 6f 75 74 20 66 69 72 73 74 20 62 65 69 6e 67  hout first being
19af0 20 72 65 69 6e 69 74 69 61 6c 69 7a 65 64 20 62   reinitialized b
19b00 79 20 61 20 63 61 6c 6c 0d 0a 20 20 20 20 20 20  y a call..      
19b10 20 20 2f 2f 2f 20 74 6f 20 78 53 61 76 65 70 6f    /// to xSavepo
19b20 69 6e 74 28 29 2e 20 41 20 63 61 6c 6c 20 74 6f  int(). A call to
19b30 20 78 52 65 6c 65 61 73 65 28 58 2c 4d 29 20 69   xRelease(X,M) i
19b40 6e 76 61 6c 69 64 61 74 65 73 20 61 6c 6c 20 73  nvalidates all s
19b50 61 76 65 70 6f 69 6e 74 73 0d 0a 20 20 20 20 20  avepoints..     
19b60 20 20 20 2f 2f 2f 20 77 68 65 72 65 20 4e 3e 3d     /// where N>=
19b70 4d 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  M...        /// 
19b80 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
19b90 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
19ba0 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 65 20 6f 66       /// None of
19bb0 20 74 68 65 20 78 53 61 76 65 70 6f 69 6e 74 28   the xSavepoint(
19bc0 29 2c 20 78 52 65 6c 65 61 73 65 28 29 2c 20 6f  ), xRelease(), o
19bd0 72 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 29 20  r xRollbackTo() 
19be0 6d 65 74 68 6f 64 73 20 77 69 6c 6c 0d 0a 20 20  methods will..  
19bf0 20 20 20 20 20 20 2f 2f 2f 20 65 76 65 72 20 62        /// ever b
19c00 65 20 63 61 6c 6c 65 64 20 65 78 63 65 70 74 20  e called except 
19c10 69 6e 20 62 65 74 77 65 65 6e 20 63 61 6c 6c 73  in between calls
19c20 20 74 6f 20 78 42 65 67 69 6e 28 29 20 61 6e 64   to xBegin() and
19c30 20 65 69 74 68 65 72 0d 0a 20 20 20 20 20 20 20   either..       
19c40 20 2f 2f 2f 20 78 43 6f 6d 6d 69 74 28 29 20 6f   /// xCommit() o
19c50 72 20 78 52 6f 6c 6c 62 61 63 6b 28 29 2e 0d 0a  r xRollback()...
19c60 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
19c70 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
19c80 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
19c90 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
19ca0 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20  name="pVtab">.. 
19cb0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
19cc0 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
19cd0 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61   the sqlite3_vta
19ce0 62 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74  b derived struct
19cf0 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
19d00 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
19d10 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
19d20 61 6d 65 3d 22 69 53 61 76 65 70 6f 69 6e 74 22  ame="iSavepoint"
19d30 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
19d40 68 69 73 20 69 73 20 61 6e 20 69 6e 74 65 67 65  his is an intege
19d50 72 20 69 64 65 6e 74 69 66 69 65 72 20 75 6e 64  r identifier und
19d60 65 72 20 77 68 69 63 68 20 74 68 65 20 74 68 65  er which the the
19d70 20 63 75 72 72 65 6e 74 20 73 74 61 74 65 20 6f   current state o
19d80 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  f..        /// t
19d90 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
19da0 20 73 68 6f 75 6c 64 20 62 65 20 73 61 76 65 64   should be saved
19db0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
19dc0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
19dd0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
19de0 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74          /// A st
19df0 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65  andard SQLite re
19e00 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20  turn code...    
19e10 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
19e20 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69  s>..        SQLi
19e30 74 65 45 72 72 6f 72 43 6f 64 65 20 78 53 61 76  teErrorCode xSav
19e40 65 70 6f 69 6e 74 28 0d 0a 20 20 20 20 20 20 20  epoint(..       
19e50 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
19e60 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  b,..            
19e70 69 6e 74 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a  int iSavepoint..
19e80 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a              );..
19e90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
19ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ee0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
19ef0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
19f00 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a      /// <para>..
19f10 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 73          /// Thes
19f20 65 20 6d 65 74 68 6f 64 73 20 70 72 6f 76 69 64  e methods provid
19f30 65 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  e the virtual ta
19f40 62 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  ble implementati
19f50 6f 6e 20 61 6e 0d 0a 20 20 20 20 20 20 20 20 2f  on an..        /
19f60 2f 2f 20 6f 70 70 6f 72 74 75 6e 69 74 79 20 74  // opportunity t
19f70 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 6e 65 73 74  o implement nest
19f80 65 64 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 2e  ed transactions.
19f90 20 54 68 65 79 20 61 72 65 20 61 6c 77 61 79 73   They are always
19fa0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 70  ..        /// op
19fb0 74 69 6f 6e 61 6c 20 61 6e 64 20 77 69 6c 6c 20  tional and will 
19fc0 6f 6e 6c 79 20 62 65 20 63 61 6c 6c 65 64 20 69  only be called i
19fd0 6e 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f 6e  n SQLite version
19fe0 20 33 2e 37 2e 37 20 61 6e 64 20 6c 61 74 65 72   3.7.7 and later
19ff0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1a000 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
1a010 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
1a020 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 78 53 61      /// When xSa
1a030 76 65 70 6f 69 6e 74 28 58 2c 4e 29 20 69 73 20  vepoint(X,N) is 
1a040 69 6e 76 6f 6b 65 64 2c 20 74 68 61 74 20 69 73  invoked, that is
1a050 20 61 20 73 69 67 6e 61 6c 20 74 6f 20 74 68 65   a signal to the
1a060 20 76 69 72 74 75 61 6c 0d 0a 20 20 20 20 20 20   virtual..      
1a070 20 20 2f 2f 2f 20 74 61 62 6c 65 20 58 20 74 68    /// table X th
1a080 61 74 20 69 74 20 73 68 6f 75 6c 64 20 73 61 76  at it should sav
1a090 65 20 69 74 73 20 63 75 72 72 65 6e 74 20 73 74  e its current st
1a0a0 61 74 65 20 61 73 20 73 61 76 65 70 6f 69 6e 74  ate as savepoint
1a0b0 20 4e 2e 20 41 0d 0a 20 20 20 20 20 20 20 20 2f   N. A..        /
1a0c0 2f 2f 20 73 75 62 73 65 71 75 65 6e 74 20 63 61  // subsequent ca
1a0d0 6c 6c 20 74 6f 20 78 52 6f 6c 6c 62 61 63 6b 54  ll to xRollbackT
1a0e0 6f 28 58 2c 52 29 20 6d 65 61 6e 73 20 74 68 61  o(X,R) means tha
1a0f0 74 20 74 68 65 20 73 74 61 74 65 20 6f 66 20 74  t the state of t
1a100 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
1a110 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 73 68  virtual table sh
1a120 6f 75 6c 64 20 72 65 74 75 72 6e 20 74 6f 20 77  ould return to w
1a130 68 61 74 20 69 74 20 77 61 73 20 77 68 65 6e 20  hat it was when 
1a140 78 53 61 76 65 70 6f 69 6e 74 28 58 2c 52 29 20  xSavepoint(X,R) 
1a150 77 61 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  was..        ///
1a160 20 6c 61 73 74 20 63 61 6c 6c 65 64 2e 20 54 68   last called. Th
1a170 65 20 63 61 6c 6c 20 74 6f 20 78 52 6f 6c 6c 62  e call to xRollb
1a180 61 63 6b 54 6f 28 58 2c 52 29 20 77 69 6c 6c 20  ackTo(X,R) will 
1a190 69 6e 76 61 6c 69 64 61 74 65 20 61 6c 6c 0d 0a  invalidate all..
1a1a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 61 76 65          /// save
1a1b0 70 6f 69 6e 74 73 20 77 69 74 68 20 4e 3e 52 3b  points with N>R;
1a1c0 20 6e 6f 6e 65 20 6f 66 20 74 68 65 20 69 6e 76   none of the inv
1a1d0 61 6c 69 64 65 64 20 73 61 76 65 70 6f 69 6e 74  alided savepoint
1a1e0 73 20 77 69 6c 6c 20 62 65 0d 0a 20 20 20 20 20  s will be..     
1a1f0 20 20 20 2f 2f 2f 20 72 6f 6c 6c 65 64 20 62 61     /// rolled ba
1a200 63 6b 20 6f 72 20 72 65 6c 65 61 73 65 64 20 77  ck or released w
1a210 69 74 68 6f 75 74 20 66 69 72 73 74 20 62 65 69  ithout first bei
1a220 6e 67 20 72 65 69 6e 69 74 69 61 6c 69 7a 65 64  ng reinitialized
1a230 20 62 79 20 61 20 63 61 6c 6c 0d 0a 20 20 20 20   by a call..    
1a240 20 20 20 20 2f 2f 2f 20 74 6f 20 78 53 61 76 65      /// to xSave
1a250 70 6f 69 6e 74 28 29 2e 20 41 20 63 61 6c 6c 20  point(). A call 
1a260 74 6f 20 78 52 65 6c 65 61 73 65 28 58 2c 4d 29  to xRelease(X,M)
1a270 20 69 6e 76 61 6c 69 64 61 74 65 73 20 61 6c 6c   invalidates all
1a280 20 73 61 76 65 70 6f 69 6e 74 73 0d 0a 20 20 20   savepoints..   
1a290 20 20 20 20 20 2f 2f 2f 20 77 68 65 72 65 20 4e       /// where N
1a2a0 3e 3d 4d 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  >=M...        //
1a2b0 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20  / </para>..     
1a2c0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20     /// <para>.. 
1a2d0 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 65 20         /// None 
1a2e0 6f 66 20 74 68 65 20 78 53 61 76 65 70 6f 69 6e  of the xSavepoin
1a2f0 74 28 29 2c 20 78 52 65 6c 65 61 73 65 28 29 2c  t(), xRelease(),
1a300 20 6f 72 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 28   or xRollbackTo(
1a310 29 20 6d 65 74 68 6f 64 73 20 77 69 6c 6c 0d 0a  ) methods will..
1a320 20 20 20 20 20 20 20 20 2f 2f 2f 20 65 76 65 72          /// ever
1a330 20 62 65 20 63 61 6c 6c 65 64 20 65 78 63 65 70   be called excep
1a340 74 20 69 6e 20 62 65 74 77 65 65 6e 20 63 61 6c  t in between cal
1a350 6c 73 20 74 6f 20 78 42 65 67 69 6e 28 29 20 61  ls to xBegin() a
1a360 6e 64 20 65 69 74 68 65 72 0d 0a 20 20 20 20 20  nd either..     
1a370 20 20 20 2f 2f 2f 20 78 43 6f 6d 6d 69 74 28 29     /// xCommit()
1a380 20 6f 72 20 78 52 6f 6c 6c 62 61 63 6b 28 29 2e   or xRollback().
1a390 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1a3a0 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
1a3b0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1a3c0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1a3d0 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d  m name="pVtab">.
1a3e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1a3f0 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
1a400 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76  to the sqlite3_v
1a410 74 61 62 20 64 65 72 69 76 65 64 20 73 74 72 75  tab derived stru
1a420 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  cture...        
1a430 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1a440 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1a450 20 6e 61 6d 65 3d 22 69 53 61 76 65 70 6f 69 6e   name="iSavepoin
1a460 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  t">..        ///
1a470 20 54 68 69 73 20 69 73 20 61 6e 20 69 6e 74 65   This is an inte
1a480 67 65 72 20 75 73 65 64 20 74 6f 20 69 6e 64 69  ger used to indi
1a490 63 61 74 65 20 74 68 61 74 20 61 6e 79 20 73 61  cate that any sa
1a4a0 76 65 64 20 73 74 61 74 65 73 20 77 69 74 68 20  ved states with 
1a4b0 61 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  an..        /// 
1a4c0 69 64 65 6e 74 69 66 69 65 72 20 67 72 65 61 74  identifier great
1a4d0 65 72 20 74 68 61 6e 20 6f 72 20 65 71 75 61 6c  er than or equal
1a4e0 20 74 6f 20 74 68 69 73 20 73 68 6f 75 6c 64 20   to this should 
1a4f0 62 65 20 64 65 6c 65 74 65 64 20 62 79 20 74 68  be deleted by th
1a500 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76  e..        /// v
1a510 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20  irtual table... 
1a520 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1a530 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1a540 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
1a550 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61      /// A standa
1a560 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e  rd SQLite return
1a570 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
1a580 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
1a590 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72          SQLiteEr
1a5a0 72 6f 72 43 6f 64 65 20 78 52 65 6c 65 61 73 65  rorCode xRelease
1a5b0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  (..            I
1a5c0 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
1a5d0 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 53            int iS
1a5e0 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20 20 20  avepoint..      
1a5f0 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20        );....    
1a600 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1a610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1a650 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
1a660 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1a670 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
1a680 20 20 2f 2f 2f 20 54 68 65 73 65 20 6d 65 74 68    /// These meth
1a690 6f 64 73 20 70 72 6f 76 69 64 65 20 74 68 65 20  ods provide the 
1a6a0 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 69 6d  virtual table im
1a6b0 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 61 6e 0d  plementation an.
1a6c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 70 70  .        /// opp
1a6d0 6f 72 74 75 6e 69 74 79 20 74 6f 20 69 6d 70 6c  ortunity to impl
1a6e0 65 6d 65 6e 74 20 6e 65 73 74 65 64 20 74 72 61  ement nested tra
1a6f0 6e 73 61 63 74 69 6f 6e 73 2e 20 54 68 65 79 20  nsactions. They 
1a700 61 72 65 20 61 6c 77 61 79 73 0d 0a 20 20 20 20  are always..    
1a710 20 20 20 20 2f 2f 2f 20 6f 70 74 69 6f 6e 61 6c      /// optional
1a720 20 61 6e 64 20 77 69 6c 6c 20 6f 6e 6c 79 20 62   and will only b
1a730 65 20 63 61 6c 6c 65 64 20 69 6e 20 53 51 4c 69  e called in SQLi
1a740 74 65 20 76 65 72 73 69 6f 6e 20 33 2e 37 2e 37  te version 3.7.7
1a750 20 61 6e 64 20 6c 61 74 65 72 2e 0d 0a 20 20 20   and later...   
1a760 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
1a770 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1a780 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
1a790 2f 20 57 68 65 6e 20 78 53 61 76 65 70 6f 69 6e  / When xSavepoin
1a7a0 74 28 58 2c 4e 29 20 69 73 20 69 6e 76 6f 6b 65  t(X,N) is invoke
1a7b0 64 2c 20 74 68 61 74 20 69 73 20 61 20 73 69 67  d, that is a sig
1a7c0 6e 61 6c 20 74 6f 20 74 68 65 20 76 69 72 74 75  nal to the virtu
1a7d0 61 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  al..        /// 
1a7e0 74 61 62 6c 65 20 58 20 74 68 61 74 20 69 74 20  table X that it 
1a7f0 73 68 6f 75 6c 64 20 73 61 76 65 20 69 74 73 20  should save its 
1a800 63 75 72 72 65 6e 74 20 73 74 61 74 65 20 61 73  current state as
1a810 20 73 61 76 65 70 6f 69 6e 74 20 4e 2e 20 41 0d   savepoint N. A.
1a820 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 75 62  .        /// sub
1a830 73 65 71 75 65 6e 74 20 63 61 6c 6c 20 74 6f 20  sequent call to 
1a840 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 58 2c 52 29  xRollbackTo(X,R)
1a850 20 6d 65 61 6e 73 20 74 68 61 74 20 74 68 65 20   means that the 
1a860 73 74 61 74 65 20 6f 66 20 74 68 65 0d 0a 20 20  state of the..  
1a870 20 20 20 20 20 20 2f 2f 2f 20 76 69 72 74 75 61        /// virtua
1a880 6c 20 74 61 62 6c 65 20 73 68 6f 75 6c 64 20 72  l table should r
1a890 65 74 75 72 6e 20 74 6f 20 77 68 61 74 20 69 74  eturn to what it
1a8a0 20 77 61 73 20 77 68 65 6e 20 78 53 61 76 65 70   was when xSavep
1a8b0 6f 69 6e 74 28 58 2c 52 29 20 77 61 73 0d 0a 20  oint(X,R) was.. 
1a8c0 20 20 20 20 20 20 20 2f 2f 2f 20 6c 61 73 74 20         /// last 
1a8d0 63 61 6c 6c 65 64 2e 20 54 68 65 20 63 61 6c 6c  called. The call
1a8e0 20 74 6f 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 28   to xRollbackTo(
1a8f0 58 2c 52 29 20 77 69 6c 6c 20 69 6e 76 61 6c 69  X,R) will invali
1a900 64 61 74 65 20 61 6c 6c 0d 0a 20 20 20 20 20 20  date all..      
1a910 20 20 2f 2f 2f 20 73 61 76 65 70 6f 69 6e 74 73    /// savepoints
1a920 20 77 69 74 68 20 4e 3e 52 3b 20 6e 6f 6e 65 20   with N>R; none 
1a930 6f 66 20 74 68 65 20 69 6e 76 61 6c 69 64 65 64  of the invalided
1a940 20 73 61 76 65 70 6f 69 6e 74 73 20 77 69 6c 6c   savepoints will
1a950 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   be..        ///
1a960 20 72 6f 6c 6c 65 64 20 62 61 63 6b 20 6f 72 20   rolled back or 
1a970 72 65 6c 65 61 73 65 64 20 77 69 74 68 6f 75 74  released without
1a980 20 66 69 72 73 74 20 62 65 69 6e 67 20 72 65 69   first being rei
1a990 6e 69 74 69 61 6c 69 7a 65 64 20 62 79 20 61 20  nitialized by a 
1a9a0 63 61 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f  call..        //
1a9b0 2f 20 74 6f 20 78 53 61 76 65 70 6f 69 6e 74 28  / to xSavepoint(
1a9c0 29 2e 20 41 20 63 61 6c 6c 20 74 6f 20 78 52 65  ). A call to xRe
1a9d0 6c 65 61 73 65 28 58 2c 4d 29 20 69 6e 76 61 6c  lease(X,M) inval
1a9e0 69 64 61 74 65 73 20 61 6c 6c 20 73 61 76 65 70  idates all savep
1a9f0 6f 69 6e 74 73 0d 0a 20 20 20 20 20 20 20 20 2f  oints..        /
1aa00 2f 2f 20 77 68 65 72 65 20 4e 3e 3d 4d 2e 0d 0a  // where N>=M...
1aa10 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1aa20 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
1aa30 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
1aa40 20 2f 2f 2f 20 4e 6f 6e 65 20 6f 66 20 74 68 65   /// None of the
1aa50 20 78 53 61 76 65 70 6f 69 6e 74 28 29 2c 20 78   xSavepoint(), x
1aa60 52 65 6c 65 61 73 65 28 29 2c 20 6f 72 20 78 52  Release(), or xR
1aa70 6f 6c 6c 62 61 63 6b 54 6f 28 29 20 6d 65 74 68  ollbackTo() meth
1aa80 6f 64 73 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20  ods will..      
1aa90 20 20 2f 2f 2f 20 65 76 65 72 20 62 65 20 63 61    /// ever be ca
1aaa0 6c 6c 65 64 20 65 78 63 65 70 74 20 69 6e 20 62  lled except in b
1aab0 65 74 77 65 65 6e 20 63 61 6c 6c 73 20 74 6f 20  etween calls to 
1aac0 78 42 65 67 69 6e 28 29 20 61 6e 64 20 65 69 74  xBegin() and eit
1aad0 68 65 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  her..        ///
1aae0 20 78 43 6f 6d 6d 69 74 28 29 20 6f 72 20 78 52   xCommit() or xR
1aaf0 6f 6c 6c 62 61 63 6b 28 29 2e 0d 0a 20 20 20 20  ollback()...    
1ab00 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d      /// </para>.
1ab10 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
1ab20 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1ab30 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1ab40 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20  ="pVtab">..     
1ab50 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
1ab60 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
1ab70 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65   sqlite3_vtab de
1ab80 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2e  rived structure.
1ab90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1aba0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1abb0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1abc0 22 69 53 61 76 65 70 6f 69 6e 74 22 3e 0d 0a 20  "iSavepoint">.. 
1abd0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
1abe0 69 73 20 61 6e 20 69 6e 74 65 67 65 72 20 69 64  is an integer id
1abf0 65 6e 74 69 66 69 65 72 20 75 73 65 64 20 74 6f  entifier used to
1ac00 20 73 70 65 63 69 66 79 20 61 20 73 70 65 63 69   specify a speci
1ac10 66 69 63 20 73 61 76 65 64 0d 0a 20 20 20 20 20  fic saved..     
1ac20 20 20 20 2f 2f 2f 20 73 74 61 74 65 20 66 6f 72     /// state for
1ac30 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
1ac40 6c 65 20 66 6f 72 20 69 74 20 74 6f 20 72 65 73  le for it to res
1ac50 74 6f 72 65 20 69 74 73 65 6c 66 20 62 61 63 6b  tore itself back
1ac60 20 74 6f 2c 20 77 68 69 63 68 0d 0a 20 20 20 20   to, which..    
1ac70 20 20 20 20 2f 2f 2f 20 73 68 6f 75 6c 64 20 61      /// should a
1ac80 6c 73 6f 20 68 61 76 65 20 74 68 65 20 65 66 66  lso have the eff
1ac90 65 63 74 20 6f 66 20 64 65 6c 65 74 69 6e 67 20  ect of deleting 
1aca0 61 6c 6c 20 73 61 76 65 64 20 73 74 61 74 65 73  all saved states
1acb0 20 77 69 74 68 20 61 6e 0d 0a 20 20 20 20 20 20   with an..      
1acc0 20 20 2f 2f 2f 20 69 6e 74 65 67 65 72 20 69 64    /// integer id
1acd0 65 6e 74 69 66 69 65 72 20 67 72 65 61 74 65 72  entifier greater
1ace0 20 74 68 61 6e 20 74 68 69 73 20 6f 6e 65 2e 0d   than this one..
1acf0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1ad00 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
1ad10 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
1ad20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e        /// A stan
1ad30 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75  dard SQLite retu
1ad40 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  rn code...      
1ad50 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
1ad60 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65  ..        SQLite
1ad70 45 72 72 6f 72 43 6f 64 65 20 78 52 6f 6c 6c 62  ErrorCode xRollb
1ad80 61 63 6b 54 6f 28 0d 0a 20 20 20 20 20 20 20 20  ackTo(..        
1ad90 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
1ada0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ,..            i
1adb0 6e 74 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20  nt iSavepoint.. 
1adc0 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 20             );.. 
1add0 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65     }..    #endre
1ade0 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  gion....    ////
1adf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae30 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23  ///////....    #
1ae40 72 65 67 69 6f 6e 20 49 53 51 4c 69 74 65 4d 61  region ISQLiteMa
1ae50 6e 61 67 65 64 4d 6f 64 75 6c 65 20 49 6e 74 65  nagedModule Inte
1ae60 72 66 61 63 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c  rface..    /// <
1ae70 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
1ae80 2f 20 54 68 69 73 20 69 6e 74 65 72 66 61 63 65  / This interface
1ae90 20 72 65 70 72 65 73 65 6e 74 73 20 61 20 76 69   represents a vi
1aea0 72 74 75 61 6c 20 74 61 62 6c 65 20 69 6d 70 6c  rtual table impl
1aeb0 65 6d 65 6e 74 61 74 69 6f 6e 20 77 72 69 74 74  ementation writt
1aec0 65 6e 20 69 6e 0d 0a 20 20 20 20 2f 2f 2f 20 6d  en in..    /// m
1aed0 61 6e 61 67 65 64 20 63 6f 64 65 2e 0d 0a 20 20  anaged code...  
1aee0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1aef0 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74  ..    public int
1af00 65 72 66 61 63 65 20 49 53 51 4c 69 74 65 4d 61  erface ISQLiteMa
1af10 6e 61 67 65 64 4d 6f 64 75 6c 65 0d 0a 20 20 20  nagedModule..   
1af20 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20   {..        /// 
1af30 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1af40 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 6e     /// Returns n
1af50 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 73  on-zero if the s
1af60 63 68 65 6d 61 20 66 6f 72 20 74 68 65 20 76 69  chema for the vi
1af70 72 74 75 61 6c 20 74 61 62 6c 65 20 68 61 73 20  rtual table has 
1af80 62 65 65 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  been..        //
1af90 2f 20 64 65 63 6c 61 72 65 64 2e 0d 0a 20 20 20  / declared...   
1afa0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1afb0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f  ry>..        boo
1afc0 6c 20 44 65 63 6c 61 72 65 64 20 7b 20 67 65 74  l Declared { get
1afd0 3b 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ; }....        /
1afe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b020 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1b030 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1b040 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65 74  .        /// Ret
1b050 75 72 6e 73 20 74 68 65 20 6e 61 6d 65 20 6f 66  urns the name of
1b060 20 74 68 65 20 6d 6f 64 75 6c 65 20 61 73 20 69   the module as i
1b070 74 20 77 61 73 20 72 65 67 69 73 74 65 72 65 64  t was registered
1b080 20 77 69 74 68 20 74 68 65 20 53 51 4c 69 74 65   with the SQLite
1b090 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f  ..        /// co
1b0a0 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  re library...   
1b0b0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1b0c0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 73 74 72  ry>..        str
1b0d0 69 6e 67 20 4e 61 6d 65 20 7b 20 67 65 74 3b 20  ing Name { get; 
1b0e0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
1b0f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b130 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1b140 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1b150 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
1b160 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64  method is called
1b170 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20   in response to 
1b180 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
1b190 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
1b1a0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
1b1b0 78 43 72 65 61 74 65 22 20 2f 3e 20 6d 65 74 68  xCreate" /> meth
1b1c0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  od...        ///
1b1d0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1b1e0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1b1f0 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f 6e  name="connection
1b200 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
1b210 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
1b220 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 22  QLiteConnection"
1b230 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
1b240 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 20 77  nce associated w
1b250 69 74 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ith..        ///
1b260 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
1b270 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le...        ///
1b280 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1b290 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1b2a0 6d 65 3d 22 70 43 6c 69 65 6e 74 44 61 74 61 22  me="pClientData"
1b2b0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1b2c0 68 65 20 6e 61 74 69 76 65 20 75 73 65 72 2d 64  he native user-d
1b2d0 61 74 61 20 70 6f 69 6e 74 65 72 20 61 73 73 6f  ata pointer asso
1b2e0 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73  ciated with this
1b2f0 20 6d 6f 64 75 6c 65 2c 20 61 73 20 69 74 20 77   module, as it w
1b300 61 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  as..        /// 
1b310 70 72 6f 76 69 64 65 64 20 74 6f 20 74 68 65 20  provided to the 
1b320 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
1b330 61 72 79 20 77 68 65 6e 20 74 68 65 20 6e 61 74  ary when the nat
1b340 69 76 65 20 6d 6f 64 75 6c 65 20 69 6e 73 74 61  ive module insta
1b350 6e 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  nce..        ///
1b360 20 77 61 73 20 63 72 65 61 74 65 64 2e 0d 0a 20   was created... 
1b370 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1b380 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1b390 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72   <param name="ar
1b3a0 67 75 6d 65 6e 74 73 22 3e 0d 0a 20 20 20 20 20  guments">..     
1b3b0 20 20 20 2f 2f 2f 20 54 68 65 20 6d 6f 64 75 6c     /// The modul
1b3c0 65 20 6e 61 6d 65 2c 20 64 61 74 61 62 61 73 65  e name, database
1b3d0 20 6e 61 6d 65 2c 20 76 69 72 74 75 61 6c 20 74   name, virtual t
1b3e0 61 62 6c 65 20 6e 61 6d 65 2c 20 61 6e 64 20 61  able name, and a
1b3f0 6c 6c 20 6f 74 68 65 72 0d 0a 20 20 20 20 20 20  ll other..      
1b400 20 20 2f 2f 2f 20 61 72 67 75 6d 65 6e 74 73 20    /// arguments 
1b410 70 61 73 73 65 64 20 74 6f 20 74 68 65 20 43 52  passed to the CR
1b420 45 41 54 45 20 56 49 52 54 55 41 4c 20 54 41 42  EATE VIRTUAL TAB
1b430 4c 45 20 73 74 61 74 65 6d 65 6e 74 2e 0d 0a 20  LE statement... 
1b440 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1b450 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1b460 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61   <param name="ta
1b470 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ble">..        /
1b480 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c  // Upon success,
1b490 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20   this parameter 
1b4a0 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64  must be modified
1b4b0 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d   to contain the.
1b4c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
1b4d0 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69  e cref="SQLiteVi
1b4e0 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f  rtualTable" /> o
1b4f0 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61  bject instance a
1b500 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 0d 0a  ssociated with..
1b510 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20          /// the 
1b520 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a  virtual table...
1b530 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1b540 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
1b550 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 65  / <param name="e
1b560 72 72 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20  rror">..        
1b570 2f 2f 2f 20 55 70 6f 6e 20 66 61 69 6c 75 72 65  /// Upon failure
1b580 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72  , this parameter
1b590 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65   must be modifie
1b5a0 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20 61 6e 20  d to contain an 
1b5b0 65 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f  error..        /
1b5c0 2f 2f 20 6d 65 73 73 61 67 65 2e 0d 0a 20 20 20  // message...   
1b5d0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
1b5e0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1b5f0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1b600 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64    /// A standard
1b610 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63   SQLite return c
1b620 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode...        //
1b630 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
1b640 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f        SQLiteErro
1b650 72 43 6f 64 65 20 43 72 65 61 74 65 28 0d 0a 20  rCode Create(.. 
1b660 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
1b670 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e  eConnection conn
1b680 65 63 74 69 6f 6e 2c 20 20 2f 2a 20 69 6e 20 2a  ection,  /* in *
1b690 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  /..            I
1b6a0 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74  ntPtr pClientDat
1b6b0 61 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20  a,           /* 
1b6c0 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
1b6d0 20 20 20 73 74 72 69 6e 67 5b 5d 20 61 72 67 75     string[] argu
1b6e0 6d 65 6e 74 73 2c 20 20 20 20 20 20 20 20 20 20  ments,          
1b6f0 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
1b700 20 20 20 20 20 20 20 72 65 66 20 53 51 4c 69 74         ref SQLit
1b710 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61  eVirtualTable ta
1b720 62 6c 65 2c 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a  ble, /* out */..
1b730 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
1b740 73 74 72 69 6e 67 20 65 72 72 6f 72 20 20 20 20  string error    
1b750 20 20 20 20 20 20 20 20 20 20 2f 2a 20 6f 75 74            /* out
1b760 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
1b770 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   );....        /
1b780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b7a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b7b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b7c0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1b7d0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1b7e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
1b7f0 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c  s method is call
1b800 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74  ed in response t
1b810 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  o the..        /
1b820 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  // <see cref="IS
1b830 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
1b840 65 2e 78 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d  e.xConnect" /> m
1b850 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
1b860 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1b870 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1b880 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63 74  am name="connect
1b890 69 6f 6e 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ion">..        /
1b8a0 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
1b8b0 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  ="SQLiteConnecti
1b8c0 6f 6e 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  on" /> object in
1b8d0 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65  stance associate
1b8e0 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20 20 20  d with..        
1b8f0 2f 2f 2f 20 74 68 65 20 76 69 72 74 75 61 6c 20  /// the virtual 
1b900 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20  table...        
1b910 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1b920 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1b930 20 6e 61 6d 65 3d 22 70 43 6c 69 65 6e 74 44 61   name="pClientDa
1b940 74 61 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ta">..        //
1b950 2f 20 54 68 65 20 6e 61 74 69 76 65 20 75 73 65  / The native use
1b960 72 2d 64 61 74 61 20 70 6f 69 6e 74 65 72 20 61  r-data pointer a
1b970 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
1b980 68 69 73 20 6d 6f 64 75 6c 65 2c 20 61 73 20 69  his module, as i
1b990 74 20 77 61 73 0d 0a 20 20 20 20 20 20 20 20 2f  t was..        /
1b9a0 2f 2f 20 70 72 6f 76 69 64 65 64 20 74 6f 20 74  // provided to t
1b9b0 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c  he SQLite core l
1b9c0 69 62 72 61 72 79 20 77 68 65 6e 20 74 68 65 20  ibrary when the 
1b9d0 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 69 6e  native module in
1b9e0 73 74 61 6e 63 65 0d 0a 20 20 20 20 20 20 20 20  stance..        
1b9f0 2f 2f 2f 20 77 61 73 20 63 72 65 61 74 65 64 2e  /// was created.
1ba00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1ba10 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1ba20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1ba30 22 61 72 67 75 6d 65 6e 74 73 22 3e 0d 0a 20 20  "arguments">..  
1ba40 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 6f        /// The mo
1ba50 64 75 6c 65 20 6e 61 6d 65 2c 20 64 61 74 61 62  dule name, datab
1ba60 61 73 65 20 6e 61 6d 65 2c 20 76 69 72 74 75 61  ase name, virtua
1ba70 6c 20 74 61 62 6c 65 20 6e 61 6d 65 2c 20 61 6e  l table name, an
1ba80 64 20 61 6c 6c 20 6f 74 68 65 72 0d 0a 20 20 20  d all other..   
1ba90 20 20 20 20 20 2f 2f 2f 20 61 72 67 75 6d 65 6e       /// argumen
1baa0 74 73 20 70 61 73 73 65 64 20 74 6f 20 74 68 65  ts passed to the
1bab0 20 43 52 45 41 54 45 20 56 49 52 54 55 41 4c 20   CREATE VIRTUAL 
1bac0 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 2e  TABLE statement.
1bad0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1bae0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1baf0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1bb00 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20  "table">..      
1bb10 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65    /// Upon succe
1bb20 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74  ss, this paramet
1bb30 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66  er must be modif
1bb40 69 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74  ied to contain t
1bb50 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
1bb60 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
1bb70 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f  eVirtualTable" /
1bb80 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
1bb90 65 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  e associated wit
1bba0 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  h..        /// t
1bbb0 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
1bbc0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1bbd0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1bbe0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1bbf0 3d 22 65 72 72 6f 72 22 3e 0d 0a 20 20 20 20 20  ="error">..     
1bc00 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 66 61 69 6c     /// Upon fail
1bc10 75 72 65 2c 20 74 68 69 73 20 70 61 72 61 6d 65  ure, this parame
1bc20 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69  ter must be modi
1bc30 66 69 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20  fied to contain 
1bc40 61 6e 20 65 72 72 6f 72 0d 0a 20 20 20 20 20 20  an error..      
1bc50 20 20 2f 2f 2f 20 6d 65 73 73 61 67 65 2e 0d 0a    /// message...
1bc60 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1bc70 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
1bc80 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
1bc90 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64       /// A stand
1bca0 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72  ard SQLite retur
1bcb0 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  n code...       
1bcc0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
1bcd0 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45  .        SQLiteE
1bce0 72 72 6f 72 43 6f 64 65 20 43 6f 6e 6e 65 63 74  rrorCode Connect
1bcf0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
1bd00 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 20  QLiteConnection 
1bd10 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 20 2f 2a 20  connection,  /* 
1bd20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
1bd30 20 20 20 49 6e 74 50 74 72 20 70 43 6c 69 65 6e     IntPtr pClien
1bd40 74 44 61 74 61 2c 20 20 20 20 20 20 20 20 20 20  tData,          
1bd50 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
1bd60 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20         string[] 
1bd70 61 72 67 75 6d 65 6e 74 73 2c 20 20 20 20 20 20  arguments,      
1bd80 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20       /* in */.. 
1bd90 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 53             ref S
1bda0 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
1bdb0 65 20 74 61 62 6c 65 2c 20 2f 2a 20 6f 75 74 20  e table, /* out 
1bdc0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
1bdd0 72 65 66 20 73 74 72 69 6e 67 20 65 72 72 6f 72  ref string error
1bde0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a                /*
1bdf0 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20   out */..       
1be00 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20       );....     
1be10 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1be20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1be30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1be40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1be50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1be60 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
1be70 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1be80 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20   This method is 
1be90 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e  called in respon
1bea0 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20  se to the..     
1beb0 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
1bec0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
1bed0 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78  odule.xBestIndex
1bee0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
1bef0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
1bf00 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1bf10 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74  / <param name="t
1bf20 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  able">..        
1bf30 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
1bf40 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c  f="SQLiteVirtual
1bf50 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74  Table" /> object
1bf60 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69   instance associ
1bf70 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ated..        //
1bf80 2f 20 77 69 74 68 20 74 68 69 73 20 76 69 72 74  / with this virt
1bf90 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
1bfa0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1bfb0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1bfc0 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78  aram name="index
1bfd0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
1bfe0 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
1bff0 51 4c 69 74 65 49 6e 64 65 78 22 20 2f 3e 20 6f  QLiteIndex" /> o
1c000 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 63  bject instance c
1c010 6f 6e 74 61 69 6e 69 6e 67 20 61 6c 6c 20 74 68  ontaining all th
1c020 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64  e..        /// d
1c030 61 74 61 20 66 6f 72 20 74 68 65 20 69 6e 70 75  ata for the inpu
1c040 74 73 20 61 6e 64 20 6f 75 74 70 75 74 73 20 72  ts and outputs r
1c050 65 6c 61 74 69 6e 67 20 74 6f 20 69 6e 64 65 78  elating to index
1c060 20 73 65 6c 65 63 74 69 6f 6e 2e 0d 0a 20 20 20   selection...   
1c070 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
1c080 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1c090 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1c0a0 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64    /// A standard
1c0b0 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63   SQLite return c
1c0c0 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode...        //
1c0d0 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
1c0e0 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f        SQLiteErro
1c0f0 72 43 6f 64 65 20 42 65 73 74 49 6e 64 65 78 28  rCode BestIndex(
1c100 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
1c110 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
1c120 20 74 61 62 6c 65 2c 20 2f 2a 20 69 6e 20 2a 2f   table, /* in */
1c130 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
1c140 4c 69 74 65 49 6e 64 65 78 20 69 6e 64 65 78 20  LiteIndex index 
1c150 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 2c 20 6f          /* in, o
1c160 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ut */..         
1c170 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20     );....       
1c180 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1c190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c1a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c1b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c1c0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1c1d0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1c1e0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1c1f0 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61  his method is ca
1c200 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65  lled in response
1c210 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20   to the..       
1c220 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
1c230 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
1c240 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 22  ule.xDisconnect"
1c250 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
1c260 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1c270 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1c280 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61   <param name="ta
1c290 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ble">..        /
1c2a0 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
1c2b0 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  ="SQLiteVirtualT
1c2c0 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20  able" /> object 
1c2d0 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61  instance associa
1c2e0 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ted..        ///
1c2f0 20 77 69 74 68 20 74 68 69 73 20 76 69 72 74 75   with this virtu
1c300 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20  al table...     
1c310 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1c320 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
1c330 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
1c340 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53  /// A standard S
1c350 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64  QLite return cod
1c360 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
1c370 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
1c380 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43      SQLiteErrorC
1c390 6f 64 65 20 44 69 73 63 6f 6e 6e 65 63 74 28 0d  ode Disconnect(.
1c3a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
1c3b0 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20  iteVirtualTable 
1c3c0 74 61 62 6c 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a  table /* in */..
1c3d0 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a              );..
1c3e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
1c3f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c430 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
1c440 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
1c450 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74      /// This met
1c460 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e  hod is called in
1c470 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65   response to the
1c480 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1c490 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
1c4a0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 65  NativeModule.xDe
1c4b0 73 74 72 6f 79 22 20 2f 3e 20 6d 65 74 68 6f 64  stroy" /> method
1c4c0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1c4d0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1c4e0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1c4f0 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20  me="table">..   
1c500 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
1c510 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69  e cref="SQLiteVi
1c520 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f  rtualTable" /> o
1c530 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61  bject instance a
1c540 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20  ssociated..     
1c550 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73     /// with this
1c560 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d   virtual table..
1c570 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1c580 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
1c590 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
1c5a0 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e        /// A stan
1c5b0 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75  dard SQLite retu
1c5c0 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  rn code...      
1c5d0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
1c5e0 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65  ..        SQLite
1c5f0 45 72 72 6f 72 43 6f 64 65 20 44 65 73 74 72 6f  ErrorCode Destro
1c600 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y(..            
1c610 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
1c620 6c 65 20 74 61 62 6c 65 20 2f 2a 20 69 6e 20 2a  le table /* in *
1c630 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  /..            )
1c640 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
1c650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c690 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1c6a0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1c6b0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
1c6c0 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64  method is called
1c6d0 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20   in response to 
1c6e0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
1c6f0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
1c700 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
1c710 78 4f 70 65 6e 22 20 2f 3e 20 6d 65 74 68 6f 64  xOpen" /> method
1c720 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1c730 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1c740 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1c750 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20  me="table">..   
1c760 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
1c770 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69  e cref="SQLiteVi
1c780 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f  rtualTable" /> o
1c790 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61  bject instance a
1c7a0 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20  ssociated..     
1c7b0 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73     /// with this
1c7c0 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d   virtual table..
1c7d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1c7e0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
1c7f0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1c800 63 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20  cursor">..      
1c810 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65    /// Upon succe
1c820 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74  ss, this paramet
1c830 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66  er must be modif
1c840 69 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74  ied to contain t
1c850 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
1c860 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
1c870 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72  eVirtualTableCur
1c880 73 6f 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  sor" /> object i
1c890 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74  nstance associat
1c8a0 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
1c8b0 77 69 74 68 20 74 68 65 20 6e 65 77 6c 79 20 6f  with the newly o
1c8c0 70 65 6e 65 64 20 76 69 72 74 75 61 6c 20 74 61  pened virtual ta
1c8d0 62 6c 65 20 63 75 72 73 6f 72 2e 0d 0a 20 20 20  ble cursor...   
1c8e0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
1c8f0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1c900 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1c910 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64    /// A standard
1c920 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63   SQLite return c
1c930 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode...        //
1c940 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
1c950 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f        SQLiteErro
1c960 72 43 6f 64 65 20 4f 70 65 6e 28 0d 0a 20 20 20  rCode Open(..   
1c970 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56           SQLiteV
1c980 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c  irtualTable tabl
1c990 65 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20  e,           /* 
1c9a0 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
1c9b0 20 20 20 72 65 66 20 53 51 4c 69 74 65 56 69 72     ref SQLiteVir
1c9c0 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 20  tualTableCursor 
1c9d0 63 75 72 73 6f 72 20 2f 2a 20 6f 75 74 20 2a 2f  cursor /* out */
1c9e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b  ..            );
1c9f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1ca00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ca10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ca20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ca30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ca40 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
1ca50 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
1ca60 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d        /// This m
1ca70 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20  ethod is called 
1ca80 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74  in response to t
1ca90 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
1caa0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
1cab0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
1cac0 43 6c 6f 73 65 22 20 2f 3e 20 6d 65 74 68 6f 64  Close" /> method
1cad0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1cae0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1caf0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1cb00 6d 65 3d 22 63 75 72 73 6f 72 22 3e 0d 0a 20 20  me="cursor">..  
1cb10 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
1cb20 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56  ee cref="SQLiteV
1cb30 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f  irtualTableCurso
1cb40 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  r" /> object ins
1cb50 74 61 6e 63 65 0d 0a 20 20 20 20 20 20 20 20 2f  tance..        /
1cb60 2f 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  // associated wi
1cb70 74 68 20 74 68 65 20 70 72 65 76 69 6f 75 73 6c  th the previousl
1cb80 79 20 6f 70 65 6e 65 64 20 76 69 72 74 75 61 6c  y opened virtual
1cb90 20 74 61 62 6c 65 20 63 75 72 73 6f 72 20 74 6f   table cursor to
1cba0 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   be..        ///
1cbb0 20 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20   used...        
1cbc0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1cbd0 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
1cbe0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
1cbf0 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69   A standard SQLi
1cc00 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d  te return code..
1cc10 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
1cc20 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1cc30 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1cc40 20 43 6c 6f 73 65 28 0d 0a 20 20 20 20 20 20 20   Close(..       
1cc50 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75       SQLiteVirtu
1cc60 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 20 63 75  alTableCursor cu
1cc70 72 73 6f 72 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  rsor /* in */.. 
1cc80 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d             );...
1cc90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1cca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ccb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ccc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ccd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cce0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
1ccf0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1cd00 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68     /// This meth
1cd10 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20  od is called in 
1cd20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d  response to the.
1cd30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
1cd40 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
1cd50 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c  ativeModule.xFil
1cd60 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ter" /> method..
1cd70 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
1cd80 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1cd90 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1cda0 3d 22 63 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20  ="cursor">..    
1cdb0 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
1cdc0 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72   cref="SQLiteVir
1cdd0 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 22  tualTableCursor"
1cde0 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
1cdf0 6e 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  nce..        ///
1ce00 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
1ce10 20 74 68 65 20 70 72 65 76 69 6f 75 73 6c 79 20   the previously 
1ce20 6f 70 65 6e 65 64 20 76 69 72 74 75 61 6c 20 74  opened virtual t
1ce30 61 62 6c 65 20 63 75 72 73 6f 72 20 74 6f 20 62  able cursor to b
1ce40 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 75  e..        /// u
1ce50 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  sed...        //
1ce60 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1ce70 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1ce80 61 6d 65 3d 22 69 6e 64 65 78 4e 75 6d 62 65 72  ame="indexNumber
1ce90 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
1cea0 4e 75 6d 62 65 72 20 75 73 65 64 20 74 6f 20 68  Number used to h
1ceb0 65 6c 70 20 69 64 65 6e 74 69 66 79 20 74 68 65  elp identify the
1cec0 20 73 65 6c 65 63 74 65 64 20 69 6e 64 65 78 2e   selected index.
1ced0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1cee0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1cef0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1cf00 22 69 6e 64 65 78 53 74 72 69 6e 67 22 3e 0d 0a  "indexString">..
1cf10 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 74 72 69          /// Stri
1cf20 6e 67 20 75 73 65 64 20 74 6f 20 68 65 6c 70 20  ng used to help 
1cf30 69 64 65 6e 74 69 66 79 20 74 68 65 20 73 65 6c  identify the sel
1cf40 65 63 74 65 64 20 69 6e 64 65 78 2e 0d 0a 20 20  ected index...  
1cf50 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1cf60 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
1cf70 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c  <param name="val
1cf80 75 65 73 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ues">..        /
1cf90 2f 2f 20 54 68 65 20 76 61 6c 75 65 73 20 63 6f  // The values co
1cfa0 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 65  rresponding to e
1cfb0 61 63 68 20 63 6f 6c 75 6d 6e 20 69 6e 20 74 68  ach column in th
1cfc0 65 20 73 65 6c 65 63 74 65 64 20 69 6e 64 65 78  e selected index
1cfd0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1cfe0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1cff0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
1d000 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74          /// A st
1d010 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65  andard SQLite re
1d020 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20  turn code...    
1d030 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
1d040 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69  s>..        SQLi
1d050 74 65 45 72 72 6f 72 43 6f 64 65 20 46 69 6c 74  teErrorCode Filt
1d060 65 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  er(..           
1d070 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
1d080 62 6c 65 43 75 72 73 6f 72 20 63 75 72 73 6f 72  bleCursor cursor
1d090 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20  , /* in */..    
1d0a0 20 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65          int inde
1d0b0 78 4e 75 6d 62 65 72 2c 20 20 20 20 20 20 20 20  xNumber,        
1d0c0 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a           /* in *
1d0d0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  /..            s
1d0e0 74 72 69 6e 67 20 69 6e 64 65 78 53 74 72 69 6e  tring indexStrin
1d0f0 67 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20  g,              
1d100 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
1d110 20 20 20 20 20 20 53 51 4c 69 74 65 56 61 6c 75        SQLiteValu
1d120 65 5b 5d 20 76 61 6c 75 65 73 20 20 20 20 20 20  e[] values      
1d130 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d         /* in */.
1d140 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d  .            );.
1d150 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1d160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d1a0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
1d1b0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1d1c0 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65       /// This me
1d1d0 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69  thod is called i
1d1e0 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68  n response to th
1d1f0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
1d200 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
1d210 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4e  eNativeModule.xN
1d220 65 78 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ext" /> method..
1d230 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
1d240 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1d250 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1d260 3d 22 63 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20  ="cursor">..    
1d270 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
1d280 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72   cref="SQLiteVir
1d290 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 22  tualTableCursor"
1d2a0 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
1d2b0 6e 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  nce..        ///
1d2c0 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
1d2d0 20 74 68 65 20 70 72 65 76 69 6f 75 73 6c 79 20   the previously 
1d2e0 6f 70 65 6e 65 64 20 76 69 72 74 75 61 6c 20 74  opened virtual t
1d2f0 61 62 6c 65 20 63 75 72 73 6f 72 20 74 6f 20 62  able cursor to b
1d300 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 75  e..        /// u
1d310 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  sed...        //
1d320 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1d330 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
1d340 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
1d350 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
1d360 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
1d370 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
1d380 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53  urns>..        S
1d390 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 4e  QLiteErrorCode N
1d3a0 65 78 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ext(..          
1d3b0 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54    SQLiteVirtualT
1d3c0 61 62 6c 65 43 75 72 73 6f 72 20 63 75 72 73 6f  ableCursor curso
1d3d0 72 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20  r /* in */..    
1d3e0 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20          );....  
1d3f0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1d400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1d440 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
1d450 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1d460 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20  /// This method 
1d470 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73  is called in res
1d480 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20  ponse to the..  
1d490 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
1d4a0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
1d4b0 76 65 4d 6f 64 75 6c 65 2e 78 45 6f 66 22 20 2f  veModule.xEof" /
1d4c0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
1d4d0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1d4e0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1d4f0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 75 72 73  param name="curs
1d500 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  or">..        //
1d510 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
1d520 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  "SQLiteVirtualTa
1d530 62 6c 65 43 75 72 73 6f 72 22 20 2f 3e 20 6f 62  bleCursor" /> ob
1d540 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 0d 0a 20  ject instance.. 
1d550 20 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63         /// assoc
1d560 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20 70  iated with the p
1d570 72 65 76 69 6f 75 73 6c 79 20 6f 70 65 6e 65 64  reviously opened
1d580 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 63   virtual table c
1d590 75 72 73 6f 72 20 74 6f 20 62 65 0d 0a 20 20 20  ursor to be..   
1d5a0 20 20 20 20 20 2f 2f 2f 20 75 73 65 64 2e 0d 0a       /// used...
1d5b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1d5c0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
1d5d0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
1d5e0 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
1d5f0 6f 20 69 66 20 6e 6f 20 6d 6f 72 65 20 72 6f 77  o if no more row
1d600 73 20 61 72 65 20 61 76 61 69 6c 61 62 6c 65 3b  s are available;
1d610 20 7a 65 72 6f 20 6f 74 68 65 72 77 69 73 65 2e   zero otherwise.
1d620 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1d630 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1d640 20 20 62 6f 6f 6c 20 45 6f 66 28 0d 0a 20 20 20    bool Eof(..   
1d650 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56           SQLiteV
1d660 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f  irtualTableCurso
1d670 72 20 63 75 72 73 6f 72 20 2f 2a 20 69 6e 20 2a  r cursor /* in *
1d680 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  /..            )
1d690 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
1d6a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d6b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d6c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d6e0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1d6f0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1d700 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
1d710 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64  method is called
1d720 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20   in response to 
1d730 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
1d740 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
1d750 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
1d760 78 43 6f 6c 75 6d 6e 22 20 2f 3e 20 6d 65 74 68  xColumn" /> meth
1d770 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  od...        ///
1d780 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1d790 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1d7a0 6e 61 6d 65 3d 22 63 75 72 73 6f 72 22 3e 0d 0a  name="cursor">..
1d7b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1d7c0 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
1d7d0 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72  eVirtualTableCur
1d7e0 73 6f 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  sor" /> object i
1d7f0 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20 20 20 20  nstance..       
1d800 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64 20   /// associated 
1d810 77 69 74 68 20 74 68 65 20 70 72 65 76 69 6f 75  with the previou
1d820 73 6c 79 20 6f 70 65 6e 65 64 20 76 69 72 74 75  sly opened virtu
1d830 61 6c 20 74 61 62 6c 65 20 63 75 72 73 6f 72 20  al table cursor 
1d840 74 6f 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f  to be..        /
1d850 2f 2f 20 75 73 65 64 2e 0d 0a 20 20 20 20 20 20  // used...      
1d860 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
1d870 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1d880 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 74 65 78 74  am name="context
1d890 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
1d8a0 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
1d8b0 51 4c 69 74 65 43 6f 6e 74 65 78 74 22 20 2f 3e  QLiteContext" />
1d8c0 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
1d8d0 20 74 6f 20 62 65 20 75 73 65 64 20 66 6f 72 0d   to be used for.
1d8e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 72 65 74  .        /// ret
1d8f0 75 72 6e 69 6e 67 20 74 68 65 20 73 70 65 63 69  urning the speci
1d900 66 69 65 64 20 63 6f 6c 75 6d 6e 20 76 61 6c 75  fied column valu
1d910 65 20 74 6f 20 74 68 65 20 53 51 4c 69 74 65 20  e to the SQLite 
1d920 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20  core library... 
1d930 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1d940 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1d950 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e   <param name="in
1d960 64 65 78 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  dex">..        /
1d970 2f 2f 20 54 68 65 20 7a 65 72 6f 2d 62 61 73 65  // The zero-base
1d980 64 20 69 6e 64 65 78 20 63 6f 72 72 65 73 70 6f  d index correspo
1d990 6e 64 69 6e 67 20 74 6f 20 74 68 65 20 63 6f 6c  nding to the col
1d9a0 75 6d 6e 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74  umn containing t
1d9b0 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
1d9c0 76 61 6c 75 65 20 74 6f 20 62 65 20 72 65 74 75  value to be retu
1d9d0 72 6e 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  rned...        /
1d9e0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1d9f0 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
1da00 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
1da10 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74  A standard SQLit
1da20 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a  e return code...
1da30 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
1da40 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
1da50 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1da60 43 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20 20 20 20  Column(..       
1da70 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75       SQLiteVirtu
1da80 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 20 63 75  alTableCursor cu
1da90 72 73 6f 72 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a  rsor, /* in */..
1daa0 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
1dab0 74 65 43 6f 6e 74 65 78 74 20 63 6f 6e 74 65 78  teContext contex
1dac0 74 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20  t,           /* 
1dad0 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
1dae0 20 20 20 69 6e 74 20 69 6e 64 65 78 20 20 20 20     int index    
1daf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1db00 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20      /* in */..  
1db10 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a            );....
1db20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1db30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1db40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1db50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1db60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1db70 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1db80 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1db90 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
1dba0 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72  d is called in r
1dbb0 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a  esponse to the..
1dbc0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
1dbd0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
1dbe0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 77 49  tiveModule.xRowI
1dbf0 64 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  d" /> method... 
1dc00 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
1dc10 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1dc20 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1dc30 63 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20  cursor">..      
1dc40 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
1dc50 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75  ref="SQLiteVirtu
1dc60 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 22 20 2f  alTableCursor" /
1dc70 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
1dc80 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61  e..        /// a
1dc90 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
1dca0 68 65 20 70 72 65 76 69 6f 75 73 6c 79 20 6f 70  he previously op
1dcb0 65 6e 65 64 20 76 69 72 74 75 61 6c 20 74 61 62  ened virtual tab
1dcc0 6c 65 20 63 75 72 73 6f 72 20 74 6f 20 62 65 0d  le cursor to be.
1dcd0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 75 73 65  .        /// use
1dce0 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
1dcf0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
1dd00 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1dd10 65 3d 22 72 6f 77 49 64 22 3e 0d 0a 20 20 20 20  e="rowId">..    
1dd20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63      /// Upon suc
1dd30 63 65 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d  cess, this param
1dd40 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64  eter must be mod
1dd50 69 66 69 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e  ified to contain
1dd60 20 74 68 65 20 75 6e 69 71 75 65 0d 0a 20 20 20   the unique..   
1dd70 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65 67 65 72       /// integer
1dd80 20 72 6f 77 20 69 64 65 6e 74 69 66 69 65 72 20   row identifier 
1dd90 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20  for the current 
1dda0 72 6f 77 20 66 6f 72 20 74 68 65 20 73 70 65 63  row for the spec
1ddb0 69 66 69 65 64 20 63 75 72 73 6f 72 2e 0d 0a 20  ified cursor... 
1ddc0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1ddd0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1dde0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
1ddf0 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61      /// A standa
1de00 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e  rd SQLite return
1de10 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
1de20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
1de30 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72          SQLiteEr
1de40 72 6f 72 43 6f 64 65 20 52 6f 77 49 64 28 0d 0a  rorCode RowId(..
1de50 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
1de60 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75  teVirtualTableCu
1de70 72 73 6f 72 20 63 75 72 73 6f 72 2c 20 2f 2a 20  rsor cursor, /* 
1de80 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
1de90 20 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49     ref long rowI
1dea0 64 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  d               
1deb0 20 20 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20      /* out */.. 
1dec0 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d             );...
1ded0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1dee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1def0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1df00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1df10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1df20 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
1df30 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1df40 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68     /// This meth
1df50 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20  od is called in 
1df60 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d  response to the.
1df70 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
1df80 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
1df90 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64  ativeModule.xUpd
1dfa0 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ate" /> method..
1dfb0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
1dfc0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1dfd0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1dfe0 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20  ="table">..     
1dff0 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
1e000 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74  cref="SQLiteVirt
1e010 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a  ualTable" /> obj
1e020 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73  ect instance ass
1e030 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20  ociated..       
1e040 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20 76   /// with this v
1e050 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20  irtual table... 
1e060 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1e070 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1e080 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61   <param name="va
1e090 6c 75 65 73 22 3e 0d 0a 20 20 20 20 20 20 20 20  lues">..        
1e0a0 2f 2f 2f 20 54 68 65 20 61 72 72 61 79 20 6f 66  /// The array of
1e0b0 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
1e0c0 74 65 56 61 6c 75 65 22 20 2f 3e 20 6f 62 6a 65  teValue" /> obje
1e0d0 63 74 20 69 6e 73 74 61 6e 63 65 73 20 63 6f 6e  ct instances con
1e0e0 74 61 69 6e 69 6e 67 0d 0a 20 20 20 20 20 20 20  taining..       
1e0f0 20 2f 2f 2f 20 74 68 65 20 6e 65 77 20 6f 72 20   /// the new or 
1e100 6d 6f 64 69 66 69 65 64 20 63 6f 6c 75 6d 6e 20  modified column 
1e110 76 61 6c 75 65 73 2c 20 69 66 20 61 6e 79 2e 0d  values, if any..
1e120 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1e130 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
1e140 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1e150 72 6f 77 49 64 22 3e 0d 0a 20 20 20 20 20 20 20  rowId">..       
1e160 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73   /// Upon succes
1e170 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65  s, this paramete
1e180 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69  r must be modifi
1e190 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68  ed to contain th
1e1a0 65 20 75 6e 69 71 75 65 0d 0a 20 20 20 20 20 20  e unique..      
1e1b0 20 20 2f 2f 2f 20 69 6e 74 65 67 65 72 20 72 6f    /// integer ro
1e1c0 77 20 69 64 65 6e 74 69 66 69 65 72 20 66 6f 72  w identifier for
1e1d0 20 74 68 65 20 72 6f 77 20 74 68 61 74 20 77 61   the row that wa
1e1e0 73 20 69 6e 73 65 72 74 65 64 2c 20 69 66 20 61  s inserted, if a
1e1f0 6e 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ny...        ///
1e200 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1e210 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
1e220 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20  ..        /// A 
1e230 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20  standard SQLite 
1e240 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20  return code...  
1e250 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
1e260 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51  rns>..        SQ
1e270 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 55 70  LiteErrorCode Up
1e280 64 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20  date(..         
1e290 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c     SQLiteVirtual
1e2a0 54 61 62 6c 65 20 74 61 62 6c 65 2c 20 2f 2a 20  Table table, /* 
1e2b0 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
1e2c0 20 20 20 53 51 4c 69 74 65 56 61 6c 75 65 5b 5d     SQLiteValue[]
1e2d0 20 76 61 6c 75 65 73 2c 20 20 20 20 20 2f 2a 20   values,     /* 
1e2e0 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
1e2f0 20 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49     ref long rowI
1e300 64 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20  d            /* 
1e310 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  out */..        
1e320 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20      );....      
1e330 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1e340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e370 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1e380 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
1e390 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1e3a0 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63  This method is c
1e3b0 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73  alled in respons
1e3c0 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  e to the..      
1e3d0 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
1e3e0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
1e3f0 64 75 6c 65 2e 78 42 65 67 69 6e 22 20 2f 3e 20  dule.xBegin" /> 
1e400 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
1e410 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1e420 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1e430 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22  ram name="table"
1e440 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1e450 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
1e460 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
1e470 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
1e480 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d  ance associated.
1e490 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74  .        /// wit
1e4a0 68 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74  h this virtual t
1e4b0 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  able...        /
1e4c0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1e4d0 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
1e4e0 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
1e4f0 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74  A standard SQLit
1e500 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a  e return code...
1e510 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
1e520 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
1e530 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1e540 42 65 67 69 6e 28 0d 0a 20 20 20 20 20 20 20 20  Begin(..        
1e550 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61      SQLiteVirtua
1e560 6c 54 61 62 6c 65 20 74 61 62 6c 65 20 2f 2a 20  lTable table /* 
1e570 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
1e580 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20     );....       
1e590 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1e5a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e5b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e5d0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1e5e0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1e5f0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1e600 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61  his method is ca
1e610 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65  lled in response
1e620 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20   to the..       
1e630 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
1e640 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
1e650 75 6c 65 2e 78 53 79 6e 63 22 20 2f 3e 20 6d 65  ule.xSync" /> me
1e660 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  thod...        /
1e670 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1e680 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1e690 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d  m name="table">.
1e6a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1e6b0 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
1e6c0 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20  teVirtualTable" 
1e6d0 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
1e6e0 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20  ce associated.. 
1e6f0 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20         /// with 
1e700 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62  this virtual tab
1e710 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le...        ///
1e720 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1e730 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
1e740 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20  ..        /// A 
1e750 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20  standard SQLite 
1e760 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20  return code...  
1e770 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
1e780 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51  rns>..        SQ
1e790 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 53 79  LiteErrorCode Sy
1e7a0 6e 63 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nc(..           
1e7b0 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
1e7c0 62 6c 65 20 74 61 62 6c 65 20 2f 2a 20 69 6e 20  ble table /* in 
1e7d0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
1e7e0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  );....        //
1e7f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e830 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1e840 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1e850 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
1e860 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65   method is calle
1e870 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f  d in response to
1e880 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
1e890 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  / <see cref="ISQ
1e8a0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
1e8b0 2e 78 43 6f 6d 6d 69 74 22 20 2f 3e 20 6d 65 74  .xCommit" /> met
1e8c0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
1e8d0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1e8e0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1e8f0 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a   name="table">..
1e900 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1e910 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
1e920 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f  eVirtualTable" /
1e930 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
1e940 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20  e associated..  
1e950 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74        /// with t
1e960 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c  his virtual tabl
1e970 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
1e980 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
1e990 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
1e9a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73  .        /// A s
1e9b0 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72  tandard SQLite r
1e9c0 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20  eturn code...   
1e9d0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
1e9e0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c  ns>..        SQL
1e9f0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 43 6f 6d  iteErrorCode Com
1ea00 6d 69 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mit(..          
1ea10 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54    SQLiteVirtualT
1ea20 61 62 6c 65 20 74 61 62 6c 65 20 2f 2a 20 69 6e  able table /* in
1ea30 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
1ea40 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   );....        /
1ea50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ea60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ea70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ea80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ea90 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1eaa0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1eab0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
1eac0 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c  s method is call
1ead0 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74  ed in response t
1eae0 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  o the..        /
1eaf0 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  // <see cref="IS
1eb00 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
1eb10 65 2e 78 52 6f 6c 6c 62 61 63 6b 22 20 2f 3e 20  e.xRollback" /> 
1eb20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
1eb30 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1eb40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1eb50 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22  ram name="table"
1eb60 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1eb70 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
1eb80 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
1eb90 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
1eba0 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d  ance associated.
1ebb0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74  .        /// wit
1ebc0 68 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74  h this virtual t
1ebd0 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  able...        /
1ebe0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1ebf0 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
1ec00 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
1ec10 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74  A standard SQLit
1ec20 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a  e return code...
1ec30 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
1ec40 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
1ec50 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1ec60 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20  Rollback(..     
1ec70 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72         SQLiteVir
1ec80 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 20  tualTable table 
1ec90 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
1eca0 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20        );....    
1ecb0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1ecc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ecd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ece0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ecf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1ed00 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
1ed10 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1ed20 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73  / This method is
1ed30 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f   called in respo
1ed40 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20  nse to the..    
1ed50 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
1ed60 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
1ed70 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63  Module.xFindFunc
1ed80 74 69 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  tion" /> method.
1ed90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1eda0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1edb0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1edc0 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20  e="table">..    
1edd0 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
1ede0 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72   cref="SQLiteVir
1edf0 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62  tualTable" /> ob
1ee00 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73  ject instance as
1ee10 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20  sociated..      
1ee20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20    /// with this 
1ee30 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a  virtual table...
1ee40 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1ee50 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
1ee60 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61  / <param name="a
1ee70 72 67 75 6d 65 6e 74 43 6f 75 6e 74 22 3e 0d 0a  rgumentCount">..
1ee80 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1ee90 6e 75 6d 62 65 72 20 6f 66 20 61 72 67 75 6d 65  number of argume
1eea0 6e 74 73 20 74 6f 20 74 68 65 20 66 75 6e 63 74  nts to the funct
1eeb0 69 6f 6e 20 62 65 69 6e 67 20 73 6f 75 67 68 74  ion being sought
1eec0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1eed0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1eee0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1eef0 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20  ="name">..      
1ef00 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f    /// The name o
1ef10 66 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 62  f the function b
1ef20 65 69 6e 67 20 73 6f 75 67 68 74 2e 0d 0a 20 20  eing sought...  
1ef30 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1ef40 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
1ef50 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 75 6e  <param name="fun
1ef60 63 74 69 6f 6e 22 3e 0d 0a 20 20 20 20 20 20 20  ction">..       
1ef70 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73   /// Upon succes
1ef80 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65  s, this paramete
1ef90 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69  r must be modifi
1efa0 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68  ed to contain th
1efb0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
1efc0 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
1efd0 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6f 62 6a  Function" /> obj
1efe0 65 63 74 20 69 6e 73 74 61 6e 63 65 20 72 65 73  ect instance res
1eff0 70 6f 6e 73 69 62 6c 65 20 66 6f 72 0d 0a 20 20  ponsible for..  
1f000 20 20 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d        /// implem
1f010 65 6e 74 69 6e 67 20 74 68 65 20 73 70 65 63 69  enting the speci
1f020 66 69 65 64 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a  fied function...
1f030 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1f040 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
1f050 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
1f060 43 6c 69 65 6e 74 44 61 74 61 22 3e 0d 0a 20 20  ClientData">..  
1f070 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73        /// Upon s
1f080 75 63 63 65 73 73 2c 20 74 68 69 73 20 70 61 72  uccess, this par
1f090 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d  ameter must be m
1f0a0 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74 61  odified to conta
1f0b0 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  in the..        
1f0c0 2f 2f 2f 20 6e 61 74 69 76 65 20 75 73 65 72 2d  /// native user-
1f0d0 64 61 74 61 20 70 6f 69 6e 74 65 72 20 61 73 73  data pointer ass
1f0e0 6f 63 69 61 74 65 64 20 77 69 74 68 0d 0a 20 20  ociated with..  
1f0f0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1f100 72 65 66 20 6e 61 6d 65 3d 22 66 75 6e 63 74 69  ref name="functi
1f110 6f 6e 22 20 2f 3e 2e 0d 0a 20 20 20 20 20 20 20  on" />...       
1f120 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1f130 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
1f140 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
1f150 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68  / Non-zero if th
1f160 65 20 73 70 65 63 69 66 69 65 64 20 66 75 6e 63  e specified func
1f170 74 69 6f 6e 20 77 61 73 20 66 6f 75 6e 64 3b 20  tion was found; 
1f180 7a 65 72 6f 20 6f 74 68 65 72 77 69 73 65 2e 0d  zero otherwise..
1f190 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
1f1a0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1f1b0 20 62 6f 6f 6c 20 46 69 6e 64 46 75 6e 63 74 69   bool FindFuncti
1f1c0 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on(..           
1f1d0 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
1f1e0 62 6c 65 20 74 61 62 6c 65 2c 20 20 20 20 2f 2a  ble table,    /*
1f1f0 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
1f200 20 20 20 20 69 6e 74 20 61 72 67 75 6d 65 6e 74      int argument
1f210 43 6f 75 6e 74 2c 20 20 20 20 20 20 20 20 20 20  Count,          
1f220 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
1f230 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61         string na
1f240 6d 65 2c 20 20 20 20 20 20 20 20 20 20 20 20 20  me,             
1f250 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20      /* in */..  
1f260 20 20 20 20 20 20 20 20 20 20 72 65 66 20 53 51            ref SQ
1f270 4c 69 74 65 46 75 6e 63 74 69 6f 6e 20 66 75 6e  LiteFunction fun
1f280 63 74 69 6f 6e 2c 20 2f 2a 20 6f 75 74 20 2a 2f  ction, /* out */
1f290 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
1f2a0 66 20 49 6e 74 50 74 72 20 70 43 6c 69 65 6e 74  f IntPtr pClient
1f2b0 44 61 74 61 20 20 20 20 20 20 20 2f 2a 20 6f 75  Data       /* ou
1f2c0 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  t */..          
1f2d0 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    );....        
1f2e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f2f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1f330 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1f340 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1f350 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c  is method is cal
1f360 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20  led in response 
1f370 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
1f380 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
1f390 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
1f3a0 6c 65 2e 78 52 65 6e 61 6d 65 22 20 2f 3e 20 6d  le.xRename" /> m
1f3b0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
1f3c0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1f3d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1f3e0 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e  am name="table">
1f3f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1f400 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
1f410 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22  iteVirtualTable"
1f420 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
1f430 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a  nce associated..
1f440 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68          /// with
1f450 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61   this virtual ta
1f460 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
1f470 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1f480 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1f490 61 6d 65 3d 22 6e 65 77 4e 61 6d 65 22 3e 0d 0a  ame="newName">..
1f4a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1f4b0 6e 65 77 20 6e 61 6d 65 20 66 6f 72 20 74 68 65  new name for the
1f4c0 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d   virtual table..
1f4d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1f4e0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
1f4f0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
1f500 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e        /// A stan
1f510 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75  dard SQLite retu
1f520 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  rn code...      
1f530 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
1f540 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65  ..        SQLite
1f550 45 72 72 6f 72 43 6f 64 65 20 52 65 6e 61 6d 65  ErrorCode Rename
1f560 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
1f570 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
1f580 65 20 74 61 62 6c 65 2c 20 2f 2a 20 69 6e 20 2a  e table, /* in *
1f590 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  /..            s
1f5a0 74 72 69 6e 67 20 6e 65 77 4e 61 6d 65 20 20 20  tring newName   
1f5b0 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a           /* in *
1f5c0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  /..            )
1f5d0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
1f5e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f5f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f620 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1f630 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1f640 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
1f650 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64  method is called
1f660 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20   in response to 
1f670 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
1f680 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
1f690 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
1f6a0 78 53 61 76 65 70 6f 69 6e 74 22 20 2f 3e 20 6d  xSavepoint" /> m
1f6b0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
1f6c0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1f6d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1f6e0 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e  am name="table">
1f6f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1f700 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
1f710 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22  iteVirtualTable"
1f720 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
1f730 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a  nce associated..
1f740 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68          /// with
1f750 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61   this virtual ta
1f760 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
1f770 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1f780 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1f790 61 6d 65 3d 22 73 61 76 65 70 6f 69 6e 74 22 3e  ame="savepoint">
1f7a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1f7b0 69 73 20 69 73 20 61 6e 20 69 6e 74 65 67 65 72  is is an integer
1f7c0 20 69 64 65 6e 74 69 66 69 65 72 20 75 6e 64 65   identifier unde
1f7d0 72 20 77 68 69 63 68 20 74 68 65 20 74 68 65 20  r which the the 
1f7e0 63 75 72 72 65 6e 74 20 73 74 61 74 65 20 6f 66  current state of
1f7f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68  ..        /// th
1f800 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  e virtual table 
1f810 73 68 6f 75 6c 64 20 62 65 20 73 61 76 65 64 2e  should be saved.
1f820 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1f830 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1f840 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
1f850 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61         /// A sta
1f860 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74  ndard SQLite ret
1f870 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  urn code...     
1f880 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
1f890 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  >..        SQLit
1f8a0 65 45 72 72 6f 72 43 6f 64 65 20 53 61 76 65 70  eErrorCode Savep
1f8b0 6f 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20  oint(..         
1f8c0 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c     SQLiteVirtual
1f8d0 54 61 62 6c 65 20 74 61 62 6c 65 2c 20 2f 2a 20  Table table, /* 
1f8e0 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
1f8f0 20 20 20 69 6e 74 20 73 61 76 65 70 6f 69 6e 74     int savepoint
1f900 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20               /* 
1f910 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
1f920 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20     );....       
1f930 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1f940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f970 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1f980 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1f990 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1f9a0 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61  his method is ca
1f9b0 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65  lled in response
1f9c0 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20   to the..       
1f9d0 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
1f9e0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
1f9f0 75 6c 65 2e 78 52 65 6c 65 61 73 65 22 20 2f 3e  ule.xRelease" />
1fa00 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
1fa10 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1fa20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1fa30 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65  aram name="table
1fa40 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
1fa50 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
1fa60 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
1fa70 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  e" /> object ins
1fa80 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64  tance associated
1fa90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69  ..        /// wi
1faa0 74 68 20 74 68 69 73 20 76 69 72 74 75 61 6c 20  th this virtual 
1fab0 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20  table...        
1fac0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1fad0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1fae0 20 6e 61 6d 65 3d 22 73 61 76 65 70 6f 69 6e 74   name="savepoint
1faf0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
1fb00 54 68 69 73 20 69 73 20 61 6e 20 69 6e 74 65 67  This is an integ
1fb10 65 72 20 75 73 65 64 20 74 6f 20 69 6e 64 69 63  er used to indic
1fb20 61 74 65 20 74 68 61 74 20 61 6e 79 20 73 61 76  ate that any sav
1fb30 65 64 20 73 74 61 74 65 73 20 77 69 74 68 20 61  ed states with a
1fb40 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  n..        /// i
1fb50 64 65 6e 74 69 66 69 65 72 20 67 72 65 61 74 65  dentifier greate
1fb60 72 20 74 68 61 6e 20 6f 72 20 65 71 75 61 6c 20  r than or equal 
1fb70 74 6f 20 74 68 69 73 20 73 68 6f 75 6c 64 20 62  to this should b
1fb80 65 20 64 65 6c 65 74 65 64 20 62 79 20 74 68 65  e deleted by the
1fb90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 69  ..        /// vi
1fba0 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20  rtual table...  
1fbb0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1fbc0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
1fbd0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
1fbe0 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72     /// A standar
1fbf0 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20  d SQLite return 
1fc00 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  code...        /
1fc10 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
1fc20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72         SQLiteErr
1fc30 6f 72 43 6f 64 65 20 52 65 6c 65 61 73 65 28 0d  orCode Release(.
1fc40 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
1fc50 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20  iteVirtualTable 
1fc60 74 61 62 6c 65 2c 20 2f 2a 20 69 6e 20 2a 2f 0d  table, /* in */.
1fc70 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
1fc80 20 73 61 76 65 70 6f 69 6e 74 20 20 20 20 20 20   savepoint      
1fc90 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d         /* in */.
1fca0 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d  .            );.
1fcb0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1fcc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fcd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fcf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fd00 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
1fd10 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1fd20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65       /// This me
1fd30 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69  thod is called i
1fd40 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68  n response to th
1fd50 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
1fd60 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
1fd70 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52  eNativeModule.xR
1fd80 6f 6c 6c 62 61 63 6b 54 6f 22 20 2f 3e 20 6d 65  ollbackTo" /> me
1fd90 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  thod...        /
1fda0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1fdb0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1fdc0 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d  m name="table">.
1fdd0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1fde0 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
1fdf0 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20  teVirtualTable" 
1fe00 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
1fe10 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20  ce associated.. 
1fe20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20         /// with 
1fe30 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62  this virtual tab
1fe40 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le...        ///
1fe50 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1fe60 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1fe70 6d 65 3d 22 73 61 76 65 70 6f 69 6e 74 22 3e 0d  me="savepoint">.
1fe80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
1fe90 73 20 69 73 20 61 6e 20 69 6e 74 65 67 65 72 20  s is an integer 
1fea0 69 64 65 6e 74 69 66 69 65 72 20 75 73 65 64 20  identifier used 
1feb0 74 6f 20 73 70 65 63 69 66 79 20 61 20 73 70 65  to specify a spe
1fec0 63 69 66 69 63 20 73 61 76 65 64 0d 0a 20 20 20  cific saved..   
1fed0 20 20 20 20 20 2f 2f 2f 20 73 74 61 74 65 20 66       /// state f
1fee0 6f 72 20 74 68 65 20 76 69 72 74 75 61 6c 20 74  or the virtual t
1fef0 61 62 6c 65 20 66 6f 72 20 69 74 20 74 6f 20 72  able for it to r
1ff00 65 73 74 6f 72 65 20 69 74 73 65 6c 66 20 62 61  estore itself ba
1ff10 63 6b 20 74 6f 2c 20 77 68 69 63 68 0d 0a 20 20  ck to, which..  
1ff20 20 20 20 20 20 20 2f 2f 2f 20 73 68 6f 75 6c 64        /// should
1ff30 20 61 6c 73 6f 20 68 61 76 65 20 74 68 65 20 65   also have the e
1ff40 66 66 65 63 74 20 6f 66 20 64 65 6c 65 74 69 6e  ffect of deletin
1ff50 67 20 61 6c 6c 20 73 61 76 65 64 20 73 74 61 74  g all saved stat
1ff60 65 73 20 77 69 74 68 20 61 6e 0d 0a 20 20 20 20  es with an..    
1ff70 20 20 20 20 2f 2f 2f 20 69 6e 74 65 67 65 72 20      /// integer 
1ff80 69 64 65 6e 74 69 66 69 65 72 20 67 72 65 61 74  identifier great
1ff90 65 72 20 74 68 61 6e 20 74 68 69 73 20 6f 6e 65  er than this one
1ffa0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1ffb0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1ffc0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
1ffd0 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74          /// A st
1ffe0 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65  andard SQLite re
1fff0 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20  turn code...    
20000 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
20010 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69  s>..        SQLi
20020 74 65 45 72 72 6f 72 43 6f 64 65 20 52 6f 6c 6c  teErrorCode Roll
20030 62 61 63 6b 54 6f 28 0d 0a 20 20 20 20 20 20 20  backTo(..       
20040 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75       SQLiteVirtu
20050 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c 20 2f  alTable table, /
20060 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
20070 20 20 20 20 20 69 6e 74 20 73 61 76 65 70 6f 69       int savepoi
20080 6e 74 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  nt             /
20090 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
200a0 20 20 20 20 20 29 3b 0d 0a 20 20 20 20 7d 0d 0a       );..    }..
200b0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
200c0 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
200d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
200e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
200f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20110 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
20120 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 20 53 74   SQLiteMemory St
20130 61 74 69 63 20 43 6c 61 73 73 0d 0a 20 20 20 20  atic Class..    
20140 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
20150 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73     /// This clas
20160 73 20 63 6f 6e 74 61 69 6e 73 20 73 74 61 74 69  s contains stati
20170 63 20 6d 65 74 68 6f 64 73 20 74 68 61 74 20 61  c methods that a
20180 72 65 20 75 73 65 64 20 74 6f 20 61 6c 6c 6f 63  re used to alloc
20190 61 74 65 2c 0d 0a 20 20 20 20 2f 2f 2f 20 6d 61  ate,..    /// ma
201a0 6e 69 70 75 6c 61 74 65 2c 20 61 6e 64 20 66 72  nipulate, and fr
201b0 65 65 20 6e 61 74 69 76 65 20 6d 65 6d 6f 72 79  ee native memory
201c0 20 70 72 6f 76 69 64 65 64 20 62 79 20 74 68 65   provided by the
201d0 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62   SQLite core lib
201e0 72 61 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  rary...    /// <
201f0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 69  /summary>..    i
20200 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 63  nternal static c
20210 6c 61 73 73 20 53 51 4c 69 74 65 4d 65 6d 6f 72  lass SQLiteMemor
20220 79 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  y..    {..      
20230 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74    #region Privat
20240 65 20 44 61 74 61 0d 0a 23 69 66 20 54 52 41 43  e Data..#if TRAC
20250 4b 5f 4d 45 4d 4f 52 59 5f 42 59 54 45 53 0d 0a  K_MEMORY_BYTES..
20260 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
20270 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
20280 2f 2f 20 54 68 69 73 20 6f 62 6a 65 63 74 20 69  // This object i
20290 6e 73 74 61 6e 63 65 20 69 73 20 75 73 65 64 20  nstance is used 
202a0 74 6f 20 73 79 6e 63 68 72 6f 6e 69 7a 65 20 61  to synchronize a
202b0 63 63 65 73 73 20 74 6f 20 74 68 65 20 6f 74 68  ccess to the oth
202c0 65 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  er..        /// 
202d0 73 74 61 74 69 63 20 66 69 65 6c 64 73 20 6f 66  static fields of
202e0 20 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20   this class...  
202f0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
20300 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  ary>..        pr
20310 69 76 61 74 65 20 73 74 61 74 69 63 20 6f 62 6a  ivate static obj
20320 65 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e  ect syncRoot = n
20330 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 0d 0a  ew object();....
20340 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
20350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
20390 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
203a0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
203b0 20 20 2f 2f 2f 20 54 68 65 20 74 6f 74 61 6c 20    /// The total 
203c0 6e 75 6d 62 65 72 20 6f 66 20 6f 75 74 73 74 61  number of outsta
203d0 6e 64 69 6e 67 20 6d 65 6d 6f 72 79 20 62 79 74  nding memory byt
203e0 65 73 20 61 6c 6c 6f 63 61 74 65 64 20 62 79 20  es allocated by 
203f0 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  this..        //
20400 2f 20 63 6c 61 73 73 20 75 73 69 6e 67 20 74 68  / class using th
20410 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69  e SQLite core li
20420 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20  brary...        
20430 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
20440 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
20450 73 74 61 74 69 63 20 69 6e 74 20 62 79 74 65 73  static int bytes
20460 41 6c 6c 6f 63 61 74 65 64 3b 0d 0a 0d 0a 20 20  Allocated;....  
20470 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
20480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
204a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
204b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
204c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
204d0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
204e0 2f 2f 2f 20 54 68 65 20 6d 61 78 69 6d 75 6d 20  /// The maximum 
204f0 6e 75 6d 62 65 72 20 6f 66 20 6f 75 74 73 74 61  number of outsta
20500 6e 64 69 6e 67 20 6d 65 6d 6f 72 79 20 62 79 74  nding memory byt
20510 65 73 20 65 76 65 72 20 61 6c 6c 6f 63 61 74 65  es ever allocate
20520 64 20 62 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f  d by..        //
20530 2f 20 74 68 69 73 20 63 6c 61 73 73 20 75 73 69  / this class usi
20540 6e 67 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  ng the SQLite co
20550 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  re library...   
20560 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
20570 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
20580 76 61 74 65 20 73 74 61 74 69 63 20 69 6e 74 20  vate static int 
20590 6d 61 78 69 6d 75 6d 42 79 74 65 73 41 6c 6c 6f  maximumBytesAllo
205a0 63 61 74 65 64 3b 0d 0a 23 65 6e 64 69 66 0d 0a  cated;..#endif..
205b0 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
205c0 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
205d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
205e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
205f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20610 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
20620 20 23 72 65 67 69 6f 6e 20 4d 65 6d 6f 72 79 20   #region Memory 
20630 41 6c 6c 6f 63 61 74 69 6f 6e 20 48 65 6c 70 65  Allocation Helpe
20640 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20  r Methods..     
20650 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
20660 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 6c  ..        /// Al
20670 6c 6f 63 61 74 65 73 20 61 74 20 6c 65 61 73 74  locates at least
20680 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6e   the specified n
20690 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20 6f  umber of bytes o
206a0 66 20 6e 61 74 69 76 65 20 6d 65 6d 6f 72 79 0d  f native memory.
206b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 69 61  .        /// via
206c0 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
206d0 20 6c 69 62 72 61 72 79 20 73 71 6c 69 74 65 33   library sqlite3
206e0 5f 6d 61 6c 6c 6f 63 28 29 20 66 75 6e 63 74 69  _malloc() functi
206f0 6f 6e 20 61 6e 64 20 72 65 74 75 72 6e 73 0d 0a  on and returns..
20700 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20          /// the 
20710 72 65 73 75 6c 74 69 6e 67 20 6e 61 74 69 76 65  resulting native
20720 20 70 6f 69 6e 74 65 72 2e 0d 0a 20 20 20 20 20   pointer...     
20730 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
20740 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
20750 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 69 7a 65  param name="size
20760 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
20770 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 79  The number of by
20780 74 65 73 20 74 6f 20 61 6c 6c 6f 63 61 74 65 2e  tes to allocate.
20790 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
207a0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
207b0 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
207c0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
207d0 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 68  ative pointer th
207e0 61 74 20 70 6f 69 6e 74 73 20 74 6f 20 61 20 62  at points to a b
207f0 6c 6f 63 6b 20 6f 66 20 6d 65 6d 6f 72 79 20 6f  lock of memory o
20800 66 20 61 74 20 6c 65 61 73 74 20 74 68 65 0d 0a  f at least the..
20810 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 70 65 63          /// spec
20820 69 66 69 65 64 20 73 69 7a 65 20 2d 4f 52 2d 20  ified size -OR- 
20830 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74  <see cref="IntPt
20840 72 2e 5a 65 72 6f 22 20 2f 3e 20 69 66 20 74 68  r.Zero" /> if th
20850 65 20 6d 65 6d 6f 72 79 20 63 6f 75 6c 64 0d 0a  e memory could..
20860 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 6f 74 20          /// not 
20870 62 65 20 61 6c 6c 6f 63 61 74 65 64 2e 0d 0a 20  be allocated... 
20880 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
20890 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
208a0 75 62 6c 69 63 20 73 74 61 74 69 63 20 49 6e 74  ublic static Int
208b0 50 74 72 20 41 6c 6c 6f 63 61 74 65 28 69 6e 74  Ptr Allocate(int
208c0 20 73 69 7a 65 29 0d 0a 20 20 20 20 20 20 20 20   size)..        
208d0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  {..            I
208e0 6e 74 50 74 72 20 70 4d 65 6d 6f 72 79 20 3d 20  ntPtr pMemory = 
208f0 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
20900 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 61 6c 6c  ods.sqlite3_mall
20910 6f 63 28 73 69 7a 65 29 3b 0d 0a 0d 0a 23 69 66  oc(size);....#if
20920 20 54 52 41 43 4b 5f 4d 45 4d 4f 52 59 5f 42 59   TRACK_MEMORY_BY
20930 54 45 53 0d 0a 20 20 20 20 20 20 20 20 20 20 20  TES..           
20940 20 69 66 20 28 70 4d 65 6d 6f 72 79 20 21 3d 20   if (pMemory != 
20950 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
20960 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
20970 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74               int
20980 20 62 6c 6f 63 6b 53 69 7a 65 20 3d 20 53 69 7a   blockSize = Siz
20990 65 28 70 4d 65 6d 6f 72 79 29 3b 0d 0a 0d 0a 20  e(pMemory);.... 
209a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
209b0 66 20 28 62 6c 6f 63 6b 53 69 7a 65 20 3e 20 30  f (blockSize > 0
209c0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
209d0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
209e0 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
209f0 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20  syncRoot)..     
20a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
20a10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
20a20 20 20 20 20 20 20 20 20 20 20 62 79 74 65 73 41            bytesA
20a30 6c 6c 6f 63 61 74 65 64 20 2b 3d 20 62 6c 6f 63  llocated += bloc
20a40 6b 53 69 7a 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  kSize;....      
20a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20a60 20 20 69 66 20 28 62 79 74 65 73 41 6c 6c 6f 63    if (bytesAlloc
20a70 61 74 65 64 20 3e 20 6d 61 78 69 6d 75 6d 42 79  ated > maximumBy
20a80 74 65 73 41 6c 6c 6f 63 61 74 65 64 29 0d 0a 20  tesAllocated).. 
20a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20aa0 20 20 20 20 20 20 20 20 20 20 20 6d 61 78 69 6d             maxim
20ab0 75 6d 42 79 74 65 73 41 6c 6c 6f 63 61 74 65 64  umBytesAllocated
20ac0 20 3d 20 62 79 74 65 73 41 6c 6c 6f 63 61 74 65   = bytesAllocate
20ad0 64 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d;..            
20ae0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
20af0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
20b00 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
20b10 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  dif....         
20b20 20 20 20 72 65 74 75 72 6e 20 70 4d 65 6d 6f 72     return pMemor
20b30 79 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  y;..        }...
20b40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
20b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20b90 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
20ba0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
20bb0 20 20 20 2f 2f 2f 20 47 65 74 73 20 61 6e 64 20     /// Gets and 
20bc0 72 65 74 75 72 6e 73 20 74 68 65 20 61 63 74 75  returns the actu
20bd0 61 6c 20 73 69 7a 65 20 6f 66 20 74 68 65 20 73  al size of the s
20be0 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72 79 20  pecified memory 
20bf0 62 6c 6f 63 6b 20 74 68 61 74 0d 0a 20 20 20 20  block that..    
20c00 20 20 20 20 2f 2f 2f 20 77 61 73 20 70 72 65 76      /// was prev
20c10 69 6f 75 73 6c 79 20 6f 62 74 61 69 6e 65 64 20  iously obtained 
20c20 66 72 6f 6d 20 74 68 65 20 3c 73 65 65 20 63 72  from the <see cr
20c30 65 66 3d 22 41 6c 6c 6f 63 61 74 65 22 20 2f 3e  ef="Allocate" />
20c40 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
20c50 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
20c60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
20c70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 4d 65 6d 6f  aram name="pMemo
20c80 72 79 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ry">..        //
20c90 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69  / The native poi
20ca0 6e 74 65 72 20 74 6f 20 74 68 65 20 6d 65 6d 6f  nter to the memo
20cb0 72 79 20 62 6c 6f 63 6b 20 70 72 65 76 69 6f 75  ry block previou
20cc0 73 6c 79 20 6f 62 74 61 69 6e 65 64 20 66 72 6f  sly obtained fro
20cd0 6d 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  m the..        /
20ce0 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 41 6c  // <see cref="Al
20cf0 6c 6f 63 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f  locate" /> metho
20d00 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
20d10 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
20d20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
20d30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
20d40 20 61 63 74 75 61 6c 20 73 69 7a 65 2c 20 69 6e   actual size, in
20d50 20 62 79 74 65 73 2c 20 6f 66 20 74 68 65 20 6d   bytes, of the m
20d60 65 6d 6f 72 79 20 62 6c 6f 63 6b 20 73 70 65 63  emory block spec
20d70 69 66 69 65 64 20 76 69 61 20 74 68 65 0d 0a 20  ified via the.. 
20d80 20 20 20 20 20 20 20 2f 2f 2f 20 6e 61 74 69 76         /// nativ
20d90 65 20 70 6f 69 6e 74 65 72 2e 0d 0a 20 20 20 20  e pointer...    
20da0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
20db0 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  s>..        publ
20dc0 69 63 20 73 74 61 74 69 63 20 69 6e 74 20 53 69  ic static int Si
20dd0 7a 65 28 49 6e 74 50 74 72 20 70 4d 65 6d 6f 72  ze(IntPtr pMemor
20de0 79 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  y)..        {..#
20df0 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44  if !SQLITE_STAND
20e00 41 52 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ARD..           
20e10 20 72 65 74 75 72 6e 20 55 6e 73 61 66 65 4e 61   return UnsafeNa
20e20 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
20e30 74 65 33 5f 6d 61 6c 6c 6f 63 5f 73 69 7a 65 5f  te3_malloc_size_
20e40 69 6e 74 65 72 6f 70 28 70 4d 65 6d 6f 72 79 29  interop(pMemory)
20e50 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
20e60 20 20 20 20 20 20 72 65 74 75 72 6e 20 30 3b 0d        return 0;.
20e70 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
20e80 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
20e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20ed0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
20ee0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
20ef0 20 20 20 20 20 20 20 20 2f 2f 2f 20 46 72 65 65          /// Free
20f00 73 20 61 20 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b  s a memory block
20f10 20 70 72 65 76 69 6f 75 73 6c 79 20 6f 62 74 61   previously obta
20f20 69 6e 65 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20  ined from the.. 
20f30 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
20f40 63 72 65 66 3d 22 41 6c 6c 6f 63 61 74 65 22 20  cref="Allocate" 
20f50 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
20f60 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
20f70 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
20f80 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 4d 65  <param name="pMe
20f90 6d 6f 72 79 22 3e 0d 0a 20 20 20 20 20 20 20 20  mory">..        
20fa0 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70  /// The native p
20fb0 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 6d 65  ointer to the me
20fc0 6d 6f 72 79 20 62 6c 6f 63 6b 20 70 72 65 76 69  mory block previ
20fd0 6f 75 73 6c 79 20 6f 62 74 61 69 6e 65 64 20 66  ously obtained f
20fe0 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20 20 20  rom the..       
20ff0 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
21000 41 6c 6c 6f 63 61 74 65 22 20 2f 3e 20 6d 65 74  Allocate" /> met
21010 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
21020 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
21030 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
21040 63 20 76 6f 69 64 20 46 72 65 65 28 49 6e 74 50  c void Free(IntP
21050 74 72 20 70 4d 65 6d 6f 72 79 29 0d 0a 20 20 20  tr pMemory)..   
21060 20 20 20 20 20 7b 0d 0a 23 69 66 20 54 52 41 43       {..#if TRAC
21070 4b 5f 4d 45 4d 4f 52 59 5f 42 59 54 45 53 0d 0a  K_MEMORY_BYTES..
21080 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
21090 70 4d 65 6d 6f 72 79 20 21 3d 20 49 6e 74 50 74  pMemory != IntPt
210a0 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
210b0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
210c0 20 20 20 20 20 20 20 20 69 6e 74 20 62 6c 6f 63          int bloc
210d0 6b 53 69 7a 65 20 3d 20 53 69 7a 65 28 70 4d 65  kSize = Size(pMe
210e0 6d 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  mory);....      
210f0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 6c            if (bl
21100 6f 63 6b 53 69 7a 65 20 3e 20 30 29 0d 0a 20 20  ockSize > 0)..  
21110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
21120 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21130 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
21140 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  oot)..          
21150 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
21160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21170 20 20 20 20 20 62 79 74 65 73 41 6c 6c 6f 63 61       bytesAlloca
21180 74 65 64 20 2d 3d 20 62 6c 6f 63 6b 53 69 7a 65  ted -= blockSize
21190 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
211a0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
211b0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
211c0 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
211d0 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  if....          
211e0 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65    UnsafeNativeMe
211f0 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 66 72  thods.sqlite3_fr
21200 65 65 28 70 4d 65 6d 6f 72 79 29 3b 0d 0a 20 20  ee(pMemory);..  
21210 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
21220 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20   #endregion..   
21230 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69   }..    #endregi
21240 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  on....    //////
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 2f 2f 2f 2f 2f  ////////////////
21290 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65  /////....    #re
212a0 67 69 6f 6e 20 53 51 4c 69 74 65 53 74 72 69 6e  gion SQLiteStrin
212b0 67 20 53 74 61 74 69 63 20 43 6c 61 73 73 0d 0a  g Static Class..
212c0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
212d0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  >..    /// This 
212e0 63 6c 61 73 73 20 63 6f 6e 74 61 69 6e 73 20 73  class contains s
212f0 74 61 74 69 63 20 6d 65 74 68 6f 64 73 20 74 68  tatic methods th
21300 61 74 20 61 72 65 20 75 73 65 64 20 74 6f 20 64  at are used to d
21310 65 61 6c 20 77 69 74 68 20 6e 61 74 69 76 65 0d  eal with native.
21320 0a 20 20 20 20 2f 2f 2f 20 55 54 46 2d 38 20 73  .    /// UTF-8 s
21330 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 73 20 74  tring pointers t
21340 6f 20 62 65 20 75 73 65 64 20 77 69 74 68 20 74  o be used with t
21350 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c  he SQLite core l
21360 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f  ibrary...    ///
21370 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
21380 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
21390 20 63 6c 61 73 73 20 53 51 4c 69 74 65 53 74 72   class SQLiteStr
213a0 69 6e 67 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  ing..    {..    
213b0 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76      #region Priv
213c0 61 74 65 20 43 6f 6e 73 74 61 6e 74 73 0d 0a 20  ate Constants.. 
213d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
213e0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
213f0 2f 20 54 68 69 73 20 69 73 20 74 68 65 20 6d 61  / This is the ma
21400 78 69 6d 75 6d 20 70 6f 73 73 69 62 6c 65 20 6c  ximum possible l
21410 65 6e 67 74 68 20 66 6f 72 20 74 68 65 20 6e 61  ength for the na
21420 74 69 76 65 20 55 54 46 2d 38 20 65 6e 63 6f 64  tive UTF-8 encod
21430 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
21440 73 74 72 69 6e 67 73 20 75 73 65 64 20 77 69 74  strings used wit
21450 68 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  h the SQLite cor
21460 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20  e library...    
21470 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
21480 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  y>..        priv
21490 61 74 65 20 73 74 61 74 69 63 20 69 6e 74 20 54  ate static int T
214a0 68 69 72 74 79 42 69 74 73 20 3d 20 30 78 33 66  hirtyBits = 0x3f
214b0 66 66 66 66 66 66 3b 0d 0a 0d 0a 20 20 20 20 20  ffffff;....     
214c0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20  //////////....  
21510 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
21520 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
21530 20 54 68 69 73 20 69 73 20 74 68 65 20 3c 73 65   This is the <se
21540 65 20 63 72 65 66 3d 22 45 6e 63 6f 64 69 6e 67  e cref="Encoding
21550 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
21560 61 6e 63 65 20 75 73 65 64 20 74 6f 20 68 61 6e  ance used to han
21570 64 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  dle..        ///
21580 20 63 6f 6e 76 65 72 73 69 6f 6e 73 20 66 72 6f   conversions fro
21590 6d 2f 74 6f 20 55 54 46 2d 38 2e 0d 0a 20 20 20  m/to UTF-8...   
215a0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
215b0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
215c0 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64  vate static read
215d0 6f 6e 6c 79 20 45 6e 63 6f 64 69 6e 67 20 55 74  only Encoding Ut
215e0 66 38 45 6e 63 6f 64 69 6e 67 20 3d 20 45 6e 63  f8Encoding = Enc
215f0 6f 64 69 6e 67 2e 55 54 46 38 3b 0d 0a 20 20 20  oding.UTF8;..   
21600 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
21610 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
21620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21660 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
21670 65 67 69 6f 6e 20 55 54 46 2d 38 20 45 6e 63 6f  egion UTF-8 Enco
21680 64 69 6e 67 20 48 65 6c 70 65 72 20 4d 65 74 68  ding Helper Meth
21690 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ods..        ///
216a0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
216b0 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73      /// Converts
216c0 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6d   the specified m
216d0 61 6e 61 67 65 64 20 73 74 72 69 6e 67 20 69 6e  anaged string in
216e0 74 6f 20 74 68 65 20 55 54 46 2d 38 20 65 6e 63  to the UTF-8 enc
216f0 6f 64 69 6e 67 20 61 6e 64 0d 0a 20 20 20 20 20  oding and..     
21700 20 20 20 2f 2f 2f 20 72 65 74 75 72 6e 73 20 74     /// returns t
21710 68 65 20 61 72 72 61 79 20 6f 66 20 62 79 74 65  he array of byte
21720 73 20 63 6f 6e 74 61 69 6e 69 6e 67 20 69 74 73  s containing its
21730 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20   representation 
21740 69 6e 20 74 68 61 74 0d 0a 20 20 20 20 20 20 20  in that..       
21750 20 2f 2f 2f 20 65 6e 63 6f 64 69 6e 67 2e 0d 0a   /// encoding...
21760 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
21770 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
21780 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
21790 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20  "value">..      
217a0 20 20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65    /// The manage
217b0 64 20 73 74 72 69 6e 67 20 74 6f 20 63 6f 6e 76  d string to conv
217c0 65 72 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ert...        //
217d0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
217e0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
217f0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
21800 68 65 20 61 72 72 61 79 20 6f 66 20 62 79 74 65  he array of byte
21810 73 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65  s containing the
21820 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20   representation 
21830 6f 66 20 74 68 65 20 6d 61 6e 61 67 65 64 0d 0a  of the managed..
21840 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 69          /// stri
21850 6e 67 20 69 6e 20 74 68 65 20 55 54 46 2d 38 20  ng in the UTF-8 
21860 65 6e 63 6f 64 69 6e 67 20 6f 72 20 6e 75 6c 6c  encoding or null
21870 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a   upon failure...
21880 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
21890 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
218a0 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 62 79  public static by
218b0 74 65 5b 5d 20 47 65 74 55 74 66 38 42 79 74 65  te[] GetUtf8Byte
218c0 73 46 72 6f 6d 53 74 72 69 6e 67 28 0d 0a 20 20  sFromString(..  
218d0 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
218e0 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20   value..        
218f0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
21900 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
21910 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29   (value == null)
21920 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
21930 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
21940 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
21950 74 75 72 6e 20 55 74 66 38 45 6e 63 6f 64 69 6e  turn Utf8Encodin
21960 67 2e 47 65 74 42 79 74 65 73 28 76 61 6c 75 65  g.GetBytes(value
21970 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  );..        }...
21980 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
219c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
219d0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
219e0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
219f0 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20     /// Converts 
21a00 74 68 65 20 73 70 65 63 69 66 69 65 64 20 61 72  the specified ar
21a10 72 61 79 20 6f 66 20 62 79 74 65 73 20 72 65 70  ray of bytes rep
21a20 72 65 73 65 6e 74 69 6e 67 20 61 20 73 74 72 69  resenting a stri
21a30 6e 67 20 69 6e 20 74 68 65 0d 0a 20 20 20 20 20  ng in the..     
21a40 20 20 20 2f 2f 2f 20 55 54 46 2d 38 20 65 6e 63     /// UTF-8 enc
21a50 6f 64 69 6e 67 20 61 6e 64 20 72 65 74 75 72 6e  oding and return
21a60 73 20 61 20 6d 61 6e 61 67 65 64 20 73 74 72 69  s a managed stri
21a70 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ng...        ///
21a80 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
21a90 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
21aa0 6e 61 6d 65 3d 22 62 79 74 65 73 22 3e 0d 0a 20  name="bytes">.. 
21ab0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61         /// The a
21ac0 72 72 61 79 20 6f 66 20 62 79 74 65 73 20 74 6f  rray of bytes to
21ad0 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20   convert...     
21ae0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
21af0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
21b00 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
21b10 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20  /// The managed 
21b20 73 74 72 69 6e 67 20 6f 72 20 6e 75 6c 6c 20 75  string or null u
21b30 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20  pon failure...  
21b40 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
21b50 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  rns>..        pu
21b60 62 6c 69 63 20 73 74 61 74 69 63 20 73 74 72 69  blic static stri
21b70 6e 67 20 47 65 74 53 74 72 69 6e 67 46 72 6f 6d  ng GetStringFrom
21b80 55 74 66 38 42 79 74 65 73 28 0d 0a 20 20 20 20  Utf8Bytes(..    
21b90 20 20 20 20 20 20 20 20 62 79 74 65 5b 5d 20 62          byte[] b
21ba0 79 74 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20  ytes..          
21bb0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
21bc0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
21bd0 62 79 74 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  bytes == null)..
21be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21bf0 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a  return null;....
21c00 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
21c10 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
21c20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
21c30 72 6e 20 55 74 66 38 45 6e 63 6f 64 69 6e 67 2e  rn Utf8Encoding.
21c40 47 65 74 53 74 72 69 6e 67 28 62 79 74 65 73 29  GetString(bytes)
21c50 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
21c60 20 20 20 20 20 20 72 65 74 75 72 6e 20 55 74 66        return Utf
21c70 38 45 6e 63 6f 64 69 6e 67 2e 47 65 74 53 74 72  8Encoding.GetStr
21c80 69 6e 67 28 62 79 74 65 73 2c 20 30 2c 20 62 79  ing(bytes, 0, by
21c90 74 65 73 2e 4c 65 6e 67 74 68 29 3b 0d 0a 23 65  tes.Length);..#e
21ca0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ndif..        }.
21cb0 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
21cc0 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
21cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21d10 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
21d20 20 20 23 72 65 67 69 6f 6e 20 55 54 46 2d 38 20    #region UTF-8 
21d30 53 74 72 69 6e 67 20 48 65 6c 70 65 72 20 4d 65  String Helper Me
21d40 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f  thods..        /
21d50 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
21d60 20 20 20 20 20 20 2f 2f 2f 20 50 72 6f 62 65 73        /// Probes
21d70 20 61 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65   a native pointe
21d80 72 20 74 6f 20 61 20 73 74 72 69 6e 67 20 69 6e  r to a string in
21d90 20 74 68 65 20 55 54 46 2d 38 20 65 6e 63 6f 64   the UTF-8 encod
21da0 69 6e 67 20 66 6f 72 20 69 74 73 0d 0a 20 20 20  ing for its..   
21db0 20 20 20 20 20 2f 2f 2f 20 74 65 72 6d 69 6e 61       /// termina
21dc0 74 69 6e 67 20 4e 55 4c 20 63 68 61 72 61 63 74  ting NUL charact
21dd0 65 72 2c 20 77 69 74 68 69 6e 20 74 68 65 20 73  er, within the s
21de0 70 65 63 69 66 69 65 64 20 6c 65 6e 67 74 68 20  pecified length 
21df0 6c 69 6d 69 74 2e 0d 0a 20 20 20 20 20 20 20 20  limit...        
21e00 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
21e10 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
21e20 61 6d 20 6e 61 6d 65 3d 22 70 56 61 6c 75 65 22  am name="pValue"
21e30 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
21e40 68 65 20 6e 61 74 69 76 65 20 4e 55 4c 2d 74 65  he native NUL-te
21e50 72 6d 69 6e 61 74 65 64 20 73 74 72 69 6e 67 20  rminated string 
21e60 70 6f 69 6e 74 65 72 2e 0d 0a 20 20 20 20 20 20  pointer...      
21e70 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
21e80 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
21e90 61 6d 20 6e 61 6d 65 3d 22 6c 69 6d 69 74 22 3e  am name="limit">
21ea0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
21eb0 65 20 6d 61 78 69 6d 75 6d 20 6c 65 6e 67 74 68  e maximum length
21ec0 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65 20 73   of the native s
21ed0 74 72 69 6e 67 2c 20 69 6e 20 62 79 74 65 73 2e  tring, in bytes.
21ee0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
21ef0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
21f00 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
21f10 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6c         /// The l
21f20 65 6e 67 74 68 20 6f 66 20 74 68 65 20 6e 61 74  ength of the nat
21f30 69 76 65 20 73 74 72 69 6e 67 2c 20 69 6e 20 62  ive string, in b
21f40 79 74 65 73 20 2d 4f 52 2d 20 7a 65 72 6f 20 69  ytes -OR- zero i
21f50 66 20 74 68 65 20 6c 65 6e 67 74 68 0d 0a 20 20  f the length..  
21f60 20 20 20 20 20 20 2f 2f 2f 20 63 6f 75 6c 64 20        /// could 
21f70 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65  not be determine
21f80 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
21f90 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
21fa0 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
21fb0 63 20 69 6e 74 20 50 72 6f 62 65 46 6f 72 55 74  c int ProbeForUt
21fc0 66 38 42 79 74 65 4c 65 6e 67 74 68 28 0d 0a 20  f8ByteLength(.. 
21fd0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
21fe0 72 20 70 56 61 6c 75 65 2c 0d 0a 20 20 20 20 20  r pValue,..     
21ff0 20 20 20 20 20 20 20 69 6e 74 20 6c 69 6d 69 74         int limit
22000 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
22010 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
22020 20 20 20 20 20 20 20 20 69 6e 74 20 6c 65 6e 67          int leng
22030 74 68 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20  th = 0;....     
22040 20 20 20 20 20 20 20 69 66 20 28 28 70 56 61 6c         if ((pVal
22050 75 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  ue != IntPtr.Zer
22060 6f 29 20 26 26 20 28 6c 69 6d 69 74 20 3e 20 30  o) && (limit > 0
22070 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
22080 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
22090 20 20 20 64 6f 0d 0a 20 20 20 20 20 20 20 20 20     do..         
220a0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
220b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
220c0 20 28 4d 61 72 73 68 61 6c 2e 52 65 61 64 42 79   (Marshal.ReadBy
220d0 74 65 28 70 56 61 6c 75 65 2c 20 6c 65 6e 67 74  te(pValue, lengt
220e0 68 29 20 3d 3d 20 30 29 0d 0a 20 20 20 20 20 20  h) == 0)..      
220f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22100 20 20 62 72 65 61 6b 3b 0d 0a 0d 0a 20 20 20 20    break;....    
22110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22120 69 66 20 28 6c 65 6e 67 74 68 20 3e 3d 20 6c 69  if (length >= li
22130 6d 69 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  mit)..          
22140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72                br
22150 65 61 6b 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  eak;....        
22160 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 6e 67              leng
22170 74 68 2b 2b 3b 0d 0a 20 20 20 20 20 20 20 20 20  th++;..         
22180 20 20 20 20 20 20 20 7d 20 77 68 69 6c 65 20 28         } while (
22190 74 72 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  true);..        
221a0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
221b0 20 20 20 20 20 72 65 74 75 72 6e 20 6c 65 6e 67       return leng
221c0 74 68 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  th;..        }..
221d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
221e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
221f0 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
22230 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
22240 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73      /// Converts
22250 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6e   the specified n
22260 61 74 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69 6e  ative NUL-termin
22270 61 74 65 64 20 55 54 46 2d 38 20 73 74 72 69 6e  ated UTF-8 strin
22280 67 20 70 6f 69 6e 74 65 72 0d 0a 20 20 20 20 20  g pointer..     
22290 20 20 20 2f 2f 2f 20 69 6e 74 6f 20 61 20 6d 61     /// into a ma
222a0 6e 61 67 65 64 20 73 74 72 69 6e 67 2e 0d 0a 20  naged string... 
222b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
222c0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
222d0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
222e0 70 56 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20  pValue">..      
222f0 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
22300 20 4e 55 4c 2d 74 65 72 6d 69 6e 61 74 65 64 20   NUL-terminated 
22310 55 54 46 2d 38 20 73 74 72 69 6e 67 20 70 6f 69  UTF-8 string poi
22320 6e 74 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f  nter...        /
22330 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
22340 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
22350 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
22360 54 68 65 20 6d 61 6e 61 67 65 64 20 73 74 72 69  The managed stri
22370 6e 67 20 6f 72 20 6e 75 6c 6c 20 75 70 6f 6e 20  ng or null upon 
22380 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20  failure...      
22390 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
223a0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
223b0 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 53   static string S
223c0 74 72 69 6e 67 46 72 6f 6d 55 74 66 38 49 6e 74  tringFromUtf8Int
223d0 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Ptr(..          
223e0 20 20 49 6e 74 50 74 72 20 70 56 61 6c 75 65 0d    IntPtr pValue.
223f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
22400 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
22410 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 74         return St
22420 72 69 6e 67 46 72 6f 6d 55 74 66 38 49 6e 74 50  ringFromUtf8IntP
22430 74 72 28 70 56 61 6c 75 65 2c 0d 0a 20 20 20 20  tr(pValue,..    
22440 20 20 20 20 20 20 20 20 20 20 20 20 50 72 6f 62              Prob
22450 65 46 6f 72 55 74 66 38 42 79 74 65 4c 65 6e 67  eForUtf8ByteLeng
22460 74 68 28 70 56 61 6c 75 65 2c 20 54 68 69 72 74  th(pValue, Thirt
22470 79 42 69 74 73 29 29 3b 0d 0a 20 20 20 20 20 20  yBits));..      
22480 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
22490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
224a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
224b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
224c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
224d0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
224e0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
224f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e  .        /// Con
22500 76 65 72 74 73 20 74 68 65 20 73 70 65 63 69 66  verts the specif
22510 69 65 64 20 6e 61 74 69 76 65 20 55 54 46 2d 38  ied native UTF-8
22520 20 73 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 20   string pointer 
22530 6f 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64  of the specified
22540 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 65  ..        /// le
22550 6e 67 74 68 20 69 6e 74 6f 20 61 20 6d 61 6e 61  ngth into a mana
22560 67 65 64 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20  ged string...   
22570 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
22580 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
22590 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
225a0 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  alue">..        
225b0 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 55  /// The native U
225c0 54 46 2d 38 20 73 74 72 69 6e 67 20 70 6f 69 6e  TF-8 string poin
225d0 74 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ter...        //
225e0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
225f0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
22600 61 6d 65 3d 22 6c 65 6e 67 74 68 22 3e 0d 0a 20  ame="length">.. 
22610 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6c         /// The l
22620 65 6e 67 74 68 20 6f 66 20 74 68 65 20 6e 61 74  ength of the nat
22630 69 76 65 20 73 74 72 69 6e 67 2c 20 69 6e 20 62  ive string, in b
22640 79 74 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ytes...        /
22650 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
22660 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
22670 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
22680 54 68 65 20 6d 61 6e 61 67 65 64 20 73 74 72 69  The managed stri
22690 6e 67 20 6f 72 20 6e 75 6c 6c 20 75 70 6f 6e 20  ng or null upon 
226a0 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20  failure...      
226b0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
226c0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
226d0 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 53   static string S
226e0 74 72 69 6e 67 46 72 6f 6d 55 74 66 38 49 6e 74  tringFromUtf8Int
226f0 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Ptr(..          
22700 20 20 49 6e 74 50 74 72 20 70 56 61 6c 75 65 2c    IntPtr pValue,
22710 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
22720 74 20 6c 65 6e 67 74 68 0d 0a 20 20 20 20 20 20  t length..      
22730 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
22740 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
22750 69 66 20 28 70 56 61 6c 75 65 20 3d 3d 20 49 6e  if (pValue == In
22760 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
22770 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
22780 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20  rn null;....    
22790 20 20 20 20 20 20 20 20 69 66 20 28 6c 65 6e 67          if (leng
227a0 74 68 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 20  th > 0)..       
227b0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
227c0 20 20 20 20 20 20 20 20 62 79 74 65 5b 5d 20 62          byte[] b
227d0 79 74 65 73 20 3d 20 6e 65 77 20 62 79 74 65 5b  ytes = new byte[
227e0 6c 65 6e 67 74 68 5d 3b 0d 0a 0d 0a 20 20 20 20  length];....    
227f0 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73              Mars
22800 68 61 6c 2e 43 6f 70 79 28 70 56 61 6c 75 65 2c  hal.Copy(pValue,
22810 20 62 79 74 65 73 2c 20 30 2c 20 6c 65 6e 67 74   bytes, 0, lengt
22820 68 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  h);....         
22830 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 47 65         return Ge
22840 74 53 74 72 69 6e 67 46 72 6f 6d 55 74 66 38 42  tStringFromUtf8B
22850 79 74 65 73 28 62 79 74 65 73 29 3b 0d 0a 20 20  ytes(bytes);..  
22860 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
22870 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
22880 6e 20 53 74 72 69 6e 67 2e 45 6d 70 74 79 3b 0d  n String.Empty;.
22890 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
228a0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
228b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
228c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
228d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
228e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
228f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
22900 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
22910 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 74 68 65  /// Converts the
22920 20 73 70 65 63 69 66 69 65 64 20 6d 61 6e 61 67   specified manag
22930 65 64 20 73 74 72 69 6e 67 20 69 6e 74 6f 20 61  ed string into a
22940 20 6e 61 74 69 76 65 20 4e 55 4c 2d 74 65 72 6d   native NUL-term
22950 69 6e 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20  inated..        
22960 2f 2f 2f 20 55 54 46 2d 38 20 73 74 72 69 6e 67  /// UTF-8 string
22970 20 70 6f 69 6e 74 65 72 20 75 73 69 6e 67 20 6d   pointer using m
22980 65 6d 6f 72 79 20 6f 62 74 61 69 6e 65 64 20 66  emory obtained f
22990 72 6f 6d 20 74 68 65 20 53 51 4c 69 74 65 20 63  rom the SQLite c
229a0 6f 72 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ore..        ///
229b0 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20   library...     
229c0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
229d0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
229e0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75  param name="valu
229f0 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
22a00 20 54 68 65 20 6d 61 6e 61 67 65 64 20 73 74 72   The managed str
22a10 69 6e 67 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d  ing to convert..
22a20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
22a30 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
22a40 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
22a50 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
22a60 74 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69 6e 61  tive NUL-termina
22a70 74 65 64 20 55 54 46 2d 38 20 73 74 72 69 6e 67  ted UTF-8 string
22a80 20 70 6f 69 6e 74 65 72 20 6f 72 0d 0a 20 20 20   pointer or..   
22a90 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
22aa0 65 66 3d 22 49 6e 74 50 74 72 2e 5a 65 72 6f 22  ef="IntPtr.Zero"
22ab0 20 2f 3e 20 75 70 6f 6e 20 66 61 69 6c 75 72 65   /> upon failure
22ac0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
22ad0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
22ae0 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
22af0 20 49 6e 74 50 74 72 20 55 74 66 38 49 6e 74 50   IntPtr Utf8IntP
22b00 74 72 46 72 6f 6d 53 74 72 69 6e 67 28 0d 0a 20  trFromString(.. 
22b10 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
22b20 67 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20  g value..       
22b30 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
22b40 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
22b50 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c  f (value == null
22b60 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
22b70 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72     return IntPtr
22b80 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20  .Zero;....      
22b90 20 20 20 20 20 20 49 6e 74 50 74 72 20 72 65 73        IntPtr res
22ba0 75 6c 74 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72  ult = IntPtr.Zer
22bb0 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o;..            
22bc0 62 79 74 65 5b 5d 20 62 79 74 65 73 20 3d 20 47  byte[] bytes = G
22bd0 65 74 55 74 66 38 42 79 74 65 73 46 72 6f 6d 53  etUtf8BytesFromS
22be0 74 72 69 6e 67 28 76 61 6c 75 65 29 3b 0d 0a 0d  tring(value);...
22bf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
22c00 28 62 79 74 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d  (bytes == null).
22c10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
22c20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a   return IntPtr.Z
22c30 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ero;....        
22c40 20 20 20 20 69 6e 74 20 6c 65 6e 67 74 68 20 3d      int length =
22c50 20 62 79 74 65 73 2e 4c 65 6e 67 74 68 3b 0d 0a   bytes.Length;..
22c60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
22c70 73 75 6c 74 20 3d 20 53 51 4c 69 74 65 4d 65 6d  sult = SQLiteMem
22c80 6f 72 79 2e 41 6c 6c 6f 63 61 74 65 28 6c 65 6e  ory.Allocate(len
22c90 67 74 68 20 2b 20 31 29 3b 0d 0a 0d 0a 20 20 20  gth + 1);....   
22ca0 20 20 20 20 20 20 20 20 20 69 66 20 28 72 65 73           if (res
22cb0 75 6c 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  ult == IntPtr.Ze
22cc0 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
22cd0 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50       return IntP
22ce0 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20  tr.Zero;....    
22cf0 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e          Marshal.
22d00 43 6f 70 79 28 62 79 74 65 73 2c 20 30 2c 20 72  Copy(bytes, 0, r
22d10 65 73 75 6c 74 2c 20 6c 65 6e 67 74 68 29 3b 0d  esult, length);.
22d20 0a 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72  .            Mar
22d30 73 68 61 6c 2e 57 72 69 74 65 42 79 74 65 28 72  shal.WriteByte(r
22d40 65 73 75 6c 74 2c 20 6c 65 6e 67 74 68 2c 20 30  esult, length, 0
22d50 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
22d60 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b    return result;
22d70 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
22d80 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
22d90 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
22da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22de0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
22df0 65 67 69 6f 6e 20 55 54 46 2d 38 20 53 74 72 69  egion UTF-8 Stri
22e00 6e 67 20 41 72 72 61 79 20 48 65 6c 70 65 72 20  ng Array Helper 
22e10 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20  Methods..       
22e20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
22e30 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76          /// Conv
22e40 65 72 74 73 20 61 20 6c 6f 67 69 63 61 6c 20 61  erts a logical a
22e50 72 72 61 79 20 6f 66 20 6e 61 74 69 76 65 20 4e  rray of native N
22e60 55 4c 2d 74 65 72 6d 69 6e 61 74 65 64 20 55 54  UL-terminated UT
22e70 46 2d 38 20 73 74 72 69 6e 67 0d 0a 20 20 20 20  F-8 string..    
22e80 20 20 20 20 2f 2f 2f 20 70 6f 69 6e 74 65 72 73      /// pointers
22e90 20 69 6e 74 6f 20 61 6e 20 61 72 72 61 79 20 6f   into an array o
22ea0 66 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67  f managed string
22eb0 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s...        /// 
22ec0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
22ed0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
22ee0 61 6d 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20 20  ame="argc">..   
22ef0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d       /// The num
22f00 62 65 72 20 6f 66 20 65 6c 65 6d 65 6e 74 73 20  ber of elements 
22f10 69 6e 20 74 68 65 20 6c 6f 67 69 63 61 6c 20 61  in the logical a
22f20 72 72 61 79 20 6f 66 20 6e 61 74 69 76 65 0d 0a  rray of native..
22f30 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 55 4c 2d          /// NUL-
22f40 74 65 72 6d 69 6e 61 74 65 64 20 55 54 46 2d 38  terminated UTF-8
22f50 20 73 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 73   string pointers
22f60 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
22f70 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
22f80 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
22f90 3d 22 61 72 67 76 22 3e 0d 0a 20 20 20 20 20 20  ="argv">..      
22fa0 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
22fb0 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
22fc0 6c 6f 67 69 63 61 6c 20 61 72 72 61 79 20 6f 66  logical array of
22fd0 20 6e 61 74 69 76 65 20 4e 55 4c 2d 74 65 72 6d   native NUL-term
22fe0 69 6e 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20  inated..        
22ff0 2f 2f 2f 20 55 54 46 2d 38 20 73 74 72 69 6e 67  /// UTF-8 string
23000 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 63 6f 6e   pointers to con
23010 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f  vert...        /
23020 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
23030 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
23040 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
23050 54 68 65 20 61 72 72 61 79 20 6f 66 20 6d 61 6e  The array of man
23060 61 67 65 64 20 73 74 72 69 6e 67 73 20 6f 72 20  aged strings or 
23070 6e 75 6c 6c 20 75 70 6f 6e 20 66 61 69 6c 75 72  null upon failur
23080 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
23090 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
230a0 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
230b0 63 20 73 74 72 69 6e 67 5b 5d 20 53 74 72 69 6e  c string[] Strin
230c0 67 41 72 72 61 79 46 72 6f 6d 55 74 66 38 53 69  gArrayFromUtf8Si
230d0 7a 65 41 6e 64 49 6e 74 50 74 72 28 0d 0a 20 20  zeAndIntPtr(..  
230e0 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 61 72            int ar
230f0 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  gc,..           
23100 20 49 6e 74 50 74 72 20 61 72 67 76 0d 0a 20 20   IntPtr argv..  
23110 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
23120 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
23130 20 20 20 20 69 66 20 28 61 72 67 63 20 3c 20 30      if (argc < 0
23140 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
23150 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
23160 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
23170 66 20 28 61 72 67 76 20 3d 3d 20 49 6e 74 50 74  f (argv == IntPt
23180 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
23190 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
231a0 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
231b0 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 72 65       string[] re
231c0 73 75 6c 74 20 3d 20 6e 65 77 20 73 74 72 69 6e  sult = new strin
231d0 67 5b 61 72 67 63 5d 3b 0d 0a 0d 0a 20 20 20 20  g[argc];....    
231e0 20 20 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74          for (int
231f0 20 69 6e 64 65 78 20 3d 20 30 2c 20 6f 66 66 73   index = 0, offs
23200 65 74 20 3d 20 30 3b 0d 0a 20 20 20 20 20 20 20  et = 0;..       
23210 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 64               ind
23220 65 78 20 3c 20 72 65 73 75 6c 74 2e 4c 65 6e 67  ex < result.Leng
23230 74 68 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  th;..           
23240 20 20 20 20 20 20 20 20 20 69 6e 64 65 78 2b 2b           index++
23250 2c 20 6f 66 66 73 65 74 20 2b 3d 20 49 6e 74 50  , offset += IntP
23260 74 72 2e 53 69 7a 65 29 0d 0a 20 20 20 20 20 20  tr.Size)..      
23270 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
23280 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
23290 70 41 72 67 20 3d 20 53 51 4c 69 74 65 4d 61 72  pArg = SQLiteMar
232a0 73 68 61 6c 2e 52 65 61 64 49 6e 74 50 74 72 28  shal.ReadIntPtr(
232b0 61 72 67 76 2c 20 6f 66 66 73 65 74 29 3b 0d 0a  argv, offset);..
232c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
232d0 20 20 72 65 73 75 6c 74 5b 69 6e 64 65 78 5d 20    result[index] 
232e0 3d 20 28 70 41 72 67 20 21 3d 20 49 6e 74 50 74  = (pArg != IntPt
232f0 72 2e 5a 65 72 6f 29 20 3f 0d 0a 20 20 20 20 20  r.Zero) ?..     
23300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
23310 74 72 69 6e 67 46 72 6f 6d 55 74 66 38 49 6e 74  tringFromUtf8Int
23320 50 74 72 28 70 41 72 67 29 20 3a 20 6e 75 6c 6c  Ptr(pArg) : null
23330 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
23340 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
23350 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a  return result;..
23360 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
23370 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
23380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
233a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
233b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
233c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
233d0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
233e0 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 6e 20 61  // Converts an a
233f0 72 72 61 79 20 6f 66 20 6d 61 6e 61 67 65 64 20  rray of managed 
23400 73 74 72 69 6e 67 73 20 69 6e 74 6f 20 61 6e 20  strings into an 
23410 61 72 72 61 79 20 6f 66 20 6e 61 74 69 76 65 0d  array of native.
23420 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 55 4c  .        /// NUL
23430 2d 74 65 72 6d 69 6e 61 74 65 64 20 55 54 46 2d  -terminated UTF-
23440 38 20 73 74 72 69 6e 67 20 70 6f 69 6e 74 65 72  8 string pointer
23450 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s...        /// 
23460 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
23470 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
23480 61 6d 65 3d 22 76 61 6c 75 65 73 22 3e 0d 0a 20  ame="values">.. 
23490 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61         /// The a
234a0 72 72 61 79 20 6f 66 20 6d 61 6e 61 67 65 64 20  rray of managed 
234b0 73 74 72 69 6e 67 73 20 74 6f 20 63 6f 6e 76 65  strings to conve
234c0 72 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  rt...        ///
234d0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
234e0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
234f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
23500 65 20 61 72 72 61 79 20 6f 66 20 6e 61 74 69 76  e array of nativ
23510 65 20 4e 55 4c 2d 74 65 72 6d 69 6e 61 74 65 64  e NUL-terminated
23520 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20 70 6f   UTF-8 string po
23530 69 6e 74 65 72 73 20 6f 72 20 6e 75 6c 6c 0d 0a  inters or null..
23540 20 20 20 20 20 20 20 20 2f 2f 2f 20 75 70 6f 6e          /// upon
23550 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20   failure...     
23560 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
23570 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
23580 63 20 73 74 61 74 69 63 20 49 6e 74 50 74 72 5b  c static IntPtr[
23590 5d 20 55 74 66 38 49 6e 74 50 74 72 41 72 72 61  ] Utf8IntPtrArra
235a0 79 46 72 6f 6d 53 74 72 69 6e 67 41 72 72 61 79  yFromStringArray
235b0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  (..            s
235c0 74 72 69 6e 67 5b 5d 20 76 61 6c 75 65 73 0d 0a  tring[] values..
235d0 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
235e0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
235f0 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 73        if (values
23600 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
23610 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
23620 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  n null;....     
23630 20 20 20 20 20 20 20 49 6e 74 50 74 72 5b 5d 20         IntPtr[] 
23640 72 65 73 75 6c 74 20 3d 20 6e 65 77 20 49 6e 74  result = new Int
23650 50 74 72 5b 76 61 6c 75 65 73 2e 4c 65 6e 67 74  Ptr[values.Lengt
23660 68 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  h];....         
23670 20 20 20 66 6f 72 20 28 69 6e 74 20 69 6e 64 65     for (int inde
23680 78 20 3d 20 30 3b 20 69 6e 64 65 78 20 3c 20 72  x = 0; index < r
23690 65 73 75 6c 74 2e 4c 65 6e 67 74 68 3b 20 69 6e  esult.Length; in
236a0 64 65 78 2b 2b 29 0d 0a 20 20 20 20 20 20 20 20  dex++)..        
236b0 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 5b 69          result[i
236c0 6e 64 65 78 5d 20 3d 20 55 74 66 38 49 6e 74 50  ndex] = Utf8IntP
236d0 74 72 46 72 6f 6d 53 74 72 69 6e 67 28 76 61 6c  trFromString(val
236e0 75 65 73 5b 69 6e 64 65 78 5d 29 3b 0d 0a 0d 0a  ues[index]);....
236f0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
23700 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20  rn result;..    
23710 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
23720 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d  endregion..    }
23730 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
23740 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
23750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23790 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69  ///....    #regi
237a0 6f 6e 20 53 51 4c 69 74 65 42 79 74 65 73 20 53  on SQLiteBytes S
237b0 74 61 74 69 63 20 43 6c 61 73 73 0d 0a 20 20 20  tatic Class..   
237c0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
237d0 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61      /// This cla
237e0 73 73 20 63 6f 6e 74 61 69 6e 73 20 73 74 61 74  ss contains stat
237f0 69 63 20 6d 65 74 68 6f 64 73 20 74 68 61 74 20  ic methods that 
23800 61 72 65 20 75 73 65 64 20 74 6f 20 64 65 61 6c  are used to deal
23810 20 77 69 74 68 20 6e 61 74 69 76 65 0d 0a 20 20   with native..  
23820 20 20 2f 2f 2f 20 70 6f 69 6e 74 65 72 73 20 74    /// pointers t
23830 6f 20 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b 73 20  o memory blocks 
23840 74 68 61 74 20 6c 6f 67 69 63 61 6c 6c 79 20 63  that logically c
23850 6f 6e 74 61 69 6e 20 61 72 72 61 79 73 20 6f 66  ontain arrays of
23860 20 62 79 74 65 73 20 74 6f 20 62 65 0d 0a 20 20   bytes to be..  
23870 20 20 2f 2f 2f 20 75 73 65 64 20 77 69 74 68 20    /// used with 
23880 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
23890 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 2f 2f  library...    //
238a0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
238b0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
238c0 63 20 63 6c 61 73 73 20 53 51 4c 69 74 65 42 79  c class SQLiteBy
238d0 74 65 73 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  tes..    {..    
238e0 20 20 20 20 23 72 65 67 69 6f 6e 20 42 79 74 65      #region Byte
238f0 20 41 72 72 61 79 20 48 65 6c 70 65 72 20 4d 65   Array Helper Me
23900 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f  thods..        /
23910 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
23920 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72        /// Conver
23930 74 73 20 61 20 6e 61 74 69 76 65 20 70 6f 69 6e  ts a native poin
23940 74 65 72 20 74 6f 20 61 20 6c 6f 67 69 63 61 6c  ter to a logical
23950 20 61 72 72 61 79 20 6f 66 20 62 79 74 65 73 20   array of bytes 
23960 6f 66 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  of the..        
23970 2f 2f 2f 20 73 70 65 63 69 66 69 65 64 20 6c 65  /// specified le
23980 6e 67 74 68 20 69 6e 74 6f 20 61 20 6d 61 6e 61  ngth into a mana
23990 67 65 64 20 62 79 74 65 20 61 72 72 61 79 2e 0d  ged byte array..
239a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
239b0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
239c0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
239d0 3d 22 70 56 61 6c 75 65 22 3e 0d 0a 20 20 20 20  ="pValue">..    
239e0 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
239f0 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
23a00 65 20 6c 6f 67 69 63 61 6c 20 61 72 72 61 79 20  e logical array 
23a10 6f 66 20 62 79 74 65 73 20 74 6f 20 63 6f 6e 76  of bytes to conv
23a20 65 72 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ert...        //
23a30 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
23a40 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
23a50 61 6d 65 3d 22 6c 65 6e 67 74 68 22 3e 0d 0a 20  ame="length">.. 
23a60 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6c         /// The l
23a70 65 6e 67 74 68 2c 20 69 6e 20 62 79 74 65 73 2c  ength, in bytes,
23a80 20 6f 66 20 74 68 65 20 6c 6f 67 69 63 61 6c 20   of the logical 
23a90 61 72 72 61 79 20 6f 66 20 62 79 74 65 73 20 74  array of bytes t
23aa0 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20  o convert...    
23ab0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
23ac0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
23ad0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
23ae0 20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64   /// The managed
23af0 20 62 79 74 65 20 61 72 72 61 79 20 6f 72 20 6e   byte array or n
23b00 75 6c 6c 20 75 70 6f 6e 20 66 61 69 6c 75 72 65  ull upon failure
23b10 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
23b20 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
23b30 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
23b40 20 62 79 74 65 5b 5d 20 46 72 6f 6d 49 6e 74 50   byte[] FromIntP
23b50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tr(..           
23b60 20 49 6e 74 50 74 72 20 70 56 61 6c 75 65 2c 0d   IntPtr pValue,.
23b70 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
23b80 20 6c 65 6e 67 74 68 0d 0a 20 20 20 20 20 20 20   length..       
23b90 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
23ba0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
23bb0 66 20 28 70 56 61 6c 75 65 20 3d 3d 20 49 6e 74  f (pValue == Int
23bc0 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
23bd0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
23be0 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  n null;....     
23bf0 20 20 20 20 20 20 20 69 66 20 28 6c 65 6e 67 74         if (lengt
23c00 68 20 3d 3d 20 30 29 0d 0a 20 20 20 20 20 20 20  h == 0)..       
23c10 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
23c20 6e 65 77 20 62 79 74 65 5b 30 5d 3b 0d 0a 0d 0a  new byte[0];....
23c30 20 20 20 20 20 20 20 20 20 20 20 20 62 79 74 65              byte
23c40 5b 5d 20 72 65 73 75 6c 74 20 3d 20 6e 65 77 20  [] result = new 
23c50 62 79 74 65 5b 6c 65 6e 67 74 68 5d 3b 0d 0a 0d  byte[length];...
23c60 0a 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72  .            Mar
23c70 73 68 61 6c 2e 43 6f 70 79 28 70 56 61 6c 75 65  shal.Copy(pValue
23c80 2c 20 72 65 73 75 6c 74 2c 20 30 2c 20 6c 65 6e  , result, 0, len
23c90 67 74 68 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  gth);....       
23ca0 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75       return resu
23cb0 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  lt;..        }..
23cc0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
23cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23d10 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
23d20 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
23d30 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73      /// Converts
23d40 20 61 20 6d 61 6e 61 67 65 64 20 62 79 74 65 20   a managed byte 
23d50 61 72 72 61 79 20 69 6e 74 6f 20 61 20 6e 61 74  array into a nat
23d60 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 61  ive pointer to a
23d70 20 6c 6f 67 69 63 61 6c 0d 0a 20 20 20 20 20 20   logical..      
23d80 20 20 2f 2f 2f 20 61 72 72 61 79 20 6f 66 20 62    /// array of b
23d90 79 74 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ytes...        /
23da0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
23db0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
23dc0 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d  m name="value">.
23dd0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
23de0 20 6d 61 6e 61 67 65 64 20 62 79 74 65 20 61 72   managed byte ar
23df0 72 61 79 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d  ray to convert..
23e00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
23e10 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
23e20 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
23e30 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
23e40 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
23e50 61 20 6c 6f 67 69 63 61 6c 20 62 79 74 65 20 61  a logical byte a
23e60 72 72 61 79 20 6f 72 20 6e 75 6c 6c 20 75 70 6f  rray or null upo
23e70 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20  n failure...    
23e80 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
23e90 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  s>..        publ
23ea0 69 63 20 73 74 61 74 69 63 20 49 6e 74 50 74 72  ic static IntPtr
23eb0 20 54 6f 49 6e 74 50 74 72 28 0d 0a 20 20 20 20   ToIntPtr(..    
23ec0 20 20 20 20 20 20 20 20 62 79 74 65 5b 5d 20 76          byte[] v
23ed0 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20  alue..          
23ee0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
23ef0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
23f00 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  value == null)..
23f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23f20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65  return IntPtr.Ze
23f30 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ro;....         
23f40 20 20 20 69 6e 74 20 6c 65 6e 67 74 68 20 3d 20     int length = 
23f50 76 61 6c 75 65 2e 4c 65 6e 67 74 68 3b 0d 0a 0d  value.Length;...
23f60 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
23f70 28 6c 65 6e 67 74 68 20 3d 3d 20 30 29 0d 0a 20  (length == 0).. 
23f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
23f90 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72  eturn IntPtr.Zer
23fa0 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  o;....          
23fb0 20 20 49 6e 74 50 74 72 20 72 65 73 75 6c 74 20    IntPtr result 
23fc0 3d 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 41  = SQLiteMemory.A
23fd0 6c 6c 6f 63 61 74 65 28 6c 65 6e 67 74 68 29 3b  llocate(length);
23fe0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
23ff0 69 66 20 28 72 65 73 75 6c 74 20 3d 3d 20 49 6e  if (result == In
24000 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
24010 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
24020 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d  rn IntPtr.Zero;.
24030 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 4d  ...            M
24040 61 72 73 68 61 6c 2e 43 6f 70 79 28 76 61 6c 75  arshal.Copy(valu
24050 65 2c 20 30 2c 20 72 65 73 75 6c 74 2c 20 6c 65  e, 0, result, le
24060 6e 67 74 68 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ngth);....      
24070 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73        return res
24080 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ult;..        }.
24090 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
240a0 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20  ion..    }..    
240b0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
240c0 20 20 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 2f 2f 2f 2f 2f 2f  ////////////////
240f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
24110 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c  .    #region SQL
24120 69 74 65 4d 61 72 73 68 61 6c 20 53 74 61 74 69  iteMarshal Stati
24130 63 20 43 6c 61 73 73 0d 0a 20 20 20 20 69 6e 74  c Class..    int
24140 65 72 6e 61 6c 20 73 74 61 74 69 63 20 63 6c 61  ernal static cla
24150 73 73 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c  ss SQLiteMarshal
24160 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
24170 20 23 72 65 67 69 6f 6e 20 49 6e 74 50 74 72 20   #region IntPtr 
24180 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a  Helper Methods..
24190 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
241a0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
241b0 2f 2f 20 52 65 74 75 72 6e 73 20 61 20 6e 65 77  // Returns a new
241c0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50   <see cref="IntP
241d0 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  tr" /> object in
241e0 73 74 61 6e 63 65 20 62 61 73 65 64 20 6f 6e 20  stance based on 
241f0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
24200 20 73 70 65 63 69 66 69 65 64 20 3c 73 65 65 20   specified <see 
24210 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e  cref="IntPtr" />
24220 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
24230 20 61 6e 64 20 61 6e 20 69 6e 74 65 67 65 72 0d   and an integer.
24240 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 66 66  .        /// off
24250 73 65 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  set...        //
24260 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
24270 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
24280 20 6e 61 6d 65 3d 22 70 6f 69 6e 74 65 72 22 3e   name="pointer">
24290 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
242a0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74  e <see cref="Int
242b0 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  Ptr" /> object i
242c0 6e 73 74 61 6e 63 65 20 72 65 70 72 65 73 65 6e  nstance represen
242d0 74 69 6e 67 20 74 68 65 20 62 61 73 65 0d 0a 20  ting the base.. 
242e0 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72         /// memor
242f0 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20  y location...   
24300 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
24310 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
24320 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 66 66 73  param name="offs
24330 65 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  et">..        //
24340 2f 20 54 68 65 20 69 6e 74 65 67 65 72 20 6f 66  / The integer of
24350 66 73 65 74 20 66 72 6f 6d 20 74 68 65 20 62 61  fset from the ba
24360 73 65 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69  se memory locati
24370 6f 6e 20 74 68 61 74 20 74 68 65 20 6e 65 77 0d  on that the new.
24380 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
24390 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20  e cref="IntPtr" 
243a0 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
243b0 63 65 20 73 68 6f 75 6c 64 20 70 6f 69 6e 74 20  ce should point 
243c0 74 6f 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  to...        ///
243d0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
243e0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
243f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
24400 65 20 6e 65 77 20 3c 73 65 65 20 63 72 65 66 3d  e new <see cref=
24410 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65  "IntPtr" /> obje
24420 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20  ct instance...  
24430 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
24440 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  rns>..        pu
24450 62 6c 69 63 20 73 74 61 74 69 63 20 49 6e 74 50  blic static IntP
24460 74 72 20 49 6e 74 50 74 72 46 6f 72 4f 66 66 73  tr IntPtrForOffs
24470 65 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  et(..           
24480 20 49 6e 74 50 74 72 20 70 6f 69 6e 74 65 72 2c   IntPtr pointer,
24490 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
244a0 74 20 6f 66 66 73 65 74 0d 0a 20 20 20 20 20 20  t offset..      
244b0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
244c0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
244d0 72 65 74 75 72 6e 20 6e 65 77 20 49 6e 74 50 74  return new IntPt
244e0 72 28 70 6f 69 6e 74 65 72 2e 54 6f 49 6e 74 36  r(pointer.ToInt6
244f0 34 28 29 20 2b 20 6f 66 66 73 65 74 29 3b 0d 0a  4() + offset);..
24500 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
24510 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
24520 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
24530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24570 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
24580 69 6f 6e 20 4d 61 72 73 68 61 6c 20 52 65 61 64  ion Marshal Read
24590 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d   Helper Methods.
245a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
245b0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
245c0 2f 2f 2f 20 52 65 61 64 73 20 61 20 3c 73 65 65  /// Reads a <see
245d0 20 63 72 65 66 3d 22 49 6e 74 33 32 22 20 2f 3e   cref="Int32" />
245e0 20 76 61 6c 75 65 20 66 72 6f 6d 20 74 68 65 20   value from the 
245f0 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72 79  specified memory
24600 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 6f  ..        /// lo
24610 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  cation...       
24620 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
24630 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
24640 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74 65  ram name="pointe
24650 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  r">..        ///
24660 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
24670 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63  IntPtr" /> objec
24680 74 20 69 6e 73 74 61 6e 63 65 20 72 65 70 72 65  t instance repre
24690 73 65 6e 74 69 6e 67 20 74 68 65 20 62 61 73 65  senting the base
246a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65  ..        /// me
246b0 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a  mory location...
246c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
246d0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
246e0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f  / <param name="o
246f0 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20 20  ffset">..       
24700 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67 65 72   /// The integer
24710 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68 65   offset from the
24720 20 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f 63   base memory loc
24730 61 74 69 6f 6e 20 77 68 65 72 65 20 74 68 65 0d  ation where the.
24740 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
24750 65 20 63 72 65 66 3d 22 49 6e 74 33 32 22 20 2f  e cref="Int32" /
24760 3e 20 76 61 6c 75 65 20 74 6f 20 62 65 20 72 65  > value to be re
24770 61 64 20 69 73 20 6c 6f 63 61 74 65 64 2e 0d 0a  ad is located...
24780 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
24790 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
247a0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
247b0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
247c0 65 20 63 72 65 66 3d 22 49 6e 74 33 32 22 20 2f  e cref="Int32" /
247d0 3e 20 76 61 6c 75 65 20 61 74 20 74 68 65 20 73  > value at the s
247e0 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72 79 20  pecified memory 
247f0 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  location...     
24800 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
24810 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
24820 63 20 73 74 61 74 69 63 20 69 6e 74 20 52 65 61  c static int Rea
24830 64 49 6e 74 33 32 28 0d 0a 20 20 20 20 20 20 20  dInt32(..       
24840 20 20 20 20 20 49 6e 74 50 74 72 20 70 6f 69 6e       IntPtr poin
24850 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ter,..          
24860 20 20 69 6e 74 20 6f 66 66 73 65 74 0d 0a 20 20    int offset..  
24870 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
24880 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41       {..#if !PLA
24890 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
248a0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
248b0 20 20 20 20 72 65 74 75 72 6e 20 4d 61 72 73 68      return Marsh
248c0 61 6c 2e 52 65 61 64 49 6e 74 33 32 28 70 6f 69  al.ReadInt32(poi
248d0 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 3b 0d 0a  nter, offset);..
248e0 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
248f0 20 20 20 72 65 74 75 72 6e 20 4d 61 72 73 68 61     return Marsha
24900 6c 2e 52 65 61 64 49 6e 74 33 32 28 49 6e 74 50  l.ReadInt32(IntP
24910 74 72 46 6f 72 4f 66 66 73 65 74 28 70 6f 69 6e  trForOffset(poin
24920 74 65 72 2c 20 6f 66 66 73 65 74 29 29 3b 0d 0a  ter, offset));..
24930 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
24940 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
24950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24990 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
249a0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
249b0 20 20 20 20 20 20 20 2f 2f 2f 20 52 65 61 64 73         /// Reads
249c0 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22 44 6f   a <see cref="Do
249d0 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65 20 66  uble" /> value f
249e0 72 6f 6d 20 74 68 65 20 73 70 65 63 69 66 69 65  rom the specifie
249f0 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20  d memory..      
24a00 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e 0d    /// location..
24a10 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
24a20 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
24a30 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
24a40 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20 20  ="pointer">..   
24a50 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
24a60 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20  e cref="IntPtr" 
24a70 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
24a80 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20  ce representing 
24a90 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20  the base..      
24aa0 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63    /// memory loc
24ab0 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ation...        
24ac0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
24ad0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
24ae0 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d   name="offset">.
24af0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
24b00 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65 74 20   integer offset 
24b10 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20 6d 65  from the base me
24b20 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77 68  mory location wh
24b30 65 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ere the..       
24b40 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
24b50 44 6f 75 62 6c 65 22 20 2f 3e 20 74 6f 20 62 65  Double" /> to be
24b60 20 72 65 61 64 20 69 73 20 6c 6f 63 61 74 65 64   read is located
24b70 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
24b80 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
24b90 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
24ba0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
24bb0 3c 73 65 65 20 63 72 65 66 3d 22 44 6f 75 62 6c  <see cref="Doubl
24bc0 65 22 20 2f 3e 20 76 61 6c 75 65 20 61 74 20 74  e" /> value at t
24bd0 68 65 20 73 70 65 63 69 66 69 65 64 20 6d 65 6d  he specified mem
24be0 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20  ory location... 
24bf0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
24c00 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
24c10 75 62 6c 69 63 20 73 74 61 74 69 63 20 64 6f 75  ublic static dou
24c20 62 6c 65 20 52 65 61 64 44 6f 75 62 6c 65 28 0d  ble ReadDouble(.
24c30 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
24c40 50 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a 20 20  Ptr pointer,..  
24c50 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66            int of
24c60 66 73 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20  fset..          
24c70 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
24c80 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
24c90 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
24ca0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
24cb0 72 6e 20 42 69 74 43 6f 6e 76 65 72 74 65 72 2e  rn BitConverter.
24cc0 49 6e 74 36 34 42 69 74 73 54 6f 44 6f 75 62 6c  Int64BitsToDoubl
24cd0 65 28 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e  e(Marshal.ReadIn
24ce0 74 36 34 28 0d 0a 20 20 20 20 20 20 20 20 20 20  t64(..          
24cf0 20 20 20 20 20 20 70 6f 69 6e 74 65 72 2c 20 6f        pointer, o
24d00 66 66 73 65 74 29 29 3b 0d 0a 23 65 6c 73 65 0d  ffset));..#else.
24d10 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
24d20 75 72 6e 20 42 69 74 43 6f 6e 76 65 72 74 65 72  urn BitConverter
24d30 2e 54 6f 44 6f 75 62 6c 65 28 42 69 74 43 6f 6e  .ToDouble(BitCon
24d40 76 65 72 74 65 72 2e 47 65 74 42 79 74 65 73 28  verter.GetBytes(
24d50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24d60 20 20 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e    Marshal.ReadIn
24d70 74 36 34 28 49 6e 74 50 74 72 46 6f 72 4f 66 66  t64(IntPtrForOff
24d80 73 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66  set(pointer, off
24d90 73 65 74 29 29 29 2c 20 30 29 3b 0d 0a 23 65 6e  set))), 0);..#en
24da0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
24db0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
24dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24e00 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
24e10 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
24e20 20 20 20 20 2f 2f 2f 20 52 65 61 64 73 20 61 6e      /// Reads an
24e30 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50   <see cref="IntP
24e40 74 72 22 20 2f 3e 20 76 61 6c 75 65 20 66 72 6f  tr" /> value fro
24e50 6d 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  m the specified 
24e60 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20 20 20  memory..        
24e70 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20  /// location... 
24e80 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
24e90 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
24ea0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
24eb0 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20 20 20 20  pointer">..     
24ec0 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
24ed0 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e  cref="IntPtr" />
24ee0 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
24ef0 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 74 68   representing th
24f00 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20 20 20  e base..        
24f10 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74  /// memory locat
24f20 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ion...        //
24f30 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
24f40 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
24f50 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d 0a 20  ame="offset">.. 
24f60 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 69         /// The i
24f70 6e 74 65 67 65 72 20 6f 66 66 73 65 74 20 66 72  nteger offset fr
24f80 6f 6d 20 74 68 65 20 62 61 73 65 20 6d 65 6d 6f  om the base memo
24f90 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77 68 65 72  ry location wher
24fa0 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  e the..        /
24fb0 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  // <see cref="In
24fc0 74 50 74 72 22 20 2f 3e 20 76 61 6c 75 65 20 74  tPtr" /> value t
24fd0 6f 20 62 65 20 72 65 61 64 20 69 73 20 6c 6f 63  o be read is loc
24fe0 61 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ated...        /
24ff0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
25000 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
25010 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
25020 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  The <see cref="I
25030 6e 74 50 74 72 22 20 2f 3e 20 76 61 6c 75 65 20  ntPtr" /> value 
25040 61 74 20 74 68 65 20 73 70 65 63 69 66 69 65 64  at the specified
25050 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e   memory location
25060 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
25070 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
25080 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
25090 20 49 6e 74 50 74 72 20 52 65 61 64 49 6e 74 50   IntPtr ReadIntP
250a0 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tr(..           
250b0 20 49 6e 74 50 74 72 20 70 6f 69 6e 74 65 72 2c   IntPtr pointer,
250c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
250d0 74 20 6f 66 66 73 65 74 0d 0a 20 20 20 20 20 20  t offset..      
250e0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
250f0 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52   {..#if !PLATFOR
25100 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
25110 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
25120 72 65 74 75 72 6e 20 4d 61 72 73 68 61 6c 2e 52  return Marshal.R
25130 65 61 64 49 6e 74 50 74 72 28 70 6f 69 6e 74 65  eadIntPtr(pointe
25140 72 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 23 65 6c  r, offset);..#el
25150 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
25160 72 65 74 75 72 6e 20 4d 61 72 73 68 61 6c 2e 52  return Marshal.R
25170 65 61 64 49 6e 74 50 74 72 28 49 6e 74 50 74 72  eadIntPtr(IntPtr
25180 46 6f 72 4f 66 66 73 65 74 28 70 6f 69 6e 74 65  ForOffset(pointe
25190 72 2c 20 6f 66 66 73 65 74 29 29 3b 0d 0a 23 65  r, offset));..#e
251a0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ndif..        }.
251b0 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
251c0 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
251d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
251e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
251f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25210 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
25220 20 20 23 72 65 67 69 6f 6e 20 4d 61 72 73 68 61    #region Marsha
25230 6c 20 57 72 69 74 65 20 48 65 6c 70 65 72 20 4d  l Write Helper M
25240 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
25250 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
25260 20 20 20 20 20 20 20 2f 2f 2f 20 57 72 69 74 65         /// Write
25270 73 20 61 6e 20 3c 73 65 65 20 63 72 65 66 3d 22  s an <see cref="
25280 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75 65 20  Int32" /> value 
25290 74 6f 20 74 68 65 20 73 70 65 63 69 66 69 65 64  to the specified
252a0 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20 20   memory..       
252b0 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a   /// location...
252c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
252d0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
252e0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
252f0 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20 20 20  "pointer">..    
25300 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
25310 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f   cref="IntPtr" /
25320 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
25330 65 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 74  e representing t
25340 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20 20  he base..       
25350 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63 61   /// memory loca
25360 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  tion...        /
25370 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
25380 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
25390 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d 0a  name="offset">..
253a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
253b0 69 6e 74 65 67 65 72 20 6f 66 66 73 65 74 20 66  integer offset f
253c0 72 6f 6d 20 74 68 65 20 62 61 73 65 20 6d 65 6d  rom the base mem
253d0 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77 68 65  ory location whe
253e0 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  re the..        
253f0 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
25400 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75 65 20 74  nt32" /> value t
25410 6f 20 62 65 20 77 72 69 74 74 65 6e 20 69 73 20  o be written is 
25420 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20 20 20  located...      
25430 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
25440 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
25450 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e  am name="value">
25460 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
25470 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74  e <see cref="Int
25480 33 32 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20  32" /> value to 
25490 77 72 69 74 65 2e 0d 0a 20 20 20 20 20 20 20 20  write...        
254a0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
254b0 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
254c0 74 69 63 20 76 6f 69 64 20 57 72 69 74 65 49 6e  tic void WriteIn
254d0 74 33 32 28 0d 0a 20 20 20 20 20 20 20 20 20 20  t32(..          
254e0 20 20 49 6e 74 50 74 72 20 70 6f 69 6e 74 65 72    IntPtr pointer
254f0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ,..            i
25500 6e 74 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20  nt offset,..    
25510 20 20 20 20 20 20 20 20 69 6e 74 20 76 61 6c 75          int valu
25520 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  e..            )
25530 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
25540 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
25550 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
25560 20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c           Marshal
25570 2e 57 72 69 74 65 49 6e 74 33 32 28 70 6f 69 6e  .WriteInt32(poin
25580 74 65 72 2c 20 6f 66 66 73 65 74 2c 20 76 61 6c  ter, offset, val
25590 75 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  ue);..#else..   
255a0 20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c           Marshal
255b0 2e 57 72 69 74 65 49 6e 74 33 32 28 49 6e 74 50  .WriteInt32(IntP
255c0 74 72 46 6f 72 4f 66 66 73 65 74 28 70 6f 69 6e  trForOffset(poin
255d0 74 65 72 2c 20 6f 66 66 73 65 74 29 2c 20 76 61  ter, offset), va
255e0 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  lue);..#endif.. 
255f0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
25600 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
25610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
25650 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
25660 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
25670 2f 20 57 72 69 74 65 73 20 61 20 3c 73 65 65 20  / Writes a <see 
25680 63 72 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f 3e  cref="Double" />
25690 20 76 61 6c 75 65 20 74 6f 20 74 68 65 20 73 70   value to the sp
256a0 65 63 69 66 69 65 64 20 6d 65 6d 6f 72 79 0d 0a  ecified memory..
256b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 6f 63 61          /// loca
256c0 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  tion...        /
256d0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
256e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
256f0 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74 65 72 22  m name="pointer"
25700 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
25710 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  he <see cref="In
25720 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20  tPtr" /> object 
25730 69 6e 73 74 61 6e 63 65 20 72 65 70 72 65 73 65  instance represe
25740 6e 74 69 6e 67 20 74 68 65 20 62 61 73 65 0d 0a  nting the base..
25750 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 6d 6f          /// memo
25760 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20  ry location...  
25770 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
25780 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
25790 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 66 66  <param name="off
257a0 73 65 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  set">..        /
257b0 2f 2f 20 54 68 65 20 69 6e 74 65 67 65 72 20 6f  // The integer o
257c0 66 66 73 65 74 20 66 72 6f 6d 20 74 68 65 20 62  ffset from the b
257d0 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74  ase memory locat
257e0 69 6f 6e 20 77 68 65 72 65 20 74 68 65 0d 0a 20  ion where the.. 
257f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
25800 63 72 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f 3e  cref="Double" />
25810 20 76 61 6c 75 65 20 74 6f 20 62 65 20 77 72 69   value to be wri
25820 74 74 65 6e 20 69 73 20 6c 6f 63 61 74 65 64 2e  tten is located.
25830 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
25840 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
25850 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
25860 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20  "value">..      
25870 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
25880 72 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f 3e 20  ref="Double" /> 
25890 76 61 6c 75 65 20 74 6f 20 77 72 69 74 65 2e 0d  value to write..
258a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
258b0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70  aram>..        p
258c0 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69  ublic static voi
258d0 64 20 57 72 69 74 65 44 6f 75 62 6c 65 28 0d 0a  d WriteDouble(..
258e0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
258f0 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a 20 20 20  tr pointer,..   
25900 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66           int off
25910 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  set,..          
25920 20 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 0d 0a    double value..
25930 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
25940 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50         {..#if !P
25950 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
25960 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
25970 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 57 72        Marshal.Wr
25980 69 74 65 49 6e 74 36 34 28 70 6f 69 6e 74 65 72  iteInt64(pointer
25990 2c 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20 20  , offset,..     
259a0 20 20 20 20 20 20 20 20 20 20 20 42 69 74 43 6f             BitCo
259b0 6e 76 65 72 74 65 72 2e 44 6f 75 62 6c 65 54 6f  nverter.DoubleTo
259c0 49 6e 74 36 34 42 69 74 73 28 76 61 6c 75 65 29  Int64Bits(value)
259d0 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  );..#else..     
259e0 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 57         Marshal.W
259f0 72 69 74 65 49 6e 74 36 34 28 49 6e 74 50 74 72  riteInt64(IntPtr
25a00 46 6f 72 4f 66 66 73 65 74 28 70 6f 69 6e 74 65  ForOffset(pointe
25a10 72 2c 20 6f 66 66 73 65 74 29 2c 0d 0a 20 20 20  r, offset),..   
25a20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 69 74               Bit
25a30 43 6f 6e 76 65 72 74 65 72 2e 54 6f 49 6e 74 36  Converter.ToInt6
25a40 34 28 42 69 74 43 6f 6e 76 65 72 74 65 72 2e 47  4(BitConverter.G
25a50 65 74 42 79 74 65 73 28 76 61 6c 75 65 29 2c 20  etBytes(value), 
25a60 30 29 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  0));..#endif..  
25a70 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
25a80 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
25a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
25ad0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
25ae0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
25af0 20 57 72 69 74 65 73 20 61 20 3c 73 65 65 20 63   Writes a <see c
25b00 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20  ref="IntPtr" /> 
25b10 76 61 6c 75 65 20 74 6f 20 74 68 65 20 73 70 65  value to the spe
25b20 63 69 66 69 65 64 20 6d 65 6d 6f 72 79 0d 0a 20  cified memory.. 
25b30 20 20 20 20 20 20 20 2f 2f 2f 20 6c 6f 63 61 74         /// locat
25b40 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ion...        //
25b50 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
25b60 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
25b70 20 6e 61 6d 65 3d 22 70 6f 69 6e 74 65 72 22 3e   name="pointer">
25b80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
25b90 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74  e <see cref="Int
25ba0 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  Ptr" /> object i
25bb0 6e 73 74 61 6e 63 65 20 72 65 70 72 65 73 65 6e  nstance represen
25bc0 74 69 6e 67 20 74 68 65 20 62 61 73 65 0d 0a 20  ting the base.. 
25bd0 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72         /// memor
25be0 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20  y location...   
25bf0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
25c00 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
25c10 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 66 66 73  param name="offs
25c20 65 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  et">..        //
25c30 2f 20 54 68 65 20 69 6e 74 65 67 65 72 20 6f 66  / The integer of
25c40 66 73 65 74 20 66 72 6f 6d 20 74 68 65 20 62 61  fset from the ba
25c50 73 65 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69  se memory locati
25c60 6f 6e 20 77 68 65 72 65 20 74 68 65 0d 0a 20 20  on where the..  
25c70 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
25c80 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20  ref="IntPtr" /> 
25c90 76 61 6c 75 65 20 74 6f 20 62 65 20 77 72 69 74  value to be writ
25ca0 74 65 6e 20 69 73 20 6c 6f 63 61 74 65 64 2e 0d  ten is located..
25cb0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
25cc0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
25cd0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
25ce0 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20  value">..       
25cf0 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
25d00 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20 76  ef="IntPtr" /> v
25d10 61 6c 75 65 20 74 6f 20 77 72 69 74 65 2e 0d 0a  alue to write...
25d20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
25d30 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ram>..        pu
25d40 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69 64  blic static void
25d50 20 57 72 69 74 65 49 6e 74 50 74 72 28 0d 0a 20   WriteIntPtr(.. 
25d60 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
25d70 72 20 70 6f 69 6e 74 65 72 2c 0d 0a 20 20 20 20  r pointer,..    
25d80 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66 73          int offs
25d90 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  et,..           
25da0 20 49 6e 74 50 74 72 20 76 61 6c 75 65 0d 0a 20   IntPtr value.. 
25db0 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
25dc0 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c        {..#if !PL
25dd0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
25de0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
25df0 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 57 72 69       Marshal.Wri
25e00 74 65 49 6e 74 50 74 72 28 70 6f 69 6e 74 65 72  teIntPtr(pointer
25e10 2c 20 6f 66 66 73 65 74 2c 20 76 61 6c 75 65 29  , offset, value)
25e20 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
25e30 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 57 72        Marshal.Wr
25e40 69 74 65 49 6e 74 50 74 72 28 49 6e 74 50 74 72  iteIntPtr(IntPtr
25e50 46 6f 72 4f 66 66 73 65 74 28 70 6f 69 6e 74 65  ForOffset(pointe
25e60 72 2c 20 6f 66 66 73 65 74 29 2c 20 76 61 6c 75  r, offset), valu
25e70 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  e);..#endif..   
25e80 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
25e90 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
25ea0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
25eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
25ef0 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
25f00 20 53 51 4c 69 74 65 56 61 6c 75 65 20 48 65 6c   SQLiteValue Hel
25f10 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20  per Methods..   
25f20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
25f30 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
25f40 43 6f 6e 76 65 72 74 73 20 61 20 6c 6f 67 69 63  Converts a logic
25f50 61 6c 20 61 72 72 61 79 20 6f 66 20 6e 61 74 69  al array of nati
25f60 76 65 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 6e  ve pointers to n
25f70 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76 61  ative sqlite3_va
25f80 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  lue..        ///
25f90 20 73 74 72 75 63 74 75 72 65 73 20 69 6e 74 6f   structures into
25fa0 20 61 20 6d 61 6e 61 67 65 64 20 61 72 72 61 79   a managed array
25fb0 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53   of <see cref="S
25fc0 51 4c 69 74 65 56 61 6c 75 65 22 20 2f 3e 0d 0a  QLiteValue" />..
25fd0 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 62 6a 65          /// obje
25fe0 63 74 20 69 6e 73 74 61 6e 63 65 73 2e 0d 0a 20  ct instances... 
25ff0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
26000 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
26010 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
26020 61 72 67 63 22 3e 0d 0a 20 20 20 20 20 20 20 20  argc">..        
26030 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f  /// The number o
26040 66 20 65 6c 65 6d 65 6e 74 73 20 69 6e 20 74 68  f elements in th
26050 65 20 6c 6f 67 69 63 61 6c 20 61 72 72 61 79 20  e logical array 
26060 6f 66 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65  of native sqlite
26070 33 5f 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20  3_value..       
26080 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 73 2e   /// structures.
26090 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
260a0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
260b0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
260c0 22 61 72 67 76 22 3e 0d 0a 20 20 20 20 20 20 20  "argv">..       
260d0 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
260e0 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 6c  pointer to the l
260f0 6f 67 69 63 61 6c 20 61 72 72 61 79 20 6f 66 20  ogical array of 
26100 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76  native sqlite3_v
26110 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  alue..        //
26120 2f 20 73 74 72 75 63 74 75 72 65 73 20 74 6f 20  / structures to 
26130 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20  convert...      
26140 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
26150 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
26160 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
26170 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20 61  // The managed a
26180 72 72 61 79 20 6f 66 20 3c 73 65 65 20 63 72 65  rray of <see cre
26190 66 3d 22 53 51 4c 69 74 65 56 61 6c 75 65 22 20  f="SQLiteValue" 
261a0 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
261b0 63 65 73 20 6f 72 0d 0a 20 20 20 20 20 20 20 20  ces or..        
261c0 2f 2f 2f 20 6e 75 6c 6c 20 75 70 6f 6e 20 66 61  /// null upon fa
261d0 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  ilure...        
261e0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
261f0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
26200 74 61 74 69 63 20 53 51 4c 69 74 65 56 61 6c 75  tatic SQLiteValu
26210 65 5b 5d 20 56 61 6c 75 65 41 72 72 61 79 46 72  e[] ValueArrayFr
26220 6f 6d 53 69 7a 65 41 6e 64 49 6e 74 50 74 72 28  omSizeAndIntPtr(
26230 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
26240 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20  t argc,..       
26250 20 20 20 20 20 49 6e 74 50 74 72 20 61 72 67 76       IntPtr argv
26260 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
26270 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
26280 20 20 20 20 20 20 20 20 69 66 20 28 61 72 67 63          if (argc
26290 20 3c 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20   < 0)..         
262a0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
262b0 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ll;....         
262c0 20 20 20 69 66 20 28 61 72 67 76 20 3d 3d 20 49     if (argv == I
262d0 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
262e0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
262f0 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  urn null;....   
26300 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56           SQLiteV
26310 61 6c 75 65 5b 5d 20 72 65 73 75 6c 74 20 3d 20  alue[] result = 
26320 6e 65 77 20 53 51 4c 69 74 65 56 61 6c 75 65 5b  new SQLiteValue[
26330 61 72 67 63 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20  argc];....      
26340 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74 20 69        for (int i
26350 6e 64 65 78 20 3d 20 30 2c 20 6f 66 66 73 65 74  ndex = 0, offset
26360 20 3d 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 20   = 0;..         
26370 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 65 78             index
26380 20 3c 20 72 65 73 75 6c 74 2e 4c 65 6e 67 74 68   < result.Length
26390 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
263a0 20 20 20 20 20 20 20 69 6e 64 65 78 2b 2b 2c 20         index++, 
263b0 6f 66 66 73 65 74 20 2b 3d 20 49 6e 74 50 74 72  offset += IntPtr
263c0 2e 53 69 7a 65 29 0d 0a 20 20 20 20 20 20 20 20  .Size)..        
263d0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
263e0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 41         IntPtr pA
263f0 72 67 20 3d 20 52 65 61 64 49 6e 74 50 74 72 28  rg = ReadIntPtr(
26400 61 72 67 76 2c 20 6f 66 66 73 65 74 29 3b 0d 0a  argv, offset);..
26410 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26420 20 20 72 65 73 75 6c 74 5b 69 6e 64 65 78 5d 20    result[index] 
26430 3d 20 28 70 41 72 67 20 21 3d 20 49 6e 74 50 74  = (pArg != IntPt
26440 72 2e 5a 65 72 6f 29 20 3f 0d 0a 20 20 20 20 20  r.Zero) ?..     
26450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
26460 65 77 20 53 51 4c 69 74 65 56 61 6c 75 65 28 70  ew SQLiteValue(p
26470 41 72 67 29 20 3a 20 6e 75 6c 6c 3b 0d 0a 20 20  Arg) : null;..  
26480 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
26490 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
264a0 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20  n result;..     
264b0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
264c0 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
264d0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
264e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
264f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
26520 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 53         #region S
26530 51 4c 69 74 65 49 6e 64 65 78 20 48 65 6c 70 65  QLiteIndex Helpe
26540 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20  r Methods..     
26550 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
26560 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f  ..        /// Co
26570 6e 76 65 72 74 73 20 61 20 6e 61 74 69 76 65 20  nverts a native 
26580 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6e 61 74  pointer to a nat
26590 69 76 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65  ive sqlite3_inde
265a0 78 5f 69 6e 66 6f 20 73 74 72 75 63 74 75 72 65  x_info structure
265b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e  ..        /// in
265c0 74 6f 20 61 20 6e 65 77 20 3c 73 65 65 20 63 72  to a new <see cr
265d0 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 22  ef="SQLiteIndex"
265e0 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
265f0 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nce...        //
26600 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
26610 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
26620 20 6e 61 6d 65 3d 22 70 49 6e 64 65 78 22 3e 0d   name="pIndex">.
26630 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
26640 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
26650 74 6f 20 74 68 65 20 6e 61 74 69 76 65 20 73 71  to the native sq
26660 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f  lite3_index_info
26670 20 73 74 72 75 63 74 75 72 65 20 74 6f 0d 0a 20   structure to.. 
26680 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 76 65         /// conve
26690 72 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  rt...        ///
266a0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
266b0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
266c0 6d 65 3d 22 69 6e 64 65 78 22 3e 0d 0a 20 20 20  me="index">..   
266d0 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75       /// Upon su
266e0 63 63 65 73 73 2c 20 74 68 69 73 20 70 61 72 61  ccess, this para
266f0 6d 65 74 65 72 20 77 69 6c 6c 20 62 65 20 6d 6f  meter will be mo
26700 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74 61 69  dified to contai
26710 6e 20 74 68 65 20 6e 65 77 6c 79 0d 0a 20 20 20  n the newly..   
26720 20 20 20 20 20 2f 2f 2f 20 63 72 65 61 74 65 64       /// created
26730 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
26740 74 65 49 6e 64 65 78 22 20 2f 3e 20 6f 62 6a 65  teIndex" /> obje
26750 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20  ct instance...  
26760 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
26770 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  m>..        publ
26780 69 63 20 73 74 61 74 69 63 20 76 6f 69 64 20 49  ic static void I
26790 6e 64 65 78 46 72 6f 6d 49 6e 74 50 74 72 28 0d  ndexFromIntPtr(.
267a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
267b0 50 74 72 20 70 49 6e 64 65 78 2c 0d 0a 20 20 20  Ptr pIndex,..   
267c0 20 20 20 20 20 20 20 20 20 72 65 66 20 53 51 4c           ref SQL
267d0 69 74 65 49 6e 64 65 78 20 69 6e 64 65 78 0d 0a  iteIndex index..
267e0 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
267f0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
26800 20 20 20 20 20 20 69 66 20 28 70 49 6e 64 65 78        if (pIndex
26810 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
26820 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26830 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20    return;....   
26840 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66           int off
26850 73 65 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20  set = 0;....    
26860 20 20 20 20 20 20 20 20 69 6e 74 20 6e 43 6f 6e          int nCon
26870 73 74 72 61 69 6e 74 20 3d 20 52 65 61 64 49 6e  straint = ReadIn
26880 74 33 32 28 70 49 6e 64 65 78 2c 20 6f 66 66 73  t32(pIndex, offs
26890 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  et);....        
268a0 20 20 20 20 6f 66 66 73 65 74 20 2b 3d 20 73 69      offset += si
268b0 7a 65 6f 66 28 69 6e 74 29 3b 0d 0a 0d 0a 20 20  zeof(int);....  
268c0 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
268d0 20 70 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20 52   pConstraint = R
268e0 65 61 64 49 6e 74 50 74 72 28 70 49 6e 64 65 78  eadIntPtr(pIndex
268f0 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20  , offset);....  
26900 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
26910 20 2b 3d 20 49 6e 74 50 74 72 2e 53 69 7a 65 3b   += IntPtr.Size;
26920 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
26930 69 6e 74 20 6e 4f 72 64 65 72 42 79 20 3d 20 52  int nOrderBy = R
26940 65 61 64 49 6e 74 33 32 28 70 49 6e 64 65 78 2c  eadInt32(pIndex,
26950 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20   offset);....   
26960 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20           offset 
26970 2b 3d 20 73 69 7a 65 6f 66 28 69 6e 74 29 3b 0d  += sizeof(int);.
26980 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  ...            I
26990 6e 74 50 74 72 20 70 4f 72 64 65 72 42 79 20 3d  ntPtr pOrderBy =
269a0 20 52 65 61 64 49 6e 74 50 74 72 28 70 49 6e 64   ReadIntPtr(pInd
269b0 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a  ex, offset);....
269c0 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 65              inde
269d0 78 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 49 6e  x = new SQLiteIn
269e0 64 65 78 28 6e 43 6f 6e 73 74 72 61 69 6e 74 2c  dex(nConstraint,
269f0 20 6e 4f 72 64 65 72 42 79 29 3b 0d 0a 0d 0a 20   nOrderBy);.... 
26a00 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 73             int s
26a10 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 54  izeOfConstraintT
26a20 79 70 65 20 3d 20 4d 61 72 73 68 61 6c 2e 53 69  ype = Marshal.Si
26a30 7a 65 4f 66 28 74 79 70 65 6f 66 28 0d 0a 20 20  zeOf(typeof(..  
26a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e                Un
26a50 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
26a60 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  s.sqlite3_index_
26a70 63 6f 6e 73 74 72 61 69 6e 74 29 29 3b 0d 0a 0d  constraint));...
26a80 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72  .            for
26a90 20 28 69 6e 74 20 69 43 6f 6e 73 74 72 61 69 6e   (int iConstrain
26aa0 74 20 3d 20 30 3b 20 69 43 6f 6e 73 74 72 61 69  t = 0; iConstrai
26ab0 6e 74 20 3c 20 6e 43 6f 6e 73 74 72 61 69 6e 74  nt < nConstraint
26ac0 3b 20 69 43 6f 6e 73 74 72 61 69 6e 74 2b 2b 29  ; iConstraint++)
26ad0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
26ae0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26af0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
26b00 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64  hods.sqlite3_ind
26b10 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f  ex_constraint co
26b20 6e 73 74 72 61 69 6e 74 20 3d 0d 0a 20 20 20 20  nstraint =..    
26b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26b40 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
26b50 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
26b60 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74  index_constraint
26b70 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
26b80 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 50         Marshal.P
26b90 74 72 54 6f 53 74 72 75 63 74 75 72 65 28 49 6e  trToStructure(In
26ba0 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28 70 43  tPtrForOffset(pC
26bb0 6f 6e 73 74 72 61 69 6e 74 2c 0d 0a 20 20 20 20  onstraint,..    
26bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26bd0 69 43 6f 6e 73 74 72 61 69 6e 74 20 2a 20 73 69  iConstraint * si
26be0 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 54 79  zeOfConstraintTy
26bf0 70 65 29 2c 20 63 6f 6e 73 74 72 61 69 6e 74 29  pe), constraint)
26c00 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
26c10 20 20 20 20 20 69 6e 64 65 78 2e 49 6e 70 75 74       index.Input
26c20 73 2e 43 6f 6e 73 74 72 61 69 6e 74 73 5b 69 43  s.Constraints[iC
26c30 6f 6e 73 74 72 61 69 6e 74 5d 20 3d 0d 0a 20 20  onstraint] =..  
26c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26c50 20 20 6e 65 77 20 53 51 4c 69 74 65 49 6e 64 65    new SQLiteInde
26c60 78 43 6f 6e 73 74 72 61 69 6e 74 28 63 6f 6e 73  xConstraint(cons
26c70 74 72 61 69 6e 74 29 3b 0d 0a 20 20 20 20 20 20  traint);..      
26c80 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
26c90 20 20 20 20 20 20 20 69 6e 74 20 73 69 7a 65 4f         int sizeO
26ca0 66 4f 72 64 65 72 42 79 54 79 70 65 20 3d 20 4d  fOrderByType = M
26cb0 61 72 73 68 61 6c 2e 53 69 7a 65 4f 66 28 74 79  arshal.SizeOf(ty
26cc0 70 65 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 20  peof(..         
26cd0 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74         UnsafeNat
26ce0 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
26cf0 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62 79  e3_index_orderby
26d00 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ));....         
26d10 20 20 20 66 6f 72 20 28 69 6e 74 20 69 4f 72 64     for (int iOrd
26d20 65 72 42 79 20 3d 20 30 3b 20 69 4f 72 64 65 72  erBy = 0; iOrder
26d30 42 79 20 3c 20 6e 4f 72 64 65 72 42 79 3b 20 69  By < nOrderBy; i
26d40 4f 72 64 65 72 42 79 2b 2b 29 0d 0a 20 20 20 20  OrderBy++)..    
26d50 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
26d60 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66             Unsaf
26d70 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
26d80 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64  qlite3_index_ord
26d90 65 72 62 79 20 6f 72 64 65 72 42 79 20 3d 0d 0a  erby orderBy =..
26da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26db0 20 20 20 20 6e 65 77 20 55 6e 73 61 66 65 4e 61      new UnsafeNa
26dc0 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
26dd0 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62  te3_index_orderb
26de0 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  y();....        
26df0 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e          Marshal.
26e00 50 74 72 54 6f 53 74 72 75 63 74 75 72 65 28 49  PtrToStructure(I
26e10 6e 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28 70  ntPtrForOffset(p
26e20 4f 72 64 65 72 42 79 2c 0d 0a 20 20 20 20 20 20  OrderBy,..      
26e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 4f                iO
26e40 72 64 65 72 42 79 20 2a 20 73 69 7a 65 4f 66 4f  rderBy * sizeOfO
26e50 72 64 65 72 42 79 54 79 70 65 29 2c 20 6f 72 64  rderByType), ord
26e60 65 72 42 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  erBy);....      
26e70 20 20 20 20 20 20 20 20 20 20 69 6e 64 65 78 2e            index.
26e80 49 6e 70 75 74 73 2e 4f 72 64 65 72 42 79 73 5b  Inputs.OrderBys[
26e90 69 4f 72 64 65 72 42 79 5d 20 3d 0d 0a 20 20 20  iOrderBy] =..   
26ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26eb0 20 6e 65 77 20 53 51 4c 69 74 65 49 6e 64 65 78   new SQLiteIndex
26ec0 4f 72 64 65 72 42 79 28 6f 72 64 65 72 42 79 29  OrderBy(orderBy)
26ed0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
26ee0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
26ef0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
26f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
26f40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
26f50 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
26f60 20 2f 2f 2f 20 50 6f 70 75 6c 61 74 65 73 20 74   /// Populates t
26f70 68 65 20 6f 75 74 70 75 74 73 20 6f 66 20 61 20  he outputs of a 
26f80 70 72 65 2d 61 6c 6c 6f 63 61 74 65 64 20 6e 61  pre-allocated na
26f90 74 69 76 65 20 73 71 6c 69 74 65 33 5f 69 6e 64  tive sqlite3_ind
26fa0 65 78 5f 69 6e 66 6f 0d 0a 20 20 20 20 20 20 20  ex_info..       
26fb0 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 20 75   /// structure u
26fc0 73 69 6e 67 20 61 6e 20 65 78 69 73 74 69 6e 67  sing an existing
26fd0 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
26fe0 74 65 49 6e 64 65 78 22 20 2f 3e 20 6f 62 6a 65  teIndex" /> obje
26ff0 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ct..        /// 
27000 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20  instance...     
27010 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
27020 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
27030 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65  param name="inde
27040 78 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  x">..        ///
27050 20 54 68 65 20 65 78 69 73 74 69 6e 67 20 3c 73   The existing <s
27060 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49  ee cref="SQLiteI
27070 6e 64 65 78 22 20 2f 3e 20 6f 62 6a 65 63 74 20  ndex" /> object 
27080 69 6e 73 74 61 6e 63 65 20 63 6f 6e 74 61 69 6e  instance contain
27090 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ing..        ///
270a0 20 74 68 65 20 6f 75 74 70 75 74 20 64 61 74 61   the output data
270b0 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20 20 20   to use...      
270c0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
270d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
270e0 61 6d 20 6e 61 6d 65 3d 22 70 49 6e 64 65 78 22  am name="pIndex"
270f0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
27100 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
27110 72 20 74 6f 20 74 68 65 20 70 72 65 2d 61 6c 6c  r to the pre-all
27120 6f 63 61 74 65 64 20 6e 61 74 69 76 65 20 73 71  ocated native sq
27130 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f  lite3_index_info
27140 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74  ..        /// st
27150 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  ructure...      
27160 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
27170 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
27180 74 61 74 69 63 20 76 6f 69 64 20 49 6e 64 65 78  tatic void Index
27190 54 6f 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20  ToIntPtr(..     
271a0 20 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64         SQLiteInd
271b0 65 78 20 69 6e 64 65 78 2c 0d 0a 20 20 20 20 20  ex index,..     
271c0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 49         IntPtr pI
271d0 6e 64 65 78 0d 0a 20 20 20 20 20 20 20 20 20 20  ndex..          
271e0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
271f0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
27200 28 69 6e 64 65 78 20 3d 3d 20 6e 75 6c 6c 29 20  (index == null) 
27210 7c 7c 20 28 69 6e 64 65 78 2e 49 6e 70 75 74 73  || (index.Inputs
27220 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 0d 0a 20 20   == null) ||..  
27230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69                (i
27240 6e 64 65 78 2e 49 6e 70 75 74 73 2e 43 6f 6e 73  ndex.Inputs.Cons
27250 74 72 61 69 6e 74 73 20 3d 3d 20 6e 75 6c 6c 29  traints == null)
27260 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20   ||..           
27270 20 20 20 20 20 28 69 6e 64 65 78 2e 4f 75 74 70       (index.Outp
27280 75 74 73 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 0d  uts == null) ||.
27290 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
272a0 20 28 69 6e 64 65 78 2e 4f 75 74 70 75 74 73 2e   (index.Outputs.
272b0 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 73  ConstraintUsages
272c0 20 3d 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20   == null))..    
272d0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
272e0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
272f0 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n;..            
27300 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
27310 20 69 66 20 28 70 49 6e 64 65 78 20 3d 3d 20 49   if (pIndex == I
27320 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
27330 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
27340 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  urn;....        
27350 20 20 20 20 69 6e 74 20 6f 66 66 73 65 74 20 3d      int offset =
27360 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   0;....         
27370 20 20 20 69 6e 74 20 6e 43 6f 6e 73 74 72 61 69     int nConstrai
27380 6e 74 20 3d 20 52 65 61 64 49 6e 74 33 32 28 70  nt = ReadInt32(p
27390 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d  Index, offset);.
273a0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
273b0 66 20 28 6e 43 6f 6e 73 74 72 61 69 6e 74 20 21  f (nConstraint !
273c0 3d 20 69 6e 64 65 78 2e 49 6e 70 75 74 73 2e 43  = index.Inputs.C
273d0 6f 6e 73 74 72 61 69 6e 74 73 2e 4c 65 6e 67 74  onstraints.Lengt
273e0 68 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  h)..            
273f0 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20      return;.... 
27400 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e             if (n
27410 43 6f 6e 73 74 72 61 69 6e 74 20 21 3d 20 69 6e  Constraint != in
27420 64 65 78 2e 4f 75 74 70 75 74 73 2e 43 6f 6e 73  dex.Outputs.Cons
27430 74 72 61 69 6e 74 55 73 61 67 65 73 2e 4c 65 6e  traintUsages.Len
27440 67 74 68 29 0d 0a 20 20 20 20 20 20 20 20 20 20  gth)..          
27450 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d        return;...
27460 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66  .            off
27470 73 65 74 20 2b 3d 20 73 69 7a 65 6f 66 28 69 6e  set += sizeof(in
27480 74 29 20 2b 20 49 6e 74 50 74 72 2e 53 69 7a 65  t) + IntPtr.Size
27490 20 2b 20 73 69 7a 65 6f 66 28 69 6e 74 29 20 2b   + sizeof(int) +
274a0 20 49 6e 74 50 74 72 2e 53 69 7a 65 3b 0d 0a 0d   IntPtr.Size;...
274b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
274c0 50 74 72 20 70 43 6f 6e 73 74 72 61 69 6e 74 55  Ptr pConstraintU
274d0 73 61 67 65 20 3d 20 52 65 61 64 49 6e 74 50 74  sage = ReadIntPt
274e0 72 28 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74  r(pIndex, offset
274f0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
27500 20 20 69 6e 74 20 73 69 7a 65 4f 66 43 6f 6e 73    int sizeOfCons
27510 74 72 61 69 6e 74 55 73 61 67 65 54 79 70 65 20  traintUsageType 
27520 3d 20 4d 61 72 73 68 61 6c 2e 53 69 7a 65 4f 66  = Marshal.SizeOf
27530 28 74 79 70 65 6f 66 28 0d 0a 20 20 20 20 20 20  (typeof(..      
27540 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
27550 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
27560 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73  lite3_index_cons
27570 74 72 61 69 6e 74 5f 75 73 61 67 65 29 29 3b 0d  traint_usage));.
27580 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66  ...            f
27590 6f 72 20 28 69 6e 74 20 69 43 6f 6e 73 74 72 61  or (int iConstra
275a0 69 6e 74 20 3d 20 30 3b 20 69 43 6f 6e 73 74 72  int = 0; iConstr
275b0 61 69 6e 74 20 3c 20 6e 43 6f 6e 73 74 72 61 69  aint < nConstrai
275c0 6e 74 3b 20 69 43 6f 6e 73 74 72 61 69 6e 74 2b  nt; iConstraint+
275d0 2b 29 0d 0a 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 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
27600 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69  ethods.sqlite3_i
27610 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f  ndex_constraint_
27620 75 73 61 67 65 20 63 6f 6e 73 74 72 61 69 6e 74  usage constraint
27630 55 73 61 67 65 20 3d 0d 0a 20 20 20 20 20 20 20  Usage =..       
27640 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77               new
27650 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
27660 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64  hods.sqlite3_ind
27670 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73  ex_constraint_us
27680 61 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  age(..          
27690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
276a0 64 65 78 2e 4f 75 74 70 75 74 73 2e 43 6f 6e 73  dex.Outputs.Cons
276b0 74 72 61 69 6e 74 55 73 61 67 65 73 5b 69 43 6f  traintUsages[iCo
276c0 6e 73 74 72 61 69 6e 74 5d 29 3b 0d 0a 0d 0a 20  nstraint]);.... 
276d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d                 M
276e0 61 72 73 68 61 6c 2e 53 74 72 75 63 74 75 72 65  arshal.Structure
276f0 54 6f 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20  ToPtr(..        
27700 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73              cons
27710 74 72 61 69 6e 74 55 73 61 67 65 2c 20 49 6e 74  traintUsage, Int
27720 50 74 72 46 6f 72 4f 66 66 73 65 74 28 70 43 6f  PtrForOffset(pCo
27730 6e 73 74 72 61 69 6e 74 55 73 61 67 65 2c 0d 0a  nstraintUsage,..
27740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27750 20 20 20 20 69 43 6f 6e 73 74 72 61 69 6e 74 20      iConstraint 
27760 2a 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69  * sizeOfConstrai
27770 6e 74 55 73 61 67 65 54 79 70 65 29 2c 20 66 61  ntUsageType), fa
27780 6c 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  lse);....       
27790 20 20 20 20 20 20 20 20 20 69 6e 64 65 78 2e 4f           index.O
277a0 75 74 70 75 74 73 2e 43 6f 6e 73 74 72 61 69 6e  utputs.Constrain
277b0 74 55 73 61 67 65 73 5b 69 43 6f 6e 73 74 72 61  tUsages[iConstra
277c0 69 6e 74 5d 20 3d 0d 0a 20 20 20 20 20 20 20 20  int] =..        
277d0 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
277e0 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74  SQLiteIndexConst
277f0 72 61 69 6e 74 55 73 61 67 65 28 63 6f 6e 73 74  raintUsage(const
27800 72 61 69 6e 74 55 73 61 67 65 29 3b 0d 0a 20 20  raintUsage);..  
27810 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
27820 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
27830 74 20 2b 3d 20 49 6e 74 50 74 72 2e 53 69 7a 65  t += IntPtr.Size
27840 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
27850 20 57 72 69 74 65 49 6e 74 33 32 28 70 49 6e 64   WriteInt32(pInd
27860 65 78 2c 20 6f 66 66 73 65 74 2c 20 69 6e 64 65  ex, offset, inde
27870 78 2e 4f 75 74 70 75 74 73 2e 49 6e 64 65 78 4e  x.Outputs.IndexN
27880 75 6d 62 65 72 29 3b 0d 0a 0d 0a 20 20 20 20 20  umber);....     
27890 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 2b 3d         offset +=
278a0 20 73 69 7a 65 6f 66 28 69 6e 74 29 3b 0d 0a 0d   sizeof(int);...
278b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 57 72 69  .            Wri
278c0 74 65 49 6e 74 50 74 72 28 70 49 6e 64 65 78 2c  teIntPtr(pIndex,
278d0 20 6f 66 66 73 65 74 2c 20 53 51 4c 69 74 65 53   offset, SQLiteS
278e0 74 72 69 6e 67 2e 55 74 66 38 49 6e 74 50 74 72  tring.Utf8IntPtr
278f0 46 72 6f 6d 53 74 72 69 6e 67 28 0d 0a 20 20 20  FromString(..   
27900 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 64               ind
27910 65 78 2e 4f 75 74 70 75 74 73 2e 49 6e 64 65 78  ex.Outputs.Index
27920 53 74 72 69 6e 67 29 29 3b 0d 0a 0d 0a 20 20 20  String));....   
27930 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20           offset 
27940 2b 3d 20 49 6e 74 50 74 72 2e 53 69 7a 65 3b 0d  += IntPtr.Size;.
27950 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 57  ...            W
27960 72 69 74 65 49 6e 74 33 32 28 70 49 6e 64 65 78  riteInt32(pIndex
27970 2c 20 6f 66 66 73 65 74 2c 20 31 29 3b 20 2f 2a  , offset, 1); /*
27980 20 4e 4f 54 45 3a 20 57 65 20 6a 75 73 74 20 61   NOTE: We just a
27990 6c 6c 6f 63 61 74 65 64 20 69 74 2e 20 2a 2f 0d  llocated it. */.
279a0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f  ...            o
279b0 66 66 73 65 74 20 2b 3d 20 73 69 7a 65 6f 66 28  ffset += sizeof(
279c0 69 6e 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  int);....       
279d0 20 20 20 20 20 57 72 69 74 65 49 6e 74 33 32 28       WriteInt32(
279e0 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 2c 20  pIndex, offset, 
279f0 69 6e 64 65 78 2e 4f 75 74 70 75 74 73 2e 4f 72  index.Outputs.Or
27a00 64 65 72 42 79 43 6f 6e 73 75 6d 65 64 29 3b 0d  derByConsumed);.
27a10 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f  ...            o
27a20 66 66 73 65 74 20 2b 3d 20 73 69 7a 65 6f 66 28  ffset += sizeof(
27a30 69 6e 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  int);....       
27a40 20 20 20 20 20 57 72 69 74 65 44 6f 75 62 6c 65       WriteDouble
27a50 28 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 2c  (pIndex, offset,
27a60 20 69 6e 64 65 78 2e 4f 75 74 70 75 74 73 2e 45   index.Outputs.E
27a70 73 74 69 6d 61 74 65 64 43 6f 73 74 29 3b 0d 0a  stimatedCost);..
27a80 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
27a90 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20     #endregion.. 
27aa0 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65     }..    #endre
27ab0 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  gion....    ////
27ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27b00 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23  ///////....    #
27b10 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 4d 6f 64  region SQLiteMod
27b20 75 6c 65 20 42 61 73 65 20 43 6c 61 73 73 0d 0a  ule Base Class..
27b30 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
27b40 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  >..    /// This 
27b50 63 6c 61 73 73 20 72 65 70 72 65 73 65 6e 74 73  class represents
27b60 20 61 20 6d 61 6e 61 67 65 64 20 76 69 72 74 75   a managed virtu
27b70 61 6c 20 74 61 62 6c 65 20 6d 6f 64 75 6c 65 20  al table module 
27b80 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d  implementation..
27b90 0a 20 20 20 20 2f 2f 2f 20 49 74 20 69 73 20 6e  .    /// It is n
27ba0 6f 74 20 73 65 61 6c 65 64 20 61 6e 64 20 6d 75  ot sealed and mu
27bb0 73 74 20 62 65 20 75 73 65 64 20 61 73 20 74 68  st be used as th
27bc0 65 20 62 61 73 65 20 63 6c 61 73 73 20 66 6f 72  e base class for
27bd0 20 61 6e 79 0d 0a 20 20 20 20 2f 2f 2f 20 75 73   any..    /// us
27be0 65 72 2d 64 65 66 69 6e 65 64 20 76 69 72 74 75  er-defined virtu
27bf0 61 6c 20 74 61 62 6c 65 20 6d 6f 64 75 6c 65 20  al table module 
27c00 63 6c 61 73 73 65 73 20 69 6d 70 6c 65 6d 65 6e  classes implemen
27c10 74 65 64 20 69 6e 20 6d 61 6e 61 67 65 64 20 63  ted in managed c
27c20 6f 64 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ode...    /// </
27c30 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75  summary>..    pu
27c40 62 6c 69 63 20 61 62 73 74 72 61 63 74 20 63 6c  blic abstract cl
27c50 61 73 73 20 53 51 4c 69 74 65 4d 6f 64 75 6c 65  ass SQLiteModule
27c60 20 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   :..            
27c70 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f  ISQLiteManagedMo
27c80 64 75 6c 65 2c 20 2f 2a 49 53 51 4c 69 74 65 4e  dule, /*ISQLiteN
27c90 61 74 69 76 65 4d 6f 64 75 6c 65 2c 2a 2f 0d 0a  ativeModule,*/..
27ca0 20 20 20 20 20 20 20 20 20 20 20 20 49 44 69 73              IDis
27cb0 70 6f 73 61 62 6c 65 20 2f 2a 20 4e 4f 54 20 53  posable /* NOT S
27cc0 45 41 4c 45 44 20 2a 2f 0d 0a 20 20 20 20 7b 0d  EALED */..    {.
27cd0 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
27ce0 20 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64   SQLiteNativeMod
27cf0 75 6c 65 20 50 72 69 76 61 74 65 20 43 6c 61 73  ule Private Clas
27d00 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  s..        priva
27d10 74 65 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20  te sealed class 
27d20 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
27d30 6c 65 20 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  le :..          
27d40 20 20 20 20 20 20 49 53 51 4c 69 74 65 4e 61 74        ISQLiteNat
27d50 69 76 65 4d 6f 64 75 6c 65 2c 20 49 44 69 73 70  iveModule, IDisp
27d60 6f 73 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20  osable..        
27d70 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  {..            #
27d80 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43  region Private C
27d90 6f 6e 73 74 61 6e 74 73 0d 0a 20 20 20 20 20 20  onstants..      
27da0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
27db0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
27dc0 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65   /// This is the
27dd0 20 76 61 6c 75 65 20 74 68 61 74 20 69 73 20 61   value that is a
27de0 6c 77 61 79 73 20 75 73 65 64 20 66 6f 72 20 74  lways used for t
27df0 68 65 20 22 6c 6f 67 45 72 72 6f 72 73 22 0d 0a  he "logErrors"..
27e00 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
27e10 70 61 72 61 6d 65 74 65 72 20 74 6f 20 74 68 65  parameter to the
27e20 20 76 61 72 69 6f 75 73 20 73 74 61 74 69 63 20   various static 
27e30 65 72 72 6f 72 20 68 61 6e 64 6c 69 6e 67 20 6d  error handling m
27e40 65 74 68 6f 64 73 20 70 72 6f 76 69 64 65 64 0d  ethods provided.
27e50 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
27e60 20 62 79 20 74 68 65 20 3c 73 65 65 20 63 72 65   by the <see cre
27e70 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22  f="SQLiteModule"
27e80 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20   /> class...    
27e90 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
27ea0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
27eb0 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73      private cons
27ec0 74 20 62 6f 6f 6c 20 44 65 66 61 75 6c 74 4c 6f  t bool DefaultLo
27ed0 67 45 72 72 6f 72 73 20 3d 20 74 72 75 65 3b 0d  gErrors = true;.
27ee0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
27ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27f30 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
27f40 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
27f50 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
27f60 20 54 68 69 73 20 69 73 20 74 68 65 20 65 72 72   This is the err
27f70 6f 72 20 6d 65 73 73 61 67 65 20 74 65 78 74 20  or message text 
27f80 75 73 65 64 20 77 68 65 6e 20 74 68 65 20 63 6f  used when the co
27f90 6e 74 61 69 6e 65 64 0d 0a 20 20 20 20 20 20 20  ntained..       
27fa0 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
27fb0 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65  ef="SQLiteModule
27fc0 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
27fd0 61 6e 63 65 20 69 73 20 6e 6f 74 20 61 76 61 69  ance is not avai
27fe0 6c 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 20  lable..         
27ff0 20 20 20 2f 2f 2f 20 66 6f 72 20 61 6e 79 20 72     /// for any r
28000 65 61 73 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  eason...        
28010 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
28020 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
28030 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74  private const st
28040 72 69 6e 67 20 4d 6f 64 75 6c 65 4e 6f 74 41 76  ring ModuleNotAv
28050 61 69 6c 61 62 6c 65 45 72 72 6f 72 4d 65 73 73  ailableErrorMess
28060 61 67 65 20 3d 0d 0a 20 20 20 20 20 20 20 20 20  age =..         
28070 20 20 20 20 20 20 20 22 6e 61 74 69 76 65 20 6d         "native m
28080 6f 64 75 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61  odule implementa
28090 74 69 6f 6e 20 6e 6f 74 20 61 76 61 69 6c 61 62  tion not availab
280a0 6c 65 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  le";..          
280b0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
280c0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
280d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
280e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
280f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
28110 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ...            #
28120 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44  region Private D
28130 61 74 61 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ata..           
28140 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
28150 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
28160 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
28170 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20  QLiteModule" /> 
28180 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
28190 75 73 65 64 20 74 6f 20 70 72 6f 76 69 64 65 0d  used to provide.
281a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
281b0 20 61 6e 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69   an implementati
281c0 6f 6e 20 6f 66 20 74 68 65 20 3c 73 65 65 20 63  on of the <see c
281d0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
281e0 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 0d 0a 20 20  veModule" />..  
281f0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e            /// in
28200 74 65 72 66 61 63 65 2e 0d 0a 20 20 20 20 20 20  terface...      
28210 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
28220 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
28230 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65    private SQLite
28240 4d 6f 64 75 6c 65 20 6d 6f 64 75 6c 65 3b 0d 0a  Module module;..
28250 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64              #end
28260 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
28270 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
28280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
282a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
282b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
282c0 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e           #region
282d0 20 50 75 62 6c 69 63 20 43 6f 6e 73 74 72 75 63   Public Construc
282e0 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 20 20  tors..          
282f0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
28300 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
28310 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69   Constructs an i
28320 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20  nstance of this 
28330 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20  class...        
28340 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
28350 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
28360 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
28370 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20 20 20 20  "module">..     
28380 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
28390 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
283a0 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63  Module" /> objec
283b0 74 20 69 6e 73 74 61 6e 63 65 20 75 73 65 64 20  t instance used 
283c0 74 6f 20 70 72 6f 76 69 64 65 0d 0a 20 20 20 20  to provide..    
283d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 6e 20 69          /// an i
283e0 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66  mplementation of
283f0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
28400 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
28410 75 6c 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20  ule" />..       
28420 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65 72 66 61       /// interfa
28430 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ce...           
28440 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
28450 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
28460 63 20 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  c SQLiteNativeMo
28470 64 75 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20  dule(..         
28480 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 6f 64         SQLiteMod
28490 75 6c 65 20 6d 6f 64 75 6c 65 0d 0a 20 20 20 20  ule module..    
284a0 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
284b0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
284c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
284d0 69 73 2e 6d 6f 64 75 6c 65 20 3d 20 6d 6f 64 75  is.module = modu
284e0 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le;..           
284f0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
28500 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
28510 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
28520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
28560 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65  .            #re
28570 67 69 6f 6e 20 50 72 69 76 61 74 65 20 53 74 61  gion Private Sta
28580 74 69 63 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20  tic Methods..   
28590 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75           /// <su
285a0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
285b0 20 20 20 20 2f 2f 2f 20 53 65 74 73 20 74 68 65      /// Sets the
285c0 20 74 61 62 6c 65 20 65 72 72 6f 72 20 6d 65 73   table error mes
285d0 73 61 67 65 20 74 6f 20 6f 6e 65 20 74 68 61 74  sage to one that
285e0 20 69 6e 64 69 63 61 74 65 73 20 74 68 65 20 6e   indicates the n
285f0 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 20  ative..         
28600 20 20 20 2f 2f 2f 20 6d 6f 64 75 6c 65 20 69 6d     /// module im
28610 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 69 73 20  plementation is 
28620 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a  not available...
28630 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
28640 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
28650 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
28660 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e  am name="pVtab">
28670 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
28680 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69  / The native poi
28690 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69  nter to the sqli
286a0 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64  te3_vtab derived
286b0 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
286c0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
286d0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
286e0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
286f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
28700 2f 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20 3c  / The value of <
28710 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
28720 45 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 22  ErrorCode.Error"
28730 2f 3e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  />...           
28740 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
28750 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
28760 76 61 74 65 20 73 74 61 74 69 63 20 53 51 4c 69  vate static SQLi
28770 74 65 45 72 72 6f 72 43 6f 64 65 20 4d 6f 64 75  teErrorCode Modu
28780 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61  leNotAvailableTa
28790 62 6c 65 45 72 72 6f 72 28 0d 0a 20 20 20 20 20  bleError(..     
287a0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
287b0 72 20 70 56 74 61 62 0d 0a 20 20 20 20 20 20 20  r pVtab..       
287c0 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
287d0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
287e0 20 20 20 20 20 20 20 20 20 20 20 53 65 74 54 61             SetTa
287f0 62 6c 65 45 72 72 6f 72 28 6e 75 6c 6c 2c 20 70  bleError(null, p
28800 56 74 61 62 2c 20 44 65 66 61 75 6c 74 4c 6f 67  Vtab, DefaultLog
28810 45 72 72 6f 72 73 2c 0d 0a 20 20 20 20 20 20 20  Errors,..       
28820 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f 64               Mod
28830 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 45  uleNotAvailableE
28840 72 72 6f 72 4d 65 73 73 61 67 65 29 3b 0d 0a 0d  rrorMessage);...
28850 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28860 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65 45 72   return SQLiteEr
28870 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a  rorCode.Error;..
28880 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
28890 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
288a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
288b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
288c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
288d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
288e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
288f0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
28900 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
28910 65 74 73 20 74 68 65 20 74 61 62 6c 65 20 65 72  ets the table er
28920 72 6f 72 20 6d 65 73 73 61 67 65 20 74 6f 20 6f  ror message to o
28930 6e 65 20 74 68 61 74 20 69 6e 64 69 63 61 74 65  ne that indicate
28940 73 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20  s the native..  
28950 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 6f            /// mo
28960 64 75 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74  dule implementat
28970 69 6f 6e 20 69 73 20 6e 6f 74 20 61 76 61 69 6c  ion is not avail
28980 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  able...         
28990 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
289a0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
289b0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
289c0 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20  pCursor">..     
289d0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
289e0 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
289f0 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61   the sqlite3_vta
28a00 62 5f 63 75 72 73 6f 72 20 64 65 72 69 76 65 64  b_cursor derived
28a10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
28a20 2f 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20  / structure...  
28a30 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
28a40 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
28a50 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
28a60 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
28a70 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20  // The value of 
28a80 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
28a90 65 45 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72  eErrorCode.Error
28aa0 22 2f 3e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  "/>...          
28ab0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
28ac0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
28ad0 69 76 61 74 65 20 73 74 61 74 69 63 20 53 51 4c  ivate static SQL
28ae0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 4d 6f 64  iteErrorCode Mod
28af0 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43  uleNotAvailableC
28b00 75 72 73 6f 72 45 72 72 6f 72 28 0d 0a 20 20 20  ursorError(..   
28b10 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
28b20 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20  Ptr pCursor..   
28b30 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
28b40 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
28b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
28b60 65 74 43 75 72 73 6f 72 45 72 72 6f 72 28 6e 75  etCursorError(nu
28b70 6c 6c 2c 20 70 43 75 72 73 6f 72 2c 20 44 65 66  ll, pCursor, Def
28b80 61 75 6c 74 4c 6f 67 45 72 72 6f 72 73 2c 0d 0a  aultLogErrors,..
28b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28ba0 20 20 20 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61      ModuleNotAva
28bb0 69 6c 61 62 6c 65 45 72 72 6f 72 4d 65 73 73 61  ilableErrorMessa
28bc0 67 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ge);....        
28bd0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53          return S
28be0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 45  QLiteErrorCode.E
28bf0 72 72 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 20  rror;..         
28c00 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
28c10 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
28c20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
28c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
28c70 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ...            #
28c80 72 65 67 69 6f 6e 20 49 53 51 4c 69 74 65 4e 61  region ISQLiteNa
28c90 74 69 76 65 4d 6f 64 75 6c 65 20 4d 65 6d 62 65  tiveModule Membe
28ca0 72 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  rs..            
28cb0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
28cc0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
28cd0 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
28ce0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
28cf0 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 22 20 2f  odule.xCreate" /
28d00 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
28d10 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
28d20 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
28d30 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
28d40 6d 65 3d 22 70 44 62 22 3e 0d 0a 20 20 20 20 20  me="pDb">..     
28d50 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
28d60 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
28d70 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
28d80 65 2e 78 43 72 65 61 74 65 22 20 2f 3e 20 6d 65  e.xCreate" /> me
28d90 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
28da0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
28db0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
28dc0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 41   <param name="pA
28dd0 75 78 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ux">..          
28de0 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
28df0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
28e00 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72  NativeModule.xCr
28e10 65 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  eate" /> method.
28e20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
28e30 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
28e40 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
28e50 61 6d 20 6e 61 6d 65 3d 22 61 72 67 63 22 3e 0d  am name="argc">.
28e60 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
28e70 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
28e80 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
28e90 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 22  eModule.xCreate"
28ea0 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
28eb0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
28ec0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
28ed0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
28ee0 6d 65 3d 22 61 72 67 76 22 3e 0d 0a 20 20 20 20  me="argv">..    
28ef0 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
28f00 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
28f10 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
28f20 6c 65 2e 78 43 72 65 61 74 65 22 20 2f 3e 20 6d  le.xCreate" /> m
28f30 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
28f40 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
28f50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
28f60 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
28f70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
28f80 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
28f90 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
28fa0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
28fb0 43 72 65 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f  Create" /> metho
28fc0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
28fd0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
28fe0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
28ff0 61 72 61 6d 20 6e 61 6d 65 3d 22 70 45 72 72 6f  aram name="pErro
29000 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r">..           
29010 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
29020 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
29030 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65  ativeModule.xCre
29040 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ate" /> method..
29050 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
29060 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
29070 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
29080 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
29090 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
290a0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
290b0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72  NativeModule.xCr
290c0 65 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  eate" /> method.
290d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
290e0 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
290f0 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
29100 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
29110 20 78 43 72 65 61 74 65 28 0d 0a 20 20 20 20 20   xCreate(..     
29120 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
29130 72 20 70 44 62 2c 0d 0a 20 20 20 20 20 20 20 20  r pDb,..        
29140 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
29150 41 75 78 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  Aux,..          
29160 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d        int argc,.
29170 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29180 20 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a 20   IntPtr argv,.. 
29190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
291a0 65 66 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c  ef IntPtr pVtab,
291b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
291c0 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 45 72    ref IntPtr pEr
291d0 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ror..           
291e0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
291f0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
29200 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44         // CheckD
29210 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20  isposed();....  
29220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
29230 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c   (module == null
29240 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
29250 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
29260 20 20 20 20 20 20 20 20 20 20 70 45 72 72 6f 72            pError
29270 20 3d 20 53 51 4c 69 74 65 53 74 72 69 6e 67 2e   = SQLiteString.
29280 55 74 66 38 49 6e 74 50 74 72 46 72 6f 6d 53 74  Utf8IntPtrFromSt
29290 72 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20 20  ring(..         
292a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d                 M
292b0 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c  oduleNotAvailabl
292c0 65 45 72 72 6f 72 4d 65 73 73 61 67 65 29 3b 0d  eErrorMessage);.
292d0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
292e0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 51         return SQ
292f0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 45 72  LiteErrorCode.Er
29300 72 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ror;..          
29310 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
29320 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
29330 6e 20 6d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65  n module.xCreate
29340 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
29350 20 20 20 20 20 20 20 70 44 62 2c 20 70 41 75 78         pDb, pAux
29360 2c 20 61 72 67 63 2c 20 61 72 67 76 2c 20 72 65  , argc, argv, re
29370 66 20 70 56 74 61 62 2c 20 72 65 66 20 70 45 72  f pVtab, ref pEr
29380 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ror);..         
29390 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
293a0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
293b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
293c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
293d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
293e0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
293f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
29400 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
29410 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
29420 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
29430 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  NativeModule.xCo
29440 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64  nnect" /> method
29450 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
29460 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
29470 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
29480 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 44 62 22  param name="pDb"
29490 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
294a0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
294b0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
294c0 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65  iveModule.xConne
294d0 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  ct" /> method...
294e0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
294f0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
29500 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
29510 20 6e 61 6d 65 3d 22 70 41 75 78 22 3e 0d 0a 20   name="pAux">.. 
29520 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
29530 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
29540 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
29550 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 22 20  odule.xConnect" 
29560 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
29570 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
29580 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
29590 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
295a0 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20 20 20 20  e="argc">..     
295b0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
295c0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
295d0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
295e0 65 2e 78 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d  e.xConnect" /> m
295f0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
29600 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
29610 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
29620 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61  / <param name="a
29630 72 67 76 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  rgv">..         
29640 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
29650 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
29660 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
29670 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f  onnect" /> metho
29680 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
29690 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
296a0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
296b0 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62  aram name="pVtab
296c0 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
296d0 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
296e0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
296f0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e  tiveModule.xConn
29700 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ect" /> method..
29710 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
29720 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
29730 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
29740 6d 20 6e 61 6d 65 3d 22 70 45 72 72 6f 72 22 3e  m name="pError">
29750 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
29760 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
29770 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
29780 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63  veModule.xConnec
29790 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  t" /> method... 
297a0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
297b0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
297c0 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
297d0 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
297e0 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
297f0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
29800 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e  tiveModule.xConn
29810 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ect" /> method..
29820 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
29830 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
29840 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
29850 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
29860 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20  xConnect(..     
29870 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
29880 72 20 70 44 62 2c 0d 0a 20 20 20 20 20 20 20 20  r pDb,..        
29890 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
298a0 41 75 78 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  Aux,..          
298b0 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d        int argc,.
298c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
298d0 20 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a 20   IntPtr argv,.. 
298e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
298f0 65 66 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c  ef IntPtr pVtab,
29900 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29910 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 45 72    ref IntPtr pEr
29920 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ror..           
29930 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
29940 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
29950 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44         // CheckD
29960 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20  isposed();....  
29970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
29980 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c   (module == null
29990 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
299a0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
299b0 20 20 20 20 20 20 20 20 20 20 70 45 72 72 6f 72            pError
299c0 20 3d 20 53 51 4c 69 74 65 53 74 72 69 6e 67 2e   = SQLiteString.
299d0 55 74 66 38 49 6e 74 50 74 72 46 72 6f 6d 53 74  Utf8IntPtrFromSt
299e0 72 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20 20  ring(..         
299f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d                 M
29a00 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c  oduleNotAvailabl
29a10 65 45 72 72 6f 72 4d 65 73 73 61 67 65 29 3b 0d  eErrorMessage);.
29a20 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
29a30 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 51         return SQ
29a40 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 45 72  LiteErrorCode.Er
29a50 72 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ror;..          
29a60 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
29a70 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
29a80 6e 20 6d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63  n module.xConnec
29a90 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
29aa0 20 20 20 20 20 20 20 20 70 44 62 2c 20 70 41 75          pDb, pAu
29ab0 78 2c 20 61 72 67 63 2c 20 61 72 67 76 2c 20 72  x, argc, argv, r
29ac0 65 66 20 70 56 74 61 62 2c 20 72 65 66 20 70 45  ef pVtab, ref pE
29ad0 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20  rror);..        
29ae0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
29af0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
29b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29b30 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
29b40 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
29b50 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
29b60 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
29b70 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
29b80 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42  eNativeModule.xB
29b90 65 73 74 49 6e 64 65 78 22 20 2f 3e 20 6d 65 74  estIndex" /> met
29ba0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
29bb0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
29bc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
29bd0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
29be0 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
29bf0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
29c00 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
29c10 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
29c20 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 20 6d 65  BestIndex" /> me
29c30 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
29c40 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
29c50 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
29c60 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 49   <param name="pI
29c70 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20 20 20 20  ndex">..        
29c80 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
29c90 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
29ca0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
29cb0 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 20 6d 65  BestIndex" /> me
29cc0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
29cd0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
29ce0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
29cf0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
29d00 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
29d10 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
29d20 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
29d30 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 22 20 2f  le.xBestIndex" /
29d40 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
29d50 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
29d60 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
29d70 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
29d80 45 72 72 6f 72 43 6f 64 65 20 78 42 65 73 74 49  ErrorCode xBestI
29d90 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20 20 20  ndex(..         
29da0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
29db0 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  tab,..          
29dc0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 49 6e        IntPtr pIn
29dd0 64 65 78 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dex..           
29de0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
29df0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
29e00 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44         // CheckD
29e10 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20  isposed();....  
29e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
29e30 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c   (module == null
29e40 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
29e50 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f         return Mo
29e60 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65  duleNotAvailable
29e70 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62  TableError(pVtab
29e80 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
29e90 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64        return mod
29ea0 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 28 70  ule.xBestIndex(p
29eb0 56 74 61 62 2c 20 70 49 6e 64 65 78 29 3b 0d 0a  Vtab, pIndex);..
29ec0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
29ed0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
29ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29f20 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
29f30 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
29f40 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
29f50 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
29f60 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
29f70 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63  odule.xDisconnec
29f80 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  t" /> method... 
29f90 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
29fa0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
29fb0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
29fc0 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d  m name="pVtab">.
29fd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
29fe0 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
29ff0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
2a000 65 4d 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e  eModule.xDisconn
2a010 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ect" /> method..
2a020 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2a030 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
2a040 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
2a050 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
2a060 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
2a070 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2a080 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 69  NativeModule.xDi
2a090 73 63 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74  sconnect" /> met
2a0a0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
2a0b0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
2a0c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
2a0d0 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72  blic SQLiteError
2a0e0 43 6f 64 65 20 78 44 69 73 63 6f 6e 6e 65 63 74  Code xDisconnect
2a0f0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2a100 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d     IntPtr pVtab.
2a110 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a120 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
2a130 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2a140 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f     // CheckDispo
2a150 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  sed();....      
2a160 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f            if (mo
2a170 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  dule == null).. 
2a180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a190 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65     return Module
2a1a0 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c  NotAvailableTabl
2a1b0 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a  eError(pVtab);..
2a1c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a1d0 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e    return module.
2a1e0 78 44 69 73 63 6f 6e 6e 65 63 74 28 70 56 74 61  xDisconnect(pVta
2a1f0 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  b);..           
2a200 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
2a210 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2a220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a250 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2a260 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
2a270 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
2a280 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
2a290 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
2a2a0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 65 73 74  tiveModule.xDest
2a2b0 72 6f 79 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  roy" /> method..
2a2c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2a2d0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
2a2e0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
2a2f0 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22  ram name="pVtab"
2a300 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2a310 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
2a320 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
2a330 69 76 65 4d 6f 64 75 6c 65 2e 78 44 65 73 74 72  iveModule.xDestr
2a340 6f 79 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  oy" /> method...
2a350 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2a360 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
2a370 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
2a380 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
2a390 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
2a3a0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
2a3b0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 65 73  ativeModule.xDes
2a3c0 74 72 6f 79 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  troy" /> method.
2a3d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2a3e0 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
2a3f0 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
2a400 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
2a410 20 78 44 65 73 74 72 6f 79 28 0d 0a 20 20 20 20   xDestroy(..    
2a420 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
2a430 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 20 20  tr pVtab..      
2a440 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
2a450 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2a460 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43              // C
2a470 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d  heckDisposed();.
2a480 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2a490 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d     if (module ==
2a4a0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
2a4b0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2a4c0 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69  rn ModuleNotAvai
2a4d0 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72 28  lableTableError(
2a4e0 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20  pVtab);....     
2a4f0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2a500 6e 20 6d 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f  n module.xDestro
2a510 79 28 70 56 74 61 62 29 3b 0d 0a 20 20 20 20 20  y(pVtab);..     
2a520 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2a530 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2a540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2a580 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2a590 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2a5a0 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
2a5b0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
2a5c0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2a5d0 2e 78 4f 70 65 6e 22 20 2f 3e 20 6d 65 74 68 6f  .xOpen" /> metho
2a5e0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
2a5f0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
2a600 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2a610 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74  <param name="pVt
2a620 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ab">..          
2a630 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
2a640 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2a650 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4f 70  NativeModule.xOp
2a660 65 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  en" /> method...
2a670 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2a680 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
2a690 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
2a6a0 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e   name="pCursor">
2a6b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2a6c0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
2a6d0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
2a6e0 76 65 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e 22 20  veModule.xOpen" 
2a6f0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2a700 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
2a710 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
2a720 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
2a730 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2a740 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
2a750 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
2a760 65 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e 22 20 2f  eModule.xOpen" /
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 72 65 74         /// </ret
2a790 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
2a7a0 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
2a7b0 45 72 72 6f 72 43 6f 64 65 20 78 4f 70 65 6e 28  ErrorCode xOpen(
2a7c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a7d0 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d    IntPtr pVtab,.
2a7e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a7f0 20 72 65 66 20 49 6e 74 50 74 72 20 70 43 75 72   ref IntPtr pCur
2a800 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20  sor..           
2a810 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
2a820 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2a830 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44         // CheckD
2a840 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20  isposed();....  
2a850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
2a860 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c   (module == null
2a870 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2a880 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f         return Mo
2a890 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65  duleNotAvailable
2a8a0 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62  TableError(pVtab
2a8b0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2a8c0 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64        return mod
2a8d0 75 6c 65 2e 78 4f 70 65 6e 28 70 56 74 61 62 2c  ule.xOpen(pVtab,
2a8e0 20 72 65 66 20 70 43 75 72 73 6f 72 29 3b 0d 0a   ref pCursor);..
2a8f0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
2a900 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2a910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a950 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2a960 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2a970 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
2a980 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
2a990 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
2a9a0 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 22 20 2f 3e  odule.xClose" />
2a9b0 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
2a9c0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
2a9d0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
2a9e0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2a9f0 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20  e="pCursor">..  
2aa00 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2aa10 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
2aa20 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2aa30 64 75 6c 65 2e 78 43 6c 6f 73 65 22 20 2f 3e 20  dule.xClose" /> 
2aa40 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2aa50 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2aa60 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2aa70 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
2aa80 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2aa90 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
2aaa0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2aab0 64 75 6c 65 2e 78 43 6c 6f 73 65 22 20 2f 3e 20  dule.xClose" /> 
2aac0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2aad0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
2aae0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
2aaf0 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72   public SQLiteEr
2ab00 72 6f 72 43 6f 64 65 20 78 43 6c 6f 73 65 28 0d  rorCode xClose(.
2ab10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ab20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d   IntPtr pCursor.
2ab30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ab40 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
2ab50 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2ab60 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f     // CheckDispo
2ab70 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  sed();....      
2ab80 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f            if (mo
2ab90 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  dule == null).. 
2aba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2abb0 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65     return Module
2abc0 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43 75 72 73  NotAvailableCurs
2abd0 6f 72 45 72 72 6f 72 28 70 43 75 72 73 6f 72 29  orError(pCursor)
2abe0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2abf0 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75       return modu
2ac00 6c 65 2e 78 43 6c 6f 73 65 28 70 43 75 72 73 6f  le.xClose(pCurso
2ac10 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r);..           
2ac20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
2ac30 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2ac40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ac50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ac60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ac70 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2ac80 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
2ac90 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
2aca0 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
2acb0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
2acc0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74  tiveModule.xFilt
2acd0 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  er" /> method...
2ace0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2acf0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
2ad00 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
2ad10 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72  am name="pCursor
2ad20 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
2ad30 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
2ad40 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
2ad50 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74  tiveModule.xFilt
2ad60 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  er" /> method...
2ad70 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2ad80 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
2ad90 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
2ada0 20 6e 61 6d 65 3d 22 69 64 78 4e 75 6d 22 3e 0d   name="idxNum">.
2adb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2adc0 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
2add0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
2ade0 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 22  eModule.xFilter"
2adf0 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
2ae00 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
2ae10 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
2ae20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2ae30 6d 65 3d 22 69 64 78 53 74 72 22 3e 0d 0a 20 20  me="idxStr">..  
2ae40 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2ae50 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
2ae60 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2ae70 64 75 6c 65 2e 78 46 69 6c 74 65 72 22 20 2f 3e  dule.xFilter" />
2ae80 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
2ae90 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
2aea0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
2aeb0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
2aec0 22 61 72 67 63 22 3e 0d 0a 20 20 20 20 20 20 20  "argc">..       
2aed0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2aee0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2aef0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2af00 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68  xFilter" /> meth
2af10 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
2af20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
2af30 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2af40 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 76  param name="argv
2af50 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
2af60 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
2af70 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
2af80 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74  tiveModule.xFilt
2af90 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  er" /> method...
2afa0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2afb0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
2afc0 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
2afd0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
2afe0 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
2aff0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
2b000 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c  ativeModule.xFil
2b010 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ter" /> method..
2b020 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2b030 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
2b040 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
2b050 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
2b060 78 46 69 6c 74 65 72 28 0d 0a 20 20 20 20 20 20  xFilter(..      
2b070 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
2b080 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20   pCursor,..     
2b090 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69             int i
2b0a0 64 78 4e 75 6d 2c 0d 0a 20 20 20 20 20 20 20 20  dxNum,..        
2b0b0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 69          IntPtr i
2b0c0 64 78 53 74 72 2c 0d 0a 20 20 20 20 20 20 20 20  dxStr,..        
2b0d0 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63          int argc
2b0e0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2b0f0 20 20 20 49 6e 74 50 74 72 20 61 72 67 76 0d 0a     IntPtr argv..
2b100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b110 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
2b120 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b130 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73    // CheckDispos
2b140 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ed();....       
2b150 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64           if (mod
2b160 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ule == null)..  
2b170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b180 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e    return ModuleN
2b190 6f 74 41 76 61 69 6c 61 62 6c 65 43 75 72 73 6f  otAvailableCurso
2b1a0 72 45 72 72 6f 72 28 70 43 75 72 73 6f 72 29 3b  rError(pCursor);
2b1b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2b1c0 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c      return modul
2b1d0 65 2e 78 46 69 6c 74 65 72 28 70 43 75 72 73 6f  e.xFilter(pCurso
2b1e0 72 2c 20 69 64 78 4e 75 6d 2c 20 69 64 78 53 74  r, idxNum, idxSt
2b1f0 72 2c 20 61 72 67 63 2c 20 61 72 67 76 29 3b 0d  r, argc, argv);.
2b200 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2b210 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2b220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b260 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
2b270 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
2b280 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2b290 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
2b2a0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
2b2b0 4d 6f 64 75 6c 65 2e 78 4e 65 78 74 22 20 2f 3e  Module.xNext" />
2b2c0 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
2b2d0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
2b2e0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
2b2f0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2b300 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20  e="pCursor">..  
2b310 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2b320 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
2b330 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2b340 64 75 6c 65 2e 78 4e 65 78 74 22 20 2f 3e 20 6d  dule.xNext" /> m
2b350 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2b360 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2b370 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2b380 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
2b390 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
2b3a0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
2b3b0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2b3c0 75 6c 65 2e 78 4e 65 78 74 22 20 2f 3e 20 6d 65  ule.xNext" /> me
2b3d0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2b3e0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
2b3f0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
2b400 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f  ublic SQLiteErro
2b410 72 43 6f 64 65 20 78 4e 65 78 74 28 0d 0a 20 20  rCode xNext(..  
2b420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
2b430 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20  tPtr pCursor..  
2b440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
2b450 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
2b460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b470 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64  // CheckDisposed
2b480 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
2b490 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c         if (modul
2b4a0 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
2b4b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b4c0 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74  return ModuleNot
2b4d0 41 76 61 69 6c 61 62 6c 65 43 75 72 73 6f 72 45  AvailableCursorE
2b4e0 72 72 6f 72 28 70 43 75 72 73 6f 72 29 3b 0d 0a  rror(pCursor);..
2b4f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b500 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e    return module.
2b510 78 4e 65 78 74 28 70 43 75 72 73 6f 72 29 3b 0d  xNext(pCursor);.
2b520 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2b530 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2b540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b580 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
2b590 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
2b5a0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2b5b0 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
2b5c0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
2b5d0 4d 6f 64 75 6c 65 2e 78 45 6f 66 22 20 2f 3e 20  Module.xEof" /> 
2b5e0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2b5f0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
2b600 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
2b610 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2b620 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20  ="pCursor">..   
2b630 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
2b640 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
2b650 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2b660 75 6c 65 2e 78 45 6f 66 22 20 2f 3e 20 6d 65 74  ule.xEof" /> met
2b670 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
2b680 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2b690 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2b6a0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
2b6b0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
2b6c0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
2b6d0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2b6e0 65 2e 78 45 6f 66 22 20 2f 3e 20 6d 65 74 68 6f  e.xEof" /> metho
2b6f0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
2b700 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
2b710 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
2b720 69 63 20 69 6e 74 20 78 45 6f 66 28 0d 0a 20 20  ic int xEof(..  
2b730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
2b740 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20  tPtr pCursor..  
2b750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
2b760 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
2b770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b780 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64  // CheckDisposed
2b790 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
2b7a0 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c         if (modul
2b7b0 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
2b7c0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2b7d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b7e0 20 20 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69     ModuleNotAvai
2b7f0 6c 61 62 6c 65 43 75 72 73 6f 72 45 72 72 6f 72  lableCursorError
2b800 28 70 43 75 72 73 6f 72 29 3b 0d 0a 20 20 20 20  (pCursor);..    
2b810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b820 72 65 74 75 72 6e 20 31 3b 0d 0a 20 20 20 20 20  return 1;..     
2b830 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
2b840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b850 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 45  return module.xE
2b860 6f 66 28 70 43 75 72 73 6f 72 29 3b 0d 0a 20 20  of(pCursor);..  
2b870 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
2b880 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
2b890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b8a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b8b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b8c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2b8d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2b8e0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
2b8f0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
2b900 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
2b910 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2b920 75 6c 65 2e 78 43 6f 6c 75 6d 6e 22 20 2f 3e 20  ule.xColumn" /> 
2b930 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2b940 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
2b950 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
2b960 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2b970 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20  ="pCursor">..   
2b980 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
2b990 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
2b9a0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2b9b0 75 6c 65 2e 78 43 6f 6c 75 6d 6e 22 20 2f 3e 20  ule.xColumn" /> 
2b9c0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2b9d0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2b9e0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2b9f0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
2ba00 70 43 6f 6e 74 65 78 74 22 3e 0d 0a 20 20 20 20  pContext">..    
2ba10 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
2ba20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
2ba30 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2ba40 6c 65 2e 78 43 6f 6c 75 6d 6e 22 20 2f 3e 20 6d  le.xColumn" /> m
2ba50 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2ba60 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2ba70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2ba80 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69  / <param name="i
2ba90 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20 20 20 20  ndex">..        
2baa0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
2bab0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
2bac0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
2bad0 43 6f 6c 75 6d 6e 22 20 2f 3e 20 6d 65 74 68 6f  Column" /> metho
2bae0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
2baf0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
2bb00 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72            /// <r
2bb10 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
2bb20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2bb30 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2bb40 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2bb50 78 43 6f 6c 75 6d 6e 22 20 2f 3e 20 6d 65 74 68  xColumn" /> meth
2bb60 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
2bb70 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
2bb80 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
2bb90 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43  lic SQLiteErrorC
2bba0 6f 64 65 20 78 43 6f 6c 75 6d 6e 28 0d 0a 20 20  ode xColumn(..  
2bbb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
2bbc0 74 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20  tPtr pCursor,.. 
2bbd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
2bbe0 6e 74 50 74 72 20 70 43 6f 6e 74 65 78 74 2c 0d  ntPtr pContext,.
2bbf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2bc00 20 69 6e 74 20 69 6e 64 65 78 0d 0a 20 20 20 20   int index..    
2bc10 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
2bc20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2bc30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2bc40 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
2bc50 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2bc60 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20       if (module 
2bc70 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
2bc80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2bc90 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76  turn ModuleNotAv
2bca0 61 69 6c 61 62 6c 65 43 75 72 73 6f 72 45 72 72  ailableCursorErr
2bcb0 6f 72 28 70 43 75 72 73 6f 72 29 3b 0d 0a 0d 0a  or(pCursor);....
2bcc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bcd0 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 43  return module.xC
2bce0 6f 6c 75 6d 6e 28 70 43 75 72 73 6f 72 2c 20 70  olumn(pCursor, p
2bcf0 43 6f 6e 74 65 78 74 2c 20 69 6e 64 65 78 29 3b  Context, index);
2bd00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2bd10 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2bd20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bd30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bd40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bd50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bd60 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
2bd70 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
2bd80 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2bd90 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
2bda0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
2bdb0 65 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 22 20  eModule.xRowId" 
2bdc0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2bdd0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
2bde0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2bdf0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
2be00 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a  ame="pCursor">..
2be10 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2be20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
2be30 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
2be40 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 22 20 2f  Module.xRowId" /
2be50 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
2be60 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
2be70 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
2be80 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2be90 3d 22 72 6f 77 49 64 22 3e 0d 0a 20 20 20 20 20  ="rowId">..     
2bea0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
2beb0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
2bec0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2bed0 65 2e 78 52 6f 77 49 64 22 20 2f 3e 20 6d 65 74  e.xRowId" /> met
2bee0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
2bef0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2bf00 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2bf10 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
2bf20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
2bf30 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
2bf40 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2bf50 65 2e 78 52 6f 77 49 64 22 20 2f 3e 20 6d 65 74  e.xRowId" /> met
2bf60 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
2bf70 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
2bf80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
2bf90 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72  blic SQLiteError
2bfa0 43 6f 64 65 20 78 52 6f 77 49 64 28 0d 0a 20 20  Code xRowId(..  
2bfb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
2bfc0 74 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20  tPtr pCursor,.. 
2bfd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2bfe0 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a 20  ef long rowId.. 
2bff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
2c000 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2c010 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c020 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65   // CheckDispose
2c030 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  d();....        
2c040 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75          if (modu
2c050 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  le == null)..   
2c060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c070 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f   return ModuleNo
2c080 74 41 76 61 69 6c 61 62 6c 65 43 75 72 73 6f 72  tAvailableCursor
2c090 45 72 72 6f 72 28 70 43 75 72 73 6f 72 29 3b 0d  Error(pCursor);.
2c0a0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2c0b0 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65     return module
2c0c0 2e 78 52 6f 77 49 64 28 70 43 75 72 73 6f 72 2c  .xRowId(pCursor,
2c0d0 20 72 65 66 20 72 6f 77 49 64 29 3b 0d 0a 20 20   ref rowId);..  
2c0e0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
2c0f0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
2c100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2c140 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2c150 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
2c160 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
2c170 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
2c180 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2c190 75 6c 65 2e 78 55 70 64 61 74 65 22 20 2f 3e 20  ule.xUpdate" /> 
2c1a0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2c1b0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
2c1c0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
2c1d0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2c1e0 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20  ="pVtab">..     
2c1f0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
2c200 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
2c210 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2c220 65 2e 78 55 70 64 61 74 65 22 20 2f 3e 20 6d 65  e.xUpdate" /> me
2c230 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2c240 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
2c250 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2c260 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72   <param name="ar
2c270 67 63 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  gc">..          
2c280 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
2c290 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2c2a0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70  NativeModule.xUp
2c2b0 64 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  date" /> method.
2c2c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2c2d0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
2c2e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
2c2f0 61 6d 20 6e 61 6d 65 3d 22 61 72 67 76 22 3e 0d  am name="argv">.
2c300 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2c310 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
2c320 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
2c330 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 22  eModule.xUpdate"
2c340 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
2c350 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
2c360 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
2c370 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2c380 6d 65 3d 22 72 6f 77 49 64 22 3e 0d 0a 20 20 20  me="rowId">..   
2c390 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
2c3a0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
2c3b0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2c3c0 75 6c 65 2e 78 55 70 64 61 74 65 22 20 2f 3e 20  ule.xUpdate" /> 
2c3d0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2c3e0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2c3f0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2c400 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
2c410 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2c420 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
2c430 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2c440 64 75 6c 65 2e 78 55 70 64 61 74 65 22 20 2f 3e  dule.xUpdate" />
2c450 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
2c460 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
2c470 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
2c480 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45    public SQLiteE
2c490 72 72 6f 72 43 6f 64 65 20 78 55 70 64 61 74 65  rrorCode xUpdate
2c4a0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2c4b0 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c     IntPtr pVtab,
2c4c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2c4d0 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20    int argc,..   
2c4e0 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
2c4f0 50 74 72 20 61 72 67 76 2c 0d 0a 20 20 20 20 20  Ptr argv,..     
2c500 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 6c             ref l
2c510 6f 6e 67 20 72 6f 77 49 64 0d 0a 20 20 20 20 20  ong rowId..     
2c520 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
2c530 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2c540 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2c550 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
2c560 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2c570 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d      if (module =
2c580 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
2c590 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2c5a0 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61  urn ModuleNotAva
2c5b0 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72  ilableTableError
2c5c0 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20  (pVtab);....    
2c5d0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2c5e0 72 6e 20 6d 6f 64 75 6c 65 2e 78 55 70 64 61 74  rn module.xUpdat
2c5f0 65 28 70 56 74 61 62 2c 20 61 72 67 63 2c 20 61  e(pVtab, argc, a
2c600 72 67 76 2c 20 72 65 66 20 72 6f 77 49 64 29 3b  rgv, ref rowId);
2c610 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2c620 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2c630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c670 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
2c680 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
2c690 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2c6a0 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
2c6b0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
2c6c0 65 4d 6f 64 75 6c 65 2e 78 42 65 67 69 6e 22 20  eModule.xBegin" 
2c6d0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2c6e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
2c6f0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2c700 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
2c710 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20  ame="pVtab">..  
2c720 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2c730 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
2c740 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2c750 64 75 6c 65 2e 78 42 65 67 69 6e 22 20 2f 3e 20  dule.xBegin" /> 
2c760 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2c770 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2c780 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2c790 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
2c7a0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2c7b0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
2c7c0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2c7d0 64 75 6c 65 2e 78 42 65 67 69 6e 22 20 2f 3e 20  dule.xBegin" /> 
2c7e0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2c7f0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
2c800 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
2c810 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72   public SQLiteEr
2c820 72 6f 72 43 6f 64 65 20 78 42 65 67 69 6e 28 0d  rorCode xBegin(.
2c830 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c840 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20   IntPtr pVtab.. 
2c850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
2c860 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2c870 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c880 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65   // CheckDispose
2c890 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  d();....        
2c8a0 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75          if (modu
2c8b0 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  le == null)..   
2c8c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c8d0 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f   return ModuleNo
2c8e0 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45  tAvailableTableE
2c8f0 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a  rror(pVtab);....
2c900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c910 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 42  return module.xB
2c920 65 67 69 6e 28 70 56 74 61 62 29 3b 0d 0a 20 20  egin(pVtab);..  
2c930 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
2c940 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
2c950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2c990 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2c9a0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
2c9b0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
2c9c0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
2c9d0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2c9e0 75 6c 65 2e 78 53 79 6e 63 22 20 2f 3e 20 6d 65  ule.xSync" /> me
2c9f0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2ca00 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
2ca10 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2ca20 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
2ca30 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20  pVtab">..       
2ca40 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2ca50 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2ca60 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2ca70 78 53 79 6e 63 22 20 2f 3e 20 6d 65 74 68 6f 64  xSync" /> method
2ca80 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2ca90 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
2caa0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65           /// <re
2cab0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
2cac0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
2cad0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
2cae0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
2caf0 53 79 6e 63 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  Sync" /> method.
2cb00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2cb10 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
2cb20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
2cb30 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
2cb40 20 78 53 79 6e 63 28 0d 0a 20 20 20 20 20 20 20   xSync(..       
2cb50 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
2cb60 70 56 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20  pVtab..         
2cb70 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
2cb80 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2cb90 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63           // Chec
2cba0 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a  kDisposed();....
2cbb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cbc0 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75  if (module == nu
2cbd0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
2cbe0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2cbf0 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62  ModuleNotAvailab
2cc00 6c 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74  leTableError(pVt
2cc10 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ab);....        
2cc20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d          return m
2cc30 6f 64 75 6c 65 2e 78 53 79 6e 63 28 70 56 74 61  odule.xSync(pVta
2cc40 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  b);..           
2cc50 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
2cc60 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2cc70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cc80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cc90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cca0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2ccb0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
2ccc0 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
2ccd0 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
2cce0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
2ccf0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6d 6d  tiveModule.xComm
2cd00 69 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  it" /> method...
2cd10 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2cd20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
2cd30 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
2cd40 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e  am name="pVtab">
2cd50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2cd60 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
2cd70 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
2cd80 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74  veModule.xCommit
2cd90 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
2cda0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2cdb0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
2cdc0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
2cdd0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2cde0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
2cdf0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
2ce00 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69  iveModule.xCommi
2ce10 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  t" /> method... 
2ce20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2ce30 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
2ce40 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51         public SQ
2ce50 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43  LiteErrorCode xC
2ce60 6f 6d 6d 69 74 28 0d 0a 20 20 20 20 20 20 20 20  ommit(..        
2ce70 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
2ce80 56 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20  Vtab..          
2ce90 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
2cea0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2ceb0 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b          // Check
2cec0 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20  Disposed();.... 
2ced0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
2cee0 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c  f (module == nul
2cef0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
2cf00 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d          return M
2cf10 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c  oduleNotAvailabl
2cf20 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61  eTableError(pVta
2cf30 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  b);....         
2cf40 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f         return mo
2cf50 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 28 70 56 74  dule.xCommit(pVt
2cf60 61 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ab);..          
2cf70 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
2cf80 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2cf90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cfa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cfb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cfc0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2cfd0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
2cfe0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
2cff0 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
2d000 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
2d010 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c  ativeModule.xRol
2d020 6c 62 61 63 6b 22 20 2f 3e 20 6d 65 74 68 6f 64  lback" /> method
2d030 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2d040 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2d050 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2d060 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61  param name="pVta
2d070 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  b">..           
2d080 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
2d090 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
2d0a0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c  ativeModule.xRol
2d0b0 6c 62 61 63 6b 22 20 2f 3e 20 6d 65 74 68 6f 64  lback" /> method
2d0c0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2d0d0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
2d0e0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65           /// <re
2d0f0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
2d100 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
2d110 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
2d120 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
2d130 52 6f 6c 6c 62 61 63 6b 22 20 2f 3e 20 6d 65 74  Rollback" /> met
2d140 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
2d150 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
2d160 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
2d170 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72  blic SQLiteError
2d180 43 6f 64 65 20 78 52 6f 6c 6c 62 61 63 6b 28 0d  Code xRollback(.
2d190 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d1a0 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20   IntPtr pVtab.. 
2d1b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
2d1c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2d1d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d1e0 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65   // CheckDispose
2d1f0 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  d();....        
2d200 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75          if (modu
2d210 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  le == null)..   
2d220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d230 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f   return ModuleNo
2d240 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45  tAvailableTableE
2d250 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a  rror(pVtab);....
2d260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d270 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 52  return module.xR
2d280 6f 6c 6c 62 61 63 6b 28 70 56 74 61 62 29 3b 0d  ollback(pVtab);.
2d290 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2d2a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2d2b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d2c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d2d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d2e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d2f0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
2d300 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
2d310 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2d320 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
2d330 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
2d340 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63  Module.xFindFunc
2d350 74 69 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  tion" /> method.
2d360 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2d370 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2d380 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
2d390 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62  aram name="pVtab
2d3a0 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
2d3b0 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
2d3c0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
2d3d0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64  tiveModule.xFind
2d3e0 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6d 65 74  Function" /> met
2d3f0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
2d400 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2d410 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2d420 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 41 72  <param name="nAr
2d430 67 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  g">..           
2d440 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
2d450 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
2d460 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e  ativeModule.xFin
2d470 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6d 65  dFunction" /> me
2d480 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2d490 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
2d4a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2d4b0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 7a 4e   <param name="zN
2d4c0 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  ame">..         
2d4d0 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2d4e0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2d4f0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46  eNativeModule.xF
2d500 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20  indFunction" /> 
2d510 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2d520 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2d530 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2d540 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
2d550 63 61 6c 6c 62 61 63 6b 22 3e 0d 0a 20 20 20 20  callback">..    
2d560 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
2d570 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
2d580 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2d590 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e  le.xFindFunction
2d5a0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
2d5b0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2d5c0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
2d5d0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
2d5e0 61 6d 65 3d 22 70 43 6c 69 65 6e 74 44 61 74 61  ame="pClientData
2d5f0 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
2d600 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
2d610 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
2d620 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64  tiveModule.xFind
2d630 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6d 65 74  Function" /> met
2d640 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
2d650 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2d660 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2d670 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
2d680 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
2d690 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
2d6a0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2d6b0 65 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 22  e.xFindFunction"
2d6c0 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
2d6d0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72           /// </r
2d6e0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
2d6f0 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
2d700 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28 0d 0a  xFindFunction(..
2d710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d720 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
2d730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
2d740 6e 74 20 6e 41 72 67 2c 0d 0a 20 20 20 20 20 20  nt nArg,..      
2d750 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
2d760 20 7a 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20   zName,..       
2d770 20 20 20 20 20 20 20 20 20 72 65 66 20 53 51 4c           ref SQL
2d780 69 74 65 43 61 6c 6c 62 61 63 6b 20 63 61 6c 6c  iteCallback call
2d790 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20  back,..         
2d7a0 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74         ref IntPt
2d7b0 72 20 70 43 6c 69 65 6e 74 44 61 74 61 0d 0a 20  r pClientData.. 
2d7c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
2d7d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2d7e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d7f0 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65   // CheckDispose
2d800 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  d();....        
2d810 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75          if (modu
2d820 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  le == null)..   
2d830 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
2d840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d850 20 20 20 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61      ModuleNotAva
2d860 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72  ilableTableError
2d870 28 70 56 74 61 62 29 3b 0d 0a 20 20 20 20 20 20  (pVtab);..      
2d880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2d890 74 75 72 6e 20 30 3b 0d 0a 20 20 20 20 20 20 20  turn 0;..       
2d8a0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
2d8b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2d8c0 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 46 69 6e  turn module.xFin
2d8d0 64 46 75 6e 63 74 69 6f 6e 28 0d 0a 20 20 20 20  dFunction(..    
2d8e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d8f0 70 56 74 61 62 2c 20 6e 41 72 67 2c 20 7a 4e 61  pVtab, nArg, zNa
2d900 6d 65 2c 20 72 65 66 20 63 61 6c 6c 62 61 63 6b  me, ref callback
2d910 2c 20 72 65 66 20 70 43 6c 69 65 6e 74 44 61 74  , ref pClientDat
2d920 61 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  a);..           
2d930 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
2d940 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2d950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d980 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2d990 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
2d9a0 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
2d9b0 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
2d9c0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
2d9d0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6e 61  tiveModule.xRena
2d9e0 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  me" /> method...
2d9f0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2da00 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
2da10 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
2da20 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e  am name="pVtab">
2da30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2da40 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
2da50 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
2da60 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65  veModule.xRename
2da70 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
2da80 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2da90 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
2daa0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
2dab0 61 6d 65 3d 22 7a 4e 65 77 22 3e 0d 0a 20 20 20  ame="zNew">..   
2dac0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
2dad0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
2dae0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2daf0 75 6c 65 2e 78 52 65 6e 61 6d 65 22 20 2f 3e 20  ule.xRename" /> 
2db00 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2db10 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2db20 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2db30 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
2db40 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2db50 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
2db60 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2db70 64 75 6c 65 2e 78 52 65 6e 61 6d 65 22 20 2f 3e  dule.xRename" />
2db80 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
2db90 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
2dba0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
2dbb0 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45    public SQLiteE
2dbc0 72 72 6f 72 43 6f 64 65 20 78 52 65 6e 61 6d 65  rrorCode xRename
2dbd0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2dbe0 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c     IntPtr pVtab,
2dbf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2dc00 20 20 49 6e 74 50 74 72 20 7a 4e 65 77 0d 0a 20    IntPtr zNew.. 
2dc10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
2dc20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2dc30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2dc40 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65   // CheckDispose
2dc50 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  d();....        
2dc60 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75          if (modu
2dc70 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  le == null)..   
2dc80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dc90 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f   return ModuleNo
2dca0 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45  tAvailableTableE
2dcb0 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a  rror(pVtab);....
2dcc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dcd0 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 52  return module.xR
2dce0 65 6e 61 6d 65 28 70 56 74 61 62 2c 20 7a 4e 65  ename(pVtab, zNe
2dcf0 77 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  w);..           
2dd00 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
2dd10 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2dd20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dd30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dd40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dd50 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2dd60 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
2dd70 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
2dd80 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
2dd90 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
2dda0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53 61 76 65  tiveModule.xSave
2ddb0 70 6f 69 6e 74 22 20 2f 3e 20 6d 65 74 68 6f 64  point" /> method
2ddc0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2ddd0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2dde0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2ddf0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61  param name="pVta
2de00 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  b">..           
2de10 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
2de20 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
2de30 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53 61 76  ativeModule.xSav
2de40 65 70 6f 69 6e 74 22 20 2f 3e 20 6d 65 74 68 6f  epoint" /> metho
2de50 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
2de60 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
2de70 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
2de80 61 72 61 6d 20 6e 61 6d 65 3d 22 69 53 61 76 65  aram name="iSave
2de90 70 6f 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20  point">..       
2dea0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2deb0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2dec0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2ded0 78 53 61 76 65 70 6f 69 6e 74 22 20 2f 3e 20 6d  xSavepoint" /> m
2dee0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2def0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2df00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2df10 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
2df20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
2df30 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
2df40 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2df50 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74 22 20  ule.xSavepoint" 
2df60 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2df70 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
2df80 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
2df90 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
2dfa0 65 45 72 72 6f 72 43 6f 64 65 20 78 53 61 76 65  eErrorCode xSave
2dfb0 70 6f 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20  point(..        
2dfc0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
2dfd0 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20  Vtab,..         
2dfe0 20 20 20 20 20 20 20 69 6e 74 20 69 53 61 76 65         int iSave
2dff0 70 6f 69 6e 74 0d 0a 20 20 20 20 20 20 20 20 20  point..         
2e000 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
2e010 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2e020 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63           // Chec
2e030 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a  kDisposed();....
2e040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e050 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75  if (module == nu
2e060 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
2e070 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2e080 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62  ModuleNotAvailab
2e090 6c 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74  leTableError(pVt
2e0a0 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ab);....        
2e0b0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d          return m
2e0c0 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74  odule.xSavepoint
2e0d0 28 70 56 74 61 62 2c 20 69 53 61 76 65 70 6f 69  (pVtab, iSavepoi
2e0e0 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  nt);..          
2e0f0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
2e100 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2e150 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
2e160 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
2e170 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
2e180 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
2e190 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6c  ativeModule.xRel
2e1a0 65 61 73 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  ease" /> method.
2e1b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2e1c0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2e1d0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
2e1e0 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62  aram name="pVtab
2e1f0 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
2e200 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
2e210 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
2e220 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6c 65  tiveModule.xRele
2e230 61 73 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ase" /> method..
2e240 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2e250 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
2e260 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
2e270 6d 20 6e 61 6d 65 3d 22 69 53 61 76 65 70 6f 69  m name="iSavepoi
2e280 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  nt">..          
2e290 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
2e2a0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2e2b0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65  NativeModule.xRe
2e2c0 6c 65 61 73 65 22 20 2f 3e 20 6d 65 74 68 6f 64  lease" /> method
2e2d0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2e2e0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
2e2f0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65           /// <re
2e300 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
2e310 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
2e320 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
2e330 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
2e340 52 65 6c 65 61 73 65 22 20 2f 3e 20 6d 65 74 68  Release" /> meth
2e350 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
2e360 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
2e370 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
2e380 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43  lic SQLiteErrorC
2e390 6f 64 65 20 78 52 65 6c 65 61 73 65 28 0d 0a 20  ode xRelease(.. 
2e3a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
2e3b0 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
2e3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
2e3d0 74 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20  t iSavepoint..  
2e3e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
2e3f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
2e400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e410 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64  // CheckDisposed
2e420 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
2e430 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c         if (modul
2e440 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
2e450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e460 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74  return ModuleNot
2e470 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72  AvailableTableEr
2e480 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20  ror(pVtab);.... 
2e490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2e4a0 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 52 65  eturn module.xRe
2e4b0 6c 65 61 73 65 28 70 56 74 61 62 2c 20 69 53 61  lease(pVtab, iSa
2e4c0 76 65 70 6f 69 6e 74 29 3b 0d 0a 20 20 20 20 20  vepoint);..     
2e4d0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2e4e0 20 20 20 20 20 20 20 20 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 2f  ////////////////
2e520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2e530 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2e540 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2e550 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
2e560 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
2e570 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2e580 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 22 20 2f 3e  .xRollbackTo" />
2e590 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
2e5a0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
2e5b0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
2e5c0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2e5d0 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20  e="pVtab">..    
2e5e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
2e5f0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
2e600 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2e610 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 22 20  le.xRollbackTo" 
2e620 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2e630 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
2e640 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
2e650 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2e660 65 3d 22 69 53 61 76 65 70 6f 69 6e 74 22 3e 0d  e="iSavepoint">.
2e670 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2e680 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
2e690 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
2e6a0 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63  eModule.xRollbac
2e6b0 6b 54 6f 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  kTo" /> method..
2e6c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2e6d0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
2e6e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
2e6f0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
2e700 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
2e710 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2e720 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f  NativeModule.xRo
2e730 6c 6c 62 61 63 6b 54 6f 22 20 2f 3e 20 6d 65 74  llbackTo" /> met
2e740 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
2e750 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
2e760 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
2e770 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72  blic SQLiteError
2e780 43 6f 64 65 20 78 52 6f 6c 6c 62 61 63 6b 54 6f  Code xRollbackTo
2e790 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2e7a0 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c     IntPtr pVtab,
2e7b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e7c0 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69 6e 74    int iSavepoint
2e7d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e7e0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
2e7f0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2e800 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70      // CheckDisp
2e810 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  osed();....     
2e820 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d             if (m
2e830 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  odule == null)..
2e840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e850 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c      return Modul
2e860 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62  eNotAvailableTab
2e870 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d  leError(pVtab);.
2e880 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2e890 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65     return module
2e8a0 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 70 56 74  .xRollbackTo(pVt
2e8b0 61 62 2c 20 69 53 61 76 65 70 6f 69 6e 74 29 3b  ab, iSavepoint);
2e8c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2e8d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e  .            #en
2e8e0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
2e8f0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2e900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2e940 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
2e950 6e 20 49 44 69 73 70 6f 73 61 62 6c 65 20 4d 65  n IDisposable Me
2e960 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 20  mbers..         
2e970 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2e980 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2e990 2f 20 44 69 73 70 6f 73 65 73 20 6f 66 20 74 68  / Disposes of th
2e9a0 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  is object instan
2e9b0 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ce...           
2e9c0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2e9d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
2e9e0 6c 69 63 20 76 6f 69 64 20 44 69 73 70 6f 73 65  lic void Dispose
2e9f0 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ()..            
2ea00 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2ea10 20 20 20 44 69 73 70 6f 73 65 28 74 72 75 65 29     Dispose(true)
2ea20 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
2ea30 20 20 20 47 43 2e 53 75 70 70 72 65 73 73 46 69     GC.SuppressFi
2ea40 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20  nalize(this);.. 
2ea50 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
2ea60 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65            #endre
2ea70 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
2ea80 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2ea90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eaa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eac0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2ead0 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49         #region I
2eae0 44 69 73 70 6f 73 61 62 6c 65 20 22 50 61 74 74  Disposable "Patt
2eaf0 65 72 6e 22 20 4d 65 6d 62 65 72 73 0d 0a 20 20  ern" Members..  
2eb00 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
2eb10 65 20 62 6f 6f 6c 20 64 69 73 70 6f 73 65 64 3b  e bool disposed;
2eb20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2eb30 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
2eb40 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 72           /// Thr
2eb50 6f 77 73 20 61 6e 20 3c 73 65 65 20 63 72 65 66  ows an <see cref
2eb60 3d 22 4f 62 6a 65 63 74 44 69 73 70 6f 73 65 64  ="ObjectDisposed
2eb70 45 78 63 65 70 74 69 6f 6e 22 2f 3e 20 69 66 20  Exception"/> if 
2eb80 74 68 69 73 20 6f 62 6a 65 63 74 0d 0a 20 20 20  this object..   
2eb90 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73           /// ins
2eba0 74 61 6e 63 65 20 68 61 73 20 62 65 65 6e 20 64  tance has been d
2ebb0 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20  isposed...      
2ebc0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
2ebd0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
2ebe0 20 20 70 72 69 76 61 74 65 20 76 6f 69 64 20 43    private void C
2ebf0 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 20 2f  heckDisposed() /
2ec00 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
2ec10 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 54          {..#if T
2ec20 48 52 4f 57 5f 4f 4e 5f 44 49 53 50 4f 53 45 44  HROW_ON_DISPOSED
2ec30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ec40 20 20 69 66 20 28 64 69 73 70 6f 73 65 64 29 0d    if (disposed).
2ec50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ec60 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2ec70 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65          throw ne
2ec80 77 20 4f 62 6a 65 63 74 44 69 73 70 6f 73 65 64  w ObjectDisposed
2ec90 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20 20 20  Exception(..    
2eca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ecb0 20 20 20 20 74 79 70 65 6f 66 28 53 51 4c 69 74      typeof(SQLit
2ecc0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 29 2e 4e  eNativeModule).N
2ecd0 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ame);..         
2ece0 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
2ecf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2ed00 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2ed10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ed20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ed30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ed40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ed50 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
2ed60 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
2ed70 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2ed80 20 44 69 73 70 6f 73 65 73 20 6f 66 20 74 68 69   Disposes of thi
2ed90 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  s object instanc
2eda0 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
2edb0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
2edc0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2edd0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 69 73  <param name="dis
2ede0 70 6f 73 69 6e 67 22 3e 0d 0a 20 20 20 20 20 20  posing">..      
2edf0 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65        /// Non-ze
2ee00 72 6f 20 69 66 20 74 68 69 73 20 6d 65 74 68 6f  ro if this metho
2ee10 64 20 69 73 20 62 65 69 6e 67 20 63 61 6c 6c 65  d is being calle
2ee20 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20  d from the..    
2ee30 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
2ee40 20 63 72 65 66 3d 22 44 69 73 70 6f 73 65 28 29   cref="Dispose()
2ee50 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 20 20 5a 65  " /> method.  Ze
2ee60 72 6f 20 69 66 20 74 68 69 73 20 6d 65 74 68 6f  ro if this metho
2ee70 64 20 69 73 20 62 65 69 6e 67 0d 0a 20 20 20 20  d is being..    
2ee80 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 61 6c 6c          /// call
2ee90 65 64 20 66 72 6f 6d 20 74 68 65 20 66 69 6e 61  ed from the fina
2eea0 6c 69 7a 65 72 2e 0d 0a 20 20 20 20 20 20 20 20  lizer...        
2eeb0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2eec0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
2eed0 69 76 61 74 65 20 2f 2a 20 70 72 6f 74 65 63 74  ivate /* protect
2eee0 65 64 20 76 69 72 74 75 61 6c 20 2a 2f 20 76 6f  ed virtual */ vo
2eef0 69 64 20 44 69 73 70 6f 73 65 28 62 6f 6f 6c 20  id Dispose(bool 
2ef00 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20  disposing)..    
2ef10 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2ef20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
2ef30 64 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20 20  disposed)..     
2ef40 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2ef50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ef60 20 20 2f 2f 69 66 20 28 64 69 73 70 6f 73 69 6e    //if (disposin
2ef70 67 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g)..            
2ef80 20 20 20 20 20 20 20 20 2f 2f 7b 0d 0a 20 20 20          //{..   
2ef90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2efa0 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f   //    /////////
2efb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2efc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
2efd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2efe0 20 2f 2f 20 20 20 20 2f 2f 20 64 69 73 70 6f 73   //    // dispos
2eff0 65 20 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72  e managed resour
2f000 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20  ces here.....   
2f010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f020 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f   //    /////////
2f030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
2f050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f060 20 2f 2f 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20   //}....        
2f070 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
2f080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f0a0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
2f0b0 20 20 20 20 20 20 20 20 2f 2f 20 72 65 6c 65 61          // relea
2f0c0 73 65 20 75 6e 6d 61 6e 61 67 65 64 20 72 65 73  se unmanaged res
2f0d0 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a  ources here.....
2f0e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f0f0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2f100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2f120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f130 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
2f140 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
2f150 45 3a 20 54 68 65 20 6d 6f 64 75 6c 65 20 69 73  E: The module is
2f160 20 6e 6f 74 20 6f 77 6e 65 64 20 62 79 20 75 73   not owned by us
2f170 3b 20 74 68 65 72 65 66 6f 72 65 2c 20 64 6f 20  ; therefore, do 
2f180 6e 6f 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  not..           
2f190 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
2f1a0 20 20 64 69 73 70 6f 73 65 20 69 74 2e 0d 0a 20    dispose it... 
2f1b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f1c0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
2f1d0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d             if (m
2f1e0 6f 64 75 6c 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a  odule != null)..
2f1f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f200 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 20 3d          module =
2f210 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20   null;....      
2f220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 69                di
2f230 73 70 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a  sposed = true;..
2f240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f250 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
2f260 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65  ..            #e
2f270 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
2f280 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2f290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f2a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f2b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f2c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2f2d0 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69             #regi
2f2e0 6f 6e 20 44 65 73 74 72 75 63 74 6f 72 0d 0a 20  on Destructor.. 
2f2f0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2f300 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2f310 20 20 20 20 20 20 2f 2f 2f 20 46 69 6e 61 6c 69        /// Finali
2f320 7a 65 73 20 74 68 69 73 20 6f 62 6a 65 63 74 20  zes this object 
2f330 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20  instance...     
2f340 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
2f350 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
2f360 20 20 20 7e 53 51 4c 69 74 65 4e 61 74 69 76 65     ~SQLiteNative
2f370 4d 6f 64 75 6c 65 28 29 0d 0a 20 20 20 20 20 20  Module()..      
2f380 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2f390 20 20 20 20 20 20 20 20 20 44 69 73 70 6f 73 65           Dispose
2f3a0 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20  (false);..      
2f3b0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2f3c0 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
2f3d0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
2f3e0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
2f3f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2f400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f440 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
2f450 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43 6f 6e  gion Private Con
2f460 73 74 61 6e 74 73 0d 0a 20 20 20 20 20 20 20 20  stants..        
2f470 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2f480 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 64         /// The d
2f490 65 66 61 75 6c 74 20 65 73 74 69 6d 61 74 65 64  efault estimated
2f4a0 20 63 6f 73 74 20 66 6f 72 20 75 73 65 20 77 69   cost for use wi
2f4b0 74 68 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  th the..        
2f4c0 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
2f4d0 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64  SQLiteManagedMod
2f4e0 75 6c 65 2e 42 65 73 74 49 6e 64 65 78 22 20 2f  ule.BestIndex" /
2f4f0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
2f500 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
2f510 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
2f520 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e  te static readon
2f530 6c 79 20 64 6f 75 62 6c 65 20 44 65 66 61 75 6c  ly double Defaul
2f540 74 45 73 74 69 6d 61 74 65 64 43 6f 73 74 20 3d  tEstimatedCost =
2f550 20 64 6f 75 62 6c 65 2e 4d 61 78 56 61 6c 75 65   double.MaxValue
2f560 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
2f570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f5a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f5b0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2f5c0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2f5d0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 64         /// The d
2f5e0 65 66 61 75 6c 74 20 76 65 72 73 69 6f 6e 20 6f  efault version o
2f5f0 66 20 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c  f the native sql
2f600 69 74 65 33 5f 6d 6f 64 75 6c 65 20 73 74 72 75  ite3_module stru
2f610 63 74 75 72 65 20 69 6e 20 75 73 65 2e 0d 0a 20  cture in use... 
2f620 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
2f630 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
2f640 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65  rivate static re
2f650 61 64 6f 6e 6c 79 20 69 6e 74 20 44 65 66 61 75  adonly int Defau
2f660 6c 74 4d 6f 64 75 6c 65 56 65 72 73 69 6f 6e 20  ltModuleVersion 
2f670 3d 20 32 3b 0d 0a 20 20 20 20 20 20 20 20 23 65  = 2;..        #e
2f680 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
2f690 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2f6a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f6b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f6c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2f6e0 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
2f6f0 72 69 76 61 74 65 20 44 61 74 61 0d 0a 20 20 20  rivate Data..   
2f700 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
2f710 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
2f720 54 68 69 73 20 66 69 65 6c 64 20 69 73 20 75 73  This field is us
2f730 65 64 20 74 6f 20 73 74 6f 72 65 20 74 68 65 20  ed to store the 
2f740 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 6d  native sqlite3_m
2f750 6f 64 75 6c 65 20 73 74 72 75 63 74 75 72 65 0d  odule structure.
2f760 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 73 73  .        /// ass
2f770 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69  ociated with thi
2f780 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  s object instanc
2f790 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
2f7a0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
2f7b0 20 20 20 20 70 72 69 76 61 74 65 20 55 6e 73 61      private Unsa
2f7c0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2f7d0 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6e  sqlite3_module n
2f7e0 61 74 69 76 65 4d 6f 64 75 6c 65 3b 0d 0a 0d 0a  ativeModule;....
2f7f0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2f800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2f840 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  ...#if PLATFORM_
2f850 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
2f860 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
2f870 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2f880 20 2f 2f 2f 20 54 68 69 73 20 66 69 65 6c 64 20   /// This field 
2f890 69 73 20 75 73 65 64 20 74 6f 20 68 6f 6c 64 20  is used to hold 
2f8a0 74 68 65 20 62 6c 6f 63 6b 20 6f 66 20 6e 61 74  the block of nat
2f8b0 69 76 65 20 6d 65 6d 6f 72 79 20 74 68 61 74 20  ive memory that 
2f8c0 63 6f 6e 74 61 69 6e 73 0d 0a 20 20 20 20 20 20  contains..      
2f8d0 20 20 2f 2f 2f 20 74 68 65 20 6e 61 74 69 76 65    /// the native
2f8e0 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20   sqlite3_module 
2f8f0 73 74 72 75 63 74 75 72 65 20 61 73 73 6f 63 69  structure associ
2f900 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20 6f  ated with this o
2f910 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20 2f  bject..        /
2f920 2f 2f 20 69 6e 73 74 61 6e 63 65 20 77 68 65 6e  // instance when
2f930 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 74 68 65 20   running on the 
2f940 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61  .NET Compact Fra
2f950 6d 65 77 6f 72 6b 2e 0d 0a 20 20 20 20 20 20 20  mework...       
2f960 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2f970 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
2f980 20 49 6e 74 50 74 72 20 70 4e 61 74 69 76 65 4d   IntPtr pNativeM
2f990 6f 64 75 6c 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a  odule;..#endif..
2f9a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2f9b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f9c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f9d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f9e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f9f0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
2fa00 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2fa10 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 66 69 65      /// This fie
2fa20 6c 64 20 69 73 20 75 73 65 64 20 74 6f 20 73 74  ld is used to st
2fa30 6f 72 65 20 74 68 65 20 76 69 72 74 75 61 6c 20  ore the virtual 
2fa40 74 61 62 6c 65 20 69 6e 73 74 61 6e 63 65 73 20  table instances 
2fa50 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20  associated..    
2fa60 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69      /// with thi
2fa70 73 20 6d 6f 64 75 6c 65 2e 20 20 54 68 65 20 6e  s module.  The n
2fa80 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
2fa90 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61   the sqlite3_vta
2faa0 62 20 64 65 72 69 76 65 64 0d 0a 20 20 20 20 20  b derived..     
2fab0 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65     /// structure
2fac0 20 69 73 20 75 73 65 64 20 74 6f 20 6b 65 79 20   is used to key 
2fad0 69 6e 74 6f 20 74 68 69 73 20 63 6f 6c 6c 65 63  into this collec
2fae0 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  tion...        /
2faf0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2fb00 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 44         private D
2fb10 69 63 74 69 6f 6e 61 72 79 3c 49 6e 74 50 74 72  ictionary<IntPtr
2fb20 2c 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  , SQLiteVirtualT
2fb30 61 62 6c 65 3e 20 74 61 62 6c 65 73 3b 0d 0a 0d  able> tables;...
2fb40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
2fb50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fb60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fb70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fb80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fb90 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
2fba0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2fbb0 20 20 20 2f 2f 2f 20 54 68 69 73 20 66 69 65 6c     /// This fiel
2fbc0 64 20 69 73 20 75 73 65 64 20 74 6f 20 73 74 6f  d is used to sto
2fbd0 72 65 20 74 68 65 20 76 69 72 74 75 61 6c 20 74  re the virtual t
2fbe0 61 62 6c 65 20 63 75 72 73 6f 72 20 69 6e 73 74  able cursor inst
2fbf0 61 6e 63 65 73 0d 0a 20 20 20 20 20 20 20 20 2f  ances..        /
2fc00 2f 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  // associated wi
2fc10 74 68 20 74 68 69 73 20 6d 6f 64 75 6c 65 2e 20  th this module. 
2fc20 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e   The native poin
2fc30 74 65 72 20 74 6f 20 74 68 65 0d 0a 20 20 20 20  ter to the..    
2fc40 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f      /// sqlite3_
2fc50 76 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69  vtab_cursor deri
2fc60 76 65 64 20 73 74 72 75 63 74 75 72 65 20 69 73  ved structure is
2fc70 20 75 73 65 64 20 74 6f 20 6b 65 79 20 69 6e 74   used to key int
2fc80 6f 20 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20  o this..        
2fc90 2f 2f 2f 20 63 6f 6c 6c 65 63 74 69 6f 6e 2e 0d  /// collection..
2fca0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
2fcb0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2fcc0 20 70 72 69 76 61 74 65 20 44 69 63 74 69 6f 6e   private Diction
2fcd0 61 72 79 3c 49 6e 74 50 74 72 2c 20 53 51 4c 69  ary<IntPtr, SQLi
2fce0 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75  teVirtualTableCu
2fcf0 72 73 6f 72 3e 20 63 75 72 73 6f 72 73 3b 0d 0a  rsor> cursors;..
2fd00 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
2fd10 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
2fd20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fd30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fd40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fd50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fd60 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2fd70 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
2fd80 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20  Constructors..  
2fd90 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
2fda0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
2fdb0 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69   Constructs an i
2fdc0 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20  nstance of this 
2fdd0 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20  class...        
2fde0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
2fdf0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
2fe00 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d  am name="name">.
2fe10 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
2fe20 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6d 6f 64   name of the mod
2fe30 75 6c 65 2e 20 20 54 68 69 73 20 70 61 72 61 6d  ule.  This param
2fe40 65 74 65 72 20 63 61 6e 6e 6f 74 20 62 65 20 6e  eter cannot be n
2fe50 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ull...        //
2fe60 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
2fe70 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
2fe80 65 4d 6f 64 75 6c 65 28 73 74 72 69 6e 67 20 6e  eModule(string n
2fe90 61 6d 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ame)..        {.
2fea0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
2feb0 28 6e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  (name == null)..
2fec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fed0 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65  throw new Argume
2fee0 6e 74 4e 75 6c 6c 45 78 63 65 70 74 69 6f 6e 28  ntNullException(
2fef0 22 6e 61 6d 65 22 29 3b 0d 0a 0d 0a 20 20 20 20  "name");....    
2ff00 20 20 20 20 20 20 20 20 74 68 69 73 2e 6e 61 6d          this.nam
2ff10 65 20 3d 20 6e 61 6d 65 3b 0d 0a 20 20 20 20 20  e = name;..     
2ff20 20 20 20 20 20 20 20 74 68 69 73 2e 74 61 62 6c         this.tabl
2ff30 65 73 20 3d 20 6e 65 77 20 44 69 63 74 69 6f 6e  es = new Diction
2ff40 61 72 79 3c 49 6e 74 50 74 72 2c 20 53 51 4c 69  ary<IntPtr, SQLi
2ff50 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 3e 28  teVirtualTable>(
2ff60 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2ff70 74 68 69 73 2e 63 75 72 73 6f 72 73 20 3d 20 6e  this.cursors = n
2ff80 65 77 20 44 69 63 74 69 6f 6e 61 72 79 3c 49 6e  ew Dictionary<In
2ff90 74 50 74 72 2c 20 53 51 4c 69 74 65 56 69 72 74  tPtr, SQLiteVirt
2ffa0 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 3e 28  ualTableCursor>(
2ffb0 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  );..        }.. 
2ffc0 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
2ffd0 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30020 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
30030 23 72 65 67 69 6f 6e 20 49 6e 74 65 72 6e 61 6c  #region Internal
30040 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
30050 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
30060 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 72 65  .        /// Cre
30070 61 74 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73  ates and returns
30080 20 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69   the native sqli
30090 74 65 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63 74  te_module struct
300a0 75 72 65 20 75 73 69 6e 67 20 74 68 65 0d 0a 20  ure using the.. 
300b0 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 66 69         /// confi
300c0 67 75 72 65 64 20 28 6f 72 20 64 65 66 61 75 6c  gured (or defaul
300d0 74 29 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  t) <see cref="IS
300e0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
300f0 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f  e" />..        /
30100 2f 2f 20 69 6e 74 65 72 66 61 63 65 20 69 6d 70  // interface imp
30110 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20  lementation...  
30120 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
30130 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
30140 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
30150 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
30160 69 76 65 20 73 71 6c 69 74 65 5f 6d 6f 64 75 6c  ive sqlite_modul
30170 65 20 73 74 72 75 63 74 75 72 65 20 75 73 69 6e  e structure usin
30180 67 20 74 68 65 20 63 6f 6e 66 69 67 75 72 65 64  g the configured
30190 20 28 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f   (or..        //
301a0 2f 20 64 65 66 61 75 6c 74 29 20 3c 73 65 65 20  / default) <see 
301b0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
301c0 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 69 6e  iveModule" /> in
301d0 74 65 72 66 61 63 65 0d 0a 20 20 20 20 20 20 20  terface..       
301e0 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74 61 74   /// implementat
301f0 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ion...        //
30200 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
30210 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 55        internal U
30220 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
30230 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c  ds.sqlite3_modul
30240 65 20 43 72 65 61 74 65 4e 61 74 69 76 65 4d 6f  e CreateNativeMo
30250 64 75 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20  dule()..        
30260 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  {..            r
30270 65 74 75 72 6e 20 43 72 65 61 74 65 4e 61 74 69  eturn CreateNati
30280 76 65 4d 6f 64 75 6c 65 28 47 65 74 4e 61 74 69  veModule(GetNati
30290 76 65 4d 6f 64 75 6c 65 49 6d 70 6c 28 29 29 3b  veModuleImpl());
302a0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
302b0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
302c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
302d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
302e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
302f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
30300 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
30310 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
30320 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
30330 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
30340 2f 2f 2f 20 43 72 65 61 74 65 73 20 61 6e 64 20  /// Creates and 
30350 72 65 74 75 72 6e 73 20 61 20 6d 65 6d 6f 72 79  returns a memory
30360 20 62 6c 6f 63 6b 20 6f 62 74 61 69 6e 65 64 20   block obtained 
30370 66 72 6f 6d 20 74 68 65 20 53 51 4c 69 74 65 20  from the SQLite 
30380 63 6f 72 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  core..        //
30390 2f 20 6c 69 62 72 61 72 79 20 75 73 65 64 20 74  / library used t
303a0 6f 20 73 74 6f 72 65 20 74 68 65 20 6e 61 74 69  o store the nati
303b0 76 65 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c  ve sqlite3_modul
303c0 65 20 73 74 72 75 63 74 75 72 65 20 66 6f 72 20  e structure for 
303d0 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  this..        //
303e0 2f 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  / object instanc
303f0 65 20 77 68 65 6e 20 72 75 6e 6e 69 6e 67 20 6f  e when running o
30400 6e 20 74 68 65 20 2e 4e 45 54 20 43 6f 6d 70 61  n the .NET Compa
30410 63 74 20 46 72 61 6d 65 77 6f 72 6b 2e 0d 0a 20  ct Framework... 
30420 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
30430 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
30440 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
30450 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
30460 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
30470 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74  the native sqlit
30480 65 33 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63 74  e3_module struct
30490 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
304a0 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
304b0 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 49        internal I
304c0 6e 74 50 74 72 20 43 72 65 61 74 65 4e 61 74 69  ntPtr CreateNati
304d0 76 65 4d 6f 64 75 6c 65 49 6e 74 65 72 6f 70 28  veModuleInterop(
304e0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
304f0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 4e            if (pN
30500 61 74 69 76 65 4d 6f 64 75 6c 65 20 3d 3d 20 49  ativeModule == I
30510 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
30520 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
30530 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
30540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30550 2f 2f 20 48 41 43 4b 3a 20 4e 6f 20 65 61 73 79  // HACK: No easy
30560 20 77 61 79 20 74 6f 20 64 65 74 65 72 6d 69 6e   way to determin
30570 65 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68  e the size of th
30580 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20  e native..      
30590 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
305a0 20 20 20 73 71 6c 69 74 65 5f 6d 6f 64 75 6c 65     sqlite_module
305b0 20 73 74 72 75 63 74 75 72 65 20 77 68 65 6e 20   structure when 
305c0 72 75 6e 6e 69 6e 67 20 6f 6e 20 74 68 65 20 2e  running on the .
305d0 4e 45 54 0d 0a 20 20 20 20 20 20 20 20 20 20 20  NET..           
305e0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 43 6f       //       Co
305f0 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 3b  mpact Framework;
30600 20 74 68 65 72 65 66 6f 72 65 2c 20 6a 75 73 74   therefore, just
30610 20 62 61 73 65 20 74 68 65 20 73 69 7a 65 0d 0a   base the size..
30620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30630 2f 2f 20 20 20 20 20 20 20 6f 6e 20 77 68 61 74  //       on what
30640 20 77 65 20 6b 6e 6f 77 3a 0d 0a 20 20 20 20 20   we know:..     
30650 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
30660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
30670 2f 20 20 20 20 20 20 20 54 68 65 72 65 20 69 73  /       There is
30680 20 6f 6e 65 20 69 6e 74 65 67 65 72 20 6d 65 6d   one integer mem
30690 62 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ber...          
306a0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 54        //       T
306b0 68 65 72 65 20 61 72 65 20 32 32 20 66 75 6e 63  here are 22 func
306c0 74 69 6f 6e 20 70 6f 69 6e 74 65 72 73 2e 0d 0a  tion pointers...
306d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
306e0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
306f0 20 20 20 20 70 4e 61 74 69 76 65 4d 6f 64 75 6c      pNativeModul
30700 65 20 3d 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79  e = SQLiteMemory
30710 2e 41 6c 6c 6f 63 61 74 65 28 0d 0a 20 20 20 20  .Allocate(..    
30720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30730 73 69 7a 65 6f 66 28 69 6e 74 29 20 2b 20 28 32  sizeof(int) + (2
30740 32 20 2a 20 49 6e 74 50 74 72 2e 53 69 7a 65 29  2 * IntPtr.Size)
30750 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
30760 20 20 20 20 20 20 69 66 20 28 70 4e 61 74 69 76        if (pNativ
30770 65 4d 6f 64 75 6c 65 20 3d 3d 20 49 6e 74 50 74  eModule == IntPt
30780 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
30790 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72               thr
307a0 6f 77 20 6e 65 77 20 4f 75 74 4f 66 4d 65 6d 6f  ow new OutOfMemo
307b0 72 79 45 78 63 65 70 74 69 6f 6e 28 22 73 71 6c  ryException("sql
307c0 69 74 65 33 5f 6d 6f 64 75 6c 65 22 29 3b 0d 0a  ite3_module");..
307d0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
307e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
307f0 75 72 6e 20 70 4e 61 74 69 76 65 4d 6f 64 75 6c  urn pNativeModul
30800 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23  e;..        }..#
30810 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 23  endif..        #
30820 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
30830 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
30840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
30880 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
30890 50 72 69 76 61 74 65 20 4d 65 74 68 6f 64 73 0d  Private Methods.
308a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
308b0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
308c0 2f 2f 2f 20 43 72 65 61 74 65 73 20 61 6e 64 20  /// Creates and 
308d0 72 65 74 75 72 6e 73 20 74 68 65 20 6e 61 74 69  returns the nati
308e0 76 65 20 73 71 6c 69 74 65 5f 6d 6f 64 75 6c 65  ve sqlite_module
308f0 20 73 74 72 75 63 74 75 72 65 20 75 73 69 6e 67   structure using
30900 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
30910 2f 20 73 70 65 63 69 66 69 65 64 20 3c 73 65 65  / specified <see
30920 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
30930 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 69  tiveModule" /> i
30940 6e 74 65 72 66 61 63 65 0d 0a 20 20 20 20 20 20  nterface..      
30950 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74 61    /// implementa
30960 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  tion...        /
30970 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
30980 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
30990 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e  m name="module">
309a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
309b0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
309c0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
309d0 22 20 2f 3e 20 69 6e 74 65 72 66 61 63 65 20 69  " /> interface i
309e0 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 74 6f  mplementation to
309f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 75 73  ..        /// us
30a00 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
30a10 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
30a20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
30a30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
30a40 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 5f 6d   native sqlite_m
30a50 6f 64 75 6c 65 20 73 74 72 75 63 74 75 72 65 20  odule structure 
30a60 75 73 69 6e 67 20 74 68 65 20 73 70 65 63 69 66  using the specif
30a70 69 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ied..        ///
30a80 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
30a90 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22  iteNativeModule"
30aa0 20 2f 3e 20 69 6e 74 65 72 66 61 63 65 20 69 6d   /> interface im
30ab0 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d 0a 20  plementation... 
30ac0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
30ad0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
30ae0 72 69 76 61 74 65 20 55 6e 73 61 66 65 4e 61 74  rivate UnsafeNat
30af0 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
30b00 65 33 5f 6d 6f 64 75 6c 65 20 43 72 65 61 74 65  e3_module Create
30b10 4e 61 74 69 76 65 4d 6f 64 75 6c 65 28 0d 0a 20  NativeModule(.. 
30b20 20 20 20 20 20 20 20 20 20 20 20 49 53 51 4c 69             ISQLi
30b30 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20 6d  teNativeModule m
30b40 6f 64 75 6c 65 0d 0a 20 20 20 20 20 20 20 20 20  odule..         
30b50 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
30b60 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74  .            nat
30b70 69 76 65 4d 6f 64 75 6c 65 20 3d 20 6e 65 77 20  iveModule = new 
30b80 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
30b90 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75  ods.sqlite3_modu
30ba0 6c 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  le();..         
30bb0 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
30bc0 69 56 65 72 73 69 6f 6e 20 3d 20 44 65 66 61 75  iVersion = Defau
30bd0 6c 74 4d 6f 64 75 6c 65 56 65 72 73 69 6f 6e 3b  ltModuleVersion;
30be0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
30bf0 69 66 20 28 6d 6f 64 75 6c 65 20 21 3d 20 6e 75  if (module != nu
30c00 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
30c10 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
30c20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
30c30 2e 78 43 72 65 61 74 65 20 3d 20 6e 65 77 20 55  .xCreate = new U
30c40 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
30c50 64 73 2e 78 43 72 65 61 74 65 28 0d 0a 20 20 20  ds.xCreate(..   
30c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30c70 20 6d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 29   module.xCreate)
30c80 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
30c90 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
30ca0 65 2e 78 43 6f 6e 6e 65 63 74 20 3d 20 6e 65 77  e.xConnect = new
30cb0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
30cc0 68 6f 64 73 2e 78 43 6f 6e 6e 65 63 74 28 0d 0a  hods.xConnect(..
30cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30ce0 20 20 20 20 6d 6f 64 75 6c 65 2e 78 43 6f 6e 6e      module.xConn
30cf0 65 63 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ect);....       
30d00 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
30d10 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78  odule.xBestIndex
30d20 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
30d30 69 76 65 4d 65 74 68 6f 64 73 2e 78 42 65 73 74  iveMethods.xBest
30d40 49 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20 20  Index(..        
30d50 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75              modu
30d60 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 29 3b 0d  le.xBestIndex);.
30d70 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
30d80 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
30d90 78 44 69 73 63 6f 6e 6e 65 63 74 20 3d 20 6e 65  xDisconnect = ne
30da0 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
30db0 74 68 6f 64 73 2e 78 44 69 73 63 6f 6e 6e 65 63  thods.xDisconnec
30dc0 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
30dd0 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78          module.x
30de0 44 69 73 63 6f 6e 6e 65 63 74 29 3b 0d 0a 0d 0a  Disconnect);....
30df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30e00 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 65  nativeModule.xDe
30e10 73 74 72 6f 79 20 3d 20 6e 65 77 20 55 6e 73 61  stroy = new Unsa
30e20 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
30e30 78 44 65 73 74 72 6f 79 28 0d 0a 20 20 20 20 20  xDestroy(..     
30e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d                 m
30e50 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f 79 29 3b  odule.xDestroy);
30e60 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
30e70 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
30e80 2e 78 4f 70 65 6e 20 3d 20 6e 65 77 20 55 6e 73  .xOpen = new Uns
30e90 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
30ea0 2e 78 4f 70 65 6e 28 0d 0a 20 20 20 20 20 20 20  .xOpen(..       
30eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64               mod
30ec0 75 6c 65 2e 78 4f 70 65 6e 29 3b 0d 0a 0d 0a 20  ule.xOpen);.... 
30ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
30ee0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6c 6f  ativeModule.xClo
30ef0 73 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  se = new UnsafeN
30f00 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 43 6c  ativeMethods.xCl
30f10 6f 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ose(..          
30f20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65            module
30f30 2e 78 43 6c 6f 73 65 29 3b 0d 0a 0d 0a 20 20 20  .xClose);....   
30f40 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
30f50 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65  iveModule.xFilte
30f60 72 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  r = new UnsafeNa
30f70 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 46 69 6c  tiveMethods.xFil
30f80 74 65 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ter(..          
30f90 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65            module
30fa0 2e 78 46 69 6c 74 65 72 29 3b 0d 0a 0d 0a 20 20  .xFilter);....  
30fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
30fc0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4e 65 78 74  tiveModule.xNext
30fd0 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
30fe0 69 76 65 4d 65 74 68 6f 64 73 2e 78 4e 65 78 74  iveMethods.xNext
30ff0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
31000 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 4e         module.xN
31010 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ext);....       
31020 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
31030 6f 64 75 6c 65 2e 78 45 6f 66 20 3d 20 6e 65 77  odule.xEof = new
31040 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
31050 68 6f 64 73 2e 78 45 6f 66 28 6d 6f 64 75 6c 65  hods.xEof(module
31060 2e 78 45 6f 66 29 3b 0d 0a 0d 0a 20 20 20 20 20  .xEof);....     
31070 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
31080 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 20  eModule.xColumn 
31090 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
310a0 76 65 4d 65 74 68 6f 64 73 2e 78 43 6f 6c 75 6d  veMethods.xColum
310b0 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n(..            
310c0 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78          module.x
310d0 43 6f 6c 75 6d 6e 29 3b 0d 0a 0d 0a 20 20 20 20  Column);....    
310e0 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
310f0 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 20  veModule.xRowId 
31100 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
31110 76 65 4d 65 74 68 6f 64 73 2e 78 52 6f 77 49 64  veMethods.xRowId
31120 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
31130 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 52         module.xR
31140 6f 77 49 64 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  owId);....      
31150 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
31160 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 20 3d  Module.xUpdate =
31170 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
31180 65 4d 65 74 68 6f 64 73 2e 78 55 70 64 61 74 65  eMethods.xUpdate
31190 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
311a0 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 55         module.xU
311b0 70 64 61 74 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  pdate);....     
311c0 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
311d0 65 4d 6f 64 75 6c 65 2e 78 42 65 67 69 6e 20 3d  eModule.xBegin =
311e0 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
311f0 65 4d 65 74 68 6f 64 73 2e 78 42 65 67 69 6e 28  eMethods.xBegin(
31200 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31210 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 42 65        module.xBe
31220 67 69 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  gin);....       
31230 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
31240 6f 64 75 6c 65 2e 78 53 79 6e 63 20 3d 20 6e 65  odule.xSync = ne
31250 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
31260 74 68 6f 64 73 2e 78 53 79 6e 63 28 0d 0a 20 20  thods.xSync(..  
31270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31280 20 20 6d 6f 64 75 6c 65 2e 78 53 79 6e 63 29 3b    module.xSync);
31290 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
312a0 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
312b0 2e 78 43 6f 6d 6d 69 74 20 3d 20 6e 65 77 20 55  .xCommit = new U
312c0 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
312d0 64 73 2e 78 43 6f 6d 6d 69 74 28 0d 0a 20 20 20  ds.xCommit(..   
312e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
312f0 20 6d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 29   module.xCommit)
31300 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
31310 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
31320 65 2e 78 52 6f 6c 6c 62 61 63 6b 20 3d 20 6e 65  e.xRollback = ne
31330 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
31340 74 68 6f 64 73 2e 78 52 6f 6c 6c 62 61 63 6b 28  thods.xRollback(
31350 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31360 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 52 6f        module.xRo
31370 6c 6c 62 61 63 6b 29 3b 0d 0a 0d 0a 20 20 20 20  llback);....    
31380 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
31390 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75  veModule.xFindFu
313a0 6e 63 74 69 6f 6e 20 3d 20 6e 65 77 20 55 6e 73  nction = new Uns
313b0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
313c0 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28 0d  .xFindFunction(.
313d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
313e0 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 46 69 6e       module.xFin
313f0 64 46 75 6e 63 74 69 6f 6e 29 3b 0d 0a 0d 0a 20  dFunction);.... 
31400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
31410 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6e  ativeModule.xRen
31420 61 6d 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  ame = new Unsafe
31430 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52  NativeMethods.xR
31440 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20  ename(..        
31450 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75              modu
31460 6c 65 2e 78 52 65 6e 61 6d 65 29 3b 0d 0a 0d 0a  le.xRename);....
31470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31480 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53 61  nativeModule.xSa
31490 76 65 70 6f 69 6e 74 20 3d 20 6e 65 77 20 55 6e  vepoint = new Un
314a0 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
314b0 73 2e 78 53 61 76 65 70 6f 69 6e 74 28 0d 0a 20  s.xSavepoint(.. 
314c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
314d0 20 20 20 6d 6f 64 75 6c 65 2e 78 53 61 76 65 70     module.xSavep
314e0 6f 69 6e 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  oint);....      
314f0 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
31500 4d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73 65 20  Module.xRelease 
31510 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
31520 76 65 4d 65 74 68 6f 64 73 2e 78 52 65 6c 65 61  veMethods.xRelea
31530 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se(..           
31540 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e           module.
31550 78 52 65 6c 65 61 73 65 29 3b 0d 0a 0d 0a 20 20  xRelease);....  
31560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
31570 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c  tiveModule.xRoll
31580 62 61 63 6b 54 6f 20 3d 20 6e 65 77 20 55 6e 73  backTo = new Uns
31590 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
315a0 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20  .xRollbackTo(.. 
315b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
315c0 20 20 20 6d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62     module.xRollb
315d0 61 63 6b 54 6f 29 3b 0d 0a 20 20 20 20 20 20 20  ackTo);..       
315e0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
315f0 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20      else..      
31600 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
31610 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
31620 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 20 3d 20  odule.xCreate = 
31630 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
31640 4d 65 74 68 6f 64 73 2e 78 43 72 65 61 74 65 28  Methods.xCreate(
31650 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31660 20 20 20 20 20 20 78 43 72 65 61 74 65 29 3b 0d        xCreate);.
31670 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
31680 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
31690 78 43 6f 6e 6e 65 63 74 20 3d 20 6e 65 77 20 55  xConnect = new U
316a0 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
316b0 64 73 2e 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20  ds.xConnect(..  
316c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
316d0 20 20 78 43 6f 6e 6e 65 63 74 29 3b 0d 0a 0d 0a    xConnect);....
316e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
316f0 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65  nativeModule.xBe
31700 73 74 49 6e 64 65 78 20 3d 20 6e 65 77 20 55 6e  stIndex = new Un
31710 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
31720 73 2e 78 42 65 73 74 49 6e 64 65 78 28 0d 0a 20  s.xBestIndex(.. 
31730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31740 20 20 20 78 42 65 73 74 49 6e 64 65 78 29 3b 0d     xBestIndex);.
31750 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
31760 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
31770 78 44 69 73 63 6f 6e 6e 65 63 74 20 3d 20 6e 65  xDisconnect = ne
31780 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
31790 74 68 6f 64 73 2e 78 44 69 73 63 6f 6e 6e 65 63  thods.xDisconnec
317a0 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
317b0 20 20 20 20 20 20 20 20 78 44 69 73 63 6f 6e 6e          xDisconn
317c0 65 63 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ect);....       
317d0 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
317e0 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f 79 20 3d  odule.xDestroy =
317f0 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
31800 65 4d 65 74 68 6f 64 73 2e 78 44 65 73 74 72 6f  eMethods.xDestro
31810 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y(..            
31820 20 20 20 20 20 20 20 20 78 44 65 73 74 72 6f 79          xDestroy
31830 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
31840 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
31850 6c 65 2e 78 4f 70 65 6e 20 3d 20 6e 65 77 20 55  le.xOpen = new U
31860 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
31870 64 73 2e 78 4f 70 65 6e 28 78 4f 70 65 6e 29 3b  ds.xOpen(xOpen);
31880 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31890 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
318a0 43 6c 6f 73 65 20 3d 20 6e 65 77 20 55 6e 73 61  Close = new Unsa
318b0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
318c0 78 43 6c 6f 73 65 28 78 43 6c 6f 73 65 29 3b 0d  xClose(xClose);.
318d0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
318e0 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
318f0 78 46 69 6c 74 65 72 20 3d 20 6e 65 77 20 55 6e  xFilter = new Un
31900 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
31910 73 2e 78 46 69 6c 74 65 72 28 0d 0a 20 20 20 20  s.xFilter(..    
31920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31930 78 46 69 6c 74 65 72 29 3b 0d 0a 0d 0a 20 20 20  xFilter);....   
31940 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
31950 69 76 65 4d 6f 64 75 6c 65 2e 78 4e 65 78 74 20  iveModule.xNext 
31960 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
31970 76 65 4d 65 74 68 6f 64 73 2e 78 4e 65 78 74 28  veMethods.xNext(
31980 78 4e 65 78 74 29 3b 0d 0a 20 20 20 20 20 20 20  xNext);..       
31990 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
319a0 6f 64 75 6c 65 2e 78 45 6f 66 20 3d 20 6e 65 77  odule.xEof = new
319b0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
319c0 68 6f 64 73 2e 78 45 6f 66 28 78 45 6f 66 29 3b  hods.xEof(xEof);
319d0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
319e0 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
319f0 2e 78 43 6f 6c 75 6d 6e 20 3d 20 6e 65 77 20 55  .xColumn = new U
31a00 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
31a10 64 73 2e 78 43 6f 6c 75 6d 6e 28 0d 0a 20 20 20  ds.xColumn(..   
31a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31a30 20 78 43 6f 6c 75 6d 6e 29 3b 0d 0a 0d 0a 20 20   xColumn);....  
31a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
31a50 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 77 49  tiveModule.xRowI
31a60 64 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  d = new UnsafeNa
31a70 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 6f 77  tiveMethods.xRow
31a80 49 64 28 78 52 6f 77 49 64 29 3b 0d 0a 0d 0a 20  Id(xRowId);.... 
31a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
31aa0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64  ativeModule.xUpd
31ab0 61 74 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  ate = new Unsafe
31ac0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 55  NativeMethods.xU
31ad0 70 64 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20  pdate(..        
31ae0 20 20 20 20 20 20 20 20 20 20 20 20 78 55 70 64              xUpd
31af0 61 74 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ate);....       
31b00 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
31b10 6f 64 75 6c 65 2e 78 42 65 67 69 6e 20 3d 20 6e  odule.xBegin = n
31b20 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
31b30 65 74 68 6f 64 73 2e 78 42 65 67 69 6e 28 78 42  ethods.xBegin(xB
31b40 65 67 69 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20  egin);..        
31b50 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
31b60 64 75 6c 65 2e 78 53 79 6e 63 20 3d 20 6e 65 77  dule.xSync = new
31b70 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
31b80 68 6f 64 73 2e 78 53 79 6e 63 28 78 53 79 6e 63  hods.xSync(xSync
31b90 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
31ba0 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
31bb0 6c 65 2e 78 43 6f 6d 6d 69 74 20 3d 20 6e 65 77  le.xCommit = new
31bc0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
31bd0 68 6f 64 73 2e 78 43 6f 6d 6d 69 74 28 0d 0a 20  hods.xCommit(.. 
31be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31bf0 20 20 20 78 43 6f 6d 6d 69 74 29 3b 0d 0a 0d 0a     xCommit);....
31c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31c10 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f  nativeModule.xRo
31c20 6c 6c 62 61 63 6b 20 3d 20 6e 65 77 20 55 6e 73  llback = new Uns
31c30 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
31c40 2e 78 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20 20  .xRollback(..   
31c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31c60 20 78 52 6f 6c 6c 62 61 63 6b 29 3b 0d 0a 0d 0a   xRollback);....
31c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31c80 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69  nativeModule.xFi
31c90 6e 64 46 75 6e 63 74 69 6f 6e 20 3d 20 6e 65 77  ndFunction = new
31ca0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
31cb0 68 6f 64 73 2e 78 46 69 6e 64 46 75 6e 63 74 69  hods.xFindFuncti
31cc0 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on(..           
31cd0 20 20 20 20 20 20 20 20 20 78 46 69 6e 64 46 75           xFindFu
31ce0 6e 63 74 69 6f 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nction);....    
31cf0 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
31d00 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65  veModule.xRename
31d10 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
31d20 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 65 6e 61  iveMethods.xRena
31d30 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me(..           
31d40 20 20 20 20 20 20 20 20 20 78 52 65 6e 61 6d 65           xRename
31d50 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
31d60 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
31d70 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74 20 3d 20  le.xSavepoint = 
31d80 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
31d90 4d 65 74 68 6f 64 73 2e 78 53 61 76 65 70 6f 69  Methods.xSavepoi
31da0 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nt(..           
31db0 20 20 20 20 20 20 20 20 20 78 53 61 76 65 70 6f           xSavepo
31dc0 69 6e 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  int);....       
31dd0 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
31de0 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73 65 20 3d  odule.xRelease =
31df0 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
31e00 65 4d 65 74 68 6f 64 73 2e 78 52 65 6c 65 61 73  eMethods.xReleas
31e10 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
31e20 20 20 20 20 20 20 20 20 78 52 65 6c 65 61 73 65          xRelease
31e30 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
31e40 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
31e50 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 20 3d  le.xRollbackTo =
31e60 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
31e70 65 4d 65 74 68 6f 64 73 2e 78 52 6f 6c 6c 62 61  eMethods.xRollba
31e80 63 6b 54 6f 28 0d 0a 20 20 20 20 20 20 20 20 20  ckTo(..         
31e90 20 20 20 20 20 20 20 20 20 20 20 78 52 6f 6c 6c             xRoll
31ea0 62 61 63 6b 54 6f 29 3b 0d 0a 20 20 20 20 20 20  backTo);..      
31eb0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
31ec0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 61         return na
31ed0 74 69 76 65 4d 6f 64 75 6c 65 3b 0d 0a 20 20 20  tiveModule;..   
31ee0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
31ef0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
31f00 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
31f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
31f50 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
31f60 20 50 72 6f 74 65 63 74 65 64 20 4d 65 6d 62 65   Protected Membe
31f70 72 73 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  rs..        #reg
31f80 69 6f 6e 20 4d 6f 64 75 6c 65 20 48 65 6c 70 65  ion Module Helpe
31f90 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20  r Methods..     
31fa0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
31fb0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 47 65  ..        /// Ge
31fc0 74 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74  ts and returns t
31fd0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
31fe0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
31ff0 65 22 20 2f 3e 20 69 6e 74 65 72 66 61 63 65 0d  e" /> interface.
32000 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6d 70  .        /// imp
32010 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 74 6f 20 62  lementation to b
32020 65 20 75 73 65 64 20 77 68 65 6e 20 63 72 65 61  e used when crea
32030 74 69 6e 67 20 74 68 65 20 6e 61 74 69 76 65 20  ting the native 
32040 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 0d 0a  sqlite3_module..
32050 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75          /// stru
32060 63 74 75 72 65 2e 20 20 44 65 72 69 76 65 64 20  cture.  Derived 
32070 63 6c 61 73 73 65 73 20 6d 61 79 20 6f 76 65 72  classes may over
32080 72 69 64 65 20 74 68 69 73 20 6d 65 74 68 6f 64  ride this method
32090 20 74 6f 20 73 75 70 70 6c 79 20 61 6e 0d 0a 20   to supply an.. 
320a0 20 20 20 20 20 20 20 2f 2f 2f 20 61 6c 74 65 72         /// alter
320b0 6e 61 74 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74  nate implementat
320c0 69 6f 6e 20 66 6f 72 20 74 68 65 20 3c 73 65 65  ion for the <see
320d0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
320e0 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 0d 0a  tiveModule" />..
320f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65          /// inte
32100 72 66 61 63 65 2e 0d 0a 20 20 20 20 20 20 20 20  rface...        
32110 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
32120 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
32130 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
32140 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
32150 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
32160 6f 64 75 6c 65 22 20 2f 3e 20 69 6e 74 65 72 66  odule" /> interf
32170 61 63 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  ace implementati
32180 6f 6e 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f  on to..        /
32190 2f 2f 20 62 65 20 75 73 65 64 20 77 68 65 6e 20  // be used when 
321a0 70 6f 70 75 6c 61 74 69 6e 67 20 74 68 65 20 6e  populating the n
321b0 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 6d 6f  ative sqlite3_mo
321c0 64 75 6c 65 20 73 74 72 75 63 74 75 72 65 2e 20  dule structure. 
321d0 20 49 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   If..        ///
321e0 20 74 68 65 20 72 65 74 75 72 6e 65 64 20 76 61   the returned va
321f0 6c 75 65 20 69 73 20 6e 75 6c 6c 2c 20 74 68 65  lue is null, the
32200 20 70 72 69 76 61 74 65 20 6d 65 74 68 6f 64 73   private methods
32210 20 70 72 6f 76 69 64 65 64 20 62 79 20 74 68 65   provided by the
32220 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
32230 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d  ee cref="SQLiteM
32240 6f 64 75 6c 65 22 20 2f 3e 20 63 6c 61 73 73 20  odule" /> class 
32250 61 6e 64 20 72 65 6c 61 74 69 6e 67 20 74 6f 20  and relating to 
32260 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
32270 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
32280 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22  iteNativeModule"
32290 20 2f 3e 20 69 6e 74 65 72 66 61 63 65 20 20 77   /> interface  w
322a0 69 6c 6c 20 62 65 20 75 73 65 64 20 74 6f 0d 0a  ill be used to..
322b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 72 65 61          /// crea
322c0 74 65 20 74 68 65 20 6e 65 63 65 73 73 61 72 79  te the necessary
322d0 20 64 65 6c 65 67 61 74 65 73 2e 0d 0a 20 20 20   delegates...   
322e0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
322f0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f  ns>..        pro
32300 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 49  tected virtual I
32310 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
32320 6c 65 20 47 65 74 4e 61 74 69 76 65 4d 6f 64 75  le GetNativeModu
32330 6c 65 49 6d 70 6c 28 29 0d 0a 20 20 20 20 20 20  leImpl()..      
32340 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
32350 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 20 2f 2a   return null; /*
32360 20 4e 4f 54 45 3a 20 55 73 65 20 74 68 65 20 62   NOTE: Use the b
32370 75 69 6c 74 2d 69 6e 20 64 65 66 61 75 6c 74 20  uilt-in default 
32380 64 65 6c 65 67 61 74 65 73 2e 20 2a 2f 0d 0a 20  delegates. */.. 
32390 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
323a0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
323b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
323c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
323d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
323e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
323f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
32400 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
32410 2f 20 43 72 65 61 74 65 73 20 61 6e 64 20 72 65  / Creates and re
32420 74 75 72 6e 73 20 74 68 65 20 3c 73 65 65 20 63  turns the <see c
32430 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
32440 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 0d 0a 20 20  veModule" />..  
32450 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65 72 66        /// interf
32460 61 63 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  ace implementati
32470 6f 6e 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67  on corresponding
32480 20 74 6f 20 74 68 65 20 63 75 72 72 65 6e 74 0d   to the current.
32490 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
324a0 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f  e cref="SQLiteMo
324b0 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20  dule" /> object 
324c0 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20  instance...     
324d0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
324e0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
324f0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
32500 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
32510 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
32520 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 69 6e 74  veModule" /> int
32530 65 72 66 61 63 65 20 69 6d 70 6c 65 6d 65 6e 74  erface implement
32540 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 2f  ation..        /
32550 2f 2f 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67  // corresponding
32560 20 74 6f 20 74 68 65 20 63 75 72 72 65 6e 74 20   to the current 
32570 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
32580 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65  eModule" /> obje
32590 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ct..        /// 
325a0 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20  instance...     
325b0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
325c0 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65  >..        prote
325d0 63 74 65 64 20 76 69 72 74 75 61 6c 20 49 53 51  cted virtual ISQ
325e0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
325f0 20 43 72 65 61 74 65 4e 61 74 69 76 65 4d 6f 64   CreateNativeMod
32600 75 6c 65 49 6d 70 6c 28 29 0d 0a 20 20 20 20 20  uleImpl()..     
32610 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
32620 20 20 72 65 74 75 72 6e 20 6e 65 77 20 53 51 4c    return new SQL
32630 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 28  iteNativeModule(
32640 74 68 69 73 29 3b 0d 0a 20 20 20 20 20 20 20 20  this);..        
32650 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
32660 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
32670 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
32680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
326a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
326b0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
326c0 20 20 20 20 23 72 65 67 69 6f 6e 20 4e 61 74 69      #region Nati
326d0 76 65 20 54 61 62 6c 65 20 48 65 6c 70 65 72 20  ve Table Helper 
326e0 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20  Methods..       
326f0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
32700 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 6c 6c 6f          /// Allo
32710 63 61 74 65 73 20 61 20 6e 61 74 69 76 65 20 73  cates a native s
32720 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69  qlite3_vtab deri
32730 76 65 64 20 73 74 72 75 63 74 75 72 65 20 61 6e  ved structure an
32740 64 20 72 65 74 75 72 6e 73 20 61 0d 0a 20 20 20  d returns a..   
32750 20 20 20 20 20 2f 2f 2f 20 6e 61 74 69 76 65 20       /// native 
32760 70 6f 69 6e 74 65 72 20 74 6f 20 69 74 2e 0d 0a  pointer to it...
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 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
327a0 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 6e 61 74         /// A nat
327b0 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 61  ive pointer to a
327c0 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f   native sqlite3_
327d0 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74 72  vtab derived str
327e0 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ucture...       
327f0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
32800 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74  .        protect
32810 65 64 20 76 69 72 74 75 61 6c 20 49 6e 74 50 74  ed virtual IntPt
32820 72 20 41 6c 6c 6f 63 61 74 65 54 61 62 6c 65 28  r AllocateTable(
32830 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
32840 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 73 69            int si
32850 7a 65 20 3d 20 4d 61 72 73 68 61 6c 2e 53 69 7a  ze = Marshal.Siz
32860 65 4f 66 28 74 79 70 65 6f 66 28 0d 0a 20 20 20  eOf(typeof(..   
32870 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73               Uns
32880 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
32890 2e 73 71 6c 69 74 65 33 5f 76 74 61 62 29 29 3b  .sqlite3_vtab));
328a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
328b0 72 65 74 75 72 6e 20 53 51 4c 69 74 65 4d 65 6d  return SQLiteMem
328c0 6f 72 79 2e 41 6c 6c 6f 63 61 74 65 28 73 69 7a  ory.Allocate(siz
328d0 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  e);..        }..
328e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
328f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32930 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
32940 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
32950 20 20 20 20 2f 2f 2f 20 5a 65 72 6f 73 20 6f 75      /// Zeros ou
32960 74 20 74 68 65 20 66 69 65 6c 64 73 20 6f 66 20  t the fields of 
32970 61 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33  a native sqlite3
32980 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74  _vtab derived st
32990 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  ructure...      
329a0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
329b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
329c0 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62  aram name="pVtab
329d0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
329e0 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  The native point
329f0 65 72 20 74 6f 20 74 68 65 20 6e 61 74 69 76 65  er to the native
32a00 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65   sqlite3_vtab de
32a10 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65 20  rived structure 
32a20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  to..        /// 
32a30 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 20 20 2f  zero...        /
32a40 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
32a50 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 76       protected v
32a60 69 72 74 75 61 6c 20 76 6f 69 64 20 5a 65 72 6f  irtual void Zero
32a70 54 61 62 6c 65 28 0d 0a 20 20 20 20 20 20 20 20  Table(..        
32a80 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
32a90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
32aa0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
32ab0 20 20 20 20 20 20 20 20 69 66 20 28 70 56 74 61          if (pVta
32ac0 62 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  b == IntPtr.Zero
32ad0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
32ae0 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20     return;....  
32af0 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66            int of
32b00 66 73 65 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20  fset = 0;....   
32b10 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d           SQLiteM
32b20 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 50  arshal.WriteIntP
32b30 74 72 28 70 56 74 61 62 2c 20 6f 66 66 73 65 74  tr(pVtab, offset
32b40 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  , IntPtr.Zero);.
32b50 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f  ...            o
32b60 66 66 73 65 74 20 2b 3d 20 49 6e 74 50 74 72 2e  ffset += IntPtr.
32b70 53 69 7a 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Size;....       
32b80 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68       SQLiteMarsh
32b90 61 6c 2e 57 72 69 74 65 49 6e 74 33 32 28 70 56  al.WriteInt32(pV
32ba0 74 61 62 2c 20 6f 66 66 73 65 74 2c 20 30 29 3b  tab, offset, 0);
32bb0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
32bc0 6f 66 66 73 65 74 20 2b 3d 20 73 69 7a 65 6f 66  offset += sizeof
32bd0 28 69 6e 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  (int);....      
32be0 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73        SQLiteMars
32bf0 68 61 6c 2e 57 72 69 74 65 49 6e 74 50 74 72 28  hal.WriteIntPtr(
32c00 70 56 74 61 62 2c 20 6f 66 66 73 65 74 2c 20 49  pVtab, offset, I
32c10 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20 20  ntPtr.Zero);..  
32c20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
32c30 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
32c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
32c80 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
32c90 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
32ca0 20 46 72 65 65 73 20 61 20 6e 61 74 69 76 65 20   Frees a native 
32cb0 73 71 6c 69 74 65 33 5f 76 74 61 62 20 73 74 72  sqlite3_vtab str
32cc0 75 63 74 75 72 65 20 75 73 69 6e 67 20 74 68 65  ucture using the
32cd0 20 70 72 6f 76 69 64 65 64 20 6e 61 74 69 76 65   provided native
32ce0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 6f  ..        /// po
32cf0 69 6e 74 65 72 20 74 6f 20 69 74 2e 0d 0a 20 20  inter to it...  
32d00 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
32d10 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
32d20 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
32d30 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
32d40 2f 2f 2f 20 41 20 6e 61 74 69 76 65 20 70 6f 69  /// A native poi
32d50 6e 74 65 72 20 74 6f 20 61 20 6e 61 74 69 76 65  nter to a native
32d60 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65   sqlite3_vtab de
32d70 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2e  rived structure.
32d80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
32d90 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
32da0 70 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61  protected virtua
32db0 6c 20 76 6f 69 64 20 46 72 65 65 54 61 62 6c 65  l void FreeTable
32dc0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  (..            I
32dd0 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20  ntPtr pVtab..   
32de0 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
32df0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
32e00 20 20 20 53 65 74 54 61 62 6c 65 45 72 72 6f 72     SetTableError
32e10 28 70 56 74 61 62 2c 20 6e 75 6c 6c 29 3b 0d 0a  (pVtab, null);..
32e20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
32e30 74 65 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70 56  teMemory.Free(pV
32e40 74 61 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  tab);..        }
32e50 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
32e60 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
32e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32eb0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
32ec0 20 20 20 23 72 65 67 69 6f 6e 20 4e 61 74 69 76     #region Nativ
32ed0 65 20 43 75 72 73 6f 72 20 48 65 6c 70 65 72 20  e Cursor Helper 
32ee0 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20  Methods..       
32ef0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
32f00 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 6c 6c 6f          /// Allo
32f10 63 61 74 65 73 20 61 20 6e 61 74 69 76 65 20 73  cates a native s
32f20 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73  qlite3_vtab_curs
32f30 6f 72 20 64 65 72 69 76 65 64 20 73 74 72 75 63  or derived struc
32f40 74 75 72 65 20 61 6e 64 0d 0a 20 20 20 20 20 20  ture and..      
32f50 20 20 2f 2f 2f 20 72 65 74 75 72 6e 73 20 61 20    /// returns a 
32f60 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
32f70 6f 20 69 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f  o it...        /
32f80 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
32f90 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
32fa0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
32fb0 2f 20 41 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  / A native point
32fc0 65 72 20 74 6f 20 61 20 6e 61 74 69 76 65 20 73  er to a native s
32fd0 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73  qlite3_vtab_curs
32fe0 6f 72 20 64 65 72 69 76 65 64 20 73 74 72 75 63  or derived struc
32ff0 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ture...        /
33000 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
33010 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64         protected
33020 20 76 69 72 74 75 61 6c 20 49 6e 74 50 74 72 20   virtual IntPtr 
33030 41 6c 6c 6f 63 61 74 65 43 75 72 73 6f 72 28 29  AllocateCursor()
33040 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
33050 20 20 20 20 20 20 20 20 20 69 6e 74 20 73 69 7a           int siz
33060 65 20 3d 20 4d 61 72 73 68 61 6c 2e 53 69 7a 65  e = Marshal.Size
33070 4f 66 28 74 79 70 65 6f 66 28 0d 0a 20 20 20 20  Of(typeof(..    
33080 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
33090 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
330a0 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72  sqlite3_vtab_cur
330b0 73 6f 72 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  sor));....      
330c0 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c        return SQL
330d0 69 74 65 4d 65 6d 6f 72 79 2e 41 6c 6c 6f 63 61  iteMemory.Alloca
330e0 74 65 28 73 69 7a 65 29 3b 0d 0a 20 20 20 20 20  te(size);..     
330f0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
33100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33140 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
33150 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
33160 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 46 72  ..        /// Fr
33170 65 65 73 20 61 20 6e 61 74 69 76 65 20 73 71 6c  ees a native sql
33180 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72  ite3_vtab_cursor
33190 20 73 74 72 75 63 74 75 72 65 20 75 73 69 6e 67   structure using
331a0 20 74 68 65 20 70 72 6f 76 69 64 65 64 0d 0a 20   the provided.. 
331b0 20 20 20 20 20 20 20 2f 2f 2f 20 6e 61 74 69 76         /// nativ
331c0 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 69 74 2e  e pointer to it.
331d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
331e0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
331f0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
33200 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20  e="pCursor">..  
33210 20 20 20 20 20 20 2f 2f 2f 20 41 20 6e 61 74 69        /// A nati
33220 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20  ve pointer to a 
33230 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76  native sqlite3_v
33240 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69 76  tab_cursor deriv
33250 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  ed structure... 
33260 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
33270 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f  am>..        pro
33280 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 76  tected virtual v
33290 6f 69 64 20 46 72 65 65 43 75 72 73 6f 72 28 0d  oid FreeCursor(.
332a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
332b0 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20  Ptr pCursor..   
332c0 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
332d0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
332e0 20 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e     SQLiteMemory.
332f0 46 72 65 65 28 70 43 75 72 73 6f 72 29 3b 0d 0a  Free(pCursor);..
33300 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
33310 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
33320 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
33330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33370 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
33380 69 6f 6e 20 53 74 61 74 69 63 20 54 61 62 6c 65  ion Static Table
33390 20 4c 6f 6f 6b 75 70 20 4d 65 74 68 6f 64 73 0d   Lookup Methods.
333a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
333b0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
333c0 2f 2f 2f 20 52 65 61 64 73 20 61 6e 64 20 72 65  /// Reads and re
333d0 74 75 72 6e 73 20 74 68 65 20 6e 61 74 69 76 65  turns the native
333e0 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
333f0 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72  sqlite3_vtab der
33400 69 76 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ived..        //
33410 2f 20 73 74 72 75 63 74 75 72 65 20 62 61 73 65  / structure base
33420 64 20 6f 6e 20 74 68 65 20 6e 61 74 69 76 65 20  d on the native 
33430 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73  pointer to the s
33440 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73  qlite3_vtab_curs
33450 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  or..        /// 
33460 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72  derived structur
33470 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
33480 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
33490 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
334a0 61 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20  ame="module">.. 
334b0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
334c0 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
334d0 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63  Module" /> objec
334e0 74 20 69 6e 73 74 61 6e 63 65 20 74 6f 20 62 65  t instance to be
334f0 20 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20   used...        
33500 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
33510 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
33520 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e   name="pCursor">
33530 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
33540 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
33550 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
33560 76 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69  vtab_cursor deri
33570 76 65 64 20 73 74 72 75 63 74 75 72 65 0d 0a 20  ved structure.. 
33580 20 20 20 20 20 20 20 2f 2f 2f 20 66 72 6f 6d 20         /// from 
33590 77 68 69 63 68 20 74 6f 20 72 65 61 64 20 74 68  which to read th
335a0 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
335b0 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
335c0 76 74 61 62 20 64 65 72 69 76 65 64 0d 0a 20 20  vtab derived..  
335d0 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74        /// struct
335e0 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
335f0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
33600 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
33610 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
33620 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
33630 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33  r to the sqlite3
33640 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74  _vtab derived st
33650 72 75 63 74 75 72 65 20 2d 4f 52 2d 0d 0a 20 20  ructure -OR-..  
33660 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
33670 72 65 66 3d 22 49 6e 74 50 74 72 2e 5a 65 72 6f  ref="IntPtr.Zero
33680 22 2f 3e 20 69 66 20 69 74 20 63 61 6e 6e 6f 74  "/> if it cannot
33690 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d   be determined..
336a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
336b0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
336c0 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
336d0 49 6e 74 50 74 72 20 54 61 62 6c 65 46 72 6f 6d  IntPtr TableFrom
336e0 43 75 72 73 6f 72 28 0d 0a 20 20 20 20 20 20 20  Cursor(..       
336f0 20 20 20 20 20 53 51 4c 69 74 65 4d 6f 64 75 6c       SQLiteModul
33700 65 20 6d 6f 64 75 6c 65 2c 0d 0a 20 20 20 20 20  e module,..     
33710 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
33720 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20  ursor..         
33730 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
33740 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
33750 28 70 43 75 72 73 6f 72 20 3d 3d 20 49 6e 74 50  (pCursor == IntP
33760 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
33770 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
33780 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d   IntPtr.Zero;...
33790 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
337a0 75 72 6e 20 4d 61 72 73 68 61 6c 2e 52 65 61 64  urn Marshal.Read
337b0 49 6e 74 50 74 72 28 70 43 75 72 73 6f 72 29 3b  IntPtr(pCursor);
337c0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
337d0 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
337e0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
337f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33830 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
33840 65 67 69 6f 6e 20 54 61 62 6c 65 20 4c 6f 6f 6b  egion Table Look
33850 75 70 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20  up Methods..    
33860 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
33870 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52  >..        /// R
33880 65 61 64 73 20 61 6e 64 20 72 65 74 75 72 6e 73  eads and returns
33890 20 74 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e   the native poin
338a0 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74  ter to the sqlit
338b0 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 0d  e3_vtab derived.
338c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72  .        /// str
338d0 75 63 74 75 72 65 20 62 61 73 65 64 20 6f 6e 20  ucture based on 
338e0 74 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  the native point
338f0 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65  er to the sqlite
33900 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 0d 0a 20  3_vtab_cursor.. 
33910 20 20 20 20 20 20 20 2f 2f 2f 20 64 65 72 69 76         /// deriv
33920 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  ed structure... 
33930 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
33940 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
33950 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
33960 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20  pCursor">..     
33970 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
33980 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
33990 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75   sqlite3_vtab_cu
339a0 72 73 6f 72 20 64 65 72 69 76 65 64 20 73 74 72  rsor derived str
339b0 75 63 74 75 72 65 0d 0a 20 20 20 20 20 20 20 20  ucture..        
339c0 2f 2f 2f 20 66 72 6f 6d 20 77 68 69 63 68 20 74  /// from which t
339d0 6f 20 72 65 61 64 20 74 68 65 20 6e 61 74 69 76  o read the nativ
339e0 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
339f0 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65   sqlite3_vtab de
33a00 72 69 76 65 64 0d 0a 20 20 20 20 20 20 20 20 2f  rived..        /
33a10 2f 2f 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  // structure... 
33a20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
33a30 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
33a40 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
33a50 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
33a60 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
33a70 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64  e sqlite3_vtab d
33a80 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65  erived structure
33a90 20 2d 4f 52 2d 0d 0a 20 20 20 20 20 20 20 20 2f   -OR-..        /
33aa0 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  // <see cref="In
33ab0 74 50 74 72 2e 5a 65 72 6f 22 2f 3e 20 69 66 20  tPtr.Zero"/> if 
33ac0 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74  it cannot be det
33ad0 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20  ermined...      
33ae0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
33af0 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63  ..        protec
33b00 74 65 64 20 76 69 72 74 75 61 6c 20 49 6e 74 50  ted virtual IntP
33b10 74 72 20 54 61 62 6c 65 46 72 6f 6d 43 75 72 73  tr TableFromCurs
33b20 6f 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  or(..           
33b30 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d   IntPtr pCursor.
33b40 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
33b50 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
33b60 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 61         return Ta
33b70 62 6c 65 46 72 6f 6d 43 75 72 73 6f 72 28 74 68  bleFromCursor(th
33b80 69 73 2c 20 70 43 75 72 73 6f 72 29 3b 0d 0a 20  is, pCursor);.. 
33b90 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
33ba0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
33bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
33bf0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
33c00 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
33c10 2f 20 4c 6f 6f 6b 73 20 75 70 20 61 6e 64 20 72  / Looks up and r
33c20 65 74 75 72 6e 73 20 74 68 65 20 3c 73 65 65 20  eturns the <see 
33c30 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74  cref="SQLiteVirt
33c40 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a  ualTable" /> obj
33c50 65 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ect..        ///
33c60 20 69 6e 73 74 61 6e 63 65 20 62 61 73 65 64 20   instance based 
33c70 6f 6e 20 74 68 65 20 6e 61 74 69 76 65 20 70 6f  on the native po
33c80 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c  inter to the sql
33c90 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65  ite3_vtab derive
33ca0 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  d..        /// s
33cb0 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20  tructure...     
33cc0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
33cd0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
33ce0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61  param name="pVta
33cf0 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  b">..        ///
33d00 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e   The native poin
33d10 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74  ter to the sqlit
33d20 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 20  e3_vtab derived 
33d30 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20  structure...    
33d40 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
33d50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
33d60 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
33d70 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
33d80 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61  ef="SQLiteVirtua
33d90 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63  lTable" /> objec
33da0 74 20 69 6e 73 74 61 6e 63 65 20 6f 72 20 6e 75  t instance or nu
33db0 6c 6c 20 69 66 0d 0a 20 20 20 20 20 20 20 20 2f  ll if..        /
33dc0 2f 2f 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e  // the correspon
33dd0 64 69 6e 67 20 6f 6e 65 20 63 61 6e 6e 6f 74 20  ding one cannot 
33de0 62 65 20 66 6f 75 6e 64 2e 0d 0a 20 20 20 20 20  be found...     
33df0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
33e00 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65  >..        prote
33e10 63 74 65 64 20 76 69 72 74 75 61 6c 20 53 51 4c  cted virtual SQL
33e20 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20  iteVirtualTable 
33e30 54 61 62 6c 65 46 72 6f 6d 49 6e 74 50 74 72 28  TableFromIntPtr(
33e40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
33e50 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20  tPtr pVtab..    
33e60 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
33e70 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
33e80 20 20 69 66 20 28 70 56 74 61 62 20 3d 3d 20 49    if (pVtab == I
33e90 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
33ea0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
33eb0 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 54              SetT
33ec0 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 2c  ableError(pVtab,
33ed0 20 22 69 6e 76 61 6c 69 64 20 6e 61 74 69 76 65   "invalid native
33ee0 20 74 61 62 6c 65 22 29 3b 0d 0a 20 20 20 20 20   table");..     
33ef0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
33f00 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  n null;..       
33f10 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
33f20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74        SQLiteVirt
33f30 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 3b 0d  ualTable table;.
33f40 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
33f50 66 20 28 28 74 61 62 6c 65 73 20 21 3d 20 6e 75  f ((tables != nu
33f60 6c 6c 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20  ll) &&..        
33f70 20 20 20 20 20 20 20 20 74 61 62 6c 65 73 2e 54          tables.T
33f80 72 79 47 65 74 56 61 6c 75 65 28 70 56 74 61 62  ryGetValue(pVtab
33f90 2c 20 6f 75 74 20 74 61 62 6c 65 29 29 0d 0a 20  , out table)).. 
33fa0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
33fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
33fc0 74 75 72 6e 20 74 61 62 6c 65 3b 0d 0a 20 20 20  turn table;..   
33fd0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
33fe0 20 20 20 20 20 20 20 20 20 20 53 65 74 54 61 62            SetTab
33ff0 6c 65 45 72 72 6f 72 28 70 56 74 61 62 2c 20 53  leError(pVtab, S
34000 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20  tring.Format(.. 
34010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
34020 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65  ultureInfo.Curre
34030 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20  ntCulture,..    
34040 20 20 20 20 20 20 20 20 20 20 20 20 22 6d 61 6e              "man
34050 61 67 65 64 20 74 61 62 6c 65 20 66 6f 72 20 7b  aged table for {
34060 30 7d 20 6e 6f 74 20 66 6f 75 6e 64 22 2c 20 70  0} not found", p
34070 56 74 61 62 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  Vtab));....     
34080 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
34090 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ll;..        }..
340a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
340b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
340c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
340d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
340e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
340f0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
34100 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
34110 20 20 20 20 2f 2f 2f 20 41 6c 6c 6f 63 61 74 65      /// Allocate
34120 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 61 20  s and returns a 
34130 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
34140 6f 20 61 20 73 71 6c 69 74 65 33 5f 76 74 61 62  o a sqlite3_vtab
34150 20 64 65 72 69 76 65 64 0d 0a 20 20 20 20 20 20   derived..      
34160 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 20    /// structure 
34170 61 6e 64 20 63 72 65 61 74 65 73 20 61 6e 20 61  and creates an a
34180 73 73 6f 63 69 61 74 69 6f 6e 20 62 65 74 77 65  ssociation betwe
34190 65 6e 20 69 74 20 61 6e 64 20 74 68 65 20 73 70  en it and the sp
341a0 65 63 69 66 69 65 64 0d 0a 20 20 20 20 20 20 20  ecified..       
341b0 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
341c0 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
341d0 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  le" /> object in
341e0 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20  stance...       
341f0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
34200 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
34210 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22  ram name="table"
34220 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
34230 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
34240 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
34250 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
34260 61 6e 63 65 20 74 6f 20 62 65 20 75 73 65 64 0d  ance to be used.
34270 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 68 65  .        /// whe
34280 6e 20 63 72 65 61 74 69 6e 67 20 74 68 65 20 61  n creating the a
34290 73 73 6f 63 69 61 74 69 6f 6e 2e 0d 0a 20 20 20  ssociation...   
342a0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
342b0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
342c0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
342d0 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
342e0 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 73 71   pointer to a sq
342f0 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76  lite3_vtab deriv
34300 65 64 20 73 74 72 75 63 74 75 72 65 20 6f 72 0d  ed structure or.
34310 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
34320 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 2e 5a  e cref="IntPtr.Z
34330 65 72 6f 22 2f 3e 20 69 66 20 74 68 65 20 6d 65  ero"/> if the me
34340 74 68 6f 64 20 66 61 69 6c 73 20 66 6f 72 20 61  thod fails for a
34350 6e 79 20 72 65 61 73 6f 6e 2e 0d 0a 20 20 20 20  ny reason...    
34360 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
34370 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74  s>..        prot
34380 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 49 6e  ected virtual In
34390 74 50 74 72 20 54 61 62 6c 65 54 6f 49 6e 74 50  tPtr TableToIntP
343a0 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tr(..           
343b0 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
343c0 62 6c 65 20 74 61 62 6c 65 0d 0a 20 20 20 20 20  ble table..     
343d0 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
343e0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
343f0 20 69 66 20 28 28 74 61 62 6c 65 20 3d 3d 20 6e   if ((table == n
34400 75 6c 6c 29 20 7c 7c 20 28 74 61 62 6c 65 73 20  ull) || (tables 
34410 3d 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20  == null))..     
34420 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
34430 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  n IntPtr.Zero;..
34440 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
34450 74 50 74 72 20 70 56 74 61 62 20 3d 20 49 6e 74  tPtr pVtab = Int
34460 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20  Ptr.Zero;..     
34470 20 20 20 20 20 20 20 62 6f 6f 6c 20 73 75 63 63         bool succ
34480 65 73 73 20 3d 20 66 61 6c 73 65 3b 0d 0a 0d 0a  ess = false;....
34490 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
344a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
344b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
344c0 70 56 74 61 62 20 3d 20 41 6c 6c 6f 63 61 74 65  pVtab = Allocate
344d0 54 61 62 6c 65 28 29 3b 0d 0a 0d 0a 20 20 20 20  Table();....    
344e0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
344f0 70 56 74 61 62 20 21 3d 20 49 6e 74 50 74 72 2e  pVtab != IntPtr.
34500 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
34510 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
34520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5a 65                Ze
34530 72 6f 54 61 62 6c 65 28 70 56 74 61 62 29 3b 0d  roTable(pVtab);.
34540 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
34550 20 20 20 20 20 74 61 62 6c 65 2e 4e 61 74 69 76       table.Nativ
34560 65 48 61 6e 64 6c 65 20 3d 20 70 56 74 61 62 3b  eHandle = pVtab;
34570 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
34580 20 20 20 20 20 20 74 61 62 6c 65 73 2e 41 64 64        tables.Add
34590 28 70 56 74 61 62 2c 20 74 61 62 6c 65 29 3b 0d  (pVtab, table);.
345a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
345b0 20 20 20 20 20 73 75 63 63 65 73 73 20 3d 20 74       success = t
345c0 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
345d0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
345e0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
345f0 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20      finally..   
34600 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
34610 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
34620 21 73 75 63 63 65 73 73 20 26 26 20 28 70 56 74  !success && (pVt
34630 61 62 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  ab != IntPtr.Zer
34640 6f 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  o))..           
34650 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
34660 20 20 20 20 20 20 20 20 20 20 20 20 46 72 65 65              Free
34670 54 61 62 6c 65 28 70 56 74 61 62 29 3b 0d 0a 20  Table(pVtab);.. 
34680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34690 20 20 20 70 56 74 61 62 20 3d 20 49 6e 74 50 74     pVtab = IntPt
346a0 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20  r.Zero;..       
346b0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
346c0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
346d0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
346e0 70 56 74 61 62 3b 0d 0a 20 20 20 20 20 20 20 20  pVtab;..        
346f0 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
34700 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
34710 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
34720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34750 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
34760 20 20 20 20 23 72 65 67 69 6f 6e 20 43 75 72 73      #region Curs
34770 6f 72 20 4c 6f 6f 6b 75 70 20 4d 65 74 68 6f 64  or Lookup Method
34780 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
34790 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
347a0 20 20 2f 2f 2f 20 4c 6f 6f 6b 73 20 75 70 20 61    /// Looks up a
347b0 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 3c  nd returns the <
347c0 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
347d0 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73  VirtualTableCurs
347e0 6f 72 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20  or" />..        
347f0 2f 2f 2f 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  /// object insta
34800 6e 63 65 20 62 61 73 65 64 20 6f 6e 20 74 68 65  nce based on the
34810 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
34820 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
34830 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 76 74 61 62  /// sqlite3_vtab
34840 5f 63 75 72 73 6f 72 20 64 65 72 69 76 65 64 20  _cursor derived 
34850 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20  structure...    
34860 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
34870 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
34880 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74  <param name="pVt
34890 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ab">..        //
348a0 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69  / The native poi
348b0 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69  nter to the sqli
348c0 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64  te3_vtab derived
348d0 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
348e0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
348f0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
34900 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72  param name="pCur
34910 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  sor">..        /
34920 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f  // The native po
34930 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c  inter to the sql
34940 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72  ite3_vtab_cursor
34950 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75   derived structu
34960 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
34970 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
34980 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
34990 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
349a0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
349b0 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43  iteVirtualTableC
349c0 75 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65 63 74  ursor" /> object
349d0 20 69 6e 73 74 61 6e 63 65 20 6f 72 20 6e 75 6c   instance or nul
349e0 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  l..        /// i
349f0 66 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e 64  f the correspond
34a00 69 6e 67 20 6f 6e 65 20 63 61 6e 6e 6f 74 20 62  ing one cannot b
34a10 65 20 66 6f 75 6e 64 2e 0d 0a 20 20 20 20 20 20  e found...      
34a20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
34a30 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63  ..        protec
34a40 74 65 64 20 76 69 72 74 75 61 6c 20 53 51 4c 69  ted virtual SQLi
34a50 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75  teVirtualTableCu
34a60 72 73 6f 72 20 43 75 72 73 6f 72 46 72 6f 6d 49  rsor CursorFromI
34a70 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20  ntPtr(..        
34a80 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
34a90 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  ,..            I
34aa0 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20  ntPtr pCursor.. 
34ab0 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
34ac0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
34ad0 20 20 20 20 20 69 66 20 28 70 43 75 72 73 6f 72       if (pCursor
34ae0 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
34af0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
34b00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
34b10 20 53 65 74 54 61 62 6c 65 45 72 72 6f 72 28 70   SetTableError(p
34b20 56 74 61 62 2c 20 22 69 6e 76 61 6c 69 64 20 6e  Vtab, "invalid n
34b30 61 74 69 76 65 20 63 75 72 73 6f 72 22 29 3b 0d  ative cursor");.
34b40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
34b50 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20   return null;.. 
34b60 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
34b70 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
34b80 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75  teVirtualTableCu
34b90 72 73 6f 72 20 63 75 72 73 6f 72 3b 0d 0a 0d 0a  rsor cursor;....
34ba0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
34bb0 28 63 75 72 73 6f 72 73 20 21 3d 20 6e 75 6c 6c  (cursors != null
34bc0 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20  ) &&..          
34bd0 20 20 20 20 20 20 63 75 72 73 6f 72 73 2e 54 72        cursors.Tr
34be0 79 47 65 74 56 61 6c 75 65 28 70 43 75 72 73 6f  yGetValue(pCurso
34bf0 72 2c 20 6f 75 74 20 63 75 72 73 6f 72 29 29 0d  r, out cursor)).
34c00 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
34c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34c20 72 65 74 75 72 6e 20 63 75 72 73 6f 72 3b 0d 0a  return cursor;..
34c30 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
34c40 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74  .            Set
34c50 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62  TableError(pVtab
34c60 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  , String.Format(
34c70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
34c80 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
34c90 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  rrentCulture,.. 
34ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
34cb0 6d 61 6e 61 67 65 64 20 63 75 72 73 6f 72 20 66  managed cursor f
34cc0 6f 72 20 7b 30 7d 20 6e 6f 74 20 66 6f 75 6e 64  or {0} not found
34cd0 22 2c 20 70 43 75 72 73 6f 72 29 29 3b 0d 0a 0d  ", pCursor));...
34ce0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
34cf0 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
34d00 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
34d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34d50 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
34d60 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
34d70 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 6c  ..        /// Al
34d80 6c 6f 63 61 74 65 73 20 61 6e 64 20 72 65 74 75  locates and retu
34d90 72 6e 73 20 61 20 6e 61 74 69 76 65 20 70 6f 69  rns a native poi
34da0 6e 74 65 72 20 74 6f 20 61 20 73 71 6c 69 74 65  nter to a sqlite
34db0 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 0d 0a 20  3_vtab_cursor.. 
34dc0 20 20 20 20 20 20 20 2f 2f 2f 20 64 65 72 69 76         /// deriv
34dd0 65 64 20 73 74 72 75 63 74 75 72 65 20 61 6e 64  ed structure and
34de0 20 63 72 65 61 74 65 73 20 61 6e 20 61 73 73 6f   creates an asso
34df0 63 69 61 74 69 6f 6e 20 62 65 74 77 65 65 6e 20  ciation between 
34e00 69 74 20 61 6e 64 20 74 68 65 0d 0a 20 20 20 20  it and the..    
34e10 20 20 20 20 2f 2f 2f 20 73 70 65 63 69 66 69 65      /// specifie
34e20 64 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  d <see cref="SQL
34e30 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43  iteVirtualTableC
34e40 75 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65 63 74  ursor" /> object
34e50 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20   instance...    
34e60 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
34e70 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
34e80 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 75 72  <param name="cur
34e90 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  sor">..        /
34ea0 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
34eb0 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  ="SQLiteVirtualT
34ec0 61 62 6c 65 43 75 72 73 6f 72 22 20 2f 3e 20 6f  ableCursor" /> o
34ed0 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 74  bject instance t
34ee0 6f 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  o be..        //
34ef0 2f 20 75 73 65 64 20 77 68 65 6e 20 63 72 65 61  / used when crea
34f00 74 69 6e 67 20 74 68 65 20 61 73 73 6f 63 69 61  ting the associa
34f10 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  tion...        /
34f20 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
34f30 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
34f40 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
34f50 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  The native point
34f60 65 72 20 74 6f 20 61 20 73 71 6c 69 74 65 33 5f  er to a sqlite3_
34f70 76 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69  vtab_cursor deri
34f80 76 65 64 20 73 74 72 75 63 74 75 72 65 20 6f 72  ved structure or
34f90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
34fa0 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 2e  ee cref="IntPtr.
34fb0 5a 65 72 6f 22 2f 3e 20 69 66 20 74 68 65 20 6d  Zero"/> if the m
34fc0 65 74 68 6f 64 20 66 61 69 6c 73 20 66 6f 72 20  ethod fails for 
34fd0 61 6e 79 20 72 65 61 73 6f 6e 2e 0d 0a 20 20 20  any reason...   
34fe0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
34ff0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f  ns>..        pro
35000 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 49  tected virtual I
35010 6e 74 50 74 72 20 43 75 72 73 6f 72 54 6f 49 6e  ntPtr CursorToIn
35020 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20  tPtr(..         
35030 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c     SQLiteVirtual
35040 54 61 62 6c 65 43 75 72 73 6f 72 20 63 75 72 73  TableCursor curs
35050 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  or..            
35060 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
35070 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28 63            if ((c
35080 75 72 73 6f 72 20 3d 3d 20 6e 75 6c 6c 29 20 7c  ursor == null) |
35090 7c 20 28 63 75 72 73 6f 72 73 20 3d 3d 20 6e 75  | (cursors == nu
350a0 6c 6c 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ll))..          
350b0 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74        return Int
350c0 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20  Ptr.Zero;....   
350d0 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
350e0 70 43 75 72 73 6f 72 20 3d 20 49 6e 74 50 74 72  pCursor = IntPtr
350f0 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20  .Zero;..        
35100 20 20 20 20 62 6f 6f 6c 20 73 75 63 63 65 73 73      bool success
35110 20 3d 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20   = false;....   
35120 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
35130 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
35140 20 20 20 20 20 20 20 20 20 20 20 20 20 70 43 75               pCu
35150 72 73 6f 72 20 3d 20 41 6c 6c 6f 63 61 74 65 43  rsor = AllocateC
35160 75 72 73 6f 72 28 29 3b 0d 0a 0d 0a 20 20 20 20  ursor();....    
35170 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
35180 70 43 75 72 73 6f 72 20 21 3d 20 49 6e 74 50 74  pCursor != IntPt
35190 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
351a0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
351b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
351c0 63 75 72 73 6f 72 2e 4e 61 74 69 76 65 48 61 6e  cursor.NativeHan
351d0 64 6c 65 20 3d 20 70 43 75 72 73 6f 72 3b 0d 0a  dle = pCursor;..
351e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
351f0 20 20 20 20 63 75 72 73 6f 72 73 2e 41 64 64 28      cursors.Add(
35200 70 43 75 72 73 6f 72 2c 20 63 75 72 73 6f 72 29  pCursor, cursor)
35210 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
35220 20 20 20 20 20 20 20 73 75 63 63 65 73 73 20 3d         success =
35230 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
35240 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
35250 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
35260 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20        finally.. 
35270 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
35280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
35290 20 28 21 73 75 63 63 65 73 73 20 26 26 20 28 70   (!success && (p
352a0 43 75 72 73 6f 72 20 21 3d 20 49 6e 74 50 74 72  Cursor != IntPtr
352b0 2e 5a 65 72 6f 29 29 0d 0a 20 20 20 20 20 20 20  .Zero))..       
352c0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
352d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
352e0 46 72 65 65 43 75 72 73 6f 72 28 70 43 75 72 73  FreeCursor(pCurs
352f0 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  or);..          
35300 20 20 20 20 20 20 20 20 20 20 70 43 75 72 73 6f            pCurso
35310 72 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  r = IntPtr.Zero;
35320 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
35330 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
35340 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
35350 20 20 72 65 74 75 72 6e 20 70 43 75 72 73 6f 72    return pCursor
35360 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
35370 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
35380 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
35390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
353a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
353b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
353c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
353d0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
353e0 72 65 67 69 6f 6e 20 54 61 62 6c 65 20 44 65 63  region Table Dec
353f0 6c 61 72 61 74 69 6f 6e 20 48 65 6c 70 65 72 20  laration Helper 
35400 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20  Methods..       
35410 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
35420 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65          /// Atte
35430 6d 70 74 73 20 74 6f 20 64 65 63 6c 61 72 65 20  mpts to declare 
35440 74 68 65 20 73 63 68 65 6d 61 20 66 6f 72 20 74  the schema for t
35450 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
35460 20 75 73 69 6e 67 20 74 68 65 0d 0a 20 20 20 20   using the..    
35470 20 20 20 20 2f 2f 2f 20 73 70 65 63 69 66 69 65      /// specifie
35480 64 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  d database conne
35490 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ction...        
354a0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
354b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
354c0 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63 74  am name="connect
354d0 69 6f 6e 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ion">..        /
354e0 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
354f0 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  ="SQLiteConnecti
35500 6f 6e 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  on" /> object in
35510 73 74 61 6e 63 65 20 74 6f 20 75 73 65 20 77 68  stance to use wh
35520 65 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  en..        /// 
35530 64 65 63 6c 61 72 69 6e 67 20 74 68 65 20 73 63  declaring the sc
35540 68 65 6d 61 20 6f 66 20 74 68 65 20 76 69 72 74  hema of the virt
35550 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
35560 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
35570 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
35580 61 72 61 6d 20 6e 61 6d 65 3d 22 73 71 6c 22 3e  aram name="sql">
35590 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
355a0 65 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e  e string contain
355b0 69 6e 67 20 74 68 65 20 43 52 45 41 54 45 20 54  ing the CREATE T
355c0 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 20 74  ABLE statement t
355d0 68 61 74 20 63 6f 6d 70 6c 65 74 65 6c 79 0d 0a  hat completely..
355e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 65 73 63          /// desc
355f0 72 69 62 65 73 20 74 68 65 20 73 63 68 65 6d 61  ribes the schema
35600 20 66 6f 72 20 74 68 65 20 76 69 72 74 75 61 6c   for the virtual
35610 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20   table...       
35620 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
35630 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
35640 6d 20 6e 61 6d 65 3d 22 65 72 72 6f 72 22 3e 0d  m name="error">.
35650 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f  .        /// Upo
35660 6e 20 66 61 69 6c 75 72 65 2c 20 74 68 69 73 20  n failure, this 
35670 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62  parameter must b
35680 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f  e modified to co
35690 6e 74 61 69 6e 20 61 6e 20 65 72 72 6f 72 0d 0a  ntain an error..
356a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 73 73          /// mess
356b0 61 67 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  age...        //
356c0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
356d0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
356e0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
356f0 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
35700 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
35710 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
35720 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
35730 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c  rotected virtual
35740 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
35750 20 44 65 63 6c 61 72 65 54 61 62 6c 65 28 0d 0a   DeclareTable(..
35760 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
35770 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e  teConnection con
35780 6e 65 63 74 69 6f 6e 2c 0d 0a 20 20 20 20 20 20  nection,..      
35790 20 20 20 20 20 20 73 74 72 69 6e 67 20 73 71 6c        string sql
357a0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ,..            r
357b0 65 66 20 73 74 72 69 6e 67 20 65 72 72 6f 72 0d  ef string error.
357c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
357d0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
357e0 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 6e 65         if (conne
357f0 63 74 69 6f 6e 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  ction == null)..
35800 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
35810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
35820 72 72 6f 72 20 3d 20 22 69 6e 76 61 6c 69 64 20  rror = "invalid 
35830 63 6f 6e 6e 65 63 74 69 6f 6e 22 3b 0d 0a 20 20  connection";..  
35840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
35850 74 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  turn SQLiteError
35860 43 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20  Code.Error;..   
35870 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
35880 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
35890 42 61 73 65 20 73 71 6c 69 74 65 42 61 73 65 20  Base sqliteBase 
358a0 3d 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 5f 73 71  = connection._sq
358b0 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  l;....          
358c0 20 20 69 66 20 28 73 71 6c 69 74 65 42 61 73 65    if (sqliteBase
358d0 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
358e0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
358f0 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 20            error 
35900 3d 20 22 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61  = "connection ha
35910 73 20 69 6e 76 61 6c 69 64 20 68 61 6e 64 6c 65  s invalid handle
35920 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ";..            
35930 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74      return SQLit
35940 65 45 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72  eErrorCode.Error
35950 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
35960 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
35970 72 65 74 75 72 6e 20 73 71 6c 69 74 65 42 61 73  return sqliteBas
35980 65 2e 44 65 63 6c 61 72 65 56 69 72 74 75 61 6c  e.DeclareVirtual
35990 54 61 62 6c 65 28 74 68 69 73 2c 20 73 71 6c 2c  Table(this, sql,
359a0 20 72 65 66 20 65 72 72 6f 72 29 3b 0d 0a 20 20   ref error);..  
359b0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
359c0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
359d0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
359e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
359f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
35a20 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
35a30 6e 20 45 72 72 6f 72 20 48 61 6e 64 6c 69 6e 67  n Error Handling
35a40 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d   Helper Methods.
35a50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
35a60 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
35a70 2f 2f 2f 20 41 72 72 61 6e 67 65 73 20 66 6f 72  /// Arranges for
35a80 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 65   the specified e
35a90 72 72 6f 72 20 6d 65 73 73 61 67 65 20 74 6f 20  rror message to 
35aa0 62 65 20 70 6c 61 63 65 64 20 69 6e 74 6f 20 74  be placed into t
35ab0 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
35ac0 7a 45 72 72 4d 73 67 20 66 69 65 6c 64 20 6f 66  zErrMsg field of
35ad0 20 61 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20   a sqlite3_vtab 
35ae0 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72  derived structur
35af0 65 2c 20 66 72 65 65 69 6e 67 20 74 68 65 0d 0a  e, freeing the..
35b00 20 20 20 20 20 20 20 20 2f 2f 2f 20 65 78 69 73          /// exis
35b10 74 69 6e 67 20 65 72 72 6f 72 20 6d 65 73 73 61  ting error messa
35b20 67 65 2c 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20  ge, if any...   
35b30 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
35b40 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
35b50 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
35b60 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  tab">..        /
35b70 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f  // The native po
35b80 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c  inter to the sql
35b90 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65  ite3_vtab derive
35ba0 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20  d structure...  
35bb0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
35bc0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
35bd0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 65 72 72  <param name="err
35be0 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  or">..        //
35bf0 2f 20 54 68 65 20 65 72 72 6f 72 20 6d 65 73 73  / The error mess
35c00 61 67 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  age...        //
35c10 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
35c20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
35c30 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
35c40 6f 6e 2d 7a 65 72 6f 20 75 70 6f 6e 20 73 75 63  on-zero upon suc
35c50 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  cess...        /
35c60 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
35c70 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64         protected
35c80 20 76 69 72 74 75 61 6c 20 62 6f 6f 6c 20 53 65   virtual bool Se
35c90 74 54 61 62 6c 65 45 72 72 6f 72 28 0d 0a 20 20  tTableError(..  
35ca0 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
35cb0 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20   pVtab,..       
35cc0 20 20 20 20 20 73 74 72 69 6e 67 20 65 72 72 6f       string erro
35cd0 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  r..            )
35ce0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
35cf0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
35d00 53 65 74 54 61 62 6c 65 45 72 72 6f 72 28 74 68  SetTableError(th
35d10 69 73 2c 20 70 56 74 61 62 2c 20 4c 6f 67 45 72  is, pVtab, LogEr
35d20 72 6f 72 73 2c 20 65 72 72 6f 72 29 3b 0d 0a 20  rors, error);.. 
35d30 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
35d40 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
35d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
35d90 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
35da0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
35db0 2f 20 41 72 72 61 6e 67 65 73 20 66 6f 72 20 74  / Arranges for t
35dc0 68 65 20 73 70 65 63 69 66 69 65 64 20 65 72 72  he specified err
35dd0 6f 72 20 6d 65 73 73 61 67 65 20 74 6f 20 62 65  or message to be
35de0 20 70 6c 61 63 65 64 20 69 6e 74 6f 20 74 68 65   placed into the
35df0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 7a 45  ..        /// zE
35e00 72 72 4d 73 67 20 66 69 65 6c 64 20 6f 66 20 61  rrMsg field of a
35e10 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65   sqlite3_vtab de
35e20 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2c  rived structure,
35e30 20 66 72 65 65 69 6e 67 20 74 68 65 0d 0a 20 20   freeing the..  
35e40 20 20 20 20 20 20 2f 2f 2f 20 65 78 69 73 74 69        /// existi
35e50 6e 67 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65  ng error message
35e60 2c 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20 20  , if any...     
35e70 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
35e80 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
35e90 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c  param name="tabl
35ea0 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
35eb0 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
35ec0 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
35ed0 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  le" /> object in
35ee0 73 74 61 6e 63 65 20 75 73 65 64 20 74 6f 0d 0a  stance used to..
35ef0 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 6f 6f 6b          /// look
35f00 75 70 20 74 68 65 20 6e 61 74 69 76 65 20 70 6f  up the native po
35f10 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c  inter to the sql
35f20 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65  ite3_vtab derive
35f30 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20  d structure...  
35f40 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
35f50 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
35f60 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 65 72 72  <param name="err
35f70 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  or">..        //
35f80 2f 20 54 68 65 20 65 72 72 6f 72 20 6d 65 73 73  / The error mess
35f90 61 67 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  age...        //
35fa0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
35fb0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
35fc0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
35fd0 6f 6e 2d 7a 65 72 6f 20 75 70 6f 6e 20 73 75 63  on-zero upon suc
35fe0 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  cess...        /
35ff0 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
36000 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64         protected
36010 20 76 69 72 74 75 61 6c 20 62 6f 6f 6c 20 53 65   virtual bool Se
36020 74 54 61 62 6c 65 45 72 72 6f 72 28 0d 0a 20 20  tTableError(..  
36030 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
36040 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62  VirtualTable tab
36050 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le,..           
36060 20 73 74 72 69 6e 67 20 65 72 72 6f 72 0d 0a 20   string error.. 
36070 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
36080 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
36090 20 20 20 20 20 72 65 74 75 72 6e 20 53 65 74 54       return SetT
360a0 61 62 6c 65 45 72 72 6f 72 28 74 68 69 73 2c 20  ableError(this, 
360b0 74 61 62 6c 65 2c 20 4c 6f 67 45 72 72 6f 72 73  table, LogErrors
360c0 2c 20 65 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20  , error);..     
360d0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
360e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
360f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36120 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
36130 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
36140 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 72  ..        /// Ar
36150 72 61 6e 67 65 73 20 66 6f 72 20 74 68 65 20 73  ranges for the s
36160 70 65 63 69 66 69 65 64 20 65 72 72 6f 72 20 6d  pecified error m
36170 65 73 73 61 67 65 20 74 6f 20 62 65 20 70 6c 61  essage to be pla
36180 63 65 64 20 69 6e 74 6f 20 74 68 65 0d 0a 20 20  ced into the..  
36190 20 20 20 20 20 20 2f 2f 2f 20 7a 45 72 72 4d 73        /// zErrMs
361a0 67 20 66 69 65 6c 64 20 6f 66 20 61 20 73 71 6c  g field of a sql
361b0 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65  ite3_vtab derive
361c0 64 20 73 74 72 75 63 74 75 72 65 2c 20 66 72 65  d structure, fre
361d0 65 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20  eing the..      
361e0 20 20 2f 2f 2f 20 65 78 69 73 74 69 6e 67 20 65    /// existing e
361f0 72 72 6f 72 20 6d 65 73 73 61 67 65 2c 20 69 66  rror message, if
36200 20 61 6e 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f   any...        /
36210 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
36220 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
36230 6d 20 6e 61 6d 65 3d 22 63 75 72 73 6f 72 22 3e  m name="cursor">
36240 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
36250 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
36260 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43  iteVirtualTableC
36270 75 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65 63 74  ursor" /> object
36280 20 69 6e 73 74 61 6e 63 65 20 75 73 65 64 20 74   instance used t
36290 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c  o..        /// l
362a0 6f 6f 6b 75 70 20 74 68 65 20 6e 61 74 69 76 65  ookup the native
362b0 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
362c0 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72  sqlite3_vtab der
362d0 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d  ived structure..
362e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
362f0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
36300 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
36310 65 72 72 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20  error">..       
36320 20 2f 2f 2f 20 54 68 65 20 65 72 72 6f 72 20 6d   /// The error m
36330 65 73 73 61 67 65 2e 0d 0a 20 20 20 20 20 20 20  essage...       
36340 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
36350 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
36360 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
36370 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 75 70 6f 6e 20  / Non-zero upon 
36380 73 75 63 63 65 73 73 2e 0d 0a 20 20 20 20 20 20  success...      
36390 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
363a0 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63  ..        protec
363b0 74 65 64 20 76 69 72 74 75 61 6c 20 62 6f 6f 6c  ted virtual bool
363c0 20 53 65 74 43 75 72 73 6f 72 45 72 72 6f 72 28   SetCursorError(
363d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
363e0 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
363f0 43 75 72 73 6f 72 20 63 75 72 73 6f 72 2c 0d 0a  Cursor cursor,..
36400 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
36410 6e 67 20 65 72 72 6f 72 0d 0a 20 20 20 20 20 20  ng error..      
36420 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
36430 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
36440 72 65 74 75 72 6e 20 53 65 74 43 75 72 73 6f 72  return SetCursor
36450 45 72 72 6f 72 28 74 68 69 73 2c 20 63 75 72 73  Error(this, curs
36460 6f 72 2c 20 4c 6f 67 45 72 72 6f 72 73 2c 20 65  or, LogErrors, e
36470 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20  rror);..        
36480 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
36490 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
364a0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
364b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
364c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
364d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
364e0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
364f0 20 20 20 20 23 72 65 67 69 6f 6e 20 53 74 61 74      #region Stat
36500 69 63 20 45 72 72 6f 72 20 48 61 6e 64 6c 69 6e  ic Error Handlin
36510 67 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73  g Helper Methods
36520 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
36530 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
36540 20 2f 2f 2f 20 41 72 72 61 6e 67 65 73 20 66 6f   /// Arranges fo
36550 72 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  r the specified 
36560 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 74 6f  error message to
36570 20 62 65 20 70 6c 61 63 65 64 20 69 6e 74 6f 20   be placed into 
36580 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
36590 20 7a 45 72 72 4d 73 67 20 66 69 65 6c 64 20 6f   zErrMsg field o
365a0 66 20 61 20 73 71 6c 69 74 65 33 5f 76 74 61 62  f a sqlite3_vtab
365b0 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75   derived structu
365c0 72 65 2c 20 66 72 65 65 69 6e 67 20 74 68 65 0d  re, freeing the.
365d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 65 78 69  .        /// exi
365e0 73 74 69 6e 67 20 65 72 72 6f 72 20 6d 65 73 73  sting error mess
365f0 61 67 65 2c 20 69 66 20 61 6e 79 2e 0d 0a 20 20  age, if any...  
36600 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
36610 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
36620 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6d  / <param name="m
36630 6f 64 75 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20  odule">..       
36640 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
36650 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65  ef="SQLiteModule
36660 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
36670 61 6e 63 65 20 74 6f 20 62 65 20 75 73 65 64 2e  ance to be used.
36680 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
36690 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
366a0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
366b0 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20  "pVtab">..      
366c0 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
366d0 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
366e0 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72  sqlite3_vtab der
366f0 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d  ived structure..
36700 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
36710 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
36720 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
36730 6c 6f 67 45 72 72 6f 72 73 22 3e 0d 0a 20 20 20  logErrors">..   
36740 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
36750 6f 20 69 66 20 74 68 69 73 20 65 72 72 6f 72 20  o if this error 
36760 6d 65 73 73 61 67 65 20 73 68 6f 75 6c 64 20 61  message should a
36770 6c 73 6f 20 62 65 20 6c 6f 67 67 65 64 20 75 73  lso be logged us
36780 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ing the..       
36790 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
367a0 53 51 4c 69 74 65 4c 6f 67 22 20 2f 3e 20 63 6c  SQLiteLog" /> cl
367b0 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ass...        //
367c0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
367d0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
367e0 61 6d 65 3d 22 65 72 72 6f 72 22 3e 0d 0a 20 20  ame="error">..  
367f0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 65 72        /// The er
36800 72 6f 72 20 6d 65 73 73 61 67 65 2e 0d 0a 20 20  ror message...  
36810 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
36820 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
36830 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
36840 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
36850 75 70 6f 6e 20 73 75 63 63 65 73 73 2e 0d 0a 20  upon success... 
36860 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
36870 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
36880 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f  rivate static bo
36890 6f 6c 20 53 65 74 54 61 62 6c 65 45 72 72 6f 72  ol SetTableError
368a0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
368b0 51 4c 69 74 65 4d 6f 64 75 6c 65 20 6d 6f 64 75  QLiteModule modu
368c0 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le,..           
368d0 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
368e0 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
368f0 20 6c 6f 67 45 72 72 6f 72 73 2c 0d 0a 20 20 20   logErrors,..   
36900 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
36910 65 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 20  error..         
36920 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
36930 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79  .            try
36940 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
36950 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
36960 20 69 66 20 28 6c 6f 67 45 72 72 6f 72 73 29 0d   if (logErrors).
36970 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
36980 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
36990 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4c 6f          SQLiteLo
369a0 67 2e 4c 6f 67 4d 65 73 73 61 67 65 28 53 51 4c  g.LogMessage(SQL
369b0 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 45 72 72  iteErrorCode.Err
369c0 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  or,..           
369d0 20 20 20 20 20 20 20 20 20 20 20 20 20 53 74 72               Str
369e0 69 6e 67 2e 46 6f 72 6d 61 74 28 43 75 6c 74 75  ing.Format(Cultu
369f0 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
36a00 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
36a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36a20 22 56 69 72 74 75 61 6c 20 74 61 62 6c 65 20 65  "Virtual table e
36a30 72 72 6f 72 3a 20 7b 30 7d 22 2c 20 65 72 72 6f  rror: {0}", erro
36a40 72 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  r)); /* throw */
36a50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
36a60 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
36a70 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
36a80 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
36a90 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
36aa0 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
36ab0 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
36ac0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
36ad0 20 20 20 69 66 20 28 70 56 74 61 62 20 3d 3d 20     if (pVtab == 
36ae0 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
36af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
36b00 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
36b10 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f             int o
36b20 66 66 73 65 74 20 3d 20 49 6e 74 50 74 72 2e 53  ffset = IntPtr.S
36b30 69 7a 65 20 2b 20 73 69 7a 65 6f 66 28 69 6e 74  ize + sizeof(int
36b40 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
36b50 49 6e 74 50 74 72 20 70 45 72 72 6f 72 20 3d 20  IntPtr pError = 
36b60 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65  SQLiteMarshal.Re
36b70 61 64 49 6e 74 50 74 72 28 70 56 74 61 62 2c 20  adIntPtr(pVtab, 
36b80 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20  offset);....    
36b90 20 20 20 20 20 20 20 20 69 66 20 28 70 45 72 72          if (pErr
36ba0 6f 72 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  or != IntPtr.Zer
36bb0 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
36bc0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
36bd0 20 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e     SQLiteMemory.
36be0 46 72 65 65 28 70 45 72 72 6f 72 29 3b 20 70 45  Free(pError); pE
36bf0 72 72 6f 72 20 3d 20 49 6e 74 50 74 72 2e 5a 65  rror = IntPtr.Ze
36c00 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro;..           
36c10 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68       SQLiteMarsh
36c20 61 6c 2e 57 72 69 74 65 49 6e 74 50 74 72 28 70  al.WriteIntPtr(p
36c30 56 74 61 62 2c 20 6f 66 66 73 65 74 2c 20 70 45  Vtab, offset, pE
36c40 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20  rror);..        
36c50 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
36c60 20 20 20 20 20 69 66 20 28 65 72 72 6f 72 20 3d       if (error =
36c70 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
36c80 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
36c90 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  true;....       
36ca0 20 20 20 20 20 62 6f 6f 6c 20 73 75 63 63 65 73       bool succes
36cb0 73 20 3d 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  s = false;....  
36cc0 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
36cd0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
36ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 45                pE
36cf0 72 72 6f 72 20 3d 20 53 51 4c 69 74 65 53 74 72  rror = SQLiteStr
36d00 69 6e 67 2e 55 74 66 38 49 6e 74 50 74 72 46 72  ing.Utf8IntPtrFr
36d10 6f 6d 53 74 72 69 6e 67 28 65 72 72 6f 72 29 3b  omString(error);
36d20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
36d30 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e    SQLiteMarshal.
36d40 57 72 69 74 65 49 6e 74 50 74 72 28 70 56 74 61  WriteIntPtr(pVta
36d50 62 2c 20 6f 66 66 73 65 74 2c 20 70 45 72 72 6f  b, offset, pErro
36d60 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r);..           
36d70 20 20 20 20 20 73 75 63 63 65 73 73 20 3d 20 74       success = t
36d80 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
36d90 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
36da0 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20   finally..      
36db0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
36dc0 20 20 20 20 20 20 20 20 20 69 66 20 28 21 73 75           if (!su
36dd0 63 63 65 73 73 20 26 26 20 28 70 45 72 72 6f 72  ccess && (pError
36de0 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
36df0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
36e00 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
36e10 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
36e20 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70 45 72 72  Memory.Free(pErr
36e30 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  or);..          
36e40 20 20 20 20 20 20 20 20 20 20 70 45 72 72 6f 72            pError
36e50 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d   = IntPtr.Zero;.
36e60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
36e70 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
36e80 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
36e90 20 72 65 74 75 72 6e 20 73 75 63 63 65 73 73 3b   return success;
36ea0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
36eb0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
36ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
36f00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
36f10 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
36f20 20 2f 2f 2f 20 41 72 72 61 6e 67 65 73 20 66 6f   /// Arranges fo
36f30 72 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  r the specified 
36f40 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 74 6f  error message to
36f50 20 62 65 20 70 6c 61 63 65 64 20 69 6e 74 6f 20   be placed into 
36f60 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
36f70 20 7a 45 72 72 4d 73 67 20 66 69 65 6c 64 20 6f   zErrMsg field o
36f80 66 20 61 20 73 71 6c 69 74 65 33 5f 76 74 61 62  f a sqlite3_vtab
36f90 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75   derived structu
36fa0 72 65 2c 20 66 72 65 65 69 6e 67 20 74 68 65 0d  re, freeing the.
36fb0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 65 78 69  .        /// exi
36fc0 73 74 69 6e 67 20 65 72 72 6f 72 20 6d 65 73 73  sting error mess
36fd0 61 67 65 2c 20 69 66 20 61 6e 79 2e 0d 0a 20 20  age, if any...  
36fe0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
36ff0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
37000 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6d  / <param name="m
37010 6f 64 75 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20  odule">..       
37020 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
37030 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65  ef="SQLiteModule
37040 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
37050 61 6e 63 65 20 74 6f 20 62 65 20 75 73 65 64 2e  ance to be used.
37060 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
37070 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
37080 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
37090 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20  "table">..      
370a0 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
370b0 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75  ref="SQLiteVirtu
370c0 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65  alTable" /> obje
370d0 63 74 20 69 6e 73 74 61 6e 63 65 20 75 73 65 64  ct instance used
370e0 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   to..        ///
370f0 20 6c 6f 6f 6b 75 70 20 74 68 65 20 6e 61 74 69   lookup the nati
37100 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
37110 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64  e sqlite3_vtab d
37120 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65  erived structure
37130 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
37140 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
37150 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
37160 3d 22 6c 6f 67 45 72 72 6f 72 73 22 3e 0d 0a 20  ="logErrors">.. 
37170 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a         /// Non-z
37180 65 72 6f 20 69 66 20 74 68 69 73 20 65 72 72 6f  ero if this erro
37190 72 20 6d 65 73 73 61 67 65 20 73 68 6f 75 6c 64  r message should
371a0 20 61 6c 73 6f 20 62 65 20 6c 6f 67 67 65 64 20   also be logged 
371b0 75 73 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20  using the..     
371c0 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
371d0 3d 22 53 51 4c 69 74 65 4c 6f 67 22 20 2f 3e 20  ="SQLiteLog" /> 
371e0 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20  class...        
371f0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
37200 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
37210 20 6e 61 6d 65 3d 22 65 72 72 6f 72 22 3e 0d 0a   name="error">..
37220 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
37230 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2e 0d 0a  error message...
37240 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
37250 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
37260 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
37270 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
37280 6f 20 75 70 6f 6e 20 73 75 63 63 65 73 73 2e 0d  o upon success..
37290 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
372a0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
372b0 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
372c0 62 6f 6f 6c 20 53 65 74 54 61 62 6c 65 45 72 72  bool SetTableErr
372d0 6f 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  or(..           
372e0 20 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20 6d 6f   SQLiteModule mo
372f0 64 75 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  dule,..         
37300 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c     SQLiteVirtual
37310 54 61 62 6c 65 20 74 61 62 6c 65 2c 0d 0a 20 20  Table table,..  
37320 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6c            bool l
37330 6f 67 45 72 72 6f 72 73 2c 0d 0a 20 20 20 20 20  ogErrors,..     
37340 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 65 72         string er
37350 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ror..           
37360 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
37370 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74             if (t
37380 61 62 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  able == null).. 
37390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
373a0 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a  eturn false;....
373b0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
373c0 74 72 20 70 56 74 61 62 20 3d 20 74 61 62 6c 65  tr pVtab = table
373d0 2e 4e 61 74 69 76 65 48 61 6e 64 6c 65 3b 0d 0a  .NativeHandle;..
373e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
373f0 20 28 70 56 74 61 62 20 3d 3d 20 49 6e 74 50 74   (pVtab == IntPt
37400 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
37410 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
37420 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
37430 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 65 74        return Set
37440 54 61 62 6c 65 45 72 72 6f 72 28 6d 6f 64 75 6c  TableError(modul
37450 65 2c 20 70 56 74 61 62 2c 20 6c 6f 67 45 72 72  e, pVtab, logErr
37460 6f 72 73 2c 20 65 72 72 6f 72 29 3b 0d 0a 20 20  ors, error);..  
37470 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
37480 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
37490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
374a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
374b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
374c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
374d0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
374e0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
374f0 20 41 72 72 61 6e 67 65 73 20 66 6f 72 20 74 68   Arranges for th
37500 65 20 73 70 65 63 69 66 69 65 64 20 65 72 72 6f  e specified erro
37510 72 20 6d 65 73 73 61 67 65 20 74 6f 20 62 65 20  r message to be 
37520 70 6c 61 63 65 64 20 69 6e 74 6f 20 74 68 65 0d  placed into the.
37530 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 7a 45 72  .        /// zEr
37540 72 4d 73 67 20 66 69 65 6c 64 20 6f 66 20 61 20  rMsg field of a 
37550 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72  sqlite3_vtab der
37560 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2c 20  ived structure, 
37570 66 72 65 65 69 6e 67 20 74 68 65 0d 0a 20 20 20  freeing the..   
37580 20 20 20 20 20 2f 2f 2f 20 65 78 69 73 74 69 6e       /// existin
37590 67 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2c  g error message,
375a0 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20 20 20   if any...      
375b0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
375c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
375d0 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c  aram name="modul
375e0 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
375f0 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
37600 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e  SQLiteModule" />
37610 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
37620 20 74 6f 20 62 65 20 75 73 65 64 2e 0d 0a 20 20   to be used...  
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 2f 2f 2f 20  m>..        /// 
37650 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75  <param name="pCu
37660 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20  rsor">..        
37670 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70  /// The native p
37680 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71  ointer to the sq
37690 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f  lite3_vtab_curso
376a0 72 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74  r derived struct
376b0 75 72 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ure..        ///
376c0 20 75 73 65 64 20 74 6f 20 67 65 74 20 74 68 65   used to get the
376d0 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
376e0 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76  to the sqlite3_v
376f0 74 61 62 20 64 65 72 69 76 65 64 0d 0a 20 20 20  tab derived..   
37700 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75       /// structu
37710 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
37720 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
37730 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
37740 6d 65 3d 22 6c 6f 67 45 72 72 6f 72 73 22 3e 0d  me="logErrors">.
37750 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  .        /// Non
37760 2d 7a 65 72 6f 20 69 66 20 74 68 69 73 20 65 72  -zero if this er
37770 72 6f 72 20 6d 65 73 73 61 67 65 20 73 68 6f 75  ror message shou
37780 6c 64 20 61 6c 73 6f 20 62 65 20 6c 6f 67 67 65  ld also be logge
37790 64 20 75 73 69 6e 67 20 74 68 65 0d 0a 20 20 20  d using the..   
377a0 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
377b0 65 66 3d 22 53 51 4c 69 74 65 4c 6f 67 22 20 2f  ef="SQLiteLog" /
377c0 3e 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20  > class...      
377d0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
377e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
377f0 61 6d 20 6e 61 6d 65 3d 22 65 72 72 6f 72 22 3e  am name="error">
37800 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
37810 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2e  e error message.
37820 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
37830 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
37840 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
37850 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a         /// Non-z
37860 65 72 6f 20 75 70 6f 6e 20 73 75 63 63 65 73 73  ero upon success
37870 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
37880 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
37890 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
378a0 63 20 62 6f 6f 6c 20 53 65 74 43 75 72 73 6f 72  c bool SetCursor
378b0 45 72 72 6f 72 28 0d 0a 20 20 20 20 20 20 20 20  Error(..        
378c0 20 20 20 20 53 51 4c 69 74 65 4d 6f 64 75 6c 65      SQLiteModule
378d0 20 6d 6f 64 75 6c 65 2c 0d 0a 20 20 20 20 20 20   module,..      
378e0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75        IntPtr pCu
378f0 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 20  rsor,..         
37900 20 20 20 62 6f 6f 6c 20 6c 6f 67 45 72 72 6f 72     bool logError
37910 73 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s,..            
37920 73 74 72 69 6e 67 20 65 72 72 6f 72 0d 0a 20 20  string error..  
37930 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
37940 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
37950 20 20 20 20 69 66 20 28 70 43 75 72 73 6f 72 20      if (pCursor 
37960 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  == IntPtr.Zero).
37970 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
37980 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
37990 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
379a0 74 50 74 72 20 70 56 74 61 62 20 3d 20 54 61 62  tPtr pVtab = Tab
379b0 6c 65 46 72 6f 6d 43 75 72 73 6f 72 28 6d 6f 64  leFromCursor(mod
379c0 75 6c 65 2c 20 70 43 75 72 73 6f 72 29 3b 0d 0a  ule, pCursor);..
379d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
379e0 20 28 70 56 74 61 62 20 3d 3d 20 49 6e 74 50 74   (pVtab == IntPt
379f0 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
37a00 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
37a10 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
37a20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 65 74        return Set
37a30 54 61 62 6c 65 45 72 72 6f 72 28 6d 6f 64 75 6c  TableError(modul
37a40 65 2c 20 70 56 74 61 62 2c 20 6c 6f 67 45 72 72  e, pVtab, logErr
37a50 6f 72 73 2c 20 65 72 72 6f 72 29 3b 0d 0a 20 20  ors, error);..  
37a60 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
37a70 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
37a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
37ac0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
37ad0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
37ae0 20 41 72 72 61 6e 67 65 73 20 66 6f 72 20 74 68   Arranges for th
37af0 65 20 73 70 65 63 69 66 69 65 64 20 65 72 72 6f  e specified erro
37b00 72 20 6d 65 73 73 61 67 65 20 74 6f 20 62 65 20  r message to be 
37b10 70 6c 61 63 65 64 20 69 6e 74 6f 20 74 68 65 0d  placed into the.
37b20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 7a 45 72  .        /// zEr
37b30 72 4d 73 67 20 66 69 65 6c 64 20 6f 66 20 61 20  rMsg field of a 
37b40 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72  sqlite3_vtab der
37b50 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2c 20  ived structure, 
37b60 66 72 65 65 69 6e 67 20 74 68 65 0d 0a 20 20 20  freeing the..   
37b70 20 20 20 20 20 2f 2f 2f 20 65 78 69 73 74 69 6e       /// existin
37b80 67 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2c  g error message,
37b90 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20 20 20   if any...      
37ba0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
37bb0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
37bc0 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c  aram name="modul
37bd0 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
37be0 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
37bf0 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e  SQLiteModule" />
37c00 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
37c10 20 74 6f 20 62 65 20 75 73 65 64 2e 0d 0a 20 20   to be used...  
37c20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
37c30 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
37c40 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 75 72  <param name="cur
37c50 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  sor">..        /
37c60 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
37c70 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  ="SQLiteVirtualT
37c80 61 62 6c 65 43 75 72 73 6f 72 22 20 2f 3e 20 6f  ableCursor" /> o
37c90 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 75  bject instance u
37ca0 73 65 64 20 74 6f 0d 0a 20 20 20 20 20 20 20 20  sed to..        
37cb0 2f 2f 2f 20 6c 6f 6f 6b 75 70 20 74 6