System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact f68128ce53c56492313a941fed5c9306f5ea71cb:


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 70 72 69 76 61 74 65  .        private
2990: 20 53 51 4c 69 74 65 56 61 6c 75 65 28 49 6e 74   SQLiteValue(Int
29a0: 50 74 72 20 70 56 61 6c 75 65 29 0d 0a 20 20 20  Ptr pValue)..   
29b0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
29c0: 20 20 20 20 74 68 69 73 2e 70 56 61 6c 75 65 20      this.pValue 
29d0: 3d 20 70 56 61 6c 75 65 3b 0d 0a 20 20 20 20 20  = pValue;..     
29e0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
29f0: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
2a00: 20 20 20 20 2f 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 0d 0a 0d 0a 20  ///////////.... 
2a50: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
2a60: 72 69 76 61 74 65 20 4d 65 74 68 6f 64 73 0d 0a  rivate Methods..
2a70: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
2a80: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
2a90: 2f 2f 20 49 6e 76 61 6c 69 64 61 74 65 73 20 74  // Invalidates t
2aa0: 68 65 20 6e 61 74 69 76 65 20 76 61 6c 75 65 20  he native value 
2ab0: 68 61 6e 64 6c 65 2c 20 74 68 65 72 65 62 79 20  handle, thereby 
2ac0: 70 72 65 76 65 6e 74 69 6e 67 20 66 75 72 74 68  preventing furth
2ad0: 65 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  er..        /// 
2ae0: 61 63 63 65 73 73 20 74 6f 20 69 74 20 66 72 6f  access to it fro
2af0: 6d 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e  m this object in
2b00: 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20  stance...       
2b10: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2b20: 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
2b30: 20 76 6f 69 64 20 50 72 65 76 65 6e 74 4e 61 74   void PreventNat
2b40: 69 76 65 41 63 63 65 73 73 28 29 0d 0a 20 20 20  iveAccess()..   
2b50: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2b60: 20 20 20 20 70 56 61 6c 75 65 20 3d 20 49 6e 74      pValue = Int
2b70: 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20  Ptr.Zero;..     
2b80: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
2b90: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
2ba0: 20 20 20 20 2f 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 0d 0a 0d 0a 20  ///////////.... 
2bf0: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49         #region I
2c00: 6e 74 65 72 6e 61 6c 20 4d 61 72 73 68 61 6c 20  nternal Marshal 
2c10: 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a  Helper Methods..
2c20: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
2c30: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
2c40: 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 6c 6f  // Converts a lo
2c50: 67 69 63 61 6c 20 61 72 72 61 79 20 6f 66 20 6e  gical array of n
2c60: 61 74 69 76 65 20 70 6f 69 6e 74 65 72 73 20 74  ative pointers t
2c70: 6f 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33  o native sqlite3
2c80: 5f 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20  _value..        
2c90: 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 73 20 69  /// structures i
2ca0: 6e 74 6f 20 61 20 6d 61 6e 61 67 65 64 20 61 72  nto a managed ar
2cb0: 72 61 79 20 6f 66 20 3c 73 65 65 20 63 72 65 66  ray of <see cref
2cc0: 3d 22 53 51 4c 69 74 65 56 61 6c 75 65 22 20 2f  ="SQLiteValue" /
2cd0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f  >..        /// o
2ce0: 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 73 2e  bject instances.
2cf0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
2d00: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2d10: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2d20: 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20 20 20 20  e="argc">..     
2d30: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65     /// The numbe
2d40: 72 20 6f 66 20 65 6c 65 6d 65 6e 74 73 20 69 6e  r of elements in
2d50: 20 74 68 65 20 6c 6f 67 69 63 61 6c 20 61 72 72   the logical arr
2d60: 61 79 20 6f 66 20 6e 61 74 69 76 65 20 73 71 6c  ay of native sql
2d70: 69 74 65 33 5f 76 61 6c 75 65 0d 0a 20 20 20 20  ite3_value..    
2d80: 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72      /// structur
2d90: 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  es...        ///
2da0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
2db0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2dc0: 6d 65 3d 22 61 72 67 76 22 3e 0d 0a 20 20 20 20  me="argv">..    
2dd0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
2de0: 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
2df0: 65 20 6c 6f 67 69 63 61 6c 20 61 72 72 61 79 20  e logical array 
2e00: 6f 66 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65  of native sqlite
2e10: 33 5f 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20  3_value..       
2e20: 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 73 20   /// structures 
2e30: 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20  to convert...   
2e40: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2e50: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
2e60: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
2e70: 20 20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65    /// The manage
2e80: 64 20 61 72 72 61 79 20 6f 66 20 3c 73 65 65 20  d array of <see 
2e90: 63 72 65 66 3d 22 53 51 4c 69 74 65 56 61 6c 75  cref="SQLiteValu
2ea0: 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  e" /> object ins
2eb0: 74 61 6e 63 65 73 20 6f 72 0d 0a 20 20 20 20 20  tances or..     
2ec0: 20 20 20 2f 2f 2f 20 6e 75 6c 6c 20 75 70 6f 6e     /// null upon
2ed0: 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20   failure...     
2ee0: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
2ef0: 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72  >..        inter
2f00: 6e 61 6c 20 73 74 61 74 69 63 20 53 51 4c 69 74  nal static SQLit
2f10: 65 56 61 6c 75 65 5b 5d 20 41 72 72 61 79 46 72  eValue[] ArrayFr
2f20: 6f 6d 53 69 7a 65 41 6e 64 49 6e 74 50 74 72 28  omSizeAndIntPtr(
2f30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
2f40: 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20  t argc,..       
2f50: 20 20 20 20 20 49 6e 74 50 74 72 20 61 72 67 76       IntPtr argv
2f60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
2f70: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
2f80: 20 20 20 20 20 20 20 20 69 66 20 28 61 72 67 63          if (argc
2f90: 20 3c 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20   < 0)..         
2fa0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
2fb0: 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ll;....         
2fc0: 20 20 20 69 66 20 28 61 72 67 76 20 3d 3d 20 49     if (argv == I
2fd0: 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
2fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2ff0: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  urn null;....   
3000: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56           SQLiteV
3010: 61 6c 75 65 5b 5d 20 72 65 73 75 6c 74 20 3d 20  alue[] result = 
3020: 6e 65 77 20 53 51 4c 69 74 65 56 61 6c 75 65 5b  new SQLiteValue[
3030: 61 72 67 63 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20  argc];....      
3040: 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74 20 69        for (int i
3050: 6e 64 65 78 20 3d 20 30 2c 20 6f 66 66 73 65 74  ndex = 0, offset
3060: 20 3d 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 20   = 0;..         
3070: 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 65 78             index
3080: 20 3c 20 72 65 73 75 6c 74 2e 4c 65 6e 67 74 68   < result.Length
3090: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
30a0: 20 20 20 20 20 20 20 69 6e 64 65 78 2b 2b 2c 20         index++, 
30b0: 6f 66 66 73 65 74 20 2b 3d 20 49 6e 74 50 74 72  offset += IntPtr
30c0: 2e 53 69 7a 65 29 0d 0a 20 20 20 20 20 20 20 20  .Size)..        
30d0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
30e0: 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 41         IntPtr pA
30f0: 72 67 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  rg = SQLiteMarsh
3100: 61 6c 2e 52 65 61 64 49 6e 74 50 74 72 28 61 72  al.ReadIntPtr(ar
3110: 67 76 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a  gv, offset);....
3120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3130: 72 65 73 75 6c 74 5b 69 6e 64 65 78 5d 20 3d 20  result[index] = 
3140: 28 70 41 72 67 20 21 3d 20 49 6e 74 50 74 72 2e  (pArg != IntPtr.
3150: 5a 65 72 6f 29 20 3f 0d 0a 20 20 20 20 20 20 20  Zero) ?..       
3160: 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77               new
3170: 20 53 51 4c 69 74 65 56 61 6c 75 65 28 70 41 72   SQLiteValue(pAr
3180: 67 29 20 3a 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  g) : null;..    
3190: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
31a0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
31b0: 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20  result;..       
31c0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
31d0: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
31e0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
31f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
3230: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 53 51       #region ISQ
3240: 4c 69 74 65 4e 61 74 69 76 65 48 61 6e 64 6c 65  LiteNativeHandle
3250: 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20   Members..      
3260: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
3270: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65 74  .        /// Ret
3280: 75 72 6e 73 20 74 68 65 20 75 6e 64 65 72 6c 79  urns the underly
3290: 69 6e 67 20 53 51 4c 69 74 65 20 6e 61 74 69 76  ing SQLite nativ
32a0: 65 20 68 61 6e 64 6c 65 20 61 73 73 6f 63 69 61  e handle associa
32b0: 74 65 64 20 77 69 74 68 20 74 68 69 73 0d 0a 20  ted with this.. 
32c0: 20 20 20 20 20 20 20 2f 2f 2f 20 6f 62 6a 65 63         /// objec
32d0: 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  t instance...   
32e0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
32f0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ry>..        pub
3300: 6c 69 63 20 49 6e 74 50 74 72 20 4e 61 74 69 76  lic IntPtr Nativ
3310: 65 48 61 6e 64 6c 65 0d 0a 20 20 20 20 20 20 20  eHandle..       
3320: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
3330: 67 65 74 20 7b 20 72 65 74 75 72 6e 20 70 56 61  get { return pVa
3340: 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
3350: 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
3360: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
3370: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
3380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33b0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
33c0: 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c      #region Publ
33d0: 69 63 20 50 72 6f 70 65 72 74 69 65 73 0d 0a 20  ic Properties.. 
33e0: 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62         private b
33f0: 6f 6f 6c 20 70 65 72 73 69 73 74 65 64 3b 0d 0a  ool persisted;..
3400: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
3410: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
3420: 2f 2f 20 52 65 74 75 72 6e 73 20 6e 6f 6e 2d 7a  // Returns non-z
3430: 65 72 6f 20 69 66 20 74 68 65 20 6e 61 74 69 76  ero if the nativ
3440: 65 20 53 51 4c 69 74 65 20 76 61 6c 75 65 20 68  e SQLite value h
3450: 61 73 20 62 65 65 6e 20 73 75 63 63 65 73 73 66  as been successf
3460: 75 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ully..        //
3470: 2f 20 70 65 72 73 69 73 74 65 64 20 61 73 20 61  / persisted as a
3480: 20 6d 61 6e 61 67 65 64 20 76 61 6c 75 65 20 77   managed value w
3490: 69 74 68 69 6e 20 74 68 69 73 20 6f 62 6a 65 63  ithin this objec
34a0: 74 20 69 6e 73 74 61 6e 63 65 20 28 69 2e 65 2e  t instance (i.e.
34b0: 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
34c0: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 56 61 6c  / <see cref="Val
34d0: 75 65 22 20 2f 3e 20 70 72 6f 70 65 72 74 79 20  ue" /> property 
34e0: 6d 61 79 20 74 68 65 6e 20 62 65 20 72 65 61 64  may then be read
34f0: 20 73 75 63 63 65 73 73 66 75 6c 6c 79 29 2e 0d   successfully)..
3500: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
3510: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
3520: 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 50 65 72   public bool Per
3530: 73 69 73 74 65 64 0d 0a 20 20 20 20 20 20 20 20  sisted..        
3540: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67  {..            g
3550: 65 74 20 7b 20 72 65 74 75 72 6e 20 70 65 72 73  et { return pers
3560: 69 73 74 65 64 3b 20 7d 0d 0a 20 20 20 20 20 20  isted; }..      
3570: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
3580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35c0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
35d0: 20 20 70 72 69 76 61 74 65 20 6f 62 6a 65 63 74    private object
35e0: 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20   value;..       
35f0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
3600: 20 20 20 20 20 20 20 20 2f 2f 2f 20 49 66 20 74          /// If t
3610: 68 65 20 6d 61 6e 61 67 65 64 20 76 61 6c 75 65  he managed value
3620: 20 66 6f 72 20 74 68 69 73 20 6f 62 6a 65 63 74   for this object
3630: 20 69 6e 73 74 61 6e 63 65 20 69 73 20 61 76 61   instance is ava
3640: 69 6c 61 62 6c 65 20 28 69 2e 65 2e 20 69 74 0d  ilable (i.e. it.
3650: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 68 61 73  .        /// has
3660: 20 62 65 65 6e 20 70 72 65 76 69 6f 75 73 6c 79   been previously
3670: 20 70 65 72 73 69 73 74 65 64 20 76 69 61 20 74   persisted via t
3680: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 50 65  he <see cref="Pe
3690: 72 73 69 73 74 22 20 2f 3e 29 20 6d 65 74 68 6f  rsist" />) metho
36a0: 64 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d,..        /// 
36b0: 74 68 61 74 20 76 61 6c 75 65 20 69 73 20 72 65  that value is re
36c0: 74 75 72 6e 65 64 3b 20 6f 74 68 65 72 77 69 73  turned; otherwis
36d0: 65 2c 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 20  e, an exception 
36e0: 69 73 20 74 68 72 6f 77 6e 2e 20 20 54 68 65 0d  is thrown.  The.
36f0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 72 65 74  .        /// ret
3700: 75 72 6e 65 64 20 76 61 6c 75 65 20 6d 61 79 20  urned value may 
3710: 62 65 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20  be null...      
3720: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
3730: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
3740: 20 6f 62 6a 65 63 74 20 56 61 6c 75 65 0d 0a 20   object Value.. 
3750: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
3760: 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20        get..     
3770: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
3780: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 70            if (!p
3790: 65 72 73 69 73 74 65 64 29 0d 0a 20 20 20 20 20  ersisted)..     
37a0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
37b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37c0: 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76 61    throw new Inva
37d0: 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65  lidOperationExce
37e0: 70 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20  ption(..        
37f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3800: 22 76 61 6c 75 65 20 77 61 73 20 6e 6f 74 20 70  "value was not p
3810: 65 72 73 69 73 74 65 64 22 29 3b 0d 0a 20 20 20  ersisted");..   
3820: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
3830: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3840: 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d    return value;.
3850: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
3860: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
3870: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
3880: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
3890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38d0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
38e0: 69 6f 6e 20 50 75 62 6c 69 63 20 4d 65 74 68 6f  ion Public Metho
38f0: 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
3900: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
3910: 20 20 20 2f 2f 2f 20 47 65 74 73 20 61 6e 64 20     /// Gets and 
3920: 72 65 74 75 72 6e 73 20 74 68 65 20 74 79 70 65  returns the type
3930: 20 61 66 66 69 6e 69 74 79 20 61 73 73 6f 63 69   affinity associ
3940: 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20 76  ated with this v
3950: 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  alue...        /
3960: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
3970: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
3980: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
3990: 2f 20 54 68 65 20 74 79 70 65 20 61 66 66 69 6e  / The type affin
39a0: 69 74 79 20 61 73 73 6f 63 69 61 74 65 64 20 77  ity associated w
39b0: 69 74 68 20 74 68 69 73 20 76 61 6c 75 65 2e 0d  ith this value..
39c0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
39d0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
39e0: 20 70 75 62 6c 69 63 20 54 79 70 65 41 66 66 69   public TypeAffi
39f0: 6e 69 74 79 20 47 65 74 54 79 70 65 41 66 66 69  nity GetTypeAffi
3a00: 6e 69 74 79 28 29 0d 0a 20 20 20 20 20 20 20 20  nity()..        
3a10: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
3a20: 66 20 28 70 56 61 6c 75 65 20 3d 3d 20 49 6e 74  f (pValue == Int
3a30: 50 74 72 2e 5a 65 72 6f 29 20 72 65 74 75 72 6e  Ptr.Zero) return
3a40: 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 4e 6f   TypeAffinity.No
3a50: 6e 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ne;..           
3a60: 20 72 65 74 75 72 6e 20 55 6e 73 61 66 65 4e 61   return UnsafeNa
3a70: 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
3a80: 74 65 33 5f 76 61 6c 75 65 5f 74 79 70 65 28 70  te3_value_type(p
3a90: 56 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20  Value);..       
3aa0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
3ab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3af0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
3b00: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
3b10: 20 20 20 20 20 20 20 20 2f 2f 2f 20 47 65 74 73          /// Gets
3b20: 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65   and returns the
3b30: 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73   number of bytes
3b40: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
3b50: 20 74 68 69 73 20 76 61 6c 75 65 2c 20 69 66 0d   this value, if.
3b60: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 74 20  .        /// it 
3b70: 72 65 66 65 72 73 20 74 6f 20 61 20 55 54 46 2d  refers to a UTF-
3b80: 38 20 65 6e 63 6f 64 65 64 20 73 74 72 69 6e 67  8 encoded string
3b90: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
3ba0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
3bb0: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
3bc0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
3bd0: 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65  e number of byte
3be0: 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  s associated wit
3bf0: 68 20 74 68 69 73 20 76 61 6c 75 65 2e 20 20 54  h this value.  T
3c00: 68 65 20 72 65 74 75 72 6e 65 64 20 76 61 6c 75  he returned valu
3c10: 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d  e..        /// m
3c20: 61 79 20 62 65 20 7a 65 72 6f 2e 0d 0a 20 20 20  ay be zero...   
3c30: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
3c40: 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ns>..        pub
3c50: 6c 69 63 20 69 6e 74 20 47 65 74 42 79 74 65 73  lic int GetBytes
3c60: 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
3c70: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
3c80: 56 61 6c 75 65 20 3d 3d 20 49 6e 74 50 74 72 2e  Value == IntPtr.
3c90: 5a 65 72 6f 29 20 72 65 74 75 72 6e 20 30 3b 0d  Zero) return 0;.
3ca0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
3cb0: 75 72 6e 20 55 6e 73 61 66 65 4e 61 74 69 76 65  urn UnsafeNative
3cc0: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
3cd0: 76 61 6c 75 65 5f 62 79 74 65 73 28 70 56 61 6c  value_bytes(pVal
3ce0: 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ue);..        }.
3cf0: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
3d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d40: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
3d50: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
3d60: 20 20 20 20 20 2f 2f 2f 20 47 65 74 73 20 61 6e       /// Gets an
3d70: 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 3c 73  d returns the <s
3d80: 65 65 20 63 72 65 66 3d 22 49 6e 74 33 32 22 20  ee cref="Int32" 
3d90: 2f 3e 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  /> associated wi
3da0: 74 68 20 74 68 69 73 0d 0a 20 20 20 20 20 20 20  th this..       
3db0: 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20   /// value...   
3dc0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
3dd0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
3de0: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
3df0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
3e00: 20 63 72 65 66 3d 22 49 6e 74 33 32 22 20 2f 3e   cref="Int32" />
3e10: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
3e20: 20 74 68 69 73 20 76 61 6c 75 65 2e 0d 0a 20 20   this value...  
3e30: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
3e40: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  rns>..        pu
3e50: 62 6c 69 63 20 69 6e 74 20 47 65 74 49 6e 74 28  blic int GetInt(
3e60: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
3e70: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 56            if (pV
3e80: 61 6c 75 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  alue == IntPtr.Z
3e90: 65 72 6f 29 20 72 65 74 75 72 6e 20 64 65 66 61  ero) return defa
3ea0: 75 6c 74 28 69 6e 74 29 3b 0d 0a 20 20 20 20 20  ult(int);..     
3eb0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 55 6e         return Un
3ec0: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
3ed0: 73 2e 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  s.sqlite3_value_
3ee0: 69 6e 74 28 70 56 61 6c 75 65 29 3b 0d 0a 20 20  int(pValue);..  
3ef0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
3f00: 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
3f50: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
3f60: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
3f70: 20 47 65 74 73 20 61 6e 64 20 72 65 74 75 72 6e   Gets and return
3f80: 73 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  s the <see cref=
3f90: 22 49 6e 74 36 34 22 20 2f 3e 20 61 73 73 6f 63  "Int64" /> assoc
3fa0: 69 61 74 65 64 20 77 69 74 68 0d 0a 20 20 20 20  iated with..    
3fb0: 20 20 20 20 2f 2f 2f 20 74 68 69 73 20 76 61 6c      /// this val
3fc0: 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ue...        ///
3fd0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
3fe0: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
3ff0: 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
4000: 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  The <see cref="I
4010: 6e 74 36 34 22 20 2f 3e 20 61 73 73 6f 63 69 61  nt64" /> associa
4020: 74 65 64 20 77 69 74 68 20 74 68 69 73 20 76 61  ted with this va
4030: 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  lue...        //
4040: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
4050: 20 20 20 20 20 20 70 75 62 6c 69 63 20 6c 6f 6e        public lon
4060: 67 20 47 65 74 49 6e 74 36 34 28 29 0d 0a 20 20  g GetInt64()..  
4070: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
4080: 20 20 20 20 20 69 66 20 28 70 56 61 6c 75 65 20       if (pValue 
4090: 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20  == IntPtr.Zero) 
40a0: 72 65 74 75 72 6e 20 64 65 66 61 75 6c 74 28 6c  return default(l
40b0: 6f 6e 67 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c  ong);....#if !PL
40c0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
40d0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
40e0: 20 20 20 20 20 72 65 74 75 72 6e 20 55 6e 73 61       return Unsa
40f0: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
4100: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e  sqlite3_value_in
4110: 74 36 34 28 70 56 61 6c 75 65 29 3b 0d 0a 23 65  t64(pValue);..#e
4120: 6c 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e  lif !SQLITE_STAN
4130: 44 41 52 44 0d 0a 20 20 20 20 20 20 20 20 20 20  DARD..          
4140: 20 20 6c 6f 6e 67 20 76 61 6c 75 65 3b 0d 0a 20    long value;.. 
4150: 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66             Unsaf
4160: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
4170: 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74  qlite3_value_int
4180: 36 34 5f 69 6e 74 65 72 6f 70 28 70 56 61 6c 75  64_interop(pValu
4190: 65 2c 20 6f 75 74 20 76 61 6c 75 65 29 3b 0d 0a  e, out value);..
41a0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
41b0: 72 6e 20 76 61 6c 75 65 3b 0d 0a 23 65 6c 73 65  rn value;..#else
41c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
41d0: 72 6f 77 20 6e 65 77 20 4e 6f 74 49 6d 70 6c 65  row new NotImple
41e0: 6d 65 6e 74 65 64 45 78 63 65 70 74 69 6f 6e 28  mentedException(
41f0: 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
4200: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
4210: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
4220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4250: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
4260: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
4270: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 47  >..        /// G
4280: 65 74 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20  ets and returns 
4290: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 44  the <see cref="D
42a0: 6f 75 62 6c 65 22 20 2f 3e 20 61 73 73 6f 63 69  ouble" /> associ
42b0: 61 74 65 64 20 77 69 74 68 20 74 68 69 73 0d 0a  ated with this..
42c0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75          /// valu
42d0: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
42e0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
42f0: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
4300: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
4310: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 44 6f  he <see cref="Do
4320: 75 62 6c 65 22 20 2f 3e 20 61 73 73 6f 63 69 61  uble" /> associa
4330: 74 65 64 20 77 69 74 68 20 74 68 69 73 20 76 61  ted with this va
4340: 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  lue...        //
4350: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
4360: 20 20 20 20 20 20 70 75 62 6c 69 63 20 64 6f 75        public dou
4370: 62 6c 65 20 47 65 74 44 6f 75 62 6c 65 28 29 0d  ble GetDouble().
4380: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
4390: 20 20 20 20 20 20 20 20 69 66 20 28 70 56 61 6c          if (pVal
43a0: 75 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72  ue == IntPtr.Zer
43b0: 6f 29 20 72 65 74 75 72 6e 20 64 65 66 61 75 6c  o) return defaul
43c0: 74 28 64 6f 75 62 6c 65 29 3b 0d 0a 0d 0a 23 69  t(double);....#i
43d0: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
43e0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
43f0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
4400: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
4410: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76 61 6c  hods.sqlite3_val
4420: 75 65 5f 64 6f 75 62 6c 65 28 70 56 61 6c 75 65  ue_double(pValue
4430: 29 3b 0d 0a 23 65 6c 69 66 20 21 53 51 4c 49 54  );..#elif !SQLIT
4440: 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20  E_STANDARD..    
4450: 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 76          double v
4460: 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alue;..         
4470: 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
4480: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76  ethods.sqlite3_v
4490: 61 6c 75 65 5f 64 6f 75 62 6c 65 5f 69 6e 74 65  alue_double_inte
44a0: 72 6f 70 28 70 56 61 6c 75 65 2c 20 6f 75 74 20  rop(pValue, out 
44b0: 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20  value);..       
44c0: 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75       return valu
44d0: 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  e;..#else..     
44e0: 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
44f0: 20 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74 65 64 45   NotImplementedE
4500: 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 23 65 6e  xception();..#en
4510: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
4520: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
4530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4550: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4570: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
4580: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
4590: 20 20 20 20 2f 2f 2f 20 47 65 74 73 20 61 6e 64      /// Gets and
45a0: 20 72 65 74 75 72 6e 73 20 74 68 65 20 3c 73 65   returns the <se
45b0: 65 20 63 72 65 66 3d 22 53 74 72 69 6e 67 22 20  e cref="String" 
45c0: 2f 3e 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  /> associated wi
45d0: 74 68 20 74 68 69 73 0d 0a 20 20 20 20 20 20 20  th this..       
45e0: 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20   /// value...   
45f0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
4600: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
4610: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
4620: 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
4630: 20 63 72 65 66 3d 22 53 74 72 69 6e 67 22 20 2f   cref="String" /
4640: 3e 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  > associated wit
4650: 68 20 74 68 69 73 20 76 61 6c 75 65 2e 20 20 54  h this value.  T
4660: 68 65 20 76 61 6c 75 65 20 69 73 0d 0a 20 20 20  he value is..   
4670: 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 76 65 72 74       /// convert
4680: 65 64 20 66 72 6f 6d 20 74 68 65 20 55 54 46 2d  ed from the UTF-
4690: 38 20 65 6e 63 6f 64 69 6e 67 20 70 72 69 6f 72  8 encoding prior
46a0: 20 74 6f 20 62 65 69 6e 67 20 72 65 74 75 72 6e   to being return
46b0: 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
46c0: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
46d0: 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69       public stri
46e0: 6e 67 20 47 65 74 53 74 72 69 6e 67 28 29 0d 0a  ng GetString()..
46f0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
4700: 20 20 20 20 20 20 20 69 66 20 28 70 56 61 6c 75         if (pValu
4710: 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e == IntPtr.Zero
4720: 29 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a  ) return null;..
4730: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
4740: 72 6e 20 53 51 4c 69 74 65 53 74 72 69 6e 67 2e  rn SQLiteString.
4750: 53 74 72 69 6e 67 46 72 6f 6d 55 74 66 38 49 6e  StringFromUtf8In
4760: 74 50 74 72 28 70 56 61 6c 75 65 2c 20 47 65 74  tPtr(pValue, Get
4770: 42 79 74 65 73 28 29 29 3b 0d 0a 20 20 20 20 20  Bytes());..     
4780: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
4790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
47a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
47b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
47c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
47d0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
47e0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
47f0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 47 65  ..        /// Ge
4800: 74 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74  ts and returns t
4810: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 42 79  he <see cref="By
4820: 74 65 22 20 2f 3e 20 61 72 72 61 79 20 61 73 73  te" /> array ass
4830: 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69  ociated with thi
4840: 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76  s..        /// v
4850: 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  alue...        /
4860: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
4870: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
4880: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
4890: 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
48a0: 22 42 79 74 65 22 20 2f 3e 20 61 72 72 61 79 20  "Byte" /> array 
48b0: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
48c0: 74 68 69 73 20 76 61 6c 75 65 2e 0d 0a 20 20 20  this value...   
48d0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
48e0: 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ns>..        pub
48f0: 6c 69 63 20 62 79 74 65 5b 5d 20 47 65 74 42 6c  lic byte[] GetBl
4900: 6f 62 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ob()..        {.
4910: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
4920: 28 70 56 61 6c 75 65 20 3d 3d 20 49 6e 74 50 74  (pValue == IntPt
4930: 72 2e 5a 65 72 6f 29 20 72 65 74 75 72 6e 20 6e  r.Zero) return n
4940: 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ull;..          
4950: 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65 42    return SQLiteB
4960: 79 74 65 73 2e 46 72 6f 6d 49 6e 74 50 74 72 28  ytes.FromIntPtr(
4970: 70 56 61 6c 75 65 2c 20 47 65 74 42 79 74 65 73  pValue, GetBytes
4980: 28 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ());..        }.
4990: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
49a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
49b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
49c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
49d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
49e0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
49f0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
4a00: 20 20 20 20 20 2f 2f 2f 20 55 73 65 73 20 74 68       /// Uses th
4a10: 65 20 6e 61 74 69 76 65 20 76 61 6c 75 65 20 68  e native value h
4a20: 61 6e 64 6c 65 20 74 6f 20 6f 62 74 61 69 6e 20  andle to obtain 
4a30: 61 6e 64 20 73 74 6f 72 65 20 74 68 65 20 6d 61  and store the ma
4a40: 6e 61 67 65 64 20 76 61 6c 75 65 0d 0a 20 20 20  naged value..   
4a50: 20 20 20 20 20 2f 2f 2f 20 66 6f 72 20 74 68 69       /// for thi
4a60: 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  s object instanc
4a70: 65 2c 20 74 68 75 73 20 73 61 76 69 6e 67 20 69  e, thus saving i
4a80: 74 20 66 6f 72 20 6c 61 74 65 72 20 75 73 65 2e  t for later use.
4a90: 20 20 54 68 65 20 74 79 70 65 0d 0a 20 20 20 20    The type..    
4aa0: 20 20 20 20 2f 2f 2f 20 6f 66 20 74 68 65 20 6d      /// of the m
4ab0: 61 6e 61 67 65 64 20 76 61 6c 75 65 20 69 73 20  anaged value is 
4ac0: 64 65 74 65 72 6d 69 6e 65 64 20 62 79 20 74 68  determined by th
4ad0: 65 20 74 79 70 65 20 61 66 66 69 6e 69 74 79 20  e type affinity 
4ae0: 6f 66 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  of the..        
4af0: 2f 2f 2f 20 6e 61 74 69 76 65 20 76 61 6c 75 65  /// native value
4b00: 2e 20 20 49 66 20 74 68 65 20 74 79 70 65 20 61  .  If the type a
4b10: 66 66 69 6e 69 74 79 20 69 73 20 6e 6f 74 20 72  ffinity is not r
4b20: 65 63 6f 67 6e 69 7a 65 64 20 62 79 20 74 68 69  ecognized by thi
4b30: 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d  s..        /// m
4b40: 65 74 68 6f 64 2c 20 6e 6f 20 77 6f 72 6b 20 69  ethod, no work i
4b50: 73 20 64 6f 6e 65 20 61 6e 64 20 66 61 6c 73 65  s done and false
4b60: 20 69 73 20 72 65 74 75 72 6e 65 64 2e 0d 0a 20   is returned... 
4b70: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
4b80: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
4b90: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
4ba0: 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65        /// Non-ze
4bb0: 72 6f 20 69 66 20 74 68 65 20 6e 61 74 69 76 65  ro if the native
4bc0: 20 76 61 6c 75 65 20 77 61 73 20 70 65 72 73 69   value was persi
4bd0: 73 74 65 64 20 73 75 63 63 65 73 73 66 75 6c 6c  sted successfull
4be0: 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y...        /// 
4bf0: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
4c00: 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20      public bool 
4c10: 50 65 72 73 69 73 74 28 29 0d 0a 20 20 20 20 20  Persist()..     
4c20: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
4c30: 20 20 73 77 69 74 63 68 20 28 47 65 74 54 79 70    switch (GetTyp
4c40: 65 41 66 66 69 6e 69 74 79 28 29 29 0d 0a 20 20  eAffinity())..  
4c50: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
4c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73               cas
4c70: 65 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 55  e TypeAffinity.U
4c80: 6e 69 6e 69 74 69 61 6c 69 7a 65 64 3a 0d 0a 20  ninitialized:.. 
4c90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4ca0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
4cb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61                va
4cc0: 6c 75 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20  lue = null;..   
4cd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4ce0: 20 20 20 20 20 50 72 65 76 65 6e 74 4e 61 74 69       PreventNati
4cf0: 76 65 41 63 63 65 73 73 28 29 3b 0d 0a 20 20 20  veAccess();..   
4d00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4d10: 20 20 20 20 20 72 65 74 75 72 6e 20 28 70 65 72       return (per
4d20: 73 69 73 74 65 64 20 3d 20 74 72 75 65 29 3b 0d  sisted = true);.
4d30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4d40: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
4d50: 20 20 20 20 20 20 20 20 63 61 73 65 20 54 79 70          case Typ
4d60: 65 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34 3a  eAffinity.Int64:
4d70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4d80: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
4d90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4da0: 20 76 61 6c 75 65 20 3d 20 47 65 74 49 6e 74 36   value = GetInt6
4db0: 34 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  4();..          
4dc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 50 72                Pr
4dd0: 65 76 65 6e 74 4e 61 74 69 76 65 41 63 63 65 73  eventNativeAcces
4de0: 73 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  s();..          
4df0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
4e00: 74 75 72 6e 20 28 70 65 72 73 69 73 74 65 64 20  turn (persisted 
4e10: 3d 20 74 72 75 65 29 3b 0d 0a 20 20 20 20 20 20  = true);..      
4e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
4e30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4e40: 20 63 61 73 65 20 54 79 70 65 41 66 66 69 6e 69   case TypeAffini
4e50: 74 79 2e 44 6f 75 62 6c 65 3a 0d 0a 20 20 20 20  ty.Double:..    
4e60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4e70: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
4e80: 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65             value
4e90: 20 3d 20 47 65 74 44 6f 75 62 6c 65 28 29 3b 0d   = GetDouble();.
4ea0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4eb0: 20 20 20 20 20 20 20 20 20 50 72 65 76 65 6e 74           Prevent
4ec0: 4e 61 74 69 76 65 41 63 63 65 73 73 28 29 3b 0d  NativeAccess();.
4ed0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4ee0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
4ef0: 28 70 65 72 73 69 73 74 65 64 20 3d 20 74 72 75  (persisted = tru
4f00: 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
4f10: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
4f20: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
4f30: 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 54 65   TypeAffinity.Te
4f40: 78 74 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  xt:..           
4f50: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
4f60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4f70: 20 20 20 20 76 61 6c 75 65 20 3d 20 47 65 74 53      value = GetS
4f80: 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20  tring();..      
4f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4fa0: 20 20 50 72 65 76 65 6e 74 4e 61 74 69 76 65 41    PreventNativeA
4fb0: 63 63 65 73 73 28 29 3b 0d 0a 20 20 20 20 20 20  ccess();..      
4fc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4fd0: 20 20 72 65 74 75 72 6e 20 28 70 65 72 73 69 73    return (persis
4fe0: 74 65 64 20 3d 20 74 72 75 65 29 3b 0d 0a 20 20  ted = true);..  
4ff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5000: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
5010: 20 20 20 20 20 63 61 73 65 20 54 79 70 65 41 66       case TypeAf
5020: 66 69 6e 69 74 79 2e 42 6c 6f 62 3a 0d 0a 20 20  finity.Blob:..  
5030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5040: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
5050: 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c               val
5060: 75 65 20 3d 20 47 65 74 42 79 74 65 73 28 29 3b  ue = GetBytes();
5070: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5080: 20 20 20 20 20 20 20 20 20 20 50 72 65 76 65 6e            Preven
5090: 74 4e 61 74 69 76 65 41 63 63 65 73 73 28 29 3b  tNativeAccess();
50a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
50b0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
50c0: 20 28 70 65 72 73 69 73 74 65 64 20 3d 20 74 72   (persisted = tr
50d0: 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ue);..          
50e0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
50f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73               cas
5100: 65 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 4e  e TypeAffinity.N
5110: 75 6c 6c 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  ull:..          
5120: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
5130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5140: 20 20 20 20 20 76 61 6c 75 65 20 3d 20 44 42 4e       value = DBN
5150: 75 6c 6c 2e 56 61 6c 75 65 3b 0d 0a 20 20 20 20  ull.Value;..    
5160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5170: 20 20 20 20 50 72 65 76 65 6e 74 4e 61 74 69 76      PreventNativ
5180: 65 41 63 63 65 73 73 28 29 3b 0d 0a 20 20 20 20  eAccess();..    
5190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
51a0: 20 20 20 20 72 65 74 75 72 6e 20 28 70 65 72 73      return (pers
51b0: 69 73 74 65 64 20 3d 20 74 72 75 65 29 3b 0d 0a  isted = true);..
51c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
51d0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
51e0: 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a 0d         default:.
51f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5200: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
5210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5220: 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20  return false;.. 
5230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5240: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
5250: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
5260: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
5270: 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23  on..    }..    #
5280: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
5290: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
52a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
52b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
52c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
52d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
52e0: 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69      #region SQLi
52f0: 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
5300: 74 4f 70 20 45 6e 75 6d 65 72 61 74 69 6f 6e 0d  tOp Enumeration.
5310: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
5320: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 73  y>..    /// Thes
5330: 65 20 61 72 65 20 74 68 65 20 61 6c 6c 6f 77 65  e are the allowe
5340: 64 20 76 61 6c 75 65 73 20 66 6f 72 20 74 68 65  d values for the
5350: 20 6f 70 65 72 61 74 6f 72 73 20 74 68 61 74 20   operators that 
5360: 61 72 65 20 70 61 72 74 20 6f 66 20 61 0d 0a 20  are part of a.. 
5370: 20 20 20 2f 2f 2f 20 63 6f 6e 73 74 72 61 69 6e     /// constrain
5380: 74 20 74 65 72 6d 20 69 6e 20 74 68 65 20 57 48  t term in the WH
5390: 45 52 45 20 63 6c 61 75 73 65 20 6f 66 20 61 20  ERE clause of a 
53a0: 71 75 65 72 79 20 74 68 61 74 20 75 73 65 73 20  query that uses 
53b0: 61 20 76 69 72 74 75 61 6c 0d 0a 20 20 20 20 2f  a virtual..    /
53c0: 2f 2f 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 2f  // table...    /
53d0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
53e0: 20 20 20 70 75 62 6c 69 63 20 65 6e 75 6d 20 53     public enum S
53f0: 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72  QLiteIndexConstr
5400: 61 69 6e 74 4f 70 20 3a 20 62 79 74 65 0d 0a 20  aintOp : byte.. 
5410: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2f     {..        //
5420: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
5430: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 76 61       /// This va
5440: 6c 75 65 20 72 65 70 72 65 73 65 6e 74 73 20 74  lue represents t
5450: 68 65 20 65 71 75 61 6c 69 74 79 20 6f 70 65 72  he equality oper
5460: 61 74 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ator...        /
5470: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
5480: 20 20 20 20 20 20 20 45 71 75 61 6c 54 6f 20 3d         EqualTo =
5490: 20 32 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   2,....        /
54a0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
54b0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 76        /// This v
54c0: 61 6c 75 65 20 72 65 70 72 65 73 65 6e 74 73 20  alue represents 
54d0: 74 68 65 20 67 72 65 61 74 65 72 20 74 68 61 6e  the greater than
54e0: 20 6f 70 65 72 61 74 6f 72 2e 0d 0a 20 20 20 20   operator...    
54f0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
5500: 79 3e 0d 0a 20 20 20 20 20 20 20 20 47 72 65 61  y>..        Grea
5510: 74 65 72 54 68 61 6e 20 3d 20 34 2c 0d 0a 0d 0a  terThan = 4,....
5520: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
5530: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
5540: 2f 2f 20 54 68 69 73 20 76 61 6c 75 65 20 72 65  // This value re
5550: 70 72 65 73 65 6e 74 73 20 74 68 65 20 6c 65 73  presents the les
5560: 73 20 74 68 61 6e 20 6f 72 20 65 71 75 61 6c 20  s than or equal 
5570: 74 6f 20 6f 70 65 72 61 74 6f 72 2e 0d 0a 20 20  to operator...  
5580: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
5590: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 4c 65  ary>..        Le
55a0: 73 73 54 68 61 6e 4f 72 45 71 75 61 6c 54 6f 20  ssThanOrEqualTo 
55b0: 3d 20 38 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20  = 8,....        
55c0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
55d0: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
55e0: 76 61 6c 75 65 20 72 65 70 72 65 73 65 6e 74 73  value represents
55f0: 20 74 68 65 20 6c 65 73 73 20 74 68 61 6e 20 6f   the less than o
5600: 70 65 72 61 74 6f 72 2e 0d 0a 20 20 20 20 20 20  perator...      
5610: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
5620: 0d 0a 20 20 20 20 20 20 20 20 4c 65 73 73 54 68  ..        LessTh
5630: 61 6e 20 3d 20 31 36 2c 0d 0a 0d 0a 20 20 20 20  an = 16,....    
5640: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
5650: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
5660: 68 69 73 20 76 61 6c 75 65 20 72 65 70 72 65 73  his value repres
5670: 65 6e 74 73 20 74 68 65 20 67 72 65 61 74 65 72  ents the greater
5680: 20 74 68 61 6e 20 6f 72 20 65 71 75 61 6c 20 74   than or equal t
5690: 6f 20 6f 70 65 72 61 74 6f 72 2e 0d 0a 20 20 20  o operator...   
56a0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
56b0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 47 72 65  ry>..        Gre
56c0: 61 74 65 72 54 68 61 6e 4f 72 45 71 75 61 6c 54  aterThanOrEqualT
56d0: 6f 20 3d 20 33 32 2c 0d 0a 0d 0a 20 20 20 20 20  o = 32,....     
56e0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
56f0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
5700: 69 73 20 76 61 6c 75 65 20 72 65 70 72 65 73 65  is value represe
5710: 6e 74 73 20 74 68 65 20 4d 41 54 43 48 20 6f 70  nts the MATCH op
5720: 65 72 61 74 6f 72 2e 0d 0a 20 20 20 20 20 20 20  erator...       
5730: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
5740: 0a 20 20 20 20 20 20 20 20 4d 61 74 63 68 20 3d  .        Match =
5750: 20 36 34 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20   64..    }..    
5760: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
5770: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
5780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
57a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
57b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
57c0: 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c  .    #region SQL
57d0: 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69  iteIndexConstrai
57e0: 6e 74 20 48 65 6c 70 65 72 20 43 6c 61 73 73 0d  nt Helper Class.
57f0: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
5800: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73  y>..    /// This
5810: 20 63 6c 61 73 73 20 72 65 70 72 65 73 65 6e 74   class represent
5820: 73 20 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c  s the native sql
5830: 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74  ite3_index_const
5840: 72 61 69 6e 74 20 73 74 72 75 63 74 75 72 65 0d  raint structure.
5850: 0a 20 20 20 20 2f 2f 2f 20 66 72 6f 6d 20 74 68  .    /// from th
5860: 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69  e SQLite core li
5870: 62 72 61 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20  brary...    /// 
5880: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
5890: 70 75 62 6c 69 63 20 73 65 61 6c 65 64 20 63 6c  public sealed cl
58a0: 61 73 73 20 53 51 4c 69 74 65 49 6e 64 65 78 43  ass SQLiteIndexC
58b0: 6f 6e 73 74 72 61 69 6e 74 0d 0a 20 20 20 20 7b  onstraint..    {
58c0: 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
58d0: 6e 20 49 6e 74 65 72 6e 61 6c 20 43 6f 6e 73 74  n Internal Const
58e0: 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20  ructors..       
58f0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
5900: 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73          /// Cons
5910: 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e  tructs an instan
5920: 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73  ce of this class
5930: 20 75 73 69 6e 67 20 74 68 65 20 73 70 65 63 69   using the speci
5940: 66 69 65 64 20 6e 61 74 69 76 65 0d 0a 20 20 20  fied native..   
5950: 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33       /// sqlite3
5960: 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e  _index_constrain
5970: 74 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20  t structure...  
5980: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
5990: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
59a0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63  / <param name="c
59b0: 6f 6e 73 74 72 61 69 6e 74 22 3e 0d 0a 20 20 20  onstraint">..   
59c0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
59d0: 69 76 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65  ive sqlite3_inde
59e0: 78 5f 63 6f 6e 73 74 72 61 69 6e 74 20 73 74 72  x_constraint str
59f0: 75 63 74 75 72 65 20 74 6f 20 75 73 65 2e 0d 0a  ucture to use...
5a00: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
5a10: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e  ram>..        in
5a20: 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 49 6e 64  ternal SQLiteInd
5a30: 65 78 43 6f 6e 73 74 72 61 69 6e 74 28 0d 0a 20  exConstraint(.. 
5a40: 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66             Unsaf
5a50: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
5a60: 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e  qlite3_index_con
5a70: 73 74 72 61 69 6e 74 20 63 6f 6e 73 74 72 61 69  straint constrai
5a80: 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  nt..            
5a90: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a  )..            :
5aa0: 20 74 68 69 73 28 63 6f 6e 73 74 72 61 69 6e 74   this(constraint
5ab0: 2e 69 43 6f 6c 75 6d 6e 2c 20 63 6f 6e 73 74 72  .iColumn, constr
5ac0: 61 69 6e 74 2e 6f 70 2c 20 63 6f 6e 73 74 72 61  aint.op, constra
5ad0: 69 6e 74 2e 75 73 61 62 6c 65 2c 0d 0a 20 20 20  int.usable,..   
5ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5af0: 63 6f 6e 73 74 72 61 69 6e 74 2e 69 54 65 72 6d  constraint.iTerm
5b00: 4f 66 66 73 65 74 29 0d 0a 20 20 20 20 20 20 20  Offset)..       
5b10: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
5b20: 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
5b30: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
5b40: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
5b50: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
5b60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5b70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d  ///////////////.
5ba0: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
5bb0: 6f 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74  on Private Const
5bc0: 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20  ructors..       
5bd0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
5be0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73          /// Cons
5bf0: 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e  tructs an instan
5c00: 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73  ce of this class
5c10: 20 75 73 69 6e 67 20 74 68 65 20 73 70 65 63 69   using the speci
5c20: 66 69 65 64 20 66 69 65 6c 64 0d 0a 20 20 20 20  fied field..    
5c30: 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 73 2e 0d      /// values..
5c40: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
5c50: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
5c60: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
5c70: 3d 22 69 43 6f 6c 75 6d 6e 22 3e 0d 0a 20 20 20  ="iColumn">..   
5c80: 20 20 20 20 20 2f 2f 2f 20 43 6f 6c 75 6d 6e 20       /// Column 
5c90: 6f 6e 20 6c 65 66 74 2d 68 61 6e 64 20 73 69 64  on left-hand sid
5ca0: 65 20 6f 66 20 63 6f 6e 73 74 72 61 69 6e 74 2e  e of constraint.
5cb0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
5cc0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
5cd0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
5ce0: 22 6f 70 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  "op">..        /
5cf0: 2f 2f 20 43 6f 6e 73 74 72 61 69 6e 74 20 6f 70  // Constraint op
5d00: 65 72 61 74 6f 72 20 28 3c 73 65 65 20 63 72 65  erator (<see cre
5d10: 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 43 6f  f="SQLiteIndexCo
5d20: 6e 73 74 72 61 69 6e 74 4f 70 22 20 2f 3e 29 2e  nstraintOp" />).
5d30: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
5d40: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
5d50: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
5d60: 22 75 73 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20  "usable">..     
5d70: 20 20 20 2f 2f 2f 20 54 72 75 65 20 69 66 20 74     /// True if t
5d80: 68 69 73 20 63 6f 6e 73 74 72 61 69 6e 74 20 69  his constraint i
5d90: 73 20 75 73 61 62 6c 65 2e 0d 0a 20 20 20 20 20  s usable...     
5da0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
5db0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
5dc0: 72 61 6d 20 6e 61 6d 65 3d 22 69 54 65 72 6d 4f  ram name="iTermO
5dd0: 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20 20  ffset">..       
5de0: 20 2f 2f 2f 20 55 73 65 64 20 69 6e 74 65 72 6e   /// Used intern
5df0: 61 6c 6c 79 20 2d 20 3c 73 65 65 20 63 72 65 66  ally - <see cref
5e00: 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64  ="ISQLiteManaged
5e10: 4d 6f 64 75 6c 65 2e 42 65 73 74 49 6e 64 65 78  Module.BestIndex
5e20: 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  " />..        //
5e30: 2f 20 73 68 6f 75 6c 64 20 69 67 6e 6f 72 65 2e  / should ignore.
5e40: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
5e50: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
5e60: 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 49 6e  private SQLiteIn
5e70: 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 28 0d 0a  dexConstraint(..
5e80: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
5e90: 69 43 6f 6c 75 6d 6e 2c 0d 0a 20 20 20 20 20 20  iColumn,..      
5ea0: 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65        SQLiteInde
5eb0: 78 43 6f 6e 73 74 72 61 69 6e 74 4f 70 20 6f 70  xConstraintOp op
5ec0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62  ,..            b
5ed0: 79 74 65 20 75 73 61 62 6c 65 2c 0d 0a 20 20 20  yte usable,..   
5ee0: 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 54 65           int iTe
5ef0: 72 6d 4f 66 66 73 65 74 0d 0a 20 20 20 20 20 20  rmOffset..      
5f00: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
5f10: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
5f20: 74 68 69 73 2e 69 43 6f 6c 75 6d 6e 20 3d 20 69  this.iColumn = i
5f30: 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20  Column;..       
5f40: 20 20 20 20 20 74 68 69 73 2e 6f 70 20 3d 20 6f       this.op = o
5f50: 70 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  p;..            
5f60: 74 68 69 73 2e 75 73 61 62 6c 65 20 3d 20 75 73  this.usable = us
5f70: 61 62 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  able;..         
5f80: 20 20 20 74 68 69 73 2e 69 54 65 72 6d 4f 66 66     this.iTermOff
5f90: 73 65 74 20 3d 20 69 54 65 72 6d 4f 66 66 73 65  set = iTermOffse
5fa0: 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  t;..        }.. 
5fb0: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
5fc0: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
5fd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5fe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5ff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6010: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
6020: 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 46 69  region Public Fi
6030: 65 6c 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  elds..        //
6040: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
6050: 20 20 20 20 20 2f 2f 2f 20 43 6f 6c 75 6d 6e 20       /// Column 
6060: 6f 6e 20 6c 65 66 74 2d 68 61 6e 64 20 73 69 64  on left-hand sid
6070: 65 20 6f 66 20 63 6f 6e 73 74 72 61 69 6e 74 2e  e of constraint.
6080: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
6090: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
60a0: 20 20 70 75 62 6c 69 63 20 69 6e 74 20 69 43 6f    public int iCo
60b0: 6c 75 6d 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  lumn;....       
60c0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
60d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
60e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
60f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6100: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
6110: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
6120: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f  ..        /// Co
6130: 6e 73 74 72 61 69 6e 74 20 6f 70 65 72 61 74 6f  nstraint operato
6140: 72 20 28 3c 73 65 65 20 63 72 65 66 3d 22 53 51  r (<see cref="SQ
6150: 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61  LiteIndexConstra
6160: 69 6e 74 4f 70 22 20 2f 3e 29 2e 0d 0a 20 20 20  intOp" />)...   
6170: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
6180: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ry>..        pub
6190: 6c 69 63 20 53 51 4c 69 74 65 49 6e 64 65 78 43  lic SQLiteIndexC
61a0: 6f 6e 73 74 72 61 69 6e 74 4f 70 20 6f 70 3b 0d  onstraintOp op;.
61b0: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
61c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
61d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
61e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
61f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6200: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
6210: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
6220: 20 20 20 20 2f 2f 2f 20 54 72 75 65 20 69 66 20      /// True if 
6230: 74 68 69 73 20 63 6f 6e 73 74 72 61 69 6e 74 20  this constraint 
6240: 69 73 20 75 73 61 62 6c 65 2e 0d 0a 20 20 20 20  is usable...    
6250: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
6260: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
6270: 69 63 20 62 79 74 65 20 75 73 61 62 6c 65 3b 0d  ic byte usable;.
6280: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
6290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
62a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
62b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
62c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
62d0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
62e0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
62f0: 20 20 20 20 2f 2f 2f 20 55 73 65 64 20 69 6e 74      /// Used int
6300: 65 72 6e 61 6c 6c 79 20 2d 20 3c 73 65 65 20 63  ernally - <see c
6310: 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61  ref="ISQLiteMana
6320: 67 65 64 4d 6f 64 75 6c 65 2e 42 65 73 74 49 6e  gedModule.BestIn
6330: 64 65 78 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20  dex" />..       
6340: 20 2f 2f 2f 20 73 68 6f 75 6c 64 20 69 67 6e 6f   /// should igno
6350: 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
6360: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
6370: 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
6380: 69 54 65 72 6d 4f 66 66 73 65 74 3b 0d 0a 20 20  iTermOffset;..  
6390: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
63a0: 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e  ..    }..    #en
63b0: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
63f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
6410: 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65    #region SQLite
6420: 49 6e 64 65 78 4f 72 64 65 72 42 79 20 48 65 6c  IndexOrderBy Hel
6430: 70 65 72 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f  per Class..    /
6440: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
6450: 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73    /// This class
6460: 20 72 65 70 72 65 73 65 6e 74 73 20 74 68 65 20   represents the 
6470: 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 69  native sqlite3_i
6480: 6e 64 65 78 5f 6f 72 64 65 72 62 79 20 73 74 72  ndex_orderby str
6490: 75 63 74 75 72 65 20 66 72 6f 6d 0d 0a 20 20 20  ucture from..   
64a0: 20 2f 2f 2f 20 74 68 65 20 53 51 4c 69 74 65 20   /// the SQLite 
64b0: 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20  core library... 
64c0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
64d0: 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73 65  >..    public se
64e0: 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74  aled class SQLit
64f0: 65 49 6e 64 65 78 4f 72 64 65 72 42 79 0d 0a 20  eIndexOrderBy.. 
6500: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72     {..        #r
6510: 65 67 69 6f 6e 20 49 6e 74 65 72 6e 61 6c 20 43  egion Internal C
6520: 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20  onstructors..   
6530: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
6540: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
6550: 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e  Constructs an in
6560: 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63  stance of this c
6570: 6c 61 73 73 20 75 73 69 6e 67 20 74 68 65 20 73  lass using the s
6580: 70 65 63 69 66 69 65 64 20 6e 61 74 69 76 65 0d  pecified native.
6590: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c  .        /// sql
65a0: 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72  ite3_index_order
65b0: 62 79 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  by structure... 
65c0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
65d0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
65e0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
65f0: 6f 72 64 65 72 42 79 22 3e 0d 0a 20 20 20 20 20  orderBy">..     
6600: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
6610: 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  e sqlite3_index_
6620: 6f 72 64 65 72 62 79 20 73 74 72 75 63 74 75 72  orderby structur
6630: 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20 20  e to use...     
6640: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
6650: 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61  .        interna
6660: 6c 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64  l SQLiteIndexOrd
6670: 65 72 42 79 28 0d 0a 20 20 20 20 20 20 20 20 20  erBy(..         
6680: 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
6690: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69  ethods.sqlite3_i
66a0: 6e 64 65 78 5f 6f 72 64 65 72 62 79 20 6f 72 64  ndex_orderby ord
66b0: 65 72 42 79 0d 0a 20 20 20 20 20 20 20 20 20 20  erBy..          
66c0: 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
66d0: 20 3a 20 74 68 69 73 28 6f 72 64 65 72 42 79 2e   : this(orderBy.
66e0: 69 43 6f 6c 75 6d 6e 2c 20 6f 72 64 65 72 42 79  iColumn, orderBy
66f0: 2e 64 65 73 63 29 0d 0a 20 20 20 20 20 20 20 20  .desc)..        
6700: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  {..            /
6710: 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
6720: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
6730: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
6740: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
6750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
6790: 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
67a0: 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74 72  n Private Constr
67b0: 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20  uctors..        
67c0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
67d0: 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74         /// Const
67e0: 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63  ructs an instanc
67f0: 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73 20  e of this class 
6800: 75 73 69 6e 67 20 74 68 65 20 73 70 65 63 69 66  using the specif
6810: 69 65 64 20 66 69 65 6c 64 0d 0a 20 20 20 20 20  ied field..     
6820: 20 20 20 2f 2f 2f 20 76 61 6c 75 65 73 2e 0d 0a     /// values...
6830: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
6840: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
6850: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
6860: 22 69 43 6f 6c 75 6d 6e 22 3e 0d 0a 20 20 20 20  "iColumn">..    
6870: 20 20 20 20 2f 2f 2f 20 43 6f 6c 75 6d 6e 20 6e      /// Column n
6880: 75 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20 20 20  umber...        
6890: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
68a0: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
68b0: 20 6e 61 6d 65 3d 22 64 65 73 63 22 3e 0d 0a 20   name="desc">.. 
68c0: 20 20 20 20 20 20 20 2f 2f 2f 20 54 72 75 65 20         /// True 
68d0: 66 6f 72 20 44 45 53 43 2e 20 20 46 61 6c 73 65  for DESC.  False
68e0: 20 66 6f 72 20 41 53 43 2e 0d 0a 20 20 20 20 20   for ASC...     
68f0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
6900: 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
6910: 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65   SQLiteIndexOrde
6920: 72 42 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  rBy(..          
6930: 20 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 2c 0d 0a    int iColumn,..
6940: 20 20 20 20 20 20 20 20 20 20 20 20 62 79 74 65              byte
6950: 20 64 65 73 63 0d 0a 20 20 20 20 20 20 20 20 20   desc..         
6960: 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
6970: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
6980: 73 2e 69 43 6f 6c 75 6d 6e 20 3d 20 69 43 6f 6c  s.iColumn = iCol
6990: 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  umn;..          
69a0: 20 20 74 68 69 73 2e 64 65 73 63 20 3d 20 64 65    this.desc = de
69b0: 73 63 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  sc;..        }..
69c0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
69d0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
69e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
69f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a20: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
6a30: 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 46  #region Public F
6a40: 69 65 6c 64 73 0d 0a 20 20 20 20 20 20 20 20 2f  ields..        /
6a50: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
6a60: 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6c 75 6d 6e        /// Column
6a70: 20 6e 75 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20   number...      
6a80: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
6a90: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
6aa0: 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b 0d 0a 0d   int iColumn;...
6ab0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
6ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
6b00: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
6b10: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
6b20: 20 20 2f 2f 2f 20 54 72 75 65 20 66 6f 72 20 44    /// True for D
6b30: 45 53 43 2e 20 20 46 61 6c 73 65 20 66 6f 72 20  ESC.  False for 
6b40: 41 53 43 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ASC...        //
6b50: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
6b60: 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 79 74        public byt
6b70: 65 20 64 65 73 63 3b 0d 0a 20 20 20 20 20 20 20  e desc;..       
6b80: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20   #endregion..   
6b90: 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69   }..    #endregi
6ba0: 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  on....    //////
6bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6bc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6bf0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65  /////....    #re
6c00: 67 69 6f 6e 20 53 51 4c 69 74 65 49 6e 64 65 78  gion SQLiteIndex
6c10: 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20  ConstraintUsage 
6c20: 48 65 6c 70 65 72 20 43 6c 61 73 73 0d 0a 20 20  Helper Class..  
6c30: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
6c40: 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c  .    /// This cl
6c50: 61 73 73 20 72 65 70 72 65 73 65 6e 74 73 20 74  ass represents t
6c60: 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65  he native sqlite
6c70: 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69  3_index_constrai
6c80: 6e 74 5f 75 73 61 67 65 0d 0a 20 20 20 20 2f 2f  nt_usage..    //
6c90: 2f 20 73 74 72 75 63 74 75 72 65 20 66 72 6f 6d  / structure from
6ca0: 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
6cb0: 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 2f   library...    /
6cc0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
6cd0: 20 20 20 70 75 62 6c 69 63 20 73 65 61 6c 65 64     public sealed
6ce0: 20 63 6c 61 73 73 20 53 51 4c 69 74 65 49 6e 64   class SQLiteInd
6cf0: 65 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  exConstraintUsag
6d00: 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  e..    {..      
6d10: 20 20 23 72 65 67 69 6f 6e 20 49 6e 74 65 72 6e    #region Intern
6d20: 61 6c 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d  al Constructors.
6d30: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
6d40: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
6d50: 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61  /// Constructs a
6d60: 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68  n instance of th
6d70: 69 73 20 63 6c 61 73 73 20 75 73 69 6e 67 20 74  is class using t
6d80: 68 65 20 73 70 65 63 69 66 69 65 64 20 6e 61 74  he specified nat
6d90: 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ive..        ///
6da0: 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63   sqlite3_index_c
6db0: 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65 20  onstraint_usage 
6dc0: 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20  structure...    
6dd0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
6de0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
6df0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e  <param name="con
6e00: 73 74 72 61 69 6e 74 55 73 61 67 65 22 3e 0d 0a  straintUsage">..
6e10: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
6e20: 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 69  native sqlite3_i
6e30: 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f  ndex_constraint_
6e40: 75 73 61 67 65 20 73 74 72 75 63 74 75 72 65 20  usage structure 
6e50: 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20 20 20 20  to use...       
6e60: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
6e70: 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20         internal 
6e80: 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74  SQLiteIndexConst
6e90: 72 61 69 6e 74 55 73 61 67 65 28 0d 0a 20 20 20  raintUsage(..   
6ea0: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
6eb0: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
6ec0: 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74  ite3_index_const
6ed0: 72 61 69 6e 74 5f 75 73 61 67 65 20 63 6f 6e 73  raint_usage cons
6ee0: 74 72 61 69 6e 74 55 73 61 67 65 0d 0a 20 20 20  traintUsage..   
6ef0: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
6f00: 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 63          : this(c
6f10: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 2e 61  onstraintUsage.a
6f20: 72 67 76 49 6e 64 65 78 2c 20 63 6f 6e 73 74 72  rgvIndex, constr
6f30: 61 69 6e 74 55 73 61 67 65 2e 6f 6d 69 74 29 0d  aintUsage.omit).
6f40: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
6f50: 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
6f60: 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
6f70: 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
6f80: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
6f90: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
6fa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6fb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6fc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6fd0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
6fe0: 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
6ff0: 74 65 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d  te Constructors.
7000: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
7010: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
7020: 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61  /// Constructs a
7030: 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68  n instance of th
7040: 69 73 20 63 6c 61 73 73 20 75 73 69 6e 67 20 74  is class using t
7050: 68 65 20 73 70 65 63 69 66 69 65 64 20 66 69 65  he specified fie
7060: 6c 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ld..        /// 
7070: 76 61 6c 75 65 73 2e 0d 0a 20 20 20 20 20 20 20  values...       
7080: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
7090: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
70a0: 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 76 49 6e  ram name="argvIn
70b0: 64 65 78 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  dex">..        /
70c0: 2f 2f 20 49 66 20 67 72 65 61 74 65 72 20 74 68  // If greater th
70d0: 61 6e 20 30 2c 20 63 6f 6e 73 74 72 61 69 6e 74  an 0, constraint
70e0: 20 69 73 20 70 61 72 74 20 6f 66 20 61 72 67 76   is part of argv
70f0: 20 74 6f 20 78 46 69 6c 74 65 72 2e 0d 0a 20 20   to xFilter...  
7100: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
7110: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
7120: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 6d 69  <param name="omi
7130: 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  t">..        ///
7140: 20 44 6f 20 6e 6f 74 20 63 6f 64 65 20 61 20 74   Do not code a t
7150: 65 73 74 20 66 6f 72 20 74 68 69 73 20 63 6f 6e  est for this con
7160: 73 74 72 61 69 6e 74 2e 0d 0a 20 20 20 20 20 20  straint...      
7170: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
7180: 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
7190: 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74  SQLiteIndexConst
71a0: 72 61 69 6e 74 55 73 61 67 65 28 0d 0a 20 20 20  raintUsage(..   
71b0: 20 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67           int arg
71c0: 76 49 6e 64 65 78 2c 0d 0a 20 20 20 20 20 20 20  vIndex,..       
71d0: 20 20 20 20 20 62 79 74 65 20 6f 6d 69 74 0d 0a       byte omit..
71e0: 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
71f0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
7200: 20 20 20 20 20 20 74 68 69 73 2e 61 72 67 76 49        this.argvI
7210: 6e 64 65 78 20 3d 20 61 72 67 76 49 6e 64 65 78  ndex = argvIndex
7220: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ;..            t
7230: 68 69 73 2e 6f 6d 69 74 20 3d 20 6f 6d 69 74 3b  his.omit = omit;
7240: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
7250: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
7260: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
7270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
72a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
72b0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
72c0: 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 46 69 65  egion Public Fie
72d0: 6c 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  lds..        ///
72e0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
72f0: 20 20 20 20 2f 2f 2f 20 49 66 20 67 72 65 61 74      /// If great
7300: 65 72 20 74 68 61 6e 20 30 2c 20 63 6f 6e 73 74  er than 0, const
7310: 72 61 69 6e 74 20 69 73 20 70 61 72 74 20 6f 66  raint is part of
7320: 20 61 72 67 76 20 74 6f 20 78 46 69 6c 74 65 72   argv to xFilter
7330: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
7340: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
7350: 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 61 72     public int ar
7360: 67 76 49 6e 64 65 78 3b 0d 0a 0d 0a 20 20 20 20  gvIndex;....    
7370: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
7380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
73a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
73b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
73c0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
73d0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
73e0: 2f 20 44 6f 20 6e 6f 74 20 63 6f 64 65 20 61 20  / Do not code a 
73f0: 74 65 73 74 20 66 6f 72 20 74 68 69 73 20 63 6f  test for this co
7400: 6e 73 74 72 61 69 6e 74 2e 0d 0a 20 20 20 20 20  nstraint...     
7410: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
7420: 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
7430: 63 20 62 79 74 65 20 6f 6d 69 74 3b 0d 0a 20 20  c byte omit;..  
7440: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
7450: 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e  ..    }..    #en
7460: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
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 2f 2f 2f  ////////////////
74b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
74c0: 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65    #region SQLite
74d0: 49 6e 64 65 78 49 6e 70 75 74 73 20 48 65 6c 70  IndexInputs Help
74e0: 65 72 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f  er Class..    //
74f0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
7500: 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20   /// This class 
7510: 72 65 70 72 65 73 65 6e 74 73 20 74 68 65 20 76  represents the v
7520: 61 72 69 6f 75 73 20 69 6e 70 75 74 73 20 70 72  arious inputs pr
7530: 6f 76 69 64 65 64 20 62 79 20 74 68 65 20 53 51  ovided by the SQ
7540: 4c 69 74 65 20 63 6f 72 65 0d 0a 20 20 20 20 2f  Lite core..    /
7550: 2f 2f 20 6c 69 62 72 61 72 79 20 74 6f 20 74 68  // library to th
7560: 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
7570: 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c  LiteManagedModul
7580: 65 2e 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 20  e.BestIndex" /> 
7590: 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f 2f  method...    ///
75a0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
75b0: 20 70 75 62 6c 69 63 20 73 65 61 6c 65 64 20 63   public sealed c
75c0: 6c 61 73 73 20 53 51 4c 69 74 65 49 6e 64 65 78  lass SQLiteIndex
75d0: 49 6e 70 75 74 73 0d 0a 20 20 20 20 7b 0d 0a 20  Inputs..    {.. 
75e0: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49         #region I
75f0: 6e 74 65 72 6e 61 6c 20 43 6f 6e 73 74 72 75 63  nternal Construc
7600: 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tors..        //
7610: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
7620: 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75       /// Constru
7630: 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20  cts an instance 
7640: 6f 66 20 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a  of this class...
7650: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
7660: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
7670: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
7680: 22 6e 43 6f 6e 73 74 72 61 69 6e 74 22 3e 0d 0a  "nConstraint">..
7690: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
76a0: 6e 75 6d 62 65 72 20 6f 66 20 3c 73 65 65 20 63  number of <see c
76b0: 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78  ref="SQLiteIndex
76c0: 43 6f 6e 73 74 72 61 69 6e 74 22 20 2f 3e 20 69  Constraint" /> i
76d0: 6e 73 74 61 6e 63 65 73 20 74 6f 0d 0a 20 20 20  nstances to..   
76e0: 20 20 20 20 20 2f 2f 2f 20 70 72 65 2d 61 6c 6c       /// pre-all
76f0: 6f 63 61 74 65 20 73 70 61 63 65 20 66 6f 72 2e  ocate space for.
7700: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
7710: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
7720: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
7730: 22 6e 4f 72 64 65 72 42 79 22 3e 0d 0a 20 20 20  "nOrderBy">..   
7740: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d       /// The num
7750: 62 65 72 20 6f 66 20 3c 73 65 65 20 63 72 65 66  ber of <see cref
7760: 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64  ="SQLiteIndexOrd
7770: 65 72 42 79 22 20 2f 3e 20 69 6e 73 74 61 6e 63  erBy" /> instanc
7780: 65 73 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f  es to..        /
7790: 2f 2f 20 70 72 65 2d 61 6c 6c 6f 63 61 74 65 20  // pre-allocate 
77a0: 73 70 61 63 65 20 66 6f 72 2e 0d 0a 20 20 20 20  space for...    
77b0: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
77c0: 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
77d0: 61 6c 20 53 51 4c 69 74 65 49 6e 64 65 78 49 6e  al SQLiteIndexIn
77e0: 70 75 74 73 28 69 6e 74 20 6e 43 6f 6e 73 74 72  puts(int nConstr
77f0: 61 69 6e 74 2c 20 69 6e 74 20 6e 4f 72 64 65 72  aint, int nOrder
7800: 42 79 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  By)..        {..
7810: 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73              cons
7820: 74 72 61 69 6e 74 73 20 3d 20 6e 65 77 20 53 51  traints = new SQ
7830: 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61  LiteIndexConstra
7840: 69 6e 74 5b 6e 43 6f 6e 73 74 72 61 69 6e 74 5d  int[nConstraint]
7850: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f  ;..            o
7860: 72 64 65 72 42 79 73 20 3d 20 6e 65 77 20 53 51  rderBys = new SQ
7870: 4c 69 74 65 49 6e 64 65 78 4f 72 64 65 72 42 79  LiteIndexOrderBy
7880: 5b 6e 4f 72 64 65 72 42 79 5d 3b 0d 0a 20 20 20  [nOrderBy];..   
7890: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
78a0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
78b0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
78c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
78d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
78e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
78f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
7900: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
7910: 20 50 75 62 6c 69 63 20 50 72 6f 70 65 72 74 69   Public Properti
7920: 65 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  es..        priv
7930: 61 74 65 20 53 51 4c 69 74 65 49 6e 64 65 78 43  ate SQLiteIndexC
7940: 6f 6e 73 74 72 61 69 6e 74 5b 5d 20 63 6f 6e 73  onstraint[] cons
7950: 74 72 61 69 6e 74 73 3b 0d 0a 20 20 20 20 20 20  traints;..      
7960: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
7970: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 6e 20  .        /// An 
7980: 61 72 72 61 79 20 6f 66 20 3c 73 65 65 20 63 72  array of <see cr
7990: 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 43  ef="SQLiteIndexC
79a0: 6f 6e 73 74 72 61 69 6e 74 22 20 2f 3e 20 6f 62  onstraint" /> ob
79b0: 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 73 2c 0d  ject instances,.
79c0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 65 61 63  .        /// eac
79d0: 68 20 63 6f 6e 74 61 69 6e 69 6e 67 20 69 6e 66  h containing inf
79e0: 6f 72 6d 61 74 69 6f 6e 20 73 75 70 70 6c 69 65  ormation supplie
79f0: 64 20 62 79 20 74 68 65 20 53 51 4c 69 74 65 20  d by the SQLite 
7a00: 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20  core library... 
7a10: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
7a20: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
7a30: 75 62 6c 69 63 20 53 51 4c 69 74 65 49 6e 64 65  ublic SQLiteInde
7a40: 78 43 6f 6e 73 74 72 61 69 6e 74 5b 5d 20 43 6f  xConstraint[] Co
7a50: 6e 73 74 72 61 69 6e 74 73 0d 0a 20 20 20 20 20  nstraints..     
7a60: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
7a70: 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 63    get { return c
7a80: 6f 6e 73 74 72 61 69 6e 74 73 3b 20 7d 0d 0a 20  onstraints; }.. 
7a90: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
7aa0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
7ab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
7af0: 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53         private S
7b00: 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65 72 42  QLiteIndexOrderB
7b10: 79 5b 5d 20 6f 72 64 65 72 42 79 73 3b 0d 0a 20  y[] orderBys;.. 
7b20: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
7b30: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
7b40: 2f 20 41 6e 20 61 72 72 61 79 20 6f 66 20 3c 73  / An array of <s
7b50: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49  ee cref="SQLiteI
7b60: 6e 64 65 78 4f 72 64 65 72 42 79 22 20 2f 3e 20  ndexOrderBy" /> 
7b70: 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 73  object instances
7b80: 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 65  ,..        /// e
7b90: 61 63 68 20 63 6f 6e 74 61 69 6e 69 6e 67 20 69  ach containing i
7ba0: 6e 66 6f 72 6d 61 74 69 6f 6e 20 73 75 70 70 6c  nformation suppl
7bb0: 69 65 64 20 62 79 20 74 68 65 20 53 51 4c 69 74  ied by the SQLit
7bc0: 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d  e core library..
7bd0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
7be0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
7bf0: 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 49 6e   public SQLiteIn
7c00: 64 65 78 4f 72 64 65 72 42 79 5b 5d 20 4f 72 64  dexOrderBy[] Ord
7c10: 65 72 42 79 73 0d 0a 20 20 20 20 20 20 20 20 7b  erBys..        {
7c20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
7c30: 74 20 7b 20 72 65 74 75 72 6e 20 6f 72 64 65 72  t { return order
7c40: 42 79 73 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  Bys; }..        
7c50: 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
7c60: 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20  egion..    }..  
7c70: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
7c80: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
7c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
7cd0: 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53  ...    #region S
7ce0: 51 4c 69 74 65 49 6e 64 65 78 4f 75 74 70 75 74  QLiteIndexOutput
7cf0: 73 20 48 65 6c 70 65 72 20 43 6c 61 73 73 0d 0a  s Helper Class..
7d00: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
7d10: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  >..    /// This 
7d20: 63 6c 61 73 73 20 72 65 70 72 65 73 65 6e 74 73  class represents
7d30: 20 74 68 65 20 76 61 72 69 6f 75 73 20 6f 75 74   the various out
7d40: 70 75 74 73 20 70 72 6f 76 69 64 65 64 20 74 6f  puts provided to
7d50: 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
7d60: 0d 0a 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72  ..    /// librar
7d70: 79 20 62 79 20 74 68 65 20 3c 73 65 65 20 63 72  y by the <see cr
7d80: 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67  ef="ISQLiteManag
7d90: 65 64 4d 6f 64 75 6c 65 2e 42 65 73 74 49 6e 64  edModule.BestInd
7da0: 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  ex" /> method...
7db0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
7dc0: 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73  y>..    public s
7dd0: 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69  ealed class SQLi
7de0: 74 65 49 6e 64 65 78 4f 75 74 70 75 74 73 0d 0a  teIndexOutputs..
7df0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23      {..        #
7e00: 72 65 67 69 6f 6e 20 49 6e 74 65 72 6e 61 6c 20  region Internal 
7e10: 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20  Constructors..  
7e20: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
7e30: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
7e40: 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69   Constructs an i
7e50: 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20  nstance of this 
7e60: 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20  class...        
7e70: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
7e80: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
7e90: 61 6d 20 6e 61 6d 65 3d 22 6e 43 6f 6e 73 74 72  am name="nConstr
7ea0: 61 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20  aint">..        
7eb0: 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f  /// The number o
7ec0: 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  f <see cref="SQL
7ed0: 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69  iteIndexConstrai
7ee0: 6e 74 55 73 61 67 65 22 20 2f 3e 20 69 6e 73 74  ntUsage" /> inst
7ef0: 61 6e 63 65 73 0d 0a 20 20 20 20 20 20 20 20 2f  ances..        /
7f00: 2f 2f 20 74 6f 20 70 72 65 2d 61 6c 6c 6f 63 61  // to pre-alloca
7f10: 74 65 20 73 70 61 63 65 20 66 6f 72 2e 0d 0a 20  te space for... 
7f20: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
7f30: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  am>..        int
7f40: 65 72 6e 61 6c 20 53 51 4c 69 74 65 49 6e 64 65  ernal SQLiteInde
7f50: 78 4f 75 74 70 75 74 73 28 69 6e 74 20 6e 43 6f  xOutputs(int nCo
7f60: 6e 73 74 72 61 69 6e 74 29 0d 0a 20 20 20 20 20  nstraint)..     
7f70: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
7f80: 20 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67    constraintUsag
7f90: 65 73 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 49  es = new SQLiteI
7fa0: 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55 73  ndexConstraintUs
7fb0: 61 67 65 5b 6e 43 6f 6e 73 74 72 61 69 6e 74 5d  age[nConstraint]
7fc0: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
7fd0: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
7fe0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
7ff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8030: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
8040: 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 50 72  region Public Pr
8050: 6f 70 65 72 74 69 65 73 0d 0a 20 20 20 20 20 20  operties..      
8060: 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65    private SQLite
8070: 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55  IndexConstraintU
8080: 73 61 67 65 5b 5d 20 63 6f 6e 73 74 72 61 69 6e  sage[] constrain
8090: 74 55 73 61 67 65 73 3b 0d 0a 20 20 20 20 20 20  tUsages;..      
80a0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
80b0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 6e 20  .        /// An 
80c0: 61 72 72 61 79 20 6f 66 20 3c 73 65 65 20 63 72  array of <see cr
80d0: 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 43  ef="SQLiteIndexC
80e0: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 22 20  onstraintUsage" 
80f0: 2f 3e 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20  /> object..     
8100: 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 73     /// instances
8110: 2c 20 65 61 63 68 20 63 6f 6e 74 61 69 6e 69 6e  , each containin
8120: 67 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 74 6f  g information to
8130: 20 62 65 20 73 75 70 70 6c 69 65 64 20 74 6f 20   be supplied to 
8140: 74 68 65 20 53 51 4c 69 74 65 0d 0a 20 20 20 20  the SQLite..    
8150: 20 20 20 20 2f 2f 2f 20 63 6f 72 65 20 6c 69 62      /// core lib
8160: 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f  rary...        /
8170: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
8180: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51         public SQ
8190: 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61  LiteIndexConstra
81a0: 69 6e 74 55 73 61 67 65 5b 5d 20 43 6f 6e 73 74  intUsage[] Const
81b0: 72 61 69 6e 74 55 73 61 67 65 73 0d 0a 20 20 20  raintUsages..   
81c0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
81d0: 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e      get { return
81e0: 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65   constraintUsage
81f0: 73 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d  s; }..        }.
8200: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
8210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8250: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
8260: 69 76 61 74 65 20 69 6e 74 20 69 6e 64 65 78 4e  ivate int indexN
8270: 75 6d 62 65 72 3b 0d 0a 20 20 20 20 20 20 20 20  umber;..        
8280: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
8290: 20 20 20 20 20 20 20 2f 2f 2f 20 4e 75 6d 62 65         /// Numbe
82a0: 72 20 75 73 65 64 20 74 6f 20 68 65 6c 70 20 69  r used to help i
82b0: 64 65 6e 74 69 66 79 20 74 68 65 20 73 65 6c 65  dentify the sele
82c0: 63 74 65 64 20 69 6e 64 65 78 2e 20 20 54 68 69  cted index.  Thi
82d0: 73 20 76 61 6c 75 65 20 77 69 6c 6c 0d 0a 20 20  s value will..  
82e0: 20 20 20 20 20 20 2f 2f 2f 20 6c 61 74 65 72 20        /// later 
82f0: 62 65 20 70 72 6f 76 69 64 65 64 20 74 6f 20 74  be provided to t
8300: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
8310: 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75  QLiteManagedModu
8320: 6c 65 2e 46 69 6c 74 65 72 22 20 2f 3e 0d 0a 20  le.Filter" />.. 
8330: 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f         /// metho
8340: 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
8350: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
8360: 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 49      public int I
8370: 6e 64 65 78 4e 75 6d 62 65 72 0d 0a 20 20 20 20  ndexNumber..    
8380: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
8390: 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
83a0: 69 6e 64 65 78 4e 75 6d 62 65 72 3b 20 7d 0d 0a  indexNumber; }..
83b0: 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20              set 
83c0: 7b 20 69 6e 64 65 78 4e 75 6d 62 65 72 20 3d 20  { indexNumber = 
83d0: 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20  value; }..      
83e0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
83f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8430: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
8440: 20 20 70 72 69 76 61 74 65 20 73 74 72 69 6e 67    private string
8450: 20 69 6e 64 65 78 53 74 72 69 6e 67 3b 0d 0a 20   indexString;.. 
8460: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
8470: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
8480: 2f 20 53 74 72 69 6e 67 20 75 73 65 64 20 74 6f  / String used to
8490: 20 68 65 6c 70 20 69 64 65 6e 74 69 66 79 20 74   help identify t
84a0: 68 65 20 73 65 6c 65 63 74 65 64 20 69 6e 64 65  he selected inde
84b0: 78 2e 20 20 54 68 69 73 20 76 61 6c 75 65 20 77  x.  This value w
84c0: 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ill..        ///
84d0: 20 6c 61 74 65 72 20 62 65 20 70 72 6f 76 69 64   later be provid
84e0: 65 64 20 74 6f 20 74 68 65 20 3c 73 65 65 20 63  ed to the <see c
84f0: 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61  ref="ISQLiteMana
8500: 67 65 64 4d 6f 64 75 6c 65 2e 46 69 6c 74 65 72  gedModule.Filter
8510: 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  " />..        //
8520: 2f 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  / method...     
8530: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
8540: 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
8550: 63 20 73 74 72 69 6e 67 20 49 6e 64 65 78 53 74  c string IndexSt
8560: 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ring..        {.
8570: 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
8580: 20 7b 20 72 65 74 75 72 6e 20 69 6e 64 65 78 53   { return indexS
8590: 74 72 69 6e 67 3b 20 7d 0d 0a 20 20 20 20 20 20  tring; }..      
85a0: 20 20 20 20 20 20 73 65 74 20 7b 20 69 6e 64 65        set { inde
85b0: 78 53 74 72 69 6e 67 20 3d 20 76 61 6c 75 65 3b  xString = value;
85c0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
85d0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
85e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
85f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8620: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
8630: 61 74 65 20 69 6e 74 20 6e 65 65 64 54 6f 46 72  ate int needToFr
8640: 65 65 49 6e 64 65 78 53 74 72 69 6e 67 3b 0d 0a  eeIndexString;..
8650: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
8660: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
8670: 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74  // Non-zero if t
8680: 68 65 20 69 6e 64 65 78 20 73 74 72 69 6e 67 20  he index string 
8690: 6d 75 73 74 20 62 65 20 66 72 65 65 64 20 62 79  must be freed by
86a0: 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
86b0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 69  ..        /// li
86c0: 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20  brary...        
86d0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
86e0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69          public i
86f0: 6e 74 20 4e 65 65 64 54 6f 46 72 65 65 49 6e 64  nt NeedToFreeInd
8700: 65 78 53 74 72 69 6e 67 0d 0a 20 20 20 20 20 20  exString..      
8710: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
8720: 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 6e 65   get { return ne
8730: 65 64 54 6f 46 72 65 65 49 6e 64 65 78 53 74 72  edToFreeIndexStr
8740: 69 6e 67 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  ing; }..        
8750: 20 20 20 20 73 65 74 20 7b 20 6e 65 65 64 54 6f      set { needTo
8760: 46 72 65 65 49 6e 64 65 78 53 74 72 69 6e 67 20  FreeIndexString 
8770: 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20  = value; }..    
8780: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
8790: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
87a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
87b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
87c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
87d0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
87e0: 20 20 20 20 70 72 69 76 61 74 65 20 69 6e 74 20      private int 
87f0: 6f 72 64 65 72 42 79 43 6f 6e 73 75 6d 65 64 3b  orderByConsumed;
8800: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
8810: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
8820: 20 2f 2f 2f 20 54 72 75 65 20 69 66 20 6f 75 74   /// True if out
8830: 70 75 74 20 69 73 20 61 6c 72 65 61 64 79 20 6f  put is already o
8840: 72 64 65 72 65 64 2e 0d 0a 20 20 20 20 20 20 20  rdered...       
8850: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
8860: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
8870: 69 6e 74 20 4f 72 64 65 72 42 79 43 6f 6e 73 75  int OrderByConsu
8880: 6d 65 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  med..        {..
8890: 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
88a0: 7b 20 72 65 74 75 72 6e 20 6f 72 64 65 72 42 79  { return orderBy
88b0: 43 6f 6e 73 75 6d 65 64 3b 20 7d 0d 0a 20 20 20  Consumed; }..   
88c0: 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 6f           set { o
88d0: 72 64 65 72 42 79 43 6f 6e 73 75 6d 65 64 20 3d  rderByConsumed =
88e0: 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20   value; }..     
88f0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
8900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8940: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
8950: 20 20 20 70 72 69 76 61 74 65 20 64 6f 75 62 6c     private doubl
8960: 65 3f 20 65 73 74 69 6d 61 74 65 64 43 6f 73 74  e? estimatedCost
8970: 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ;..        /// <
8980: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
8990: 20 20 2f 2f 2f 20 45 73 74 69 6d 61 74 65 64 20    /// Estimated 
89a0: 63 6f 73 74 20 6f 66 20 75 73 69 6e 67 20 74 68  cost of using th
89b0: 69 73 20 69 6e 64 65 78 2e 20 20 55 73 69 6e 67  is index.  Using
89c0: 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 20 68 65   a null value he
89d0: 72 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  re..        /// 
89e0: 69 6e 64 69 63 61 74 65 73 20 74 68 61 74 20 61  indicates that a
89f0: 20 64 65 66 61 75 6c 74 20 65 73 74 69 6d 61 74   default estimat
8a00: 65 64 20 63 6f 73 74 20 76 61 6c 75 65 20 73 68  ed cost value sh
8a10: 6f 75 6c 64 20 62 65 20 75 73 65 64 2e 0d 0a 20  ould be used... 
8a20: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
8a30: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
8a40: 75 62 6c 69 63 20 64 6f 75 62 6c 65 3f 20 45 73  ublic double? Es
8a50: 74 69 6d 61 74 65 64 43 6f 73 74 0d 0a 20 20 20  timatedCost..   
8a60: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
8a70: 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e      get { return
8a80: 20 65 73 74 69 6d 61 74 65 64 43 6f 73 74 3b 20   estimatedCost; 
8a90: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  }..            s
8aa0: 65 74 20 7b 20 65 73 74 69 6d 61 74 65 64 43 6f  et { estimatedCo
8ab0: 73 74 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20  st = value; }.. 
8ac0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
8ad0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20    #endregion..  
8ae0: 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67    }..    #endreg
8af0: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
8b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b40: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
8b50: 65 67 69 6f 6e 20 53 51 4c 69 74 65 49 6e 64 65  egion SQLiteInde
8b60: 78 20 48 65 6c 70 65 72 20 43 6c 61 73 73 0d 0a  x Helper Class..
8b70: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
8b80: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  >..    /// This 
8b90: 63 6c 61 73 73 20 72 65 70 72 65 73 65 6e 74 73  class represents
8ba0: 20 74 68 65 20 76 61 72 69 6f 75 73 20 69 6e 70   the various inp
8bb0: 75 74 73 20 61 6e 64 20 6f 75 74 70 75 74 73 20  uts and outputs 
8bc0: 75 73 65 64 20 77 69 74 68 20 74 68 65 0d 0a 20  used with the.. 
8bd0: 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
8be0: 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64  ="ISQLiteManaged
8bf0: 4d 6f 64 75 6c 65 2e 42 65 73 74 49 6e 64 65 78  Module.BestIndex
8c00: 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 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 70 75 62 6c 69 63 20 73 65 61  ..    public sea
8c30: 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65  led class SQLite
8c40: 49 6e 64 65 78 0d 0a 20 20 20 20 7b 0d 0a 20 20  Index..    {..  
8c50: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
8c60: 69 76 61 74 65 20 43 6f 6e 73 74 61 6e 74 73 0d  ivate Constants.
8c70: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
8c80: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
8c90: 2f 2f 2f 20 54 68 65 20 64 65 66 61 75 6c 74 20  /// The default 
8ca0: 65 73 74 69 6d 61 74 65 64 20 63 6f 73 74 20 66  estimated cost f
8cb0: 6f 72 20 75 73 65 20 77 69 74 68 20 74 68 65 0d  or use with the.
8cc0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
8cd0: 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d  e cref="ISQLiteM
8ce0: 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 42 65 73  anagedModule.Bes
8cf0: 74 49 6e 64 65 78 22 20 2f 3e 20 6d 65 74 68 6f  tIndex" /> metho
8d00: 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
8d10: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
8d20: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
8d30: 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 64 6f 75  tic readonly dou
8d40: 62 6c 65 20 44 65 66 61 75 6c 74 45 73 74 69 6d  ble DefaultEstim
8d50: 61 74 65 64 43 6f 73 74 20 3d 20 64 6f 75 62 6c  atedCost = doubl
8d60: 65 2e 4d 61 78 56 61 6c 75 65 3b 0d 0a 20 20 20  e.MaxValue;..   
8d70: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
8d80: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
8d90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8db0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8dd0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
8de0: 65 67 69 6f 6e 20 49 6e 74 65 72 6e 61 6c 20 43  egion Internal C
8df0: 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20  onstructors..   
8e00: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
8e10: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
8e20: 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e  Constructs an in
8e30: 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63  stance of this c
8e40: 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  lass...        /
8e50: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
8e60: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
8e70: 6d 20 6e 61 6d 65 3d 22 6e 43 6f 6e 73 74 72 61  m name="nConstra
8e80: 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  int">..        /
8e90: 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66  // The number of
8ea0: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
8eb0: 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
8ec0: 74 22 20 2f 3e 20 28 61 6e 64 0d 0a 20 20 20 20  t" /> (and..    
8ed0: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
8ee0: 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 43 6f  f="SQLiteIndexCo
8ef0: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 22 20 2f  nstraintUsage" /
8f00: 3e 29 20 69 6e 73 74 61 6e 63 65 73 20 74 6f 0d  >) instances to.
8f10: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 72 65  .        /// pre
8f20: 2d 61 6c 6c 6f 63 61 74 65 20 73 70 61 63 65 20  -allocate space 
8f30: 66 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  for...        //
8f40: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
8f50: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
8f60: 61 6d 65 3d 22 6e 4f 72 64 65 72 42 79 22 3e 0d  ame="nOrderBy">.
8f70: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
8f80: 20 6e 75 6d 62 65 72 20 6f 66 20 3c 73 65 65 20   number of <see 
8f90: 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65  cref="SQLiteInde
8fa0: 78 4f 72 64 65 72 42 79 22 20 2f 3e 20 69 6e 73  xOrderBy" /> ins
8fb0: 74 61 6e 63 65 73 20 74 6f 0d 0a 20 20 20 20 20  tances to..     
8fc0: 20 20 20 2f 2f 2f 20 70 72 65 2d 61 6c 6c 6f 63     /// pre-alloc
8fd0: 61 74 65 20 73 70 61 63 65 20 66 6f 72 2e 0d 0a  ate space for...
8fe0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
8ff0: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e  ram>..        in
9000: 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 49 6e 64  ternal SQLiteInd
9010: 65 78 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ex(..           
9020: 20 69 6e 74 20 6e 43 6f 6e 73 74 72 61 69 6e 74   int nConstraint
9030: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ,..            i
9040: 6e 74 20 6e 4f 72 64 65 72 42 79 0d 0a 20 20 20  nt nOrderBy..   
9050: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
9060: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
9070: 20 20 20 69 6e 70 75 74 73 20 3d 20 6e 65 77 20     inputs = new 
9080: 53 51 4c 69 74 65 49 6e 64 65 78 49 6e 70 75 74  SQLiteIndexInput
9090: 73 28 6e 43 6f 6e 73 74 72 61 69 6e 74 2c 20 6e  s(nConstraint, n
90a0: 4f 72 64 65 72 42 79 29 3b 0d 0a 20 20 20 20 20  OrderBy);..     
90b0: 20 20 20 20 20 20 20 6f 75 74 70 75 74 73 20 3d         outputs =
90c0: 20 6e 65 77 20 53 51 4c 69 74 65 49 6e 64 65 78   new SQLiteIndex
90d0: 4f 75 74 70 75 74 73 28 6e 43 6f 6e 73 74 72 61  Outputs(nConstra
90e0: 69 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  int);..        }
90f0: 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
9100: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
9110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9150: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
9160: 20 20 20 23 72 65 67 69 6f 6e 20 49 6e 74 65 72     #region Inter
9170: 6e 61 6c 20 4d 61 72 73 68 61 6c 20 48 65 6c 70  nal Marshal Help
9180: 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20  er Methods..    
9190: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
91a0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43  >..        /// C
91b0: 6f 6e 76 65 72 74 73 20 61 20 6e 61 74 69 76 65  onverts a native
91c0: 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6e 61   pointer to a na
91d0: 74 69 76 65 20 73 71 6c 69 74 65 33 5f 69 6e 64  tive sqlite3_ind
91e0: 65 78 5f 69 6e 66 6f 20 73 74 72 75 63 74 75 72  ex_info structur
91f0: 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  e..        /// i
9200: 6e 74 6f 20 61 20 6e 65 77 20 3c 73 65 65 20 63  nto a new <see c
9210: 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78  ref="SQLiteIndex
9220: 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
9230: 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ance...        /
9240: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
9250: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
9260: 6d 20 6e 61 6d 65 3d 22 70 49 6e 64 65 78 22 3e  m name="pIndex">
9270: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
9280: 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
9290: 20 74 6f 20 74 68 65 20 6e 61 74 69 76 65 20 73   to the native s
92a0: 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66  qlite3_index_inf
92b0: 6f 20 73 74 72 75 63 74 75 72 65 20 74 6f 0d 0a  o structure to..
92c0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 76          /// conv
92d0: 65 72 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ert...        //
92e0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
92f0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
9300: 61 6d 65 3d 22 69 6e 64 65 78 22 3e 0d 0a 20 20  ame="index">..  
9310: 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73        /// Upon s
9320: 75 63 63 65 73 73 2c 20 74 68 69 73 20 70 61 72  uccess, this par
9330: 61 6d 65 74 65 72 20 77 69 6c 6c 20 62 65 20 6d  ameter will be m
9340: 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74 61  odified to conta
9350: 69 6e 20 74 68 65 20 6e 65 77 6c 79 0d 0a 20 20  in the newly..  
9360: 20 20 20 20 20 20 2f 2f 2f 20 63 72 65 61 74 65        /// create
9370: 64 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  d <see cref="SQL
9380: 69 74 65 49 6e 64 65 78 22 20 2f 3e 20 6f 62 6a  iteIndex" /> obj
9390: 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20  ect instance... 
93a0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
93b0: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  am>..        int
93c0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 76 6f 69  ernal static voi
93d0: 64 20 46 72 6f 6d 49 6e 74 50 74 72 28 0d 0a 20  d FromIntPtr(.. 
93e0: 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
93f0: 72 20 70 49 6e 64 65 78 2c 0d 0a 20 20 20 20 20  r pIndex,..     
9400: 20 20 20 20 20 20 20 72 65 66 20 53 51 4c 69 74         ref SQLit
9410: 65 49 6e 64 65 78 20 69 6e 64 65 78 0d 0a 20 20  eIndex index..  
9420: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
9430: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
9440: 20 20 20 20 69 66 20 28 70 49 6e 64 65 78 20 3d      if (pIndex =
9450: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
9460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9470: 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20  return;....     
9480: 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66 73 65         int offse
9490: 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20  t = 0;....      
94a0: 20 20 20 20 20 20 69 6e 74 20 6e 43 6f 6e 73 74        int nConst
94b0: 72 61 69 6e 74 20 3d 20 53 51 4c 69 74 65 4d 61  raint = SQLiteMa
94c0: 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 33 32 28  rshal.ReadInt32(
94d0: 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b  pIndex, offset);
94e0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
94f0: 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d  offset = SQLiteM
9500: 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65  arshal.NextOffse
9510: 74 4f 66 28 6f 66 66 73 65 74 2c 20 73 69 7a 65  tOf(offset, size
9520: 6f 66 28 69 6e 74 29 2c 0d 0a 20 20 20 20 20 20  of(int),..      
9530: 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
9540: 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  .Size);....     
9550: 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
9560: 6f 6e 73 74 72 61 69 6e 74 20 3d 20 53 51 4c 69  onstraint = SQLi
9570: 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e  teMarshal.ReadIn
9580: 74 50 74 72 28 70 49 6e 64 65 78 2c 20 6f 66 66  tPtr(pIndex, off
9590: 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  set);....       
95a0: 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51       offset = SQ
95b0: 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74  LiteMarshal.Next
95c0: 4f 66 66 73 65 74 4f 66 28 6f 66 66 73 65 74 2c  OffsetOf(offset,
95d0: 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c 0d 0a 20   IntPtr.Size,.. 
95e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
95f0: 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a  izeof(int));....
9600: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
9610: 6e 4f 72 64 65 72 42 79 20 3d 20 53 51 4c 69 74  nOrderBy = SQLit
9620: 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74  eMarshal.ReadInt
9630: 33 32 28 70 49 6e 64 65 78 2c 20 6f 66 66 73 65  32(pIndex, offse
9640: 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  t);....         
9650: 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69     offset = SQLi
9660: 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66  teMarshal.NextOf
9670: 66 73 65 74 4f 66 28 6f 66 66 73 65 74 2c 20 73  fsetOf(offset, s
9680: 69 7a 65 6f 66 28 69 6e 74 29 2c 0d 0a 20 20 20  izeof(int),..   
9690: 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
96a0: 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20  Ptr.Size);....  
96b0: 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
96c0: 20 70 4f 72 64 65 72 42 79 20 3d 20 53 51 4c 69   pOrderBy = SQLi
96d0: 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e  teMarshal.ReadIn
96e0: 74 50 74 72 28 70 49 6e 64 65 78 2c 20 6f 66 66  tPtr(pIndex, off
96f0: 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  set);....       
9700: 20 20 20 20 20 69 6e 64 65 78 20 3d 20 6e 65 77       index = new
9710: 20 53 51 4c 69 74 65 49 6e 64 65 78 28 6e 43 6f   SQLiteIndex(nCo
9720: 6e 73 74 72 61 69 6e 74 2c 20 6e 4f 72 64 65 72  nstraint, nOrder
9730: 42 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  By);....        
9740: 20 20 20 20 54 79 70 65 20 69 6e 64 65 78 43 6f      Type indexCo
9750: 6e 73 74 72 61 69 6e 74 54 79 70 65 20 3d 20 74  nstraintType = t
9760: 79 70 65 6f 66 28 0d 0a 20 20 20 20 20 20 20 20  ypeof(..        
9770: 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61          UnsafeNa
9780: 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
9790: 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72  te3_index_constr
97a0: 61 69 6e 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  aint);....      
97b0: 20 20 20 20 20 20 69 6e 74 20 73 69 7a 65 4f 66        int sizeOf
97c0: 43 6f 6e 73 74 72 61 69 6e 74 54 79 70 65 20 3d  ConstraintType =
97d0: 20 4d 61 72 73 68 61 6c 2e 53 69 7a 65 4f 66 28   Marshal.SizeOf(
97e0: 69 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 54  indexConstraintT
97f0: 79 70 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ype);....       
9800: 20 20 20 20 20 66 6f 72 20 28 69 6e 74 20 69 43       for (int iC
9810: 6f 6e 73 74 72 61 69 6e 74 20 3d 20 30 3b 20 69  onstraint = 0; i
9820: 43 6f 6e 73 74 72 61 69 6e 74 20 3c 20 6e 43 6f  Constraint < nCo
9830: 6e 73 74 72 61 69 6e 74 3b 20 69 43 6f 6e 73 74  nstraint; iConst
9840: 72 61 69 6e 74 2b 2b 29 0d 0a 20 20 20 20 20 20  raint++)..      
9850: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
9860: 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
9870: 70 4f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65  pOffset = SQLite
9880: 4d 61 72 73 68 61 6c 2e 49 6e 74 50 74 72 46 6f  Marshal.IntPtrFo
9890: 72 4f 66 66 73 65 74 28 0d 0a 20 20 20 20 20 20  rOffset(..      
98a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 43                pC
98b0: 6f 6e 73 74 72 61 69 6e 74 2c 20 69 43 6f 6e 73  onstraint, iCons
98c0: 74 72 61 69 6e 74 20 2a 20 73 69 7a 65 4f 66 43  traint * sizeOfC
98d0: 6f 6e 73 74 72 61 69 6e 74 54 79 70 65 29 3b 0d  onstraintType);.
98e0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
98f0: 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
9900: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69  ethods.sqlite3_i
9910: 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 20  ndex_constraint 
9920: 63 6f 6e 73 74 72 61 69 6e 74 20 3d 0d 0a 20 20  constraint =..  
9930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9940: 20 20 28 55 6e 73 61 66 65 4e 61 74 69 76 65 4d    (UnsafeNativeM
9950: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69  ethods.sqlite3_i
9960: 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 29  ndex_constraint)
9970: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9980: 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61            Marsha
9990: 6c 2e 50 74 72 54 6f 53 74 72 75 63 74 75 72 65  l.PtrToStructure
99a0: 28 70 4f 66 66 73 65 74 2c 20 69 6e 64 65 78 43  (pOffset, indexC
99b0: 6f 6e 73 74 72 61 69 6e 74 54 79 70 65 29 3b 0d  onstraintType);.
99c0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
99d0: 20 20 20 69 6e 64 65 78 2e 49 6e 70 75 74 73 2e     index.Inputs.
99e0: 43 6f 6e 73 74 72 61 69 6e 74 73 5b 69 43 6f 6e  Constraints[iCon
99f0: 73 74 72 61 69 6e 74 5d 20 3d 0d 0a 20 20 20 20  straint] =..    
9a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9a10: 6e 65 77 20 53 51 4c 69 74 65 49 6e 64 65 78 43  new SQLiteIndexC
9a20: 6f 6e 73 74 72 61 69 6e 74 28 63 6f 6e 73 74 72  onstraint(constr
9a30: 61 69 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  aint);..        
9a40: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
9a50: 20 20 20 20 20 54 79 70 65 20 69 6e 64 65 78 4f       Type indexO
9a60: 72 64 65 72 42 79 54 79 70 65 20 3d 20 74 79 70  rderByType = typ
9a70: 65 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20  eof(..          
9a80: 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69        UnsafeNati
9a90: 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
9aa0: 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 29  3_index_orderby)
9ab0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
9ac0: 20 69 6e 74 20 73 69 7a 65 4f 66 4f 72 64 65 72   int sizeOfOrder
9ad0: 42 79 54 79 70 65 20 3d 20 4d 61 72 73 68 61 6c  ByType = Marshal
9ae0: 2e 53 69 7a 65 4f 66 28 69 6e 64 65 78 4f 72 64  .SizeOf(indexOrd
9af0: 65 72 42 79 54 79 70 65 29 3b 0d 0a 0d 0a 20 20  erByType);....  
9b00: 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 69            for (i
9b10: 6e 74 20 69 4f 72 64 65 72 42 79 20 3d 20 30 3b  nt iOrderBy = 0;
9b20: 20 69 4f 72 64 65 72 42 79 20 3c 20 6e 4f 72 64   iOrderBy < nOrd
9b30: 65 72 42 79 3b 20 69 4f 72 64 65 72 42 79 2b 2b  erBy; iOrderBy++
9b40: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
9b50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9b60: 20 20 49 6e 74 50 74 72 20 70 4f 66 66 73 65 74    IntPtr pOffset
9b70: 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c   = SQLiteMarshal
9b80: 2e 49 6e 74 50 74 72 46 6f 72 4f 66 66 73 65 74  .IntPtrForOffset
9b90: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
9ba0: 20 20 20 20 20 20 20 70 4f 72 64 65 72 42 79 2c         pOrderBy,
9bb0: 20 69 4f 72 64 65 72 42 79 20 2a 20 73 69 7a 65   iOrderBy * size
9bc0: 4f 66 4f 72 64 65 72 42 79 54 79 70 65 29 3b 0d  OfOrderByType);.
9bd0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
9be0: 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
9bf0: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69  ethods.sqlite3_i
9c00: 6e 64 65 78 5f 6f 72 64 65 72 62 79 20 6f 72 64  ndex_orderby ord
9c10: 65 72 42 79 20 3d 0d 0a 20 20 20 20 20 20 20 20  erBy =..        
9c20: 20 20 20 20 20 20 20 20 20 20 20 20 28 55 6e 73              (Uns
9c30: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
9c40: 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f  .sqlite3_index_o
9c50: 72 64 65 72 62 79 29 0d 0a 20 20 20 20 20 20 20  rderby)..       
9c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9c70: 20 4d 61 72 73 68 61 6c 2e 50 74 72 54 6f 53 74   Marshal.PtrToSt
9c80: 72 75 63 74 75 72 65 28 70 4f 66 66 73 65 74 2c  ructure(pOffset,
9c90: 20 69 6e 64 65 78 4f 72 64 65 72 42 79 54 79 70   indexOrderByTyp
9ca0: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
9cb0: 20 20 20 20 20 20 20 69 6e 64 65 78 2e 49 6e 70         index.Inp
9cc0: 75 74 73 2e 4f 72 64 65 72 42 79 73 5b 69 4f 72  uts.OrderBys[iOr
9cd0: 64 65 72 42 79 5d 20 3d 0d 0a 20 20 20 20 20 20  derBy] =..      
9ce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65                ne
9cf0: 77 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64  w SQLiteIndexOrd
9d00: 65 72 42 79 28 6f 72 64 65 72 42 79 29 3b 0d 0a  erBy(orderBy);..
9d10: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
9d20: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
9d30: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
9d40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
9d80: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
9d90: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
9da0: 2f 20 50 6f 70 75 6c 61 74 65 73 20 74 68 65 20  / Populates the 
9db0: 6f 75 74 70 75 74 73 20 6f 66 20 61 20 70 72 65  outputs of a pre
9dc0: 2d 61 6c 6c 6f 63 61 74 65 64 20 6e 61 74 69 76  -allocated nativ
9dd0: 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  e sqlite3_index_
9de0: 69 6e 66 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f  info..        //
9df0: 2f 20 73 74 72 75 63 74 75 72 65 20 75 73 69 6e  / structure usin
9e00: 67 20 61 6e 20 65 78 69 73 74 69 6e 67 20 3c 73  g an existing <s
9e10: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49  ee cref="SQLiteI
9e20: 6e 64 65 78 22 20 2f 3e 20 6f 62 6a 65 63 74 0d  ndex" /> object.
9e30: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73  .        /// ins
9e40: 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20  tance...        
9e50: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
9e60: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
9e70: 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78 22 3e  am name="index">
9e80: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
9e90: 65 20 65 78 69 73 74 69 6e 67 20 3c 73 65 65 20  e existing <see 
9ea0: 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65  cref="SQLiteInde
9eb0: 78 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  x" /> object ins
9ec0: 74 61 6e 63 65 20 63 6f 6e 74 61 69 6e 69 6e 67  tance containing
9ed0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68  ..        /// th
9ee0: 65 20 6f 75 74 70 75 74 20 64 61 74 61 20 74 6f  e output data to
9ef0: 20 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f   use...        /
9f00: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
9f10: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
9f20: 6e 61 6d 65 3d 22 70 49 6e 64 65 78 22 3e 0d 0a  name="pIndex">..
9f30: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
9f40: 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
9f50: 6f 20 74 68 65 20 70 72 65 2d 61 6c 6c 6f 63 61  o the pre-alloca
9f60: 74 65 64 20 6e 61 74 69 76 65 20 73 71 6c 69 74  ted native sqlit
9f70: 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 0d 0a 20  e3_index_info.. 
9f80: 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63         /// struc
9f90: 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ture...        /
9fa0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
9fb0: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74       internal st
9fc0: 61 74 69 63 20 76 6f 69 64 20 54 6f 49 6e 74 50  atic void ToIntP
9fd0: 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tr(..           
9fe0: 20 53 51 4c 69 74 65 49 6e 64 65 78 20 69 6e 64   SQLiteIndex ind
9ff0: 65 78 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ex,..           
a000: 20 49 6e 74 50 74 72 20 70 49 6e 64 65 78 0d 0a   IntPtr pIndex..
a010: 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
a020: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
a030: 20 20 20 20 20 20 69 66 20 28 28 69 6e 64 65 78        if ((index
a040: 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20 28 69 6e   == null) || (in
a050: 64 65 78 2e 49 6e 70 75 74 73 20 3d 3d 20 6e 75  dex.Inputs == nu
a060: 6c 6c 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20  ll) ||..        
a070: 20 20 20 20 20 20 20 20 28 69 6e 64 65 78 2e 49          (index.I
a080: 6e 70 75 74 73 2e 43 6f 6e 73 74 72 61 69 6e 74  nputs.Constraint
a090: 73 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 0d 0a 20  s == null) ||.. 
a0a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
a0b0: 69 6e 64 65 78 2e 4f 75 74 70 75 74 73 20 3d 3d  index.Outputs ==
a0c0: 20 6e 75 6c 6c 29 20 7c 7c 0d 0a 20 20 20 20 20   null) ||..     
a0d0: 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 64 65             (inde
a0e0: 78 2e 4f 75 74 70 75 74 73 2e 43 6f 6e 73 74 72  x.Outputs.Constr
a0f0: 61 69 6e 74 55 73 61 67 65 73 20 3d 3d 20 6e 75  aintUsages == nu
a100: 6c 6c 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ll))..          
a110: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
a120: 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 20 20       return;..  
a130: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
a140: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
a150: 49 6e 64 65 78 20 3d 3d 20 49 6e 74 50 74 72 2e  Index == IntPtr.
a160: 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
a170: 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a         return;..
a180: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
a190: 74 20 6f 66 66 73 65 74 20 3d 20 30 3b 0d 0a 0d  t offset = 0;...
a1a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
a1b0: 20 6e 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20 53   nConstraint = S
a1c0: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61  QLiteMarshal.Rea
a1d0: 64 49 6e 74 33 32 28 70 49 6e 64 65 78 2c 20 6f  dInt32(pIndex, o
a1e0: 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  ffset);....     
a1f0: 20 20 20 20 20 20 20 69 66 20 28 6e 43 6f 6e 73         if (nCons
a200: 74 72 61 69 6e 74 20 21 3d 20 69 6e 64 65 78 2e  traint != index.
a210: 49 6e 70 75 74 73 2e 43 6f 6e 73 74 72 61 69 6e  Inputs.Constrain
a220: 74 73 2e 4c 65 6e 67 74 68 29 0d 0a 20 20 20 20  ts.Length)..    
a230: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
a240: 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  rn;....         
a250: 20 20 20 69 66 20 28 6e 43 6f 6e 73 74 72 61 69     if (nConstrai
a260: 6e 74 20 21 3d 20 69 6e 64 65 78 2e 4f 75 74 70  nt != index.Outp
a270: 75 74 73 2e 43 6f 6e 73 74 72 61 69 6e 74 55 73  uts.ConstraintUs
a280: 61 67 65 73 2e 4c 65 6e 67 74 68 29 0d 0a 20 20  ages.Length)..  
a290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
a2a0: 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  turn;....       
a2b0: 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51       offset = SQ
a2c0: 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74  LiteMarshal.Next
a2d0: 4f 66 66 73 65 74 4f 66 28 6f 66 66 73 65 74 2c  OffsetOf(offset,
a2e0: 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c 0d 0a 20   sizeof(int),.. 
a2f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
a300: 6e 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a  ntPtr.Size);....
a310: 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
a320: 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  et = SQLiteMarsh
a330: 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28  al.NextOffsetOf(
a340: 6f 66 66 73 65 74 2c 20 49 6e 74 50 74 72 2e 53  offset, IntPtr.S
a350: 69 7a 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ize,..          
a360: 20 20 20 20 20 20 73 69 7a 65 6f 66 28 69 6e 74        sizeof(int
a370: 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ));....         
a380: 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69     offset = SQLi
a390: 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66  teMarshal.NextOf
a3a0: 66 73 65 74 4f 66 28 6f 66 66 73 65 74 2c 20 73  fsetOf(offset, s
a3b0: 69 7a 65 6f 66 28 69 6e 74 29 2c 0d 0a 20 20 20  izeof(int),..   
a3c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
a3d0: 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20  Ptr.Size);....  
a3e0: 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
a3f0: 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c   = SQLiteMarshal
a400: 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 6f 66  .NextOffsetOf(of
a410: 66 73 65 74 2c 20 49 6e 74 50 74 72 2e 53 69 7a  fset, IntPtr.Siz
a420: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
a430: 20 20 20 20 73 69 7a 65 6f 66 28 69 6e 74 29 29      sizeof(int))
a440: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
a450: 20 49 6e 74 50 74 72 20 70 43 6f 6e 73 74 72 61   IntPtr pConstra
a460: 69 6e 74 55 73 61 67 65 20 3d 20 53 51 4c 69 74  intUsage = SQLit
a470: 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74  eMarshal.ReadInt
a480: 50 74 72 28 70 49 6e 64 65 78 2c 20 6f 66 66 73  Ptr(pIndex, offs
a490: 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  et);....        
a4a0: 20 20 20 20 69 6e 74 20 73 69 7a 65 4f 66 43 6f      int sizeOfCo
a4b0: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 54 79 70  nstraintUsageTyp
a4c0: 65 20 3d 20 4d 61 72 73 68 61 6c 2e 53 69 7a 65  e = Marshal.Size
a4d0: 4f 66 28 74 79 70 65 6f 66 28 0d 0a 20 20 20 20  Of(typeof(..    
a4e0: 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
a4f0: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
a500: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
a510: 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65 29 29  nstraint_usage))
a520: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
a530: 20 66 6f 72 20 28 69 6e 74 20 69 43 6f 6e 73 74   for (int iConst
a540: 72 61 69 6e 74 20 3d 20 30 3b 20 69 43 6f 6e 73  raint = 0; iCons
a550: 74 72 61 69 6e 74 20 3c 20 6e 43 6f 6e 73 74 72  traint < nConstr
a560: 61 69 6e 74 3b 20 69 43 6f 6e 73 74 72 61 69 6e  aint; iConstrain
a570: 74 2b 2b 29 0d 0a 20 20 20 20 20 20 20 20 20 20  t++)..          
a580: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
a590: 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
a5a0: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
a5b0: 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e  _index_constrain
a5c0: 74 5f 75 73 61 67 65 20 63 6f 6e 73 74 72 61 69  t_usage constrai
a5d0: 6e 74 55 73 61 67 65 20 3d 0d 0a 20 20 20 20 20  ntUsage =..     
a5e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
a5f0: 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
a600: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69  ethods.sqlite3_i
a610: 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f  ndex_constraint_
a620: 75 73 61 67 65 28 0d 0a 20 20 20 20 20 20 20 20  usage(..        
a630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a640: 69 6e 64 65 78 2e 4f 75 74 70 75 74 73 2e 43 6f  index.Outputs.Co
a650: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 73 5b 69  nstraintUsages[i
a660: 43 6f 6e 73 74 72 61 69 6e 74 5d 29 3b 0d 0a 0d  Constraint]);...
a670: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a680: 20 4d 61 72 73 68 61 6c 2e 53 74 72 75 63 74 75   Marshal.Structu
a690: 72 65 54 6f 50 74 72 28 0d 0a 20 20 20 20 20 20  reToPtr(..      
a6a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
a6b0: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 2c 20 53  nstraintUsage, S
a6c0: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 49 6e 74  QLiteMarshal.Int
a6d0: 50 74 72 46 6f 72 4f 66 66 73 65 74 28 0d 0a 20  PtrForOffset(.. 
a6e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a6f0: 20 20 20 70 43 6f 6e 73 74 72 61 69 6e 74 55 73     pConstraintUs
a700: 61 67 65 2c 20 69 43 6f 6e 73 74 72 61 69 6e 74  age, iConstraint
a710: 20 2a 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61   * sizeOfConstra
a720: 69 6e 74 55 73 61 67 65 54 79 70 65 29 2c 0d 0a  intUsageType),..
a730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a740: 20 20 20 20 66 61 6c 73 65 29 3b 0d 0a 20 20 20      false);..   
a750: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
a760: 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
a770: 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c   = SQLiteMarshal
a780: 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 6f 66  .NextOffsetOf(of
a790: 66 73 65 74 2c 20 49 6e 74 50 74 72 2e 53 69 7a  fset, IntPtr.Siz
a7a0: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
a7b0: 20 20 20 20 73 69 7a 65 6f 66 28 69 6e 74 29 29      sizeof(int))
a7c0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
a7d0: 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57   SQLiteMarshal.W
a7e0: 72 69 74 65 49 6e 74 33 32 28 70 49 6e 64 65 78  riteInt32(pIndex
a7f0: 2c 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20 20  , offset,..     
a800: 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 65 78             index
a810: 2e 4f 75 74 70 75 74 73 2e 49 6e 64 65 78 4e 75  .Outputs.IndexNu
a820: 6d 62 65 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  mber);....      
a830: 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53        offset = S
a840: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78  QLiteMarshal.Nex
a850: 74 4f 66 66 73 65 74 4f 66 28 6f 66 66 73 65 74  tOffsetOf(offset
a860: 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c 0d 0a  , sizeof(int),..
a870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a880: 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d  IntPtr.Size);...
a890: 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
a8a0: 69 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65  iteMarshal.Write
a8b0: 49 6e 74 50 74 72 28 70 49 6e 64 65 78 2c 20 6f  IntPtr(pIndex, o
a8c0: 66 66 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20  ffset,..        
a8d0: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 53 74          SQLiteSt
a8e0: 72 69 6e 67 2e 55 74 66 38 49 6e 74 50 74 72 46  ring.Utf8IntPtrF
a8f0: 72 6f 6d 53 74 72 69 6e 67 28 69 6e 64 65 78 2e  romString(index.
a900: 4f 75 74 70 75 74 73 2e 49 6e 64 65 78 53 74 72  Outputs.IndexStr
a910: 69 6e 67 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ing));....      
a920: 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53        offset = S
a930: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78  QLiteMarshal.Nex
a940: 74 4f 66 66 73 65 74 4f 66 28 6f 66 66 73 65 74  tOffsetOf(offset
a950: 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c 0d 0a  , IntPtr.Size,..
a960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a970: 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d  sizeof(int));...
a980: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  .            //.
a990: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  .            // 
a9a0: 4e 4f 54 45 3a 20 57 65 20 6a 75 73 74 20 61 6c  NOTE: We just al
a9b0: 6c 6f 63 61 74 65 64 20 74 68 65 20 49 6e 64 65  located the Inde
a9c0: 78 53 74 72 69 6e 67 20 66 69 65 6c 64 3b 20 74  xString field; t
a9d0: 68 65 72 65 66 6f 72 65 2c 20 77 65 0d 0a 20 20  herefore, we..  
a9e0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
a9f0: 20 20 20 6e 65 65 64 20 74 6f 20 73 65 74 20 74     need to set t
aa00: 68 65 20 4e 65 65 64 54 6f 46 72 65 65 49 6e 64  he NeedToFreeInd
aa10: 65 78 53 74 72 69 6e 67 20 66 69 65 6c 64 20 74  exString field t
aa20: 6f 20 6e 6f 6e 2d 7a 65 72 6f 2e 0d 0a 20 20 20  o non-zero...   
aa30: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
aa40: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d           SQLiteM
aa50: 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 33  arshal.WriteInt3
aa60: 32 28 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74  2(pIndex, offset
aa70: 2c 20 31 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  , 1);....       
aa80: 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51       offset = SQ
aa90: 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74  LiteMarshal.Next
aaa0: 4f 66 66 73 65 74 4f 66 28 6f 66 66 73 65 74 2c  OffsetOf(offset,
aab0: 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c 0d 0a 20   sizeof(int),.. 
aac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
aad0: 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a  izeof(int));....
aae0: 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
aaf0: 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49  teMarshal.WriteI
ab00: 6e 74 33 32 28 70 49 6e 64 65 78 2c 20 6f 66 66  nt32(pIndex, off
ab10: 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  set,..          
ab20: 20 20 20 20 20 20 69 6e 64 65 78 2e 4f 75 74 70        index.Outp
ab30: 75 74 73 2e 4f 72 64 65 72 42 79 43 6f 6e 73 75  uts.OrderByConsu
ab40: 6d 65 64 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  med);....       
ab50: 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51       offset = SQ
ab60: 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74  LiteMarshal.Next
ab70: 4f 66 66 73 65 74 4f 66 28 6f 66 66 73 65 74 2c  OffsetOf(offset,
ab80: 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c 0d 0a 20   sizeof(int),.. 
ab90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
aba0: 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29 29 3b 0d  izeof(double));.
abb0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  ...            S
abc0: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57 72 69  QLiteMarshal.Wri
abd0: 74 65 44 6f 75 62 6c 65 28 70 49 6e 64 65 78 2c  teDouble(pIndex,
abe0: 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20 20 20   offset,..      
abf0: 20 20 20 20 20 20 20 20 20 20 69 6e 64 65 78 2e            index.
ac00: 4f 75 74 70 75 74 73 2e 45 73 74 69 6d 61 74 65  Outputs.Estimate
ac10: 64 43 6f 73 74 2e 47 65 74 56 61 6c 75 65 4f 72  dCost.GetValueOr
ac20: 44 65 66 61 75 6c 74 28 29 29 3b 0d 0a 20 20 20  Default());..   
ac30: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
ac40: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
ac50: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
ac60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ac70: 2f 2f 2f 2f 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 2f 2f 2f 0d 0a 0d  /////////////...
aca0: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
acb0: 20 50 75 62 6c 69 63 20 50 72 6f 70 65 72 74 69   Public Properti
acc0: 65 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  es..        priv
acd0: 61 74 65 20 53 51 4c 69 74 65 49 6e 64 65 78 49  ate SQLiteIndexI
ace0: 6e 70 75 74 73 20 69 6e 70 75 74 73 3b 0d 0a 20  nputs inputs;.. 
acf0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
ad00: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
ad10: 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
ad20: 22 53 51 4c 69 74 65 49 6e 64 65 78 49 6e 70 75  "SQLiteIndexInpu
ad30: 74 73 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  ts" /> object in
ad40: 73 74 61 6e 63 65 20 63 6f 6e 74 61 69 6e 69 6e  stance containin
ad50: 67 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  g..        /// t
ad60: 68 65 20 69 6e 70 75 74 73 20 74 6f 20 74 68 65  he inputs to the
ad70: 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
ad80: 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65  iteManagedModule
ad90: 2e 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 0d 0a  .BestIndex" />..
ada0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68          /// meth
adb0: 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  od...        ///
adc0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
add0: 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69       public SQLi
ade0: 74 65 49 6e 64 65 78 49 6e 70 75 74 73 20 49 6e  teIndexInputs In
adf0: 70 75 74 73 0d 0a 20 20 20 20 20 20 20 20 7b 0d  puts..        {.
ae00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
ae10: 20 7b 20 72 65 74 75 72 6e 20 69 6e 70 75 74 73   { return inputs
ae20: 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ; }..        }..
ae30: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
ae40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae80: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  /....        pri
ae90: 76 61 74 65 20 53 51 4c 69 74 65 49 6e 64 65 78  vate SQLiteIndex
aea0: 4f 75 74 70 75 74 73 20 6f 75 74 70 75 74 73 3b  Outputs outputs;
aeb0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
aec0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
aed0: 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
aee0: 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 4f  ef="SQLiteIndexO
aef0: 75 74 70 75 74 73 22 20 2f 3e 20 6f 62 6a 65 63  utputs" /> objec
af00: 74 20 69 6e 73 74 61 6e 63 65 20 63 6f 6e 74 61  t instance conta
af10: 69 6e 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 2f  ining..        /
af20: 2f 2f 20 74 68 65 20 6f 75 74 70 75 74 73 20 66  // the outputs f
af30: 72 6f 6d 20 74 68 65 20 3c 73 65 65 20 63 72 65  rom the <see cre
af40: 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65  f="ISQLiteManage
af50: 64 4d 6f 64 75 6c 65 2e 42 65 73 74 49 6e 64 65  dModule.BestInde
af60: 78 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f  x" />..        /
af70: 2f 2f 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  // method...    
af80: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
af90: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
afa0: 69 63 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 75  ic SQLiteIndexOu
afb0: 74 70 75 74 73 20 4f 75 74 70 75 74 73 0d 0a 20  tputs Outputs.. 
afc0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
afd0: 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75        get { retu
afe0: 72 6e 20 6f 75 74 70 75 74 73 3b 20 7d 0d 0a 20  rn outputs; }.. 
aff0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
b000: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20    #endregion..  
b010: 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67    }..    #endreg
b020: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
b030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b070: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
b080: 65 67 69 6f 6e 20 53 51 4c 69 74 65 56 69 72 74  egion SQLiteVirt
b090: 75 61 6c 54 61 62 6c 65 20 42 61 73 65 20 43 6c  ualTable Base Cl
b0a0: 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  ass..    /// <su
b0b0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
b0c0: 54 68 69 73 20 63 6c 61 73 73 20 72 65 70 72 65  This class repre
b0d0: 73 65 6e 74 73 20 61 20 6d 61 6e 61 67 65 64 20  sents a managed 
b0e0: 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 69 6d  virtual table im
b0f0: 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 20 20 49  plementation.  I
b100: 74 20 69 73 0d 0a 20 20 20 20 2f 2f 2f 20 6e 6f  t is..    /// no
b110: 74 20 73 65 61 6c 65 64 20 61 6e 64 20 73 68 6f  t sealed and sho
b120: 75 6c 64 20 62 65 20 75 73 65 64 20 61 73 20 74  uld be used as t
b130: 68 65 20 62 61 73 65 20 63 6c 61 73 73 20 66 6f  he base class fo
b140: 72 20 61 6e 79 20 75 73 65 72 2d 64 65 66 69 6e  r any user-defin
b150: 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 76 69 72 74  ed..    /// virt
b160: 75 61 6c 20 74 61 62 6c 65 20 63 6c 61 73 73 65  ual table classe
b170: 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 69 6e  s implemented in
b180: 20 6d 61 6e 61 67 65 64 20 63 6f 64 65 2e 0d 0a   managed code...
b190: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
b1a0: 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 63  y>..    public c
b1b0: 6c 61 73 73 20 53 51 4c 69 74 65 56 69 72 74 75  lass SQLiteVirtu
b1c0: 61 6c 54 61 62 6c 65 20 3a 0d 0a 20 20 20 20 20  alTable :..     
b1d0: 20 20 20 20 20 20 20 49 53 51 4c 69 74 65 4e 61         ISQLiteNa
b1e0: 74 69 76 65 48 61 6e 64 6c 65 2c 20 49 44 69 73  tiveHandle, IDis
b1f0: 70 6f 73 61 62 6c 65 20 2f 2a 20 4e 4f 54 20 53  posable /* NOT S
b200: 45 41 4c 45 44 20 2a 2f 0d 0a 20 20 20 20 7b 0d  EALED */..    {.
b210: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
b220: 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74 61 6e   Private Constan
b230: 74 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ts..        /// 
b240: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
b250: 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 64 65 78     /// The index
b260: 20 77 69 74 68 69 6e 20 74 68 65 20 61 72 72 61   within the arra
b270: 79 20 6f 66 20 73 74 72 69 6e 67 73 20 70 72 6f  y of strings pro
b280: 76 69 64 65 64 20 74 6f 20 74 68 65 0d 0a 20 20  vided to the..  
b290: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
b2a0: 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61  ref="ISQLiteMana
b2b0: 67 65 64 4d 6f 64 75 6c 65 2e 43 72 65 61 74 65  gedModule.Create
b2c0: 22 20 2f 3e 20 61 6e 64 0d 0a 20 20 20 20 20 20  " /> and..      
b2d0: 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
b2e0: 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d  "ISQLiteManagedM
b2f0: 6f 64 75 6c 65 2e 43 6f 6e 6e 65 63 74 22 20 2f  odule.Connect" /
b300: 3e 20 6d 65 74 68 6f 64 73 20 63 6f 6e 74 61 69  > methods contai
b310: 6e 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20  ning the..      
b320: 20 20 2f 2f 2f 20 6e 61 6d 65 20 6f 66 20 74 68    /// name of th
b330: 65 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65 6d 65  e module impleme
b340: 6e 74 69 6e 67 20 74 68 69 73 20 76 69 72 74 75  nting this virtu
b350: 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20  al table...     
b360: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
b370: 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
b380: 74 65 20 63 6f 6e 73 74 20 69 6e 74 20 4d 6f 64  te const int Mod
b390: 75 6c 65 4e 61 6d 65 49 6e 64 65 78 20 3d 20 30  uleNameIndex = 0
b3a0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
b3b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b3c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b3d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b3e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b3f0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
b400: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
b410: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 69         /// The i
b420: 6e 64 65 78 20 77 69 74 68 69 6e 20 74 68 65 20  ndex within the 
b430: 61 72 72 61 79 20 6f 66 20 73 74 72 69 6e 67 73  array of strings
b440: 20 70 72 6f 76 69 64 65 64 20 74 6f 20 74 68 65   provided to the
b450: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
b460: 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
b470: 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43 72  ManagedModule.Cr
b480: 65 61 74 65 22 20 2f 3e 20 61 6e 64 0d 0a 20 20  eate" /> and..  
b490: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
b4a0: 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61  ref="ISQLiteMana
b4b0: 67 65 64 4d 6f 64 75 6c 65 2e 43 6f 6e 6e 65 63  gedModule.Connec
b4c0: 74 22 20 2f 3e 20 6d 65 74 68 6f 64 73 20 63 6f  t" /> methods co
b4d0: 6e 74 61 69 6e 69 6e 67 20 74 68 65 0d 0a 20 20  ntaining the..  
b4e0: 20 20 20 20 20 20 2f 2f 2f 20 6e 61 6d 65 20 6f        /// name o
b4f0: 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20 63  f the database c
b500: 6f 6e 74 61 69 6e 69 6e 67 20 74 68 69 73 20 76  ontaining this v
b510: 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20  irtual table... 
b520: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
b530: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
b540: 72 69 76 61 74 65 20 63 6f 6e 73 74 20 69 6e 74  rivate const int
b550: 20 44 61 74 61 62 61 73 65 4e 61 6d 65 49 6e 64   DatabaseNameInd
b560: 65 78 20 3d 20 31 3b 0d 0a 0d 0a 20 20 20 20 20  ex = 1;....     
b570: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
b580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b5a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b5b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
b5c0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
b5d0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
b5e0: 20 54 68 65 20 69 6e 64 65 78 20 77 69 74 68 69   The index withi
b5f0: 6e 20 74 68 65 20 61 72 72 61 79 20 6f 66 20 73  n the array of s
b600: 74 72 69 6e 67 73 20 70 72 6f 76 69 64 65 64 20  trings provided 
b610: 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
b620: 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
b630: 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64  SQLiteManagedMod
b640: 75 6c 65 2e 43 72 65 61 74 65 22 20 2f 3e 20 61  ule.Create" /> a
b650: 6e 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  nd..        /// 
b660: 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
b670: 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e  teManagedModule.
b680: 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68  Connect" /> meth
b690: 6f 64 73 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74  ods containing t
b6a0: 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
b6b0: 6e 61 6d 65 20 6f 66 20 74 68 65 20 76 69 72 74  name of the virt
b6c0: 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
b6d0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
b6e0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  y>..        priv
b6f0: 61 74 65 20 63 6f 6e 73 74 20 69 6e 74 20 54 61  ate const int Ta
b700: 62 6c 65 4e 61 6d 65 49 6e 64 65 78 20 3d 20 32  bleNameIndex = 2
b710: 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  ;..        #endr
b720: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
b730: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
b740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b770: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
b780: 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c      #region Publ
b790: 69 63 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d  ic Constructors.
b7a0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
b7b0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
b7c0: 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61  /// Constructs a
b7d0: 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68  n instance of th
b7e0: 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20  is class...     
b7f0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
b800: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
b810: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 75  param name="argu
b820: 6d 65 6e 74 73 22 3e 0d 0a 20 20 20 20 20 20 20  ments">..       
b830: 20 2f 2f 2f 20 54 68 65 20 6f 72 69 67 69 6e 61   /// The origina
b840: 6c 20 61 72 72 61 79 20 6f 66 20 73 74 72 69 6e  l array of strin
b850: 67 73 20 70 72 6f 76 69 64 65 64 20 74 6f 20 74  gs provided to t
b860: 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
b870: 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
b880: 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e  teManagedModule.
b890: 43 72 65 61 74 65 22 20 2f 3e 20 61 6e 64 0d 0a  Create" /> and..
b8a0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
b8b0: 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61   cref="ISQLiteMa
b8c0: 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43 6f 6e 6e  nagedModule.Conn
b8d0: 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 73 2e  ect" /> methods.
b8e0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
b8f0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
b900: 70 75 62 6c 69 63 20 53 51 4c 69 74 65 56 69 72  public SQLiteVir
b910: 74 75 61 6c 54 61 62 6c 65 28 0d 0a 20 20 20 20  tualTable(..    
b920: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d          string[]
b930: 20 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20   arguments..    
b940: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
b950: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
b960: 20 20 74 68 69 73 2e 61 72 67 75 6d 65 6e 74 73    this.arguments
b970: 20 3d 20 61 72 67 75 6d 65 6e 74 73 3b 0d 0a 20   = arguments;.. 
b980: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
b990: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
b9a0: 20 20 20 20 20 20 20 20 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 2f 2f 2f  ////////////////
b9e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
b9f0: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
ba00: 6f 6e 20 50 75 62 6c 69 63 20 50 72 6f 70 65 72  on Public Proper
ba10: 74 69 65 73 0d 0a 20 20 20 20 20 20 20 20 70 72  ties..        pr
ba20: 69 76 61 74 65 20 73 74 72 69 6e 67 5b 5d 20 61  ivate string[] a
ba30: 72 67 75 6d 65 6e 74 73 3b 0d 0a 20 20 20 20 20  rguments;..     
ba40: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
ba50: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
ba60: 65 20 6f 72 69 67 69 6e 61 6c 20 61 72 72 61 79  e original array
ba70: 20 6f 66 20 73 74 72 69 6e 67 73 20 70 72 6f 76   of strings prov
ba80: 69 64 65 64 20 74 6f 20 74 68 65 0d 0a 20 20 20  ided to the..   
ba90: 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
baa0: 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67  ef="ISQLiteManag
bab0: 65 64 4d 6f 64 75 6c 65 2e 43 72 65 61 74 65 22  edModule.Create"
bac0: 20 2f 3e 20 61 6e 64 0d 0a 20 20 20 20 20 20 20   /> and..       
bad0: 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
bae0: 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f  ISQLiteManagedMo
baf0: 64 75 6c 65 2e 43 6f 6e 6e 65 63 74 22 20 2f 3e  dule.Connect" />
bb00: 20 6d 65 74 68 6f 64 73 2e 0d 0a 20 20 20 20 20   methods...     
bb10: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
bb20: 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
bb30: 63 20 76 69 72 74 75 61 6c 20 73 74 72 69 6e 67  c virtual string
bb40: 5b 5d 20 41 72 67 75 6d 65 6e 74 73 0d 0a 20 20  [] Arguments..  
bb50: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
bb60: 20 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b       get { Check
bb70: 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75  Disposed(); retu
bb80: 72 6e 20 61 72 67 75 6d 65 6e 74 73 3b 20 7d 0d  rn arguments; }.
bb90: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
bba0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
bbb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bbc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bbd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bbe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
bbf0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
bc00: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
bc10: 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20  /// The name of 
bc20: 74 68 65 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65  the module imple
bc30: 6d 65 6e 74 69 6e 67 20 74 68 69 73 20 76 69 72  menting this vir
bc40: 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20  tual table...   
bc50: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
bc60: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ry>..        pub
bc70: 6c 69 63 20 76 69 72 74 75 61 6c 20 73 74 72 69  lic virtual stri
bc80: 6e 67 20 4d 6f 64 75 6c 65 4e 61 6d 65 0d 0a 20  ng ModuleName.. 
bc90: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
bca0: 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20        get..     
bcb0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
bcc0: 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 44            CheckD
bcd0: 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20  isposed();....  
bce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
bcf0: 72 69 6e 67 5b 5d 20 61 72 67 75 6d 65 6e 74 73  ring[] arguments
bd00: 20 3d 20 41 72 67 75 6d 65 6e 74 73 3b 0d 0a 0d   = Arguments;...
bd10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
bd20: 20 69 66 20 28 28 61 72 67 75 6d 65 6e 74 73 20   if ((arguments 
bd30: 21 3d 20 6e 75 6c 6c 29 20 26 26 0d 0a 20 20 20  != null) &&..   
bd40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bd50: 20 28 61 72 67 75 6d 65 6e 74 73 2e 4c 65 6e 67   (arguments.Leng
bd60: 74 68 20 3e 20 4d 6f 64 75 6c 65 4e 61 6d 65 49  th > ModuleNameI
bd70: 6e 64 65 78 29 29 0d 0a 20 20 20 20 20 20 20 20  ndex))..        
bd80: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
bd90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
bda0: 65 74 75 72 6e 20 61 72 67 75 6d 65 6e 74 73 5b  eturn arguments[
bdb0: 4d 6f 64 75 6c 65 4e 61 6d 65 49 6e 64 65 78 5d  ModuleNameIndex]
bdc0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
bdd0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
bde0: 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
bdf0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
be00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
be10: 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
be20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
be30: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
be40: 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
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 2f 2f 2f 20 3c  ...        /// <
beb0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
bec0: 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f    /// The name o
bed0: 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20 63  f the database c
bee0: 6f 6e 74 61 69 6e 69 6e 67 20 74 68 69 73 20 76  ontaining this v
bef0: 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20  irtual table... 
bf00: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
bf10: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
bf20: 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 73 74  ublic virtual st
bf30: 72 69 6e 67 20 44 61 74 61 62 61 73 65 4e 61 6d  ring DatabaseNam
bf40: 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  e..        {..  
bf50: 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20            get.. 
bf60: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
bf70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 68                Ch
bf80: 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a  eckDisposed();..
bf90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bfa0: 20 20 73 74 72 69 6e 67 5b 5d 20 61 72 67 75 6d    string[] argum
bfb0: 65 6e 74 73 20 3d 20 41 72 67 75 6d 65 6e 74 73  ents = Arguments
bfc0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
bfd0: 20 20 20 20 20 69 66 20 28 28 61 72 67 75 6d 65       if ((argume
bfe0: 6e 74 73 20 21 3d 20 6e 75 6c 6c 29 20 26 26 0d  nts != null) &&.
bff0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c000: 20 20 20 20 20 28 61 72 67 75 6d 65 6e 74 73 2e       (arguments.
c010: 4c 65 6e 67 74 68 20 3e 20 44 61 74 61 62 61 73  Length > Databas
c020: 65 4e 61 6d 65 49 6e 64 65 78 29 29 0d 0a 20 20  eNameIndex))..  
c030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
c040: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c050: 20 20 20 20 20 72 65 74 75 72 6e 20 61 72 67 75       return argu
c060: 6d 65 6e 74 73 5b 44 61 74 61 62 61 73 65 4e 61  ments[DatabaseNa
c070: 6d 65 49 6e 64 65 78 5d 3b 0d 0a 20 20 20 20 20  meIndex];..     
c080: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
c090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
c0a0: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
c0b0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
c0c0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
c0d0: 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  n null;..       
c0e0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
c0f0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
c100: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
c110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c150: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
c160: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
c170: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
c180: 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 76 69  e name of the vi
c190: 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20  rtual table...  
c1a0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
c1b0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
c1c0: 62 6c 69 63 20 76 69 72 74 75 61 6c 20 73 74 72  blic virtual str
c1d0: 69 6e 67 20 54 61 62 6c 65 4e 61 6d 65 0d 0a 20  ing TableName.. 
c1e0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
c1f0: 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20        get..     
c200: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
c210: 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 44            CheckD
c220: 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20  isposed();....  
c230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
c240: 72 69 6e 67 5b 5d 20 61 72 67 75 6d 65 6e 74 73  ring[] arguments
c250: 20 3d 20 41 72 67 75 6d 65 6e 74 73 3b 0d 0a 0d   = Arguments;...
c260: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c270: 20 69 66 20 28 28 61 72 67 75 6d 65 6e 74 73 20   if ((arguments 
c280: 21 3d 20 6e 75 6c 6c 29 20 26 26 0d 0a 20 20 20  != null) &&..   
c290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c2a0: 20 28 61 72 67 75 6d 65 6e 74 73 2e 4c 65 6e 67   (arguments.Leng
c2b0: 74 68 20 3e 20 54 61 62 6c 65 4e 61 6d 65 49 6e  th > TableNameIn
c2c0: 64 65 78 29 29 0d 0a 20 20 20 20 20 20 20 20 20  dex))..         
c2d0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
c2e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
c2f0: 74 75 72 6e 20 61 72 67 75 6d 65 6e 74 73 5b 54  turn arguments[T
c300: 61 62 6c 65 4e 61 6d 65 49 6e 64 65 78 5d 3b 0d  ableNameIndex];.
c310: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c320: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
c330: 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20      else..      
c340: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
c350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c360: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20   return null;.. 
c370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
c380: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
c390: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
c3a0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
c3b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c3c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c3d0: 2f 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 0d 0a 0d  /////////////...
c3f0: 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
c400: 20 53 51 4c 69 74 65 49 6e 64 65 78 20 69 6e 64   SQLiteIndex ind
c410: 65 78 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ex;..        ///
c420: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
c430: 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
c440: 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64   cref="SQLiteInd
c450: 65 78 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  ex" /> object in
c460: 73 74 61 6e 63 65 20 63 6f 6e 74 61 69 6e 69 6e  stance containin
c470: 67 20 61 6c 6c 20 74 68 65 0d 0a 20 20 20 20 20  g all the..     
c480: 20 20 20 2f 2f 2f 20 64 61 74 61 20 66 6f 72 20     /// data for 
c490: 74 68 65 20 69 6e 70 75 74 73 20 61 6e 64 20 6f  the inputs and o
c4a0: 75 74 70 75 74 73 20 72 65 6c 61 74 69 6e 67 20  utputs relating 
c4b0: 74 6f 20 74 68 65 20 6d 6f 73 74 20 72 65 63 65  to the most rece
c4c0: 6e 74 20 69 6e 64 65 78 0d 0a 20 20 20 20 20 20  nt index..      
c4d0: 20 20 2f 2f 2f 20 73 65 6c 65 63 74 69 6f 6e 2e    /// selection.
c4e0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
c4f0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
c500: 20 20 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c    public virtual
c510: 20 53 51 4c 69 74 65 49 6e 64 65 78 20 49 6e 64   SQLiteIndex Ind
c520: 65 78 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ex..        {.. 
c530: 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
c540: 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
c550: 3b 20 72 65 74 75 72 6e 20 69 6e 64 65 78 3b 20  ; return index; 
c560: 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  }..        }..  
c570: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
c580: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
c590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c5a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c5b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c5c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c5d0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
c5e0: 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 4d 65  region Public Me
c5f0: 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f  thods..        /
c600: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
c610: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d        /// This m
c620: 65 74 68 6f 64 20 73 68 6f 75 6c 64 20 6e 6f 72  ethod should nor
c630: 6d 61 6c 6c 79 20 62 65 20 75 73 65 64 20 62 79  mally be used by
c640: 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
c650: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  / <see cref="ISQ
c660: 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c  LiteManagedModul
c670: 65 2e 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 20  e.BestIndex" /> 
c680: 6d 65 74 68 6f 64 20 69 6e 20 6f 72 64 65 72 20  method in order 
c690: 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  to..        /// 
c6a0: 70 65 72 66 6f 72 6d 20 69 6e 64 65 78 20 73 65  perform index se
c6b0: 6c 65 63 74 69 6f 6e 20 62 61 73 65 64 20 6f 6e  lection based on
c6c0: 20 74 68 65 20 63 6f 6e 73 74 72 61 69 6e 74 73   the constraints
c6d0: 20 70 72 6f 76 69 64 65 64 20 62 79 20 74 68 65   provided by the
c6e0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 51  ..        /// SQ
c6f0: 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
c700: 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y...        /// 
c710: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
c720: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
c730: 61 6d 65 3d 22 69 6e 64 65 78 22 3e 0d 0a 20 20  ame="index">..  
c740: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
c750: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49  ee cref="SQLiteI
c760: 6e 64 65 78 22 20 2f 3e 20 6f 62 6a 65 63 74 20  ndex" /> object 
c770: 69 6e 73 74 61 6e 63 65 20 63 6f 6e 74 61 69 6e  instance contain
c780: 69 6e 67 20 61 6c 6c 20 74 68 65 0d 0a 20 20 20  ing all the..   
c790: 20 20 20 20 20 2f 2f 2f 20 64 61 74 61 20 66 6f       /// data fo
c7a0: 72 20 74 68 65 20 69 6e 70 75 74 73 20 61 6e 64  r the inputs and
c7b0: 20 6f 75 74 70 75 74 73 20 72 65 6c 61 74 69 6e   outputs relatin
c7c0: 67 20 74 6f 20 69 6e 64 65 78 20 73 65 6c 65 63  g to index selec
c7d0: 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  tion...        /
c7e0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
c7f0: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
c800: 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
c810: 4e 6f 6e 2d 7a 65 72 6f 20 75 70 6f 6e 20 73 75  Non-zero upon su
c820: 63 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 20 20  ccess...        
c830: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
c840: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76          public v
c850: 69 72 74 75 61 6c 20 62 6f 6f 6c 20 42 65 73 74  irtual bool Best
c860: 49 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20 20  Index(..        
c870: 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78 20      SQLiteIndex 
c880: 69 6e 64 65 78 0d 0a 20 20 20 20 20 20 20 20 20  index..         
c890: 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
c8a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65  .            Che
c8b0: 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d  ckDisposed();...
c8c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
c8d0: 73 2e 69 6e 64 65 78 20 3d 20 69 6e 64 65 78 3b  s.index = index;
c8e0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
c8f0: 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20  return true;..  
c900: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
c910: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
c920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
c960: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
c970: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
c980: 20 41 74 74 65 6d 70 74 73 20 74 6f 20 72 65 63   Attempts to rec
c990: 6f 72 64 20 74 68 65 20 72 65 6e 61 6d 69 6e 67  ord the renaming
c9a0: 20 6f 66 20 74 68 65 20 76 69 72 74 75 61 6c 20   of the virtual 
c9b0: 74 61 62 6c 65 20 61 73 73 6f 63 69 61 74 65 64  table associated
c9c0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69  ..        /// wi
c9d0: 74 68 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69  th this object i
c9e0: 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20  nstance...      
c9f0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
ca00: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
ca10: 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65 22  aram name="name"
ca20: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
ca30: 68 65 20 6e 65 77 20 6e 61 6d 65 20 66 6f 72 20  he new name for 
ca40: 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c  the virtual tabl
ca50: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
ca60: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
ca70: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
ca80: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  .        /// Non
ca90: 2d 7a 65 72 6f 20 75 70 6f 6e 20 73 75 63 63 65  -zero upon succe
caa0: 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ss...        ///
cab0: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
cac0: 20 20 20 20 20 70 75 62 6c 69 63 20 76 69 72 74       public virt
cad0: 75 61 6c 20 62 6f 6f 6c 20 52 65 6e 61 6d 65 28  ual bool Rename(
cae0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74  ..            st
caf0: 72 69 6e 67 20 6e 61 6d 65 0d 0a 20 20 20 20 20  ring name..     
cb00: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
cb10: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
cb20: 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
cb30: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
cb40: 20 69 66 20 28 28 61 72 67 75 6d 65 6e 74 73 20   if ((arguments 
cb50: 21 3d 20 6e 75 6c 6c 29 20 26 26 0d 0a 20 20 20  != null) &&..   
cb60: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 72               (ar
cb70: 67 75 6d 65 6e 74 73 2e 4c 65 6e 67 74 68 20 3e  guments.Length >
cb80: 20 54 61 62 6c 65 4e 61 6d 65 49 6e 64 65 78 29   TableNameIndex)
cb90: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
cba0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
cbb0: 20 20 61 72 67 75 6d 65 6e 74 73 5b 54 61 62 6c    arguments[Tabl
cbc0: 65 4e 61 6d 65 49 6e 64 65 78 5d 20 3d 20 6e 61  eNameIndex] = na
cbd0: 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me;..           
cbe0: 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65       return true
cbf0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
cc00: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
cc10: 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20  return false;.. 
cc20: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
cc30: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
cc40: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
cc50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cc60: 2f 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
cc90: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
cca0: 6f 6e 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65  on ISQLiteNative
ccb0: 48 61 6e 64 6c 65 20 4d 65 6d 62 65 72 73 0d 0a  Handle Members..
ccc0: 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
ccd0: 49 6e 74 50 74 72 20 6e 61 74 69 76 65 48 61 6e  IntPtr nativeHan
cce0: 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f  dle;..        //
ccf0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
cd00: 20 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73       /// Returns
cd10: 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20   the underlying 
cd20: 53 51 4c 69 74 65 20 6e 61 74 69 76 65 20 68 61  SQLite native ha
cd30: 6e 64 6c 65 20 61 73 73 6f 63 69 61 74 65 64 20  ndle associated 
cd40: 77 69 74 68 20 74 68 69 73 0d 0a 20 20 20 20 20  with this..     
cd50: 20 20 20 2f 2f 2f 20 6f 62 6a 65 63 74 20 69 6e     /// object in
cd60: 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20  stance...       
cd70: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
cd80: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
cd90: 76 69 72 74 75 61 6c 20 49 6e 74 50 74 72 20 4e  virtual IntPtr N
cda0: 61 74 69 76 65 48 61 6e 64 6c 65 0d 0a 20 20 20  ativeHandle..   
cdb0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
cdc0: 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44      get { CheckD
cdd0: 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75 72  isposed(); retur
cde0: 6e 20 6e 61 74 69 76 65 48 61 6e 64 6c 65 3b 20  n nativeHandle; 
cdf0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  }..            i
ce00: 6e 74 65 72 6e 61 6c 20 73 65 74 20 7b 20 6e 61  nternal set { na
ce10: 74 69 76 65 48 61 6e 64 6c 65 20 3d 20 76 61 6c  tiveHandle = val
ce20: 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d  ue; }..        }
ce30: 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
ce40: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
ce50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ce60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ce70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ce80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ce90: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
cea0: 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73 70     #region IDisp
ceb0: 6f 73 61 62 6c 65 20 4d 65 6d 62 65 72 73 0d 0a  osable Members..
cec0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
ced0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
cee0: 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f 66 20 74  // Disposes of t
cef0: 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  his object insta
cf00: 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nce...        //
cf10: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
cf20: 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69        public voi
cf30: 64 20 44 69 73 70 6f 73 65 28 29 0d 0a 20 20 20  d Dispose()..   
cf40: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
cf50: 20 20 20 20 44 69 73 70 6f 73 65 28 74 72 75 65      Dispose(true
cf60: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
cf70: 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61 6c  GC.SuppressFinal
cf80: 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20  ize(this);..    
cf90: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
cfa0: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
cfb0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
cfc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cfd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cfe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
d000: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
d010: 49 44 69 73 70 6f 73 61 62 6c 65 20 22 50 61 74  IDisposable "Pat
d020: 74 65 72 6e 22 20 4d 65 6d 62 65 72 73 0d 0a 20  tern" Members.. 
d030: 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62         private b
d040: 6f 6f 6c 20 64 69 73 70 6f 73 65 64 3b 0d 0a 20  ool disposed;.. 
d050: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
d060: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
d070: 2f 20 54 68 72 6f 77 73 20 61 6e 20 3c 73 65 65  / Throws an <see
d080: 20 63 72 65 66 3d 22 4f 62 6a 65 63 74 44 69 73   cref="ObjectDis
d090: 70 6f 73 65 64 45 78 63 65 70 74 69 6f 6e 22 20  posedException" 
d0a0: 2f 3e 20 69 66 20 74 68 69 73 20 6f 62 6a 65 63  /> if this objec
d0b0: 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  t..        /// i
d0c0: 6e 73 74 61 6e 63 65 20 68 61 73 20 62 65 65 6e  nstance has been
d0d0: 20 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20 20   disposed...    
d0e0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
d0f0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  y>..        priv
d100: 61 74 65 20 76 6f 69 64 20 43 68 65 63 6b 44 69  ate void CheckDi
d110: 73 70 6f 73 65 64 28 29 20 2f 2a 20 74 68 72 6f  sposed() /* thro
d120: 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 7b 0d  w */..        {.
d130: 0a 23 69 66 20 54 48 52 4f 57 5f 4f 4e 5f 44 49  .#if THROW_ON_DI
d140: 53 50 4f 53 45 44 0d 0a 20 20 20 20 20 20 20 20  SPOSED..        
d150: 20 20 20 20 69 66 20 28 64 69 73 70 6f 73 65 64      if (disposed
d160: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
d170: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d180: 20 20 74 68 72 6f 77 20 6e 65 77 20 4f 62 6a 65    throw new Obje
d190: 63 74 44 69 73 70 6f 73 65 64 45 78 63 65 70 74  ctDisposedExcept
d1a0: 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ion(..          
d1b0: 20 20 20 20 20 20 20 20 20 20 74 79 70 65 6f 66            typeof
d1c0: 28 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  (SQLiteVirtualTa
d1d0: 62 6c 65 29 2e 4e 61 6d 65 29 3b 0d 0a 20 20 20  ble).Name);..   
d1e0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
d1f0: 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  if..        }...
d200: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
d210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d250: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
d260: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
d270: 20 20 20 2f 2f 2f 20 44 69 73 70 6f 73 65 73 20     /// Disposes 
d280: 6f 66 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69  of this object i
d290: 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20  nstance...      
d2a0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
d2b0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
d2c0: 61 72 61 6d 20 6e 61 6d 65 3d 22 64 69 73 70 6f  aram name="dispo
d2d0: 73 69 6e 67 22 3e 0d 0a 20 20 20 20 20 20 20 20  sing">..        
d2e0: 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
d2f0: 74 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 62  this method is b
d300: 65 69 6e 67 20 63 61 6c 6c 65 64 20 66 72 6f 6d  eing called from
d310: 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
d320: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 44 69 73  / <see cref="Dis
d330: 70 6f 73 65 28 29 22 20 2f 3e 20 6d 65 74 68 6f  pose()" /> metho
d340: 64 2e 20 20 5a 65 72 6f 20 69 66 20 74 68 69 73  d.  Zero if this
d350: 20 6d 65 74 68 6f 64 20 69 73 20 62 65 69 6e 67   method is being
d360: 20 63 61 6c 6c 65 64 0d 0a 20 20 20 20 20 20 20   called..       
d370: 20 2f 2f 2f 20 66 72 6f 6d 20 74 68 65 20 66 69   /// from the fi
d380: 6e 61 6c 69 7a 65 72 2e 0d 0a 20 20 20 20 20 20  nalizer...      
d390: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
d3a0: 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65          protecte
d3b0: 64 20 76 69 72 74 75 61 6c 20 76 6f 69 64 20 44  d virtual void D
d3c0: 69 73 70 6f 73 65 28 62 6f 6f 6c 20 64 69 73 70  ispose(bool disp
d3d0: 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20  osing)..        
d3e0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
d3f0: 66 20 28 21 64 69 73 70 6f 73 65 64 29 0d 0a 20  f (!disposed).. 
d400: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
d410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
d420: 69 66 20 28 64 69 73 70 6f 73 69 6e 67 29 0d 0a  if (disposing)..
d430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d440: 2f 2f 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  //{..           
d450: 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f       //    /////
d460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
d480: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d490: 20 2f 2f 20 20 20 20 2f 2f 20 64 69 73 70 6f 73   //    // dispos
d4a0: 65 20 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72  e managed resour
d4b0: 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20  ces here.....   
d4c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
d4d0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
d4e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d4f0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20  ///////..       
d500: 20 20 20 20 20 20 20 20 20 2f 2f 7d 0d 0a 0d 0a           //}....
d510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d540: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20  //////..        
d550: 20 20 20 20 20 20 20 20 2f 2f 20 72 65 6c 65 61          // relea
d560: 73 65 20 75 6e 6d 61 6e 61 67 65 64 20 72 65 73  se unmanaged res
d570: 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a  ources here.....
d580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d5a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d5b0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
d5c0: 20 20 20 20 20 20 20 20 20 20 64 69 73 70 6f 73            dispos
d5d0: 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20  ed = true;..    
d5e0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
d5f0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
d600: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
d610: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
d620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
d660: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44         #region D
d670: 65 73 74 72 75 63 74 6f 72 0d 0a 20 20 20 20 20  estructor..     
d680: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
d690: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 46 69  ..        /// Fi
d6a0: 6e 61 6c 69 7a 65 73 20 74 68 69 73 20 6f 62 6a  nalizes this obj
d6b0: 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20  ect instance... 
d6c0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
d6d0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 7e  mary>..        ~
d6e0: 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
d6f0: 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  le()..        {.
d700: 0a 20 20 20 20 20 20 20 20 20 20 20 20 44 69 73  .            Dis
d710: 70 6f 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20  pose(false);..  
d720: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
d730: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20   #endregion..   
d740: 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69   }..    #endregi
d750: 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  on....    //////
d760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d7a0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65  /////....    #re
d7b0: 67 69 6f 6e 20 53 51 4c 69 74 65 56 69 72 74 75  gion SQLiteVirtu
d7c0: 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 20 42 61  alTableCursor Ba
d7d0: 73 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f  se Class..    //
d7e0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
d7f0: 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20   /// This class 
d800: 72 65 70 72 65 73 65 6e 74 73 20 61 20 6d 61 6e  represents a man
d810: 61 67 65 64 20 76 69 72 74 75 61 6c 20 74 61 62  aged virtual tab
d820: 6c 65 20 63 75 72 73 6f 72 20 69 6d 70 6c 65 6d  le cursor implem
d830: 65 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 2f  entation...    /
d840: 2f 2f 20 49 74 20 69 73 20 6e 6f 74 20 73 65 61  // It is not sea
d850: 6c 65 64 20 61 6e 64 20 73 68 6f 75 6c 64 20 62  led and should b
d860: 65 20 75 73 65 64 20 61 73 20 74 68 65 20 62 61  e used as the ba
d870: 73 65 20 63 6c 61 73 73 20 66 6f 72 20 61 6e 79  se class for any
d880: 0d 0a 20 20 20 20 2f 2f 2f 20 75 73 65 72 2d 64  ..    /// user-d
d890: 65 66 69 6e 65 64 20 76 69 72 74 75 61 6c 20 74  efined virtual t
d8a0: 61 62 6c 65 20 63 75 72 73 6f 72 20 63 6c 61 73  able cursor clas
d8b0: 73 65 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20  ses implemented 
d8c0: 69 6e 20 6d 61 6e 61 67 65 64 20 63 6f 64 65 2e  in managed code.
d8d0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
d8e0: 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63  ary>..    public
d8f0: 20 63 6c 61 73 73 20 53 51 4c 69 74 65 56 69 72   class SQLiteVir
d900: 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 20  tualTableCursor 
d910: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  :..            I
d920: 53 51 4c 69 74 65 4e 61 74 69 76 65 48 61 6e 64  SQLiteNativeHand
d930: 6c 65 2c 20 49 44 69 73 70 6f 73 61 62 6c 65 20  le, IDisposable 
d940: 2f 2a 20 4e 4f 54 20 53 45 41 4c 45 44 20 2a 2f  /* NOT SEALED */
d950: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
d960: 20 23 72 65 67 69 6f 6e 20 50 72 6f 74 65 63 74   #region Protect
d970: 65 64 20 43 6f 6e 73 74 61 6e 74 73 0d 0a 20 20  ed Constants..  
d980: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
d990: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
d9a0: 20 54 68 69 73 20 76 61 6c 75 65 20 72 65 70 72   This value repr
d9b0: 65 73 65 6e 74 73 20 61 6e 20 69 6e 76 61 6c 69  esents an invali
d9c0: 64 20 69 6e 74 65 67 65 72 20 72 6f 77 20 73 65  d integer row se
d9d0: 71 75 65 6e 63 65 20 6e 75 6d 62 65 72 2e 0d 0a  quence number...
d9e0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
d9f0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
da00: 70 72 6f 74 65 63 74 65 64 20 73 74 61 74 69 63  protected static
da10: 20 72 65 61 64 6f 6e 6c 79 20 69 6e 74 20 49 6e   readonly int In
da20: 76 61 6c 69 64 52 6f 77 49 6e 64 65 78 20 3d 20  validRowIndex = 
da30: 30 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64  0;..        #end
da40: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
da50: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
da60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
da70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
da80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
da90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
daa0: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69       #region Pri
dab0: 76 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20 20  vate Data..     
dac0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
dad0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
dae0: 65 20 66 69 65 6c 64 20 68 6f 6c 64 73 20 74 68  e field holds th
daf0: 65 20 69 6e 74 65 67 65 72 20 72 6f 77 20 73 65  e integer row se
db00: 71 75 65 6e 63 65 20 6e 75 6d 62 65 72 20 66 6f  quence number fo
db10: 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 72 6f  r the current ro
db20: 77 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70  w..        /// p
db30: 6f 69 6e 74 65 64 20 74 6f 20 62 79 20 74 68 69  ointed to by thi
db40: 73 20 63 75 72 73 6f 72 20 6f 62 6a 65 63 74 20  s cursor object 
db50: 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20  instance...     
db60: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
db70: 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
db80: 74 65 20 69 6e 74 20 72 6f 77 49 6e 64 65 78 3b  te int rowIndex;
db90: 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
dba0: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
dbb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dbc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dbd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dbe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dbf0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
dc00: 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69     #region Publi
dc10: 63 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a  c Constructors..
dc20: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
dc30: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
dc40: 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e  // Constructs an
dc50: 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69   instance of thi
dc60: 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20  s class...      
dc70: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
dc80: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
dc90: 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65  aram name="table
dca0: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
dcb0: 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
dcc0: 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
dcd0: 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  e" /> object ins
dce0: 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64  tance associated
dcf0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69  ..        /// wi
dd00: 74 68 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69  th this object i
dd10: 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20  nstance...      
dd20: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
dd30: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53          public S
dd40: 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
dd50: 65 43 75 72 73 6f 72 28 0d 0a 20 20 20 20 20 20  eCursor(..      
dd60: 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74        SQLiteVirt
dd70: 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 0d 0a  ualTable table..
dd80: 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
dd90: 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69             : thi
dda0: 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  s()..        {..
ddb0: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
ddc0: 2e 74 61 62 6c 65 20 3d 20 74 61 62 6c 65 3b 0d  .table = table;.
ddd0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
dde0: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
ddf0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
de00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
de10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
de20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
de30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
de40: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
de50: 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43 6f 6e  gion Private Con
de60: 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20  structors..     
de70: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
de80: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f  ..        /// Co
de90: 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74  nstructs an inst
dea0: 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61  ance of this cla
deb0: 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ss...        ///
dec0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
ded0: 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c       private SQL
dee0: 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43  iteVirtualTableC
def0: 75 72 73 6f 72 28 29 0d 0a 20 20 20 20 20 20 20  ursor()..       
df00: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
df10: 72 6f 77 49 6e 64 65 78 20 3d 20 49 6e 76 61 6c  rowIndex = Inval
df20: 69 64 52 6f 77 49 6e 64 65 78 3b 0d 0a 20 20 20  idRowIndex;..   
df30: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
df40: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
df50: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
df60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
df70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
df80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
df90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
dfa0: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
dfb0: 20 50 75 62 6c 69 63 20 50 72 6f 70 65 72 74 69   Public Properti
dfc0: 65 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  es..        priv
dfd0: 61 74 65 20 53 51 4c 69 74 65 56 69 72 74 75 61  ate SQLiteVirtua
dfe0: 6c 54 61 62 6c 65 20 74 61 62 6c 65 3b 0d 0a 20  lTable table;.. 
dff0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
e000: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
e010: 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
e020: 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  "SQLiteVirtualTa
e030: 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  ble" /> object i
e040: 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74  nstance associat
e050: 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
e060: 77 69 74 68 20 74 68 69 73 20 6f 62 6a 65 63 74  with this object
e070: 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20   instance...    
e080: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
e090: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
e0a0: 69 63 20 76 69 72 74 75 61 6c 20 53 51 4c 69 74  ic virtual SQLit
e0b0: 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 54 61  eVirtualTable Ta
e0c0: 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ble..        {..
e0d0: 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
e0e0: 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  { CheckDisposed(
e0f0: 29 3b 20 72 65 74 75 72 6e 20 74 61 62 6c 65 3b  ); return table;
e100: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
e110: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
e120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e160: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
e170: 61 74 65 20 69 6e 74 20 69 6e 64 65 78 4e 75 6d  ate int indexNum
e180: 62 65 72 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ber;..        //
e190: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
e1a0: 20 20 20 20 20 2f 2f 2f 20 4e 75 6d 62 65 72 20       /// Number 
e1b0: 75 73 65 64 20 74 6f 20 68 65 6c 70 20 69 64 65  used to help ide
e1c0: 6e 74 69 66 79 20 74 68 65 20 73 65 6c 65 63 74  ntify the select
e1d0: 65 64 20 69 6e 64 65 78 2e 20 20 54 68 69 73 20  ed index.  This 
e1e0: 76 61 6c 75 65 20 77 69 6c 6c 0d 0a 20 20 20 20  value will..    
e1f0: 20 20 20 20 2f 2f 2f 20 62 65 20 73 65 74 20 76      /// be set v
e200: 69 61 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ia the <see cref
e210: 3d 22 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74  ="Filter" /> met
e220: 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
e230: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
e240: 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 69 72        public vir
e250: 74 75 61 6c 20 69 6e 74 20 49 6e 64 65 78 4e 75  tual int IndexNu
e260: 6d 62 65 72 0d 0a 20 20 20 20 20 20 20 20 7b 0d  mber..        {.
e270: 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
e280: 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64   { CheckDisposed
e290: 28 29 3b 20 72 65 74 75 72 6e 20 69 6e 64 65 78  (); return index
e2a0: 4e 75 6d 62 65 72 3b 20 7d 0d 0a 20 20 20 20 20  Number; }..     
e2b0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
e2c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e2d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e2e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e2f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e300: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
e310: 20 20 20 70 72 69 76 61 74 65 20 73 74 72 69 6e     private strin
e320: 67 20 69 6e 64 65 78 53 74 72 69 6e 67 3b 0d 0a  g indexString;..
e330: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
e340: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
e350: 2f 2f 20 53 74 72 69 6e 67 20 75 73 65 64 20 74  // String used t
e360: 6f 20 68 65 6c 70 20 69 64 65 6e 74 69 66 79 20  o help identify 
e370: 74 68 65 20 73 65 6c 65 63 74 65 64 20 69 6e 64  the selected ind
e380: 65 78 2e 20 20 54 68 69 73 20 76 61 6c 75 65 20  ex.  This value 
e390: 77 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f  will..        //
e3a0: 2f 20 62 65 20 73 65 74 20 76 69 61 20 74 68 65  / be set via the
e3b0: 20 3c 73 65 65 20 63 72 65 66 3d 22 46 69 6c 74   <see cref="Filt
e3c0: 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  er" /> method...
e3d0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
e3e0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
e3f0: 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 73  public virtual s
e400: 74 72 69 6e 67 20 49 6e 64 65 78 53 74 72 69 6e  tring IndexStrin
e410: 67 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  g..        {..  
e420: 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20            get { 
e430: 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
e440: 20 72 65 74 75 72 6e 20 69 6e 64 65 78 53 74 72   return indexStr
e450: 69 6e 67 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  ing; }..        
e460: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
e470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e4a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e4b0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
e4c0: 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 56 61  private SQLiteVa
e4d0: 6c 75 65 5b 5d 20 76 61 6c 75 65 73 3b 0d 0a 20  lue[] values;.. 
e4e0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
e4f0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
e500: 2f 20 54 68 65 20 76 61 6c 75 65 73 20 75 73 65  / The values use
e510: 64 20 74 6f 20 66 69 6c 74 65 72 20 74 68 65 20  d to filter the 
e520: 72 6f 77 73 20 72 65 74 75 72 6e 65 64 20 76 69  rows returned vi
e530: 61 20 74 68 69 73 20 63 75 72 73 6f 72 20 6f 62  a this cursor ob
e540: 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ject..        //
e550: 2f 20 69 6e 73 74 61 6e 63 65 2e 20 20 54 68 69  / instance.  Thi
e560: 73 20 76 61 6c 75 65 20 77 69 6c 6c 20 62 65 20  s value will be 
e570: 73 65 74 20 76 69 61 20 74 68 65 20 3c 73 65 65  set via the <see
e580: 20 63 72 65 66 3d 22 46 69 6c 74 65 72 22 20 2f   cref="Filter" /
e590: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d  >..        /// m
e5a0: 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
e5b0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
e5c0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76          public v
e5d0: 69 72 74 75 61 6c 20 53 51 4c 69 74 65 56 61 6c  irtual SQLiteVal
e5e0: 75 65 5b 5d 20 56 61 6c 75 65 73 0d 0a 20 20 20  ue[] Values..   
e5f0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
e600: 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44      get { CheckD
e610: 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75 72  isposed(); retur
e620: 6e 20 76 61 6c 75 65 73 3b 20 7d 0d 0a 20 20 20  n values; }..   
e630: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
e640: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
e650: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
e660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
e6a0: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
e6b0: 20 50 72 6f 74 65 63 74 65 64 20 4d 65 74 68 6f   Protected Metho
e6c0: 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
e6d0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
e6e0: 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20     /// Attempts 
e6f0: 74 6f 20 70 65 72 73 69 73 74 20 74 68 65 20 73  to persist the s
e700: 70 65 63 69 66 69 65 64 20 3c 73 65 65 20 63 72  pecified <see cr
e710: 65 66 3d 22 53 51 4c 69 74 65 56 61 6c 75 65 22  ef="SQLiteValue"
e720: 20 2f 3e 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20   /> object..    
e730: 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63 65      /// instance
e740: 73 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 6d 61  s in order to ma
e750: 6b 65 20 74 68 65 6d 20 61 76 61 69 6c 61 62 6c  ke them availabl
e760: 65 20 61 66 74 65 72 20 74 68 65 0d 0a 20 20 20  e after the..   
e770: 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
e780: 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67  ef="ISQLiteManag
e790: 65 64 4d 6f 64 75 6c 65 2e 46 69 6c 74 65 72 22  edModule.Filter"
e7a0: 20 2f 3e 20 6d 65 74 68 6f 64 20 72 65 74 75 72   /> method retur
e7b0: 6e 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns...        ///
e7c0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
e7d0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
e7e0: 6e 61 6d 65 3d 22 76 61 6c 75 65 73 22 3e 0d 0a  name="values">..
e7f0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
e800: 61 72 72 61 79 20 6f 66 20 3c 73 65 65 20 63 72  array of <see cr
e810: 65 66 3d 22 53 51 4c 69 74 65 56 61 6c 75 65 22  ef="SQLiteValue"
e820: 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
e830: 6e 63 65 73 20 74 6f 20 62 65 0d 0a 20 20 20 20  nces to be..    
e840: 20 20 20 20 2f 2f 2f 20 70 65 72 73 69 73 74 65      /// persiste
e850: 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
e860: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
e870: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
e880: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
e890: 20 6e 75 6d 62 65 72 20 6f 66 20 3c 73 65 65 20   number of <see 
e8a0: 63 72 65 66 3d 22 53 51 4c 69 74 65 56 61 6c 75  cref="SQLiteValu
e8b0: 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  e" /> object ins
e8c0: 74 61 6e 63 65 73 20 74 68 61 74 20 77 65 72 65  tances that were
e8d0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 75  ..        /// su
e8e0: 63 63 65 73 73 66 75 6c 6c 79 20 70 65 72 73 69  ccessfully persi
e8f0: 73 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  sted...        /
e900: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
e910: 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64         protected
e920: 20 76 69 72 74 75 61 6c 20 69 6e 74 20 54 72 79   virtual int Try
e930: 50 65 72 73 69 73 74 56 61 6c 75 65 73 28 0d 0a  PersistValues(..
e940: 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
e950: 74 65 56 61 6c 75 65 5b 5d 20 76 61 6c 75 65 73  teValue[] values
e960: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
e970: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
e980: 20 20 20 20 20 20 20 20 69 6e 74 20 72 65 73 75          int resu
e990: 6c 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20  lt = 0;....     
e9a0: 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65         if (value
e9b0: 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  s != null)..    
e9c0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
e9d0: 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61             forea
e9e0: 63 68 20 28 53 51 4c 69 74 65 56 61 6c 75 65 20  ch (SQLiteValue 
e9f0: 76 61 6c 75 65 20 69 6e 20 76 61 6c 75 65 73 29  value in values)
ea00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ea10: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
ea20: 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c           if (val
ea30: 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ue == null)..   
ea40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ea50: 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a       continue;..
ea60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ea70: 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 2e        if (value.
ea80: 50 65 72 73 69 73 74 28 29 29 0d 0a 20 20 20 20  Persist())..    
ea90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eaa0: 20 20 20 20 72 65 73 75 6c 74 2b 2b 3b 0d 0a 20      result++;.. 
eab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
eac0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
ead0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
eae0: 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20  eturn result;.. 
eaf0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
eb00: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
eb10: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
eb20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eb30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eb40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eb50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
eb60: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
eb70: 6f 6e 20 50 75 62 6c 69 63 20 4d 65 74 68 6f 64  on Public Method
eb80: 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
eb90: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
eba0: 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
ebb0: 64 20 73 68 6f 75 6c 64 20 6e 6f 72 6d 61 6c 6c  d should normall
ebc0: 79 20 62 65 20 75 73 65 64 20 62 79 20 74 68 65  y be used by the
ebd0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
ebe0: 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
ebf0: 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 46 69  ManagedModule.Fi
ec00: 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 20  lter" /> method 
ec10: 69 6e 20 6f 72 64 65 72 20 74 6f 0d 0a 20 20 20  in order to..   
ec20: 20 20 20 20 20 2f 2f 2f 20 70 65 72 66 6f 72 6d       /// perform
ec30: 20 66 69 6c 74 65 72 69 6e 67 20 6f 66 20 74 68   filtering of th
ec40: 65 20 72 65 73 75 6c 74 20 72 6f 77 73 20 61 6e  e result rows an
ec50: 64 2f 6f 72 20 74 6f 20 72 65 63 6f 72 64 20 74  d/or to record t
ec60: 68 65 20 66 69 6c 74 65 72 69 6e 67 0d 0a 20 20  he filtering..  
ec70: 20 20 20 20 20 20 2f 2f 2f 20 63 72 69 74 65 72        /// criter
ec80: 69 61 20 70 72 6f 76 69 64 65 64 20 62 79 20 74  ia provided by t
ec90: 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c  he SQLite core l
eca0: 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20  ibrary...       
ecb0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
ecc0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
ecd0: 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78 4e  ram name="indexN
ece0: 75 6d 62 65 72 22 3e 0d 0a 20 20 20 20 20 20 20  umber">..       
ecf0: 20 2f 2f 2f 20 4e 75 6d 62 65 72 20 75 73 65 64   /// Number used
ed00: 20 74 6f 20 68 65 6c 70 20 69 64 65 6e 74 69 66   to help identif
ed10: 79 20 74 68 65 20 73 65 6c 65 63 74 65 64 20 69  y the selected i
ed20: 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ndex...        /
ed30: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
ed40: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
ed50: 6e 61 6d 65 3d 22 69 6e 64 65 78 53 74 72 69 6e  name="indexStrin
ed60: 67 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  g">..        ///
ed70: 20 53 74 72 69 6e 67 20 75 73 65 64 20 74 6f 20   String used to 
ed80: 68 65 6c 70 20 69 64 65 6e 74 69 66 79 20 74 68  help identify th
ed90: 65 20 73 65 6c 65 63 74 65 64 20 69 6e 64 65 78  e selected index
eda0: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
edb0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
edc0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
edd0: 3d 22 76 61 6c 75 65 73 22 3e 0d 0a 20 20 20 20  ="values">..    
ede0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75      /// The valu
edf0: 65 73 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67  es corresponding
ee00: 20 74 6f 20 65 61 63 68 20 63 6f 6c 75 6d 6e 20   to each column 
ee10: 69 6e 20 74 68 65 20 73 65 6c 65 63 74 65 64 20  in the selected 
ee20: 69 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20 20 20  index...        
ee30: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
ee40: 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 69 72        public vir
ee50: 74 75 61 6c 20 76 6f 69 64 20 46 69 6c 74 65 72  tual void Filter
ee60: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  (..            i
ee70: 6e 74 20 69 6e 64 65 78 4e 75 6d 62 65 72 2c 0d  nt indexNumber,.
ee80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72  .            str
ee90: 69 6e 67 20 69 6e 64 65 78 53 74 72 69 6e 67 2c  ing indexString,
eea0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
eeb0: 4c 69 74 65 56 61 6c 75 65 5b 5d 20 76 61 6c 75  LiteValue[] valu
eec0: 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  es..            
eed0: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
eee0: 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 44            CheckD
eef0: 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20  isposed();....  
ef00: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28 76            if ((v
ef10: 61 6c 75 65 73 20 21 3d 20 6e 75 6c 6c 29 20 26  alues != null) &
ef20: 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  &..             
ef30: 20 20 20 28 54 72 79 50 65 72 73 69 73 74 56 61     (TryPersistVa
ef40: 6c 75 65 73 28 76 61 6c 75 65 73 29 20 21 3d 20  lues(values) != 
ef50: 76 61 6c 75 65 73 2e 4c 65 6e 67 74 68 29 29 0d  values.Length)).
ef60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
ef70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ef80: 74 68 72 6f 77 20 6e 65 77 20 53 51 4c 69 74 65  throw new SQLite
ef90: 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20 20 20  Exception(..    
efa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
efb0: 22 66 61 69 6c 65 64 20 74 6f 20 70 65 72 73 69  "failed to persi
efc0: 73 74 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 76  st one or more v
efd0: 61 6c 75 65 73 22 29 3b 0d 0a 20 20 20 20 20 20  alues");..      
efe0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
eff0: 20 20 20 20 20 20 20 74 68 69 73 2e 69 6e 64 65         this.inde
f000: 78 4e 75 6d 62 65 72 20 3d 20 69 6e 64 65 78 4e  xNumber = indexN
f010: 75 6d 62 65 72 3b 0d 0a 20 20 20 20 20 20 20 20  umber;..        
f020: 20 20 20 20 74 68 69 73 2e 69 6e 64 65 78 53 74      this.indexSt
f030: 72 69 6e 67 20 3d 20 69 6e 64 65 78 53 74 72 69  ring = indexStri
f040: 6e 67 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng;..           
f050: 20 74 68 69 73 2e 76 61 6c 75 65 73 20 3d 20 76   this.values = v
f060: 61 6c 75 65 73 3b 0d 0a 20 20 20 20 20 20 20 20  alues;..        
f070: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
f080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f0a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f0b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f0c0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
f0d0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
f0e0: 20 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72         /// Deter
f0f0: 6d 69 6e 65 73 20 74 68 65 20 69 6e 74 65 67 65  mines the intege
f100: 72 20 72 6f 77 20 73 65 71 75 65 6e 63 65 20 6e  r row sequence n
f110: 75 6d 62 65 72 20 66 6f 72 20 74 68 65 20 63 75  umber for the cu
f120: 72 72 65 6e 74 20 72 6f 77 2e 0d 0a 20 20 20 20  rrent row...    
f130: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
f140: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
f150: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
f160: 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67     /// The integ
f170: 65 72 20 72 6f 77 20 73 65 71 75 65 6e 63 65 20  er row sequence 
f180: 6e 75 6d 62 65 72 20 66 6f 72 20 74 68 65 20 63  number for the c
f190: 75 72 72 65 6e 74 20 72 6f 77 20 2d 4f 52 2d 20  urrent row -OR- 
f1a0: 7a 65 72 6f 20 69 66 0d 0a 20 20 20 20 20 20 20  zero if..       
f1b0: 20 2f 2f 2f 20 69 74 20 63 61 6e 6e 6f 74 20 62   /// it cannot b
f1c0: 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20  e determined... 
f1d0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
f1e0: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
f1f0: 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 69 6e  ublic virtual in
f200: 74 20 47 65 74 52 6f 77 49 6e 64 65 78 28 29 0d  t GetRowIndex().
f210: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
f220: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72          return r
f230: 6f 77 49 6e 64 65 78 3b 0d 0a 20 20 20 20 20 20  owIndex;..      
f240: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
f250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f290: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
f2a0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
f2b0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 64 6a  .        /// Adj
f2c0: 75 73 74 73 20 74 68 65 20 69 6e 74 65 67 65 72  usts the integer
f2d0: 20 72 6f 77 20 73 65 71 75 65 6e 63 65 20 6e 75   row sequence nu
f2e0: 6d 62 65 72 20 73 6f 20 74 68 61 74 20 69 74 20  mber so that it 
f2f0: 72 65 66 65 72 73 20 74 6f 20 74 68 65 0d 0a 20  refers to the.. 
f300: 20 20 20 20 20 20 20 2f 2f 2f 20 6e 65 78 74 20         /// next 
f310: 72 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  row...        //
f320: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
f330: 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 69 72        public vir
f340: 74 75 61 6c 20 76 6f 69 64 20 4e 65 78 74 52 6f  tual void NextRo
f350: 77 49 6e 64 65 78 28 29 0d 0a 20 20 20 20 20 20  wIndex()..      
f360: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
f370: 20 72 6f 77 49 6e 64 65 78 2b 2b 3b 0d 0a 20 20   rowIndex++;..  
f380: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
f390: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
f3a0: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
f3b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f3c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f3d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f3e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
f3f0: 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
f400: 6e 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65 48  n ISQLiteNativeH
f410: 61 6e 64 6c 65 20 4d 65 6d 62 65 72 73 0d 0a 20  andle Members.. 
f420: 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 49         private I
f430: 6e 74 50 74 72 20 6e 61 74 69 76 65 48 61 6e 64  ntPtr nativeHand
f440: 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le;..        ///
f450: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
f460: 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20      /// Returns 
f470: 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 53  the underlying S
f480: 51 4c 69 74 65 20 6e 61 74 69 76 65 20 68 61 6e  QLite native han
f490: 64 6c 65 20 61 73 73 6f 63 69 61 74 65 64 20 77  dle associated w
f4a0: 69 74 68 20 74 68 69 73 0d 0a 20 20 20 20 20 20  ith this..      
f4b0: 20 20 2f 2f 2f 20 6f 62 6a 65 63 74 20 69 6e 73    /// object ins
f4c0: 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20  tance...        
f4d0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
f4e0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76          public v
f4f0: 69 72 74 75 61 6c 20 49 6e 74 50 74 72 20 4e 61  irtual IntPtr Na
f500: 74 69 76 65 48 61 6e 64 6c 65 0d 0a 20 20 20 20  tiveHandle..    
f510: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
f520: 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44 69     get { CheckDi
f530: 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75 72 6e  sposed(); return
f540: 20 6e 61 74 69 76 65 48 61 6e 64 6c 65 3b 20 7d   nativeHandle; }
f550: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
f560: 74 65 72 6e 61 6c 20 73 65 74 20 7b 20 6e 61 74  ternal set { nat
f570: 69 76 65 48 61 6e 64 6c 65 20 3d 20 76 61 6c 75  iveHandle = valu
f580: 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d  e; }..        }.
f590: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
f5a0: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
f5b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f5c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f5d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f5e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f5f0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
f600: 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73 70 6f    #region IDispo
f610: 73 61 62 6c 65 20 4d 65 6d 62 65 72 73 0d 0a 20  sable Members.. 
f620: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
f630: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
f640: 2f 20 44 69 73 70 6f 73 65 73 20 6f 66 20 74 68  / Disposes of th
f650: 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  is object instan
f660: 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ce...        ///
f670: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
f680: 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64       public void
f690: 20 44 69 73 70 6f 73 65 28 29 0d 0a 20 20 20 20   Dispose()..    
f6a0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
f6b0: 20 20 20 44 69 73 70 6f 73 65 28 74 72 75 65 29     Dispose(true)
f6c0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 47  ;..            G
f6d0: 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61 6c 69  C.SuppressFinali
f6e0: 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20 20  ze(this);..     
f6f0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
f700: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
f710: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
f720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
f760: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49         #region I
f770: 44 69 73 70 6f 73 61 62 6c 65 20 22 50 61 74 74  Disposable "Patt
f780: 65 72 6e 22 20 4d 65 6d 62 65 72 73 0d 0a 20 20  ern" Members..  
f790: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f        private bo
f7a0: 6f 6c 20 64 69 73 70 6f 73 65 64 3b 0d 0a 20 20  ol disposed;..  
f7b0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
f7c0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
f7d0: 20 54 68 72 6f 77 73 20 61 6e 20 3c 73 65 65 20   Throws an <see 
f7e0: 63 72 65 66 3d 22 4f 62 6a 65 63 74 44 69 73 70  cref="ObjectDisp
f7f0: 6f 73 65 64 45 78 63 65 70 74 69 6f 6e 22 20 2f  osedException" /
f800: 3e 20 69 66 20 74 68 69 73 20 6f 62 6a 65 63 74  > if this object
f810: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e  ..        /// in
f820: 73 74 61 6e 63 65 20 68 61 73 20 62 65 65 6e 20  stance has been 
f830: 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20 20 20  disposed...     
f840: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
f850: 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
f860: 74 65 20 76 6f 69 64 20 43 68 65 63 6b 44 69 73  te void CheckDis
f870: 70 6f 73 65 64 28 29 20 2f 2a 20 74 68 72 6f 77  posed() /* throw
f880: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a   */..        {..
f890: 23 69 66 20 54 48 52 4f 57 5f 4f 4e 5f 44 49 53  #if THROW_ON_DIS
f8a0: 50 4f 53 45 44 0d 0a 20 20 20 20 20 20 20 20 20  POSED..         
f8b0: 20 20 20 69 66 20 28 64 69 73 70 6f 73 65 64 29     if (disposed)
f8c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
f8d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f8e0: 20 74 68 72 6f 77 20 6e 65 77 20 4f 62 6a 65 63   throw new Objec
f8f0: 74 44 69 73 70 6f 73 65 64 45 78 63 65 70 74 69  tDisposedExcepti
f900: 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on(..           
f910: 20 20 20 20 20 20 20 20 20 74 79 70 65 6f 66 28           typeof(
f920: 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
f930: 6c 65 43 75 72 73 6f 72 29 2e 4e 61 6d 65 29 3b  leCursor).Name);
f940: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
f950: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
f960: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
f970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f9a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f9b0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
f9c0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
f9d0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 69 73 70          /// Disp
f9e0: 6f 73 65 73 20 6f 66 20 74 68 69 73 20 6f 62 6a  oses of this obj
f9f0: 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20  ect instance... 
fa00: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
fa10: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
fa20: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
fa30: 64 69 73 70 6f 73 69 6e 67 22 3e 0d 0a 20 20 20  disposing">..   
fa40: 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
fa50: 6f 20 69 66 20 74 68 69 73 20 6d 65 74 68 6f 64  o if this method
fa60: 20 69 73 20 62 65 69 6e 67 20 63 61 6c 6c 65 64   is being called
fa70: 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20   from the..     
fa80: 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
fa90: 3d 22 44 69 73 70 6f 73 65 28 29 22 20 2f 3e 20  ="Dispose()" /> 
faa0: 6d 65 74 68 6f 64 2e 20 20 5a 65 72 6f 20 69 66  method.  Zero if
fab0: 20 74 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20   this method is 
fac0: 62 65 69 6e 67 20 63 61 6c 6c 65 64 0d 0a 20 20  being called..  
fad0: 20 20 20 20 20 20 2f 2f 2f 20 66 72 6f 6d 20 74        /// from t
fae0: 68 65 20 66 69 6e 61 6c 69 7a 65 72 2e 0d 0a 20  he finalizer... 
faf0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
fb00: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f  am>..        pro
fb10: 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 76  tected virtual v
fb20: 6f 69 64 20 44 69 73 70 6f 73 65 28 62 6f 6f 6c  oid Dispose(bool
fb30: 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20   disposing)..   
fb40: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
fb50: 20 20 20 20 69 66 20 28 21 64 69 73 70 6f 73 65      if (!dispose
fb60: 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d)..            
fb70: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
fb80: 20 20 20 2f 2f 69 66 20 28 64 69 73 70 6f 73 69     //if (disposi
fb90: 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng)..           
fba0: 20 20 20 20 20 2f 2f 7b 0d 0a 20 20 20 20 20 20       //{..      
fbb0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
fbc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fbd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fbe0: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  ////..          
fbf0: 20 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 20 64        //    // d
fc00: 69 73 70 6f 73 65 20 6d 61 6e 61 67 65 64 20 72  ispose managed r
fc10: 65 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e  esources here...
fc20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
fc30: 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f    //    ////////
fc40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fc50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
fc60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
fc70: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
fc80: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
fc90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
fcb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
fcc0: 72 65 6c 65 61 73 65 20 75 6e 6d 61 6e 61 67 65  release unmanage
fcd0: 64 20 72 65 73 6f 75 72 63 65 73 20 68 65 72 65  d resources here
fce0: 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  .....           
fcf0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
fd00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fd10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
fd20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
fd30: 69 73 70 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d  isposed = true;.
fd40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
fd50: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
fd60: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
fd70: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
fd80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fd90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fda0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fdb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fdc0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
fdd0: 69 6f 6e 20 44 65 73 74 72 75 63 74 6f 72 0d 0a  ion Destructor..
fde0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
fdf0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
fe00: 2f 2f 20 46 69 6e 61 6c 69 7a 65 73 20 74 68 69  // Finalizes thi
fe10: 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  s object instanc
fe20: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
fe30: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
fe40: 20 20 20 20 7e 53 51 4c 69 74 65 56 69 72 74 75      ~SQLiteVirtu
fe50: 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 28 29 0d  alTableCursor().
fe60: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
fe70: 20 20 20 20 20 20 20 20 44 69 73 70 6f 73 65 28          Dispose(
fe80: 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20 20  false);..       
fe90: 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
fea0: 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20  region..    }.. 
feb0: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
fec0: 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
fed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ff00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ff10: 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
ff20: 49 53 51 4c 69 74 65 4e 61 74 69 76 65 48 61 6e  ISQLiteNativeHan
ff30: 64 6c 65 20 49 6e 74 65 72 66 61 63 65 0d 0a 20  dle Interface.. 
ff40: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
ff50: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69  ..    /// This i
ff60: 6e 74 65 72 66 61 63 65 20 72 65 70 72 65 73 65  nterface represe
ff70: 6e 74 73 20 61 20 6e 61 74 69 76 65 20 68 61 6e  nts a native han
ff80: 64 6c 65 20 70 72 6f 76 69 64 65 64 20 62 79 20  dle provided by 
ff90: 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 0d  the SQLite core.
ffa0: 0a 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79  .    /// library
ffb0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
ffc0: 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69  mary>..    publi
ffd0: 63 20 69 6e 74 65 72 66 61 63 65 20 49 53 51 4c  c interface ISQL
ffe0: 69 74 65 4e 61 74 69 76 65 48 61 6e 64 6c 65 0d  iteNativeHandle.
fff0: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
10000 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
10010 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
10020 61 74 69 76 65 20 68 61 6e 64 6c 65 20 76 61 6c  ative handle val
10030 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ue...        ///
10040 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
10050 20 20 20 20 20 49 6e 74 50 74 72 20 4e 61 74 69       IntPtr Nati
10060 76 65 48 61 6e 64 6c 65 20 7b 20 67 65 74 3b 20  veHandle { get; 
10070 7d 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65  }..    }..    #e
10080 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
10090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
100a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
100b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
100c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
100d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
100e0 20 20 20 23 72 65 67 69 6f 6e 20 49 53 51 4c 69     #region ISQLi
100f0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20 49  teNativeModule I
10100 6e 74 65 72 66 61 63 65 0d 0a 20 20 20 20 2f 2f  nterface..    //
10110 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
10120 20 2f 2f 2f 20 54 68 69 73 20 69 6e 74 65 72 66   /// This interf
10130 61 63 65 20 72 65 70 72 65 73 65 6e 74 73 20 61  ace represents a
10140 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 69   virtual table i
10150 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 77 72  mplementation wr
10160 69 74 74 65 6e 20 69 6e 0d 0a 20 20 20 20 2f 2f  itten in..    //
10170 2f 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a  / native code...
10180 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
10190 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 69  y>..    public i
101a0 6e 74 65 72 66 61 63 65 20 49 53 51 4c 69 74 65  nterface ISQLite
101b0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 0d 0a 20 20  NativeModule..  
101c0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f    {..        ///
101d0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
101e0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a      /// <para>..
101f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
10200 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65   method is calle
10210 64 20 74 6f 20 63 72 65 61 74 65 20 61 20 6e 65  d to create a ne
10220 77 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 61 20  w instance of a 
10230 76 69 72 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20  virtual table.. 
10240 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 20 72 65         /// in re
10250 73 70 6f 6e 73 65 20 74 6f 20 61 20 43 52 45 41  sponse to a CREA
10260 54 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45  TE VIRTUAL TABLE
10270 20 73 74 61 74 65 6d 65 6e 74 2e 20 54 68 65 20   statement. The 
10280 64 62 20 70 61 72 61 6d 65 74 65 72 0d 0a 20 20  db parameter..  
10290 20 20 20 20 20 20 2f 2f 2f 20 69 73 20 61 20 70        /// is a p
102a0 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 53 51  ointer to the SQ
102b0 4c 69 74 65 20 64 61 74 61 62 61 73 65 20 63 6f  Lite database co
102c0 6e 6e 65 63 74 69 6f 6e 20 74 68 61 74 20 69 73  nnection that is
102d0 20 65 78 65 63 75 74 69 6e 67 0d 0a 20 20 20 20   executing..    
102e0 20 20 20 20 2f 2f 2f 20 74 68 65 20 43 52 45 41      /// the CREA
102f0 54 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45  TE VIRTUAL TABLE
10300 20 73 74 61 74 65 6d 65 6e 74 2e 20 54 68 65 20   statement. The 
10310 70 41 75 78 20 61 72 67 75 6d 65 6e 74 20 69 73  pAux argument is
10320 20 74 68 65 20 63 6f 70 79 0d 0a 20 20 20 20 20   the copy..     
10330 20 20 20 2f 2f 2f 20 6f 66 20 74 68 65 20 63 6c     /// of the cl
10340 69 65 6e 74 20 64 61 74 61 20 70 6f 69 6e 74 65  ient data pointe
10350 72 20 74 68 61 74 20 77 61 73 20 74 68 65 20 66  r that was the f
10360 6f 75 72 74 68 20 61 72 67 75 6d 65 6e 74 20 74  ourth argument t
10370 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  o the..        /
10380 2f 2f 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74  // sqlite3_creat
10390 65 5f 6d 6f 64 75 6c 65 28 29 20 6f 72 20 73 71  e_module() or sq
103a0 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 6d 6f 64  lite3_create_mod
103b0 75 6c 65 5f 76 32 28 29 20 63 61 6c 6c 20 74 68  ule_v2() call th
103c0 61 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  at..        /// 
103d0 72 65 67 69 73 74 65 72 65 64 20 74 68 65 20 76  registered the v
103e0 69 72 74 75 61 6c 20 74 61 62 6c 65 20 6d 6f 64  irtual table mod
103f0 75 6c 65 2e 20 54 68 65 20 61 72 67 76 20 70 61  ule. The argv pa
10400 72 61 6d 65 74 65 72 20 69 73 20 61 6e 0d 0a 20  rameter is an.. 
10410 20 20 20 20 20 20 20 2f 2f 2f 20 61 72 72 61 79         /// array
10420 20 6f 66 20 61 72 67 63 20 70 6f 69 6e 74 65 72   of argc pointer
10430 73 20 74 6f 20 6e 75 6c 6c 20 74 65 72 6d 69 6e  s to null termin
10440 61 74 65 64 20 73 74 72 69 6e 67 73 2e 20 54 68  ated strings. Th
10450 65 20 66 69 72 73 74 0d 0a 20 20 20 20 20 20 20  e first..       
10460 20 2f 2f 2f 20 73 74 72 69 6e 67 2c 20 61 72 67   /// string, arg
10470 76 5b 30 5d 2c 20 69 73 20 74 68 65 20 6e 61 6d  v[0], is the nam
10480 65 20 6f 66 20 74 68 65 20 6d 6f 64 75 6c 65 20  e of the module 
10490 62 65 69 6e 67 20 69 6e 76 6f 6b 65 64 2e 20 54  being invoked. T
104a0 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
104b0 6d 6f 64 75 6c 65 20 6e 61 6d 65 20 69 73 20 74  module name is t
104c0 68 65 20 6e 61 6d 65 20 70 72 6f 76 69 64 65 64  he name provided
104d0 20 61 73 20 74 68 65 20 73 65 63 6f 6e 64 20 61   as the second a
104e0 72 67 75 6d 65 6e 74 20 74 6f 0d 0a 20 20 20 20  rgument to..    
104f0 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f      /// sqlite3_
10500 63 72 65 61 74 65 5f 6d 6f 64 75 6c 65 28 29 20  create_module() 
10510 61 6e 64 20 61 73 20 74 68 65 20 61 72 67 75 6d  and as the argum
10520 65 6e 74 20 74 6f 20 74 68 65 20 55 53 49 4e 47  ent to the USING
10530 20 63 6c 61 75 73 65 20 6f 66 0d 0a 20 20 20 20   clause of..    
10540 20 20 20 20 2f 2f 2f 20 74 68 65 20 43 52 45 41      /// the CREA
10550 54 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45  TE VIRTUAL TABLE
10560 20 73 74 61 74 65 6d 65 6e 74 20 74 68 61 74 20   statement that 
10570 69 73 20 72 75 6e 6e 69 6e 67 2e 20 54 68 65 20  is running. The 
10580 73 65 63 6f 6e 64 2c 0d 0a 20 20 20 20 20 20 20  second,..       
10590 20 2f 2f 2f 20 61 72 67 76 5b 31 5d 2c 20 69 73   /// argv[1], is
105a0 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   the name of the
105b0 20 64 61 74 61 62 61 73 65 20 69 6e 20 77 68 69   database in whi
105c0 63 68 20 74 68 65 20 6e 65 77 20 76 69 72 74 75  ch the new virtu
105d0 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20 20 20  al table..      
105e0 20 20 2f 2f 2f 20 69 73 20 62 65 69 6e 67 20 63    /// is being c
105f0 72 65 61 74 65 64 2e 20 54 68 65 20 64 61 74 61  reated. The data
10600 62 61 73 65 20 6e 61 6d 65 20 69 73 20 22 6d 61  base name is "ma
10610 69 6e 22 20 66 6f 72 20 74 68 65 20 70 72 69 6d  in" for the prim
10620 61 72 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ary..        ///
10630 20 64 61 74 61 62 61 73 65 2c 20 6f 72 20 22 74   database, or "t
10640 65 6d 70 22 20 66 6f 72 20 54 45 4d 50 20 64 61  emp" for TEMP da
10650 74 61 62 61 73 65 2c 20 6f 72 20 74 68 65 20 6e  tabase, or the n
10660 61 6d 65 20 67 69 76 65 6e 20 61 74 20 74 68 65  ame given at the
10670 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 65 6e  ..        /// en
10680 64 20 6f 66 20 74 68 65 20 41 54 54 41 43 48 20  d of the ATTACH 
10690 73 74 61 74 65 6d 65 6e 74 20 66 6f 72 20 61 74  statement for at
106a0 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65 73  tached databases
106b0 2e 20 54 68 65 20 74 68 69 72 64 0d 0a 20 20 20  . The third..   
106c0 20 20 20 20 20 2f 2f 2f 20 65 6c 65 6d 65 6e 74       /// element
106d0 20 6f 66 20 74 68 65 20 61 72 72 61 79 2c 20 61   of the array, a
106e0 72 67 76 5b 32 5d 2c 20 69 73 20 74 68 65 20 6e  rgv[2], is the n
106f0 61 6d 65 20 6f 66 20 74 68 65 20 6e 65 77 20 76  ame of the new v
10700 69 72 74 75 61 6c 0d 0a 20 20 20 20 20 20 20 20  irtual..        
10710 2f 2f 2f 20 74 61 62 6c 65 2c 20 61 73 20 73 70  /// table, as sp
10720 65 63 69 66 69 65 64 20 66 6f 6c 6c 6f 77 69 6e  ecified followin
10730 67 20 74 68 65 20 54 41 42 4c 45 20 6b 65 79 77  g the TABLE keyw
10740 6f 72 64 20 69 6e 20 74 68 65 20 43 52 45 41 54  ord in the CREAT
10750 45 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 56  E..        /// V
10760 49 52 54 55 41 4c 20 54 41 42 4c 45 20 73 74 61  IRTUAL TABLE sta
10770 74 65 6d 65 6e 74 2e 20 49 66 20 70 72 65 73 65  tement. If prese
10780 6e 74 2c 20 74 68 65 20 66 6f 75 72 74 68 20 61  nt, the fourth a
10790 6e 64 20 73 75 62 73 65 71 75 65 6e 74 0d 0a 20  nd subsequent.. 
107a0 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 69 6e         /// strin
107b0 67 73 20 69 6e 20 74 68 65 20 61 72 67 76 5b 5d  gs in the argv[]
107c0 20 61 72 72 61 79 20 72 65 70 6f 72 74 20 74 68   array report th
107d0 65 20 61 72 67 75 6d 65 6e 74 73 20 74 6f 20 74  e arguments to t
107e0 68 65 20 6d 6f 64 75 6c 65 20 6e 61 6d 65 0d 0a  he module name..
107f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 20 74          /// in t
10800 68 65 20 43 52 45 41 54 45 20 56 49 52 54 55 41  he CREATE VIRTUA
10810 4c 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e  L TABLE statemen
10820 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  t...        /// 
10830 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
10840 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
10850 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6a 6f 62       /// The job
10860 20 6f 66 20 74 68 69 73 20 6d 65 74 68 6f 64 20   of this method 
10870 69 73 20 74 6f 20 63 6f 6e 73 74 72 75 63 74 20  is to construct 
10880 74 68 65 20 6e 65 77 20 76 69 72 74 75 61 6c 20  the new virtual 
10890 74 61 62 6c 65 20 6f 62 6a 65 63 74 0d 0a 20 20  table object..  
108a0 20 20 20 20 20 20 2f 2f 2f 20 28 61 6e 20 73 71        /// (an sq
108b0 6c 69 74 65 33 5f 76 74 61 62 20 6f 62 6a 65 63  lite3_vtab objec
108c0 74 29 20 61 6e 64 20 72 65 74 75 72 6e 20 61 20  t) and return a 
108d0 70 6f 69 6e 74 65 72 20 74 6f 20 69 74 20 69 6e  pointer to it in
108e0 20 2a 70 70 56 54 61 62 2e 0d 0a 20 20 20 20 20   *ppVTab...     
108f0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a     /// </para>..
10900 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
10910 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
10920 41 73 20 70 61 72 74 20 6f 66 20 74 68 65 20 74  As part of the t
10930 61 73 6b 20 6f 66 20 63 72 65 61 74 69 6e 67 20  ask of creating 
10940 61 20 6e 65 77 20 73 71 6c 69 74 65 33 5f 76 74  a new sqlite3_vt
10950 61 62 20 73 74 72 75 63 74 75 72 65 2c 20 74 68  ab structure, th
10960 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  is..        /// 
10970 6d 65 74 68 6f 64 20 6d 75 73 74 20 69 6e 76 6f  method must invo
10980 6b 65 20 73 71 6c 69 74 65 33 5f 64 65 63 6c 61  ke sqlite3_decla
10990 72 65 5f 76 74 61 62 28 29 20 74 6f 20 74 65 6c  re_vtab() to tel
109a0 6c 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  l the SQLite cor
109b0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61  e..        /// a
109c0 62 6f 75 74 20 74 68 65 20 63 6f 6c 75 6d 6e 73  bout the columns
109d0 20 61 6e 64 20 64 61 74 61 74 79 70 65 73 20 69   and datatypes i
109e0 6e 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  n the virtual ta
109f0 62 6c 65 2e 20 54 68 65 0d 0a 20 20 20 20 20 20  ble. The..      
10a00 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 64 65    /// sqlite3_de
10a10 63 6c 61 72 65 5f 76 74 61 62 28 29 20 41 50 49  clare_vtab() API
10a20 20 68 61 73 20 74 68 65 20 66 6f 6c 6c 6f 77 69   has the followi
10a30 6e 67 20 70 72 6f 74 6f 74 79 70 65 3a 0d 0a 20  ng prototype:.. 
10a40 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
10a50 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
10a60 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
10a70 2f 2f 2f 20 3c 63 6f 64 65 3e 0d 0a 20 20 20 20  /// <code>..    
10a80 20 20 20 20 2f 2f 2f 20 69 6e 74 20 73 71 6c 69      /// int sqli
10a90 74 65 33 5f 64 65 63 6c 61 72 65 5f 76 74 61 62  te3_declare_vtab
10aa0 28 73 71 6c 69 74 65 33 20 2a 64 62 2c 20 63 6f  (sqlite3 *db, co
10ab0 6e 73 74 20 63 68 61 72 20 2a 7a 43 72 65 61 74  nst char *zCreat
10ac0 65 54 61 62 6c 65 29 0d 0a 20 20 20 20 20 20 20  eTable)..       
10ad0 20 2f 2f 2f 20 3c 2f 63 6f 64 65 3e 0d 0a 20 20   /// </code>..  
10ae0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
10af0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
10b00 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
10b10 2f 2f 20 54 68 65 20 66 69 72 73 74 20 61 72 67  // The first arg
10b20 75 6d 65 6e 74 20 74 6f 20 73 71 6c 69 74 65 33  ument to sqlite3
10b30 5f 64 65 63 6c 61 72 65 5f 76 74 61 62 28 29 20  _declare_vtab() 
10b40 6d 75 73 74 20 62 65 20 74 68 65 20 73 61 6d 65  must be the same
10b50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 61  ..        /// da
10b60 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
10b70 6e 20 70 6f 69 6e 74 65 72 20 61 73 20 74 68 65  n pointer as the
10b80 20 66 69 72 73 74 20 70 61 72 61 6d 65 74 65 72   first parameter
10b90 20 74 6f 20 74 68 69 73 20 6d 65 74 68 6f 64 2e   to this method.
10ba0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
10bb0 65 20 73 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e  e second argumen
10bc0 74 20 74 6f 20 73 71 6c 69 74 65 33 5f 64 65 63  t to sqlite3_dec
10bd0 6c 61 72 65 5f 76 74 61 62 28 29 20 6d 75 73 74  lare_vtab() must
10be0 20 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20   a..        /// 
10bf0 7a 65 72 6f 2d 74 65 72 6d 69 6e 61 74 65 64 20  zero-terminated 
10c00 55 54 46 2d 38 20 73 74 72 69 6e 67 20 74 68 61  UTF-8 string tha
10c10 74 20 63 6f 6e 74 61 69 6e 73 20 61 20 77 65 6c  t contains a wel
10c20 6c 2d 66 6f 72 6d 65 64 20 43 52 45 41 54 45 0d  l-formed CREATE.
10c30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 41 42  .        /// TAB
10c40 4c 45 20 73 74 61 74 65 6d 65 6e 74 20 74 68 61  LE statement tha
10c50 74 20 64 65 66 69 6e 65 73 20 74 68 65 20 63 6f  t defines the co
10c60 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20 76 69 72  lumns in the vir
10c70 74 75 61 6c 20 74 61 62 6c 65 20 61 6e 64 0d 0a  tual table and..
10c80 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 69          /// thei
10c90 72 20 64 61 74 61 20 74 79 70 65 73 2e 20 54 68  r data types. Th
10ca0 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 74 61  e name of the ta
10cb0 62 6c 65 20 69 6e 20 74 68 69 73 20 43 52 45 41  ble in this CREA
10cc0 54 45 20 54 41 42 4c 45 0d 0a 20 20 20 20 20 20  TE TABLE..      
10cd0 20 20 2f 2f 2f 20 73 74 61 74 65 6d 65 6e 74 20    /// statement 
10ce0 69 73 20 69 67 6e 6f 72 65 64 2c 20 61 73 20 61  is ignored, as a
10cf0 72 65 20 61 6c 6c 20 63 6f 6e 73 74 72 61 69 6e  re all constrain
10d00 74 73 2e 20 4f 6e 6c 79 20 74 68 65 20 63 6f 6c  ts. Only the col
10d10 75 6d 6e 20 6e 61 6d 65 73 0d 0a 20 20 20 20 20  umn names..     
10d20 20 20 20 2f 2f 2f 20 61 6e 64 20 64 61 74 61 74     /// and datat
10d30 79 70 65 73 20 6d 61 74 74 65 72 2e 20 54 68 65  ypes matter. The
10d40 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 73 74   CREATE TABLE st
10d50 61 74 65 6d 65 6e 74 20 73 74 72 69 6e 67 20 6e  atement string n
10d60 65 65 64 20 6e 6f 74 20 74 6f 0d 0a 20 20 20 20  eed not to..    
10d70 20 20 20 20 2f 2f 2f 20 62 65 20 68 65 6c 64 20      /// be held 
10d80 69 6e 20 70 65 72 73 69 73 74 65 6e 74 20 6d 65  in persistent me
10d90 6d 6f 72 79 2e 20 54 68 65 20 73 74 72 69 6e 67  mory. The string
10da0 20 63 61 6e 20 62 65 20 64 65 61 6c 6c 6f 63 61   can be dealloca
10db0 74 65 64 20 61 6e 64 2f 6f 72 0d 0a 20 20 20 20  ted and/or..    
10dc0 20 20 20 20 2f 2f 2f 20 72 65 75 73 65 64 20 61      /// reused a
10dd0 73 20 73 6f 6f 6e 20 61 73 20 74 68 65 20 73 71  s soon as the sq
10de0 6c 69 74 65 33 5f 64 65 63 6c 61 72 65 5f 76 74  lite3_declare_vt
10df0 61 62 28 29 20 72 6f 75 74 69 6e 65 20 72 65 74  ab() routine ret
10e00 75 72 6e 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  urns...        /
10e10 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20  // </para>..    
10e20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
10e30 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
10e40 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 44 62  <param name="pDb
10e50 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
10e60 54 68 65 20 6e 61 74 69 76 65 20 64 61 74 61 62  The native datab
10e70 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 68  ase connection h
10e80 61 6e 64 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20  andle...        
10e90 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
10ea0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
10eb0 20 6e 61 6d 65 3d 22 70 41 75 78 22 3e 0d 0a 20   name="pAux">.. 
10ec0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f         /// The o
10ed0 72 69 67 69 6e 61 6c 20 6e 61 74 69 76 65 20 70  riginal native p
10ee0 6f 69 6e 74 65 72 20 76 61 6c 75 65 20 74 68 61  ointer value tha
10ef0 74 20 77 61 73 20 70 72 6f 76 69 64 65 64 20 74  t was provided t
10f00 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  o the..        /
10f10 2f 2f 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74  // sqlite3_creat
10f20 65 5f 6d 6f 64 75 6c 65 28 29 2c 20 73 71 6c 69  e_module(), sqli
10f30 74 65 33 5f 63 72 65 61 74 65 5f 6d 6f 64 75 6c  te3_create_modul
10f40 65 5f 76 32 28 29 20 6f 72 0d 0a 20 20 20 20 20  e_v2() or..     
10f50 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 63     /// sqlite3_c
10f60 72 65 61 74 65 5f 64 69 73 70 6f 73 61 62 6c 65  reate_disposable
10f70 5f 6d 6f 64 75 6c 65 28 29 20 66 75 6e 63 74 69  _module() functi
10f80 6f 6e 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ons...        //
10f90 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
10fa0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
10fb0 61 6d 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20 20  ame="argc">..   
10fc0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d       /// The num
10fd0 62 65 72 20 6f 66 20 61 72 67 75 6d 65 6e 74 73  ber of arguments
10fe0 20 66 72 6f 6d 20 74 68 65 20 43 52 45 41 54 45   from the CREATE
10ff0 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45 20 73   VIRTUAL TABLE s
11000 74 61 74 65 6d 65 6e 74 2e 0d 0a 20 20 20 20 20  tatement...     
11010 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
11020 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
11030 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 76 22 3e  ram name="argv">
11040 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
11050 65 20 61 72 72 61 79 20 6f 66 20 73 74 72 69 6e  e array of strin
11060 67 20 61 72 67 75 6d 65 6e 74 73 20 66 72 6f 6d  g arguments from
11070 20 74 68 65 20 43 52 45 41 54 45 20 56 49 52 54   the CREATE VIRT
11080 55 41 4c 20 54 41 42 4c 45 0d 0a 20 20 20 20 20  UAL TABLE..     
11090 20 20 20 2f 2f 2f 20 73 74 61 74 65 6d 65 6e 74     /// statement
110a0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
110b0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
110c0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
110d0 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20  ="pVtab">..     
110e0 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63     /// Upon succ
110f0 65 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65  ess, this parame
11100 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69  ter must be modi
11110 66 69 65 64 20 74 6f 20 70 6f 69 6e 74 20 74 6f  fied to point to
11120 20 74 68 65 20 6e 65 77 6c 79 0d 0a 20 20 20 20   the newly..    
11130 20 20 20 20 2f 2f 2f 20 63 72 65 61 74 65 64 20      /// created 
11140 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76  native sqlite3_v
11150 74 61 62 20 64 65 72 69 76 65 64 20 73 74 72 75  tab derived stru
11160 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  cture...        
11170 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
11180 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
11190 20 6e 61 6d 65 3d 22 70 45 72 72 6f 72 22 3e 0d   name="pError">.
111a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f  .        /// Upo
111b0 6e 20 66 61 69 6c 75 72 65 2c 20 74 68 69 73 20  n failure, this 
111c0 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62  parameter must b
111d0 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 70 6f  e modified to po
111e0 69 6e 74 20 74 6f 20 74 68 65 20 65 72 72 6f 72  int to the error
111f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65  ..        /// me
11200 73 73 61 67 65 2c 20 77 69 74 68 20 74 68 65 20  ssage, with the 
11210 75 6e 64 65 72 6c 79 69 6e 67 20 6d 65 6d 6f 72  underlying memor
11220 79 20 68 61 76 69 6e 67 20 62 65 65 6e 20 6f 62  y having been ob
11230 74 61 69 6e 65 64 20 66 72 6f 6d 20 74 68 65 0d  tained from the.
11240 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c  .        /// sql
11250 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 20 66 75  ite3_malloc() fu
11260 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  nction...       
11270 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
11280 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
11290 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
112a0 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c  / A standard SQL
112b0 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e  ite return code.
112c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
112d0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
112e0 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64    SQLiteErrorCod
112f0 65 20 78 43 72 65 61 74 65 28 0d 0a 20 20 20 20  e xCreate(..    
11300 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
11310 44 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Db,..           
11320 20 49 6e 74 50 74 72 20 70 41 75 78 2c 0d 0a 20   IntPtr pAux,.. 
11330 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 61             int a
11340 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  rgc,..          
11350 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a    IntPtr argv,..
11360 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
11370 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
11380 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 49             ref I
11390 6e 74 50 74 72 20 70 45 72 72 6f 72 0d 0a 20 20  ntPtr pError..  
113a0 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a            );....
113b0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
113c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
113d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
113e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
113f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
11400 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
11410 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
11420 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20    /// <para>..  
11430 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 78 43        /// The xC
11440 6f 6e 6e 65 63 74 20 6d 65 74 68 6f 64 20 69 73  onnect method is
11450 20 76 65 72 79 20 73 69 6d 69 6c 61 72 20 74 6f   very similar to
11460 20 78 43 72 65 61 74 65 2e 20 49 74 20 68 61 73   xCreate. It has
11470 20 74 68 65 20 73 61 6d 65 0d 0a 20 20 20 20 20   the same..     
11480 20 20 20 2f 2f 2f 20 70 61 72 61 6d 65 74 65 72     /// parameter
11490 73 20 61 6e 64 20 63 6f 6e 73 74 72 75 63 74 73  s and constructs
114a0 20 61 20 6e 65 77 20 73 71 6c 69 74 65 33 5f 76   a new sqlite3_v
114b0 74 61 62 20 73 74 72 75 63 74 75 72 65 20 6a 75  tab structure ju
114c0 73 74 20 6c 69 6b 65 0d 0a 20 20 20 20 20 20 20  st like..       
114d0 20 2f 2f 2f 20 78 43 72 65 61 74 65 2e 20 41 6e   /// xCreate. An
114e0 64 20 69 74 20 6d 75 73 74 20 61 6c 73 6f 20 63  d it must also c
114f0 61 6c 6c 20 73 71 6c 69 74 65 33 5f 64 65 63 6c  all sqlite3_decl
11500 61 72 65 5f 76 74 61 62 28 29 20 6c 69 6b 65 20  are_vtab() like 
11510 78 43 72 65 61 74 65 2e 0d 0a 20 20 20 20 20 20  xCreate...      
11520 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
11530 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
11540 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
11550 68 65 20 64 69 66 66 65 72 65 6e 63 65 20 69 73  he difference is
11560 20 74 68 61 74 20 78 43 6f 6e 6e 65 63 74 20 69   that xConnect i
11570 73 20 63 61 6c 6c 65 64 20 74 6f 20 65 73 74 61  s called to esta
11580 62 6c 69 73 68 20 61 20 6e 65 77 0d 0a 20 20 20  blish a new..   
11590 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 6e 65 63 74       /// connect
115a0 69 6f 6e 20 74 6f 20 61 6e 20 65 78 69 73 74 69  ion to an existi
115b0 6e 67 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  ng virtual table
115c0 20 77 68 65 72 65 61 73 20 78 43 72 65 61 74 65   whereas xCreate
115d0 20 69 73 20 63 61 6c 6c 65 64 0d 0a 20 20 20 20   is called..    
115e0 20 20 20 20 2f 2f 2f 20 74 6f 20 63 72 65 61 74      /// to creat
115f0 65 20 61 20 6e 65 77 20 76 69 72 74 75 61 6c 20  e a new virtual 
11600 74 61 62 6c 65 20 66 72 6f 6d 20 73 63 72 61 74  table from scrat
11610 63 68 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ch...        ///
11620 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20   </para>..      
11630 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20    /// <para>..  
11640 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 78 43        /// The xC
11650 72 65 61 74 65 20 61 6e 64 20 78 43 6f 6e 6e 65  reate and xConne
11660 63 74 20 6d 65 74 68 6f 64 73 20 61 72 65 20 6f  ct methods are o
11670 6e 6c 79 20 64 69 66 66 65 72 65 6e 74 20 77 68  nly different wh
11680 65 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  en the..        
11690 2f 2f 2f 20 76 69 72 74 75 61 6c 20 74 61 62 6c  /// virtual tabl
116a0 65 20 68 61 73 20 73 6f 6d 65 20 6b 69 6e 64 20  e has some kind 
116b0 6f 66 20 62 61 63 6b 69 6e 67 20 73 74 6f 72 65  of backing store
116c0 20 74 68 61 74 20 6d 75 73 74 20 62 65 0d 0a 20   that must be.. 
116d0 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 69 74 69         /// initi
116e0 61 6c 69 7a 65 64 20 74 68 65 20 66 69 72 73 74  alized the first
116f0 20 74 69 6d 65 20 74 68 65 20 76 69 72 74 75 61   time the virtua
11700 6c 20 74 61 62 6c 65 20 69 73 20 63 72 65 61 74  l table is creat
11710 65 64 2e 20 54 68 65 0d 0a 20 20 20 20 20 20 20  ed. The..       
11720 20 2f 2f 2f 20 78 43 72 65 61 74 65 20 6d 65 74   /// xCreate met
11730 68 6f 64 20 63 72 65 61 74 65 73 20 61 6e 64 20  hod creates and 
11740 69 6e 69 74 69 61 6c 69 7a 65 73 20 74 68 65 20  initializes the 
11750 62 61 63 6b 69 6e 67 20 73 74 6f 72 65 2e 20 54  backing store. T
11760 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
11770 78 43 6f 6e 6e 65 63 74 20 6d 65 74 68 6f 64 20  xConnect method 
11780 6a 75 73 74 20 63 6f 6e 6e 65 63 74 73 20 74 6f  just connects to
11790 20 61 6e 20 65 78 69 73 74 69 6e 67 20 62 61 63   an existing bac
117a0 6b 69 6e 67 20 73 74 6f 72 65 2e 0d 0a 20 20 20  king store...   
117b0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
117c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
117d0 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
117e0 2f 20 41 73 20 61 6e 20 65 78 61 6d 70 6c 65 2c  / As an example,
117f0 20 63 6f 6e 73 69 64 65 72 20 61 20 76 69 72 74   consider a virt
11800 75 61 6c 20 74 61 62 6c 65 20 69 6d 70 6c 65 6d  ual table implem
11810 65 6e 74 61 74 69 6f 6e 20 74 68 61 74 0d 0a 20  entation that.. 
11820 20 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f 76 69         /// provi
11830 64 65 73 20 72 65 61 64 2d 6f 6e 6c 79 20 61 63  des read-only ac
11840 63 65 73 73 20 74 6f 20 65 78 69 73 74 69 6e 67  cess to existing
11850 20 63 6f 6d 6d 61 2d 73 65 70 61 72 61 74 65 64   comma-separated
11860 2d 76 61 6c 75 65 20 28 43 53 56 29 0d 0a 20 20  -value (CSV)..  
11870 20 20 20 20 20 20 2f 2f 2f 20 66 69 6c 65 73 20        /// files 
11880 6f 6e 20 64 69 73 6b 2e 20 54 68 65 72 65 20 69  on disk. There i
11890 73 20 6e 6f 20 62 61 63 6b 69 6e 67 20 73 74 6f  s no backing sto
118a0 72 65 20 74 68 61 74 20 6e 65 65 64 73 20 74 6f  re that needs to
118b0 20 62 65 20 63 72 65 61 74 65 64 0d 0a 20 20 20   be created..   
118c0 20 20 20 20 20 2f 2f 2f 20 6f 72 20 69 6e 69 74       /// or init
118d0 69 61 6c 69 7a 65 64 20 66 6f 72 20 73 75 63 68  ialized for such
118e0 20 61 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65   a virtual table
118f0 20 28 73 69 6e 63 65 20 74 68 65 20 43 53 56 20   (since the CSV 
11900 66 69 6c 65 73 0d 0a 20 20 20 20 20 20 20 20 2f  files..        /
11910 2f 2f 20 61 6c 72 65 61 64 79 20 65 78 69 73 74  // already exist
11920 20 6f 6e 20 64 69 73 6b 29 20 73 6f 20 74 68 65   on disk) so the
11930 20 78 43 72 65 61 74 65 20 61 6e 64 20 78 43 6f   xCreate and xCo
11940 6e 6e 65 63 74 20 6d 65 74 68 6f 64 73 20 77 69  nnect methods wi
11950 6c 6c 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f  ll be..        /
11960 2f 2f 20 69 64 65 6e 74 69 63 61 6c 20 66 6f 72  // identical for
11970 20 74 68 61 74 20 6d 6f 64 75 6c 65 2e 0d 0a 20   that module... 
11980 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
11990 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
119a0 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
119b0 2f 2f 2f 20 41 6e 6f 74 68 65 72 20 65 78 61 6d  /// Another exam
119c0 70 6c 65 20 69 73 20 61 20 76 69 72 74 75 61 6c  ple is a virtual
119d0 20 74 61 62 6c 65 20 74 68 61 74 20 69 6d 70 6c   table that impl
119e0 65 6d 65 6e 74 73 20 61 20 66 75 6c 6c 2d 74 65  ements a full-te
119f0 78 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  xt..        /// 
11a00 69 6e 64 65 78 2e 20 54 68 65 20 78 43 72 65 61  index. The xCrea
11a10 74 65 20 6d 65 74 68 6f 64 20 6d 75 73 74 20 63  te method must c
11a20 72 65 61 74 65 20 61 6e 64 20 69 6e 69 74 69 61  reate and initia
11a30 6c 69 7a 65 20 64 61 74 61 0d 0a 20 20 20 20 20  lize data..     
11a40 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65     /// structure
11a50 73 20 74 6f 20 68 6f 6c 64 20 74 68 65 20 64 69  s to hold the di
11a60 63 74 69 6f 6e 61 72 79 20 61 6e 64 20 70 6f 73  ctionary and pos
11a70 74 69 6e 67 20 6c 69 73 74 73 20 66 6f 72 20 74  ting lists for t
11a80 68 61 74 20 69 6e 64 65 78 2e 0d 0a 20 20 20 20  hat index...    
11a90 20 20 20 20 2f 2f 2f 20 54 68 65 20 78 43 6f 6e      /// The xCon
11aa0 6e 65 63 74 20 6d 65 74 68 6f 64 2c 20 6f 6e 20  nect method, on 
11ab0 74 68 65 20 6f 74 68 65 72 20 68 61 6e 64 2c 20  the other hand, 
11ac0 6f 6e 6c 79 20 68 61 73 20 74 6f 20 6c 6f 63 61  only has to loca
11ad0 74 65 20 61 6e 64 20 75 73 65 0d 0a 20 20 20 20  te and use..    
11ae0 20 20 20 20 2f 2f 2f 20 61 6e 20 65 78 69 73 74      /// an exist
11af0 69 6e 67 20 64 69 63 74 69 6f 6e 61 72 79 20 61  ing dictionary a
11b00 6e 64 20 70 6f 73 74 69 6e 67 20 6c 69 73 74 73  nd posting lists
11b10 20 74 68 61 74 20 77 65 72 65 20 63 72 65 61 74   that were creat
11b20 65 64 20 62 79 20 61 0d 0a 20 20 20 20 20 20 20  ed by a..       
11b30 20 2f 2f 2f 20 70 72 69 6f 72 20 78 43 72 65 61   /// prior xCrea
11b40 74 65 20 63 61 6c 6c 2e 0d 0a 20 20 20 20 20 20  te call...      
11b50 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
11b60 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
11b70 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
11b80 68 65 20 78 43 6f 6e 6e 65 63 74 20 6d 65 74 68  he xConnect meth
11b90 6f 64 20 6d 75 73 74 20 72 65 74 75 72 6e 20 53  od must return S
11ba0 51 4c 49 54 45 5f 4f 4b 20 69 66 20 69 74 20 69  QLITE_OK if it i
11bb0 73 20 73 75 63 63 65 73 73 66 75 6c 20 69 6e 0d  s successful in.
11bc0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 72 65  .        /// cre
11bd0 61 74 69 6e 67 20 74 68 65 20 6e 65 77 20 76 69  ating the new vi
11be0 72 74 75 61 6c 20 74 61 62 6c 65 2c 20 6f 72 20  rtual table, or 
11bf0 53 51 4c 49 54 45 5f 45 52 52 4f 52 20 69 66 20  SQLITE_ERROR if 
11c00 69 74 20 69 73 20 6e 6f 74 0d 0a 20 20 20 20 20  it is not..     
11c10 20 20 20 2f 2f 2f 20 73 75 63 63 65 73 73 66 75     /// successfu
11c20 6c 2e 20 49 66 20 6e 6f 74 20 73 75 63 63 65 73  l. If not succes
11c30 73 66 75 6c 2c 20 74 68 65 20 73 71 6c 69 74 65  sful, the sqlite
11c40 33 5f 76 74 61 62 20 73 74 72 75 63 74 75 72 65  3_vtab structure
11c50 20 6d 75 73 74 20 6e 6f 74 0d 0a 20 20 20 20 20   must not..     
11c60 20 20 20 2f 2f 2f 20 62 65 20 61 6c 6c 6f 63 61     /// be alloca
11c70 74 65 64 2e 20 41 6e 20 65 72 72 6f 72 20 6d 65  ted. An error me
11c80 73 73 61 67 65 20 6d 61 79 20 6f 70 74 69 6f 6e  ssage may option
11c90 61 6c 6c 79 20 62 65 20 72 65 74 75 72 6e 65 64  ally be returned
11ca0 20 69 6e 20 2a 70 7a 45 72 72 0d 0a 20 20 20 20   in *pzErr..    
11cb0 20 20 20 20 2f 2f 2f 20 69 66 20 75 6e 73 75 63      /// if unsuc
11cc0 63 65 73 73 66 75 6c 2e 20 53 70 61 63 65 20 74  cessful. Space t
11cd0 6f 20 68 6f 6c 64 20 74 68 65 20 65 72 72 6f 72  o hold the error
11ce0 20 6d 65 73 73 61 67 65 20 73 74 72 69 6e 67 20   message string 
11cf0 6d 75 73 74 20 62 65 0d 0a 20 20 20 20 20 20 20  must be..       
11d00 20 2f 2f 2f 20 61 6c 6c 6f 63 61 74 65 64 20 75   /// allocated u
11d10 73 69 6e 67 20 61 6e 20 53 51 4c 69 74 65 20 6d  sing an SQLite m
11d20 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e  emory allocation
11d30 20 66 75 6e 63 74 69 6f 6e 20 6c 69 6b 65 0d 0a   function like..
11d40 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69          /// sqli
11d50 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 20 6f 72 20  te3_malloc() or 
11d60 73 71 6c 69 74 65 33 5f 6d 70 72 69 6e 74 66 28  sqlite3_mprintf(
11d70 29 20 61 73 20 74 68 65 20 53 51 4c 69 74 65 20  ) as the SQLite 
11d80 63 6f 72 65 20 77 69 6c 6c 0d 0a 20 20 20 20 20  core will..     
11d90 20 20 20 2f 2f 2f 20 61 74 74 65 6d 70 74 20 74     /// attempt t
11da0 6f 20 66 72 65 65 20 74 68 65 20 73 70 61 63 65  o free the space
11db0 20 75 73 69 6e 67 20 73 71 6c 69 74 65 33 5f 66   using sqlite3_f
11dc0 72 65 65 28 29 20 61 66 74 65 72 20 74 68 65 20  ree() after the 
11dd0 65 72 72 6f 72 20 68 61 73 0d 0a 20 20 20 20 20  error has..     
11de0 20 20 20 2f 2f 2f 20 62 65 65 6e 20 72 65 70 6f     /// been repo
11df0 72 74 65 64 20 75 70 20 74 6f 20 74 68 65 20 61  rted up to the a
11e00 70 70 6c 69 63 61 74 69 6f 6e 2e 0d 0a 20 20 20  pplication...   
11e10 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
11e20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
11e30 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
11e40 2f 20 54 68 65 20 78 43 6f 6e 6e 65 63 74 20 6d  / The xConnect m
11e50 65 74 68 6f 64 20 69 73 20 72 65 71 75 69 72 65  ethod is require
11e60 64 20 66 6f 72 20 65 76 65 72 79 20 76 69 72 74  d for every virt
11e70 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20 20  ual table..     
11e80 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74     /// implement
11e90 61 74 69 6f 6e 2c 20 74 68 6f 75 67 68 20 74 68  ation, though th
11ea0 65 20 78 43 72 65 61 74 65 20 61 6e 64 20 78 43  e xCreate and xC
11eb0 6f 6e 6e 65 63 74 20 70 6f 69 6e 74 65 72 73 20  onnect pointers 
11ec0 6f 66 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  of the..        
11ed0 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75  /// sqlite3_modu
11ee0 6c 65 20 6f 62 6a 65 63 74 20 6d 61 79 20 70 6f  le object may po
11ef0 69 6e 74 20 74 6f 20 74 68 65 20 73 61 6d 65 20  int to the same 
11f00 66 75 6e 63 74 69 6f 6e 20 74 68 65 20 76 69 72  function the vir
11f10 74 75 61 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tual..        //
11f20 2f 20 74 61 62 6c 65 20 64 6f 65 73 20 6e 6f 74  / table does not
11f30 20 6e 65 65 64 20 74 6f 20 69 6e 69 74 69 61 6c   need to initial
11f40 69 7a 65 20 62 61 63 6b 69 6e 67 20 73 74 6f 72  ize backing stor
11f50 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
11f60 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
11f70 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
11f80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
11f90 72 61 6d 20 6e 61 6d 65 3d 22 70 44 62 22 3e 0d  ram name="pDb">.
11fa0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
11fb0 20 6e 61 74 69 76 65 20 64 61 74 61 62 61 73 65   native database
11fc0 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 6e 64   connection hand
11fd0 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le...        ///
11fe0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
11ff0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
12000 6d 65 3d 22 70 41 75 78 22 3e 0d 0a 20 20 20 20  me="pAux">..    
12010 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 72 69 67      /// The orig
12020 69 6e 61 6c 20 6e 61 74 69 76 65 20 70 6f 69 6e  inal native poin
12030 74 65 72 20 76 61 6c 75 65 20 74 68 61 74 20 77  ter value that w
12040 61 73 20 70 72 6f 76 69 64 65 64 20 74 6f 20 74  as provided to t
12050 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
12060 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 6d  sqlite3_create_m
12070 6f 64 75 6c 65 28 29 2c 20 73 71 6c 69 74 65 33  odule(), sqlite3
12080 5f 63 72 65 61 74 65 5f 6d 6f 64 75 6c 65 5f 76  _create_module_v
12090 32 28 29 20 6f 72 0d 0a 20 20 20 20 20 20 20 20  2() or..        
120a0 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 63 72 65 61  /// sqlite3_crea
120b0 74 65 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f  te_disposable_mo
120c0 64 75 6c 65 28 29 20 66 75 6e 63 74 69 6f 6e 73  dule() functions
120d0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
120e0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
120f0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
12100 3d 22 61 72 67 63 22 3e 0d 0a 20 20 20 20 20 20  ="argc">..      
12110 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72    /// The number
12120 20 6f 66 20 61 72 67 75 6d 65 6e 74 73 20 66 72   of arguments fr
12130 6f 6d 20 74 68 65 20 43 52 45 41 54 45 20 56 49  om the CREATE VI
12140 52 54 55 41 4c 20 54 41 42 4c 45 20 73 74 61 74  RTUAL TABLE stat
12150 65 6d 65 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20  ement...        
12160 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
12170 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
12180 20 6e 61 6d 65 3d 22 61 72 67 76 22 3e 0d 0a 20   name="argv">.. 
12190 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61         /// The a
121a0 72 72 61 79 20 6f 66 20 73 74 72 69 6e 67 20 61  rray of string a
121b0 72 67 75 6d 65 6e 74 73 20 66 72 6f 6d 20 74 68  rguments from th
121c0 65 20 43 52 45 41 54 45 20 56 49 52 54 55 41 4c  e CREATE VIRTUAL
121d0 20 54 41 42 4c 45 0d 0a 20 20 20 20 20 20 20 20   TABLE..        
121e0 2f 2f 2f 20 73 74 61 74 65 6d 65 6e 74 2e 0d 0a  /// statement...
121f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
12200 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
12210 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
12220 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
12230 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73  /// Upon success
12240 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72  , this parameter
12250 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65   must be modifie
12260 64 20 74 6f 20 70 6f 69 6e 74 20 74 6f 20 74 68  d to point to th
12270 65 20 6e 65 77 6c 79 0d 0a 20 20 20 20 20 20 20  e newly..       
12280 20 2f 2f 2f 20 63 72 65 61 74 65 64 20 6e 61 74   /// created nat
12290 69 76 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62  ive sqlite3_vtab
122a0 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75   derived structu
122b0 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
122c0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
122d0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
122e0 6d 65 3d 22 70 45 72 72 6f 72 22 3e 0d 0a 20 20  me="pError">..  
122f0 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 66        /// Upon f
12300 61 69 6c 75 72 65 2c 20 74 68 69 73 20 70 61 72  ailure, this par
12310 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d  ameter must be m
12320 6f 64 69 66 69 65 64 20 74 6f 20 70 6f 69 6e 74  odified to point
12330 20 74 6f 20 74 68 65 20 65 72 72 6f 72 0d 0a 20   to the error.. 
12340 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 73 73 61         /// messa
12350 67 65 2c 20 77 69 74 68 20 74 68 65 20 75 6e 64  ge, with the und
12360 65 72 6c 79 69 6e 67 20 6d 65 6d 6f 72 79 20 68  erlying memory h
12370 61 76 69 6e 67 20 62 65 65 6e 20 6f 62 74 61 69  aving been obtai
12380 6e 65 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20  ned from the..  
12390 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65        /// sqlite
123a0 33 5f 6d 61 6c 6c 6f 63 28 29 20 66 75 6e 63 74  3_malloc() funct
123b0 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ion...        //
123c0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
123d0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
123e0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
123f0 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
12400 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
12410 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
12420 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53  urns>..        S
12430 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
12440 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20  Connect(..      
12450 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 44 62        IntPtr pDb
12460 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  ,..            I
12470 6e 74 50 74 72 20 70 41 75 78 2c 0d 0a 20 20 20  ntPtr pAux,..   
12480 20 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67           int arg
12490 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  c,..            
124a0 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20  IntPtr argv,..  
124b0 20 20 20 20 20 20 20 20 20 20 72 65 66 20 49 6e            ref In
124c0 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
124d0 20 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74           ref Int
124e0 50 74 72 20 70 45 72 72 6f 72 0d 0a 20 20 20 20  Ptr pError..    
124f0 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20          );....  
12500 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
12510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
12550 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
12560 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
12570 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
12580 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 75      /// SQLite u
12590 73 65 73 20 74 68 65 20 78 42 65 73 74 49 6e 64  ses the xBestInd
125a0 65 78 20 6d 65 74 68 6f 64 20 6f 66 20 61 20 76  ex method of a v
125b0 69 72 74 75 61 6c 20 74 61 62 6c 65 20 6d 6f 64  irtual table mod
125c0 75 6c 65 20 74 6f 0d 0a 20 20 20 20 20 20 20 20  ule to..        
125d0 2f 2f 2f 20 64 65 74 65 72 6d 69 6e 65 20 74 68  /// determine th
125e0 65 20 62 65 73 74 20 77 61 79 20 74 6f 20 61 63  e best way to ac
125f0 63 65 73 73 20 74 68 65 20 76 69 72 74 75 61 6c  cess the virtual
12600 20 74 61 62 6c 65 2e 20 54 68 65 20 78 42 65 73   table. The xBes
12610 74 49 6e 64 65 78 0d 0a 20 20 20 20 20 20 20 20  tIndex..        
12620 2f 2f 2f 20 6d 65 74 68 6f 64 20 68 61 73 20 61  /// method has a
12630 20 70 72 6f 74 6f 74 79 70 65 20 6c 69 6b 65 20   prototype like 
12640 74 68 69 73 3a 0d 0a 20 20 20 20 20 20 20 20 2f  this:..        /
12650 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20  // </para>..    
12660 20 20 20 20 2f 2f 2f 20 3c 63 6f 64 65 3e 0d 0a      /// <code>..
12670 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74 20          /// int 
12680 28 2a 78 42 65 73 74 49 6e 64 65 78 29 28 73 71  (*xBestIndex)(sq
12690 6c 69 74 65 33 5f 76 74 61 62 20 2a 70 56 54 61  lite3_vtab *pVTa
126a0 62 2c 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  b, sqlite3_index
126b0 5f 69 6e 66 6f 2a 29 3b 0d 0a 20 20 20 20 20 20  _info*);..      
126c0 20 20 2f 2f 2f 20 3c 2f 63 6f 64 65 3e 0d 0a 20    /// </code>.. 
126d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
126e0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
126f0 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 63  he SQLite core c
12700 6f 6d 6d 75 6e 69 63 61 74 65 73 20 77 69 74 68  ommunicates with
12710 20 74 68 65 20 78 42 65 73 74 49 6e 64 65 78 20   the xBestIndex 
12720 6d 65 74 68 6f 64 20 62 79 20 66 69 6c 6c 69 6e  method by fillin
12730 67 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  g..        /// i
12740 6e 20 63 65 72 74 61 69 6e 20 66 69 65 6c 64 73  n certain fields
12750 20 6f 66 20 74 68 65 20 73 71 6c 69 74 65 33 5f   of the sqlite3_
12760 69 6e 64 65 78 5f 69 6e 66 6f 20 73 74 72 75 63  index_info struc
12770 74 75 72 65 20 61 6e 64 20 70 61 73 73 69 6e 67  ture and passing
12780 20 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20   a..        /// 
12790 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 61 74 20  pointer to that 
127a0 73 74 72 75 63 74 75 72 65 20 69 6e 74 6f 20 78  structure into x
127b0 42 65 73 74 49 6e 64 65 78 20 61 73 20 74 68 65  BestIndex as the
127c0 20 73 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65   second paramete
127d0 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
127e0 54 68 65 20 78 42 65 73 74 49 6e 64 65 78 20 6d  The xBestIndex m
127f0 65 74 68 6f 64 20 66 69 6c 6c 73 20 6f 75 74 20  ethod fills out 
12800 6f 74 68 65 72 20 66 69 65 6c 64 73 20 6f 66 20  other fields of 
12810 74 68 69 73 20 73 74 72 75 63 74 75 72 65 0d 0a  this structure..
12820 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 68 69 63          /// whic
12830 68 20 66 6f 72 6d 73 20 74 68 65 20 72 65 70 6c  h forms the repl
12840 79 2e 20 54 68 65 20 73 71 6c 69 74 65 33 5f 69  y. The sqlite3_i
12850 6e 64 65 78 5f 69 6e 66 6f 20 73 74 72 75 63 74  ndex_info struct
12860 75 72 65 20 6c 6f 6f 6b 73 20 6c 69 6b 65 0d 0a  ure looks like..
12870 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 69 73          /// this
12880 3a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  :..        /// <
12890 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
128a0 2f 2f 2f 20 3c 63 6f 64 65 3e 0d 0a 20 20 20 20  /// <code>..    
128b0 20 20 20 20 2f 2f 2f 20 20 73 74 72 75 63 74 20      ///  struct 
128c0 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e  sqlite3_index_in
128d0 66 6f 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2f  fo {..        //
128e0 2f 20 20 20 20 2f 2a 20 49 6e 70 75 74 73 20 2a  /    /* Inputs *
128f0 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20  /..        ///  
12900 20 20 63 6f 6e 73 74 20 69 6e 74 20 6e 43 6f 6e    const int nCon
12910 73 74 72 61 69 6e 74 3b 20 20 20 2f 2a 20 4e 75  straint;   /* Nu
12920 6d 62 65 72 20 6f 66 20 65 6e 74 72 69 65 73 20  mber of entries 
12930 69 6e 20 61 43 6f 6e 73 74 72 61 69 6e 74 20 2a  in aConstraint *
12940 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20  /..        ///  
12950 20 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 73    const struct s
12960 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e  qlite3_index_con
12970 73 74 72 61 69 6e 74 20 7b 0d 0a 20 20 20 20 20  straint {..     
12980 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 69 6e 74     ///       int
12990 20 69 43 6f 6c 75 6d 6e 3b 20 20 20 20 20 20 20   iColumn;       
129a0 20 20 20 2f 2a 20 43 6f 6c 75 6d 6e 20 6f 6e 20     /* Column on 
129b0 6c 65 66 74 2d 68 61 6e 64 20 73 69 64 65 20 6f  left-hand side o
129c0 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20  f..        ///  
129d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
129e0 20 20 20 20 20 20 20 20 20 20 20 20 2a 20 63 6f              * co
129f0 6e 73 74 72 61 69 6e 74 20 2a 2f 0d 0a 20 20 20  nstraint */..   
12a00 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 75       ///       u
12a10 6e 73 69 67 6e 65 64 20 63 68 61 72 20 6f 70 3b  nsigned char op;
12a20 20 20 20 20 20 2f 2a 20 43 6f 6e 73 74 72 61 69       /* Constrai
12a30 6e 74 20 6f 70 65 72 61 74 6f 72 20 2a 2f 0d 0a  nt operator */..
12a40 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20          ///     
12a50 20 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20    unsigned char 
12a60 75 73 61 62 6c 65 3b 20 2f 2a 20 54 72 75 65 20  usable; /* True 
12a70 69 66 20 74 68 69 73 20 63 6f 6e 73 74 72 61 69  if this constrai
12a80 6e 74 20 69 73 20 75 73 61 62 6c 65 20 2a 2f 0d  nt is usable */.
12a90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20  .        ///    
12aa0 20 20 20 69 6e 74 20 69 54 65 72 6d 4f 66 66 73     int iTermOffs
12ab0 65 74 3b 20 20 20 20 20 20 2f 2a 20 55 73 65 64  et;      /* Used
12ac0 20 69 6e 74 65 72 6e 61 6c 6c 79 20 2d 20 78 42   internally - xB
12ad0 65 73 74 49 6e 64 65 78 20 73 68 6f 75 6c 64 0d  estIndex should.
12ae0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20  .        ///    
12af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12b00 20 20 20 20 20 20 20 20 20 20 2a 20 69 67 6e 6f            * igno
12b10 72 65 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f  re */..        /
12b20 2f 2f 20 20 20 20 7d 20 2a 63 6f 6e 73 74 20 61  //    } *const a
12b30 43 6f 6e 73 74 72 61 69 6e 74 3b 20 20 20 20 2f  Constraint;    /
12b40 2a 20 54 61 62 6c 65 20 6f 66 20 57 48 45 52 45  * Table of WHERE
12b50 20 63 6c 61 75 73 65 20 63 6f 6e 73 74 72 61 69   clause constrai
12b60 6e 74 73 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  nts */..        
12b70 2f 2f 2f 20 20 20 20 63 6f 6e 73 74 20 69 6e 74  ///    const int
12b80 20 6e 4f 72 64 65 72 42 79 3b 20 20 20 20 20 20   nOrderBy;      
12b90 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20 74 65 72  /* Number of ter
12ba0 6d 73 20 69 6e 20 74 68 65 20 4f 52 44 45 52 20  ms in the ORDER 
12bb0 42 59 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  BY..        /// 
12bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 2a 20 63               * c
12be0 6c 61 75 73 65 20 2a 2f 0d 0a 20 20 20 20 20 20  lause */..      
12bf0 20 20 2f 2f 2f 20 20 20 20 63 6f 6e 73 74 20 73    ///    const s
12c00 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6e  truct sqlite3_in
12c10 64 65 78 5f 6f 72 64 65 72 62 79 20 7b 0d 0a 20  dex_orderby {.. 
12c20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20         ///      
12c30 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b 20 20 20   int iColumn;   
12c40 20 20 20 20 20 20 20 2f 2a 20 43 6f 6c 75 6d 6e         /* Column
12c50 20 6e 75 6d 62 65 72 20 2a 2f 0d 0a 20 20 20 20   number */..    
12c60 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 75 6e      ///       un
12c70 73 69 67 6e 65 64 20 63 68 61 72 20 64 65 73 63  signed char desc
12c80 3b 20 20 20 2f 2a 20 54 72 75 65 20 66 6f 72 20  ;   /* True for 
12c90 44 45 53 43 2e 20 20 46 61 6c 73 65 20 66 6f 72  DESC.  False for
12ca0 20 41 53 43 2e 20 2a 2f 0d 0a 20 20 20 20 20 20   ASC. */..      
12cb0 20 20 2f 2f 2f 20 20 20 20 7d 20 2a 63 6f 6e 73    ///    } *cons
12cc0 74 20 61 4f 72 64 65 72 42 79 3b 20 20 20 20 20  t aOrderBy;     
12cd0 20 20 2f 2a 20 54 68 65 20 4f 52 44 45 52 20 42    /* The ORDER B
12ce0 59 20 63 6c 61 75 73 65 20 2a 2f 0d 0a 20 20 20  Y clause */..   
12cf0 20 20 20 20 20 2f 2f 2f 20 20 20 20 2f 2a 20 4f       ///    /* O
12d00 75 74 70 75 74 73 20 2a 2f 0d 0a 20 20 20 20 20  utputs */..     
12d10 20 20 20 2f 2f 2f 20 20 20 20 73 74 72 75 63 74     ///    struct
12d20 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63   sqlite3_index_c
12d30 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65 20  onstraint_usage 
12d40 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20  {..        ///  
12d50 20 20 20 20 69 6e 74 20 61 72 67 76 49 6e 64 65      int argvInde
12d60 78 3b 20 20 20 20 20 20 20 20 20 2f 2a 20 69 66  x;         /* if
12d70 20 67 72 65 61 74 65 72 20 74 68 61 6e 20 7a 65   greater than ze
12d80 72 6f 2c 20 63 6f 6e 73 74 72 61 69 6e 74 20 69  ro, constraint i
12d90 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20  s..        ///  
12da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12db0 20 20 20 20 20 20 20 20 20 20 20 20 2a 20 70 61              * pa
12dc0 72 74 20 6f 66 20 61 72 67 76 20 74 6f 20 78 46  rt of argv to xF
12dd0 69 6c 74 65 72 20 2a 2f 0d 0a 20 20 20 20 20 20  ilter */..      
12de0 20 20 2f 2f 2f 20 20 20 20 20 20 75 6e 73 69 67    ///      unsig
12df0 6e 65 64 20 63 68 61 72 20 6f 6d 69 74 3b 20 20  ned char omit;  
12e00 20 20 2f 2a 20 44 6f 20 6e 6f 74 20 63 6f 64 65    /* Do not code
12e10 20 61 20 74 65 73 74 20 66 6f 72 20 74 68 69 73   a test for this
12e20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20  ..        ///   
12e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12e40 20 20 20 20 20 20 20 20 20 20 20 2a 20 63 6f 6e             * con
12e50 73 74 72 61 69 6e 74 20 2a 2f 0d 0a 20 20 20 20  straint */..    
12e60 20 20 20 20 2f 2f 2f 20 20 20 20 7d 20 2a 63 6f      ///    } *co
12e70 6e 73 74 20 61 43 6f 6e 73 74 72 61 69 6e 74 55  nst aConstraintU
12e80 73 61 67 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f  sage;..        /
12e90 2f 2f 20 20 20 20 69 6e 74 20 69 64 78 4e 75 6d  //    int idxNum
12ea0 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  ;              /
12eb0 2a 20 4e 75 6d 62 65 72 20 75 73 65 64 20 74 6f  * Number used to
12ec0 20 69 64 65 6e 74 69 66 79 20 74 68 65 20 69 6e   identify the in
12ed0 64 65 78 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  dex */..        
12ee0 2f 2f 2f 20 20 20 20 63 68 61 72 20 2a 69 64 78  ///    char *idx
12ef0 53 74 72 3b 20 20 20 20 20 20 20 20 20 20 20 20  Str;            
12f00 2f 2a 20 53 74 72 69 6e 67 2c 20 70 6f 73 73 69  /* String, possi
12f10 62 6c 79 20 6f 62 74 61 69 6e 65 64 20 66 72 6f  bly obtained fro
12f20 6d 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20  m..        ///  
12f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12f40 20 20 20 20 20 20 20 20 20 20 20 20 2a 20 73 71              * sq
12f50 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 20 2a  lite3_malloc() *
12f60 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20  /..        ///  
12f70 20 20 69 6e 74 20 6e 65 65 64 54 6f 46 72 65 65    int needToFree
12f80 49 64 78 53 74 72 3b 20 20 20 20 2f 2a 20 46 72  IdxStr;    /* Fr
12f90 65 65 20 69 64 78 53 74 72 20 75 73 69 6e 67 20  ee idxStr using 
12fa0 73 71 6c 69 74 65 33 5f 66 72 65 65 28 29 20 69  sqlite3_free() i
12fb0 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20  f..        ///  
12fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12fd0 20 20 20 20 20 20 20 20 20 20 20 20 2a 20 74 72              * tr
12fe0 75 65 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f  ue */..        /
12ff0 2f 2f 20 20 20 20 69 6e 74 20 6f 72 64 65 72 42  //    int orderB
13000 79 43 6f 6e 73 75 6d 65 64 3b 20 20 20 20 20 2f  yConsumed;     /
13010 2a 20 54 72 75 65 20 69 66 20 6f 75 74 70 75 74  * True if output
13020 20 69 73 20 61 6c 72 65 61 64 79 20 6f 72 64 65   is already orde
13030 72 65 64 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  red */..        
13040 2f 2f 2f 20 20 20 20 64 6f 75 62 6c 65 20 65 73  ///    double es
13050 74 69 6d 61 74 65 64 43 6f 73 74 3b 20 20 20 20  timatedCost;    
13060 2f 2a 20 45 73 74 69 6d 61 74 65 64 20 63 6f 73  /* Estimated cos
13070 74 20 6f 66 20 75 73 69 6e 67 20 74 68 69 73 20  t of using this 
13080 69 6e 64 65 78 20 2a 2f 0d 0a 20 20 20 20 20 20  index */..      
13090 20 20 2f 2f 2f 20 20 7d 3b 0d 0a 20 20 20 20 20    ///  };..     
130a0 20 20 20 2f 2f 2f 20 3c 2f 63 6f 64 65 3e 0d 0a     /// </code>..
130b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
130c0 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
130d0 49 6e 20 61 64 64 69 74 69 6f 6e 2c 20 74 68 65  In addition, the
130e0 72 65 20 61 72 65 20 73 6f 6d 65 20 64 65 66 69  re are some defi
130f0 6e 65 64 20 63 6f 6e 73 74 61 6e 74 73 3a 0d 0a  ned constants:..
13100 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
13110 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
13120 20 3c 63 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20   <code>..       
13130 20 2f 2f 2f 20 20 23 64 65 66 69 6e 65 20 53 51   ///  #define SQ
13140 4c 49 54 45 5f 49 4e 44 45 58 5f 43 4f 4e 53 54  LITE_INDEX_CONST
13150 52 41 49 4e 54 5f 45 51 20 20 20 20 32 0d 0a 20  RAINT_EQ    2.. 
13160 20 20 20 20 20 20 20 2f 2f 2f 20 20 23 64 65 66         ///  #def
13170 69 6e 65 20 53 51 4c 49 54 45 5f 49 4e 44 45 58  ine SQLITE_INDEX
13180 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 47 54 20 20  _CONSTRAINT_GT  
13190 20 20 34 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f    4..        ///
131a0 20 20 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45    #define SQLITE
131b0 5f 49 4e 44 45 58 5f 43 4f 4e 53 54 52 41 49 4e  _INDEX_CONSTRAIN
131c0 54 5f 4c 45 20 20 20 20 38 0d 0a 20 20 20 20 20  T_LE    8..     
131d0 20 20 20 2f 2f 2f 20 20 23 64 65 66 69 6e 65 20     ///  #define 
131e0 53 51 4c 49 54 45 5f 49 4e 44 45 58 5f 43 4f 4e  SQLITE_INDEX_CON
131f0 53 54 52 41 49 4e 54 5f 4c 54 20 20 20 20 31 36  STRAINT_LT    16
13200 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 23  ..        ///  #
13210 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4e  define SQLITE_IN
13220 44 45 58 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 47  DEX_CONSTRAINT_G
13230 45 20 20 20 20 33 32 0d 0a 20 20 20 20 20 20 20  E    32..       
13240 20 2f 2f 2f 20 20 23 64 65 66 69 6e 65 20 53 51   ///  #define SQ
13250 4c 49 54 45 5f 49 4e 44 45 58 5f 43 4f 4e 53 54  LITE_INDEX_CONST
13260 52 41 49 4e 54 5f 4d 41 54 43 48 20 36 34 0d 0a  RAINT_MATCH 64..
13270 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 63 6f          /// </co
13280 64 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de>..        ///
13290 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
132a0 20 2f 2f 2f 20 54 68 65 20 53 51 4c 69 74 65 20   /// The SQLite 
132b0 63 6f 72 65 20 63 61 6c 6c 73 20 74 68 65 20 78  core calls the x
132c0 42 65 73 74 49 6e 64 65 78 20 6d 65 74 68 6f 64  BestIndex method
132d0 20 77 68 65 6e 20 69 74 20 69 73 20 63 6f 6d 70   when it is comp
132e0 69 6c 69 6e 67 20 61 0d 0a 20 20 20 20 20 20 20  iling a..       
132f0 20 2f 2f 2f 20 71 75 65 72 79 20 74 68 61 74 20   /// query that 
13300 69 6e 76 6f 6c 76 65 73 20 61 20 76 69 72 74 75  involves a virtu
13310 61 6c 20 74 61 62 6c 65 2e 20 49 6e 20 6f 74 68  al table. In oth
13320 65 72 20 77 6f 72 64 73 2c 20 53 51 4c 69 74 65  er words, SQLite
13330 20 63 61 6c 6c 73 0d 0a 20 20 20 20 20 20 20 20   calls..        
13340 2f 2f 2f 20 74 68 69 73 20 6d 65 74 68 6f 64 20  /// this method 
13350 77 68 65 6e 20 69 74 20 69 73 20 72 75 6e 6e 69  when it is runni
13360 6e 67 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61  ng sqlite3_prepa
13370 72 65 28 29 20 6f 72 20 74 68 65 20 65 71 75 69  re() or the equi
13380 76 61 6c 65 6e 74 2e 0d 0a 20 20 20 20 20 20 20  valent...       
13390 20 2f 2f 2f 20 42 79 20 63 61 6c 6c 69 6e 67 20   /// By calling 
133a0 74 68 69 73 20 6d 65 74 68 6f 64 2c 20 74 68 65  this method, the
133b0 20 53 51 4c 69 74 65 20 63 6f 72 65 20 69 73 20   SQLite core is 
133c0 73 61 79 69 6e 67 20 74 6f 20 74 68 65 20 76 69  saying to the vi
133d0 72 74 75 61 6c 0d 0a 20 20 20 20 20 20 20 20 2f  rtual..        /
133e0 2f 2f 20 74 61 62 6c 65 20 74 68 61 74 20 69 74  // table that it
133f0 20 6e 65 65 64 73 20 74 6f 20 61 63 63 65 73 73   needs to access
13400 20 73 6f 6d 65 20 73 75 62 73 65 74 20 6f 66 20   some subset of 
13410 74 68 65 20 72 6f 77 73 20 69 6e 20 74 68 65 0d  the rows in the.
13420 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 69 72  .        /// vir
13430 74 75 61 6c 20 74 61 62 6c 65 20 61 6e 64 20 69  tual table and i
13440 74 20 77 61 6e 74 73 20 74 6f 20 6b 6e 6f 77 20  t wants to know 
13450 74 68 65 20 6d 6f 73 74 20 65 66 66 69 63 69 65  the most efficie
13460 6e 74 20 77 61 79 20 74 6f 20 64 6f 0d 0a 20 20  nt way to do..  
13470 20 20 20 20 20 20 2f 2f 2f 20 74 68 61 74 20 61        /// that a
13480 63 63 65 73 73 2e 20 54 68 65 20 78 42 65 73 74  ccess. The xBest
13490 49 6e 64 65 78 20 6d 65 74 68 6f 64 20 72 65 70  Index method rep
134a0 6c 69 65 73 20 77 69 74 68 20 69 6e 66 6f 72 6d  lies with inform
134b0 61 74 69 6f 6e 20 74 68 61 74 0d 0a 20 20 20 20  ation that..    
134c0 20 20 20 20 2f 2f 2f 20 74 68 65 20 53 51 4c 69      /// the SQLi
134d0 74 65 20 63 6f 72 65 20 63 61 6e 20 74 68 65 6e  te core can then
134e0 20 75 73 65 20 74 6f 20 63 6f 6e 64 75 63 74 20   use to conduct 
134f0 61 6e 20 65 66 66 69 63 69 65 6e 74 20 73 65 61  an efficient sea
13500 72 63 68 20 6f 66 20 74 68 65 0d 0a 20 20 20 20  rch of the..    
13510 20 20 20 20 2f 2f 2f 20 76 69 72 74 75 61 6c 20      /// virtual 
13520 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20  table...        
13530 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20  /// </para>..   
13540 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
13550 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 57 68 69  .        /// Whi
13560 6c 65 20 63 6f 6d 70 69 6c 69 6e 67 20 61 20 73  le compiling a s
13570 69 6e 67 6c 65 20 53 51 4c 20 71 75 65 72 79 2c  ingle SQL query,
13580 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
13590 20 6d 69 67 68 74 20 63 61 6c 6c 0d 0a 20 20 20   might call..   
135a0 20 20 20 20 20 2f 2f 2f 20 78 42 65 73 74 49 6e       /// xBestIn
135b0 64 65 78 20 6d 75 6c 74 69 70 6c 65 20 74 69 6d  dex multiple tim
135c0 65 73 20 77 69 74 68 20 64 69 66 66 65 72 65 6e  es with differen
135d0 74 20 73 65 74 74 69 6e 67 73 20 69 6e 0d 0a 20  t settings in.. 
135e0 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74         /// sqlit
135f0 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 2e 20 54  e3_index_info. T
13600 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 77  he SQLite core w
13610 69 6c 6c 20 74 68 65 6e 20 73 65 6c 65 63 74 20  ill then select 
13620 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
13630 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 20 74 68 61   combination tha
13640 74 20 61 70 70 65 61 72 73 20 74 6f 20 67 69 76  t appears to giv
13650 65 20 74 68 65 20 62 65 73 74 20 70 65 72 66 6f  e the best perfo
13660 72 6d 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20  rmance...       
13670 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
13680 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
13690 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 42 65  ..        /// Be
136a0 66 6f 72 65 20 63 61 6c 6c 69 6e 67 20 74 68 69  fore calling thi
136b0 73 20 6d 65 74 68 6f 64 2c 20 74 68 65 20 53 51  s method, the SQ
136c0 4c 69 74 65 20 63 6f 72 65 20 69 6e 69 74 69 61  Lite core initia
136d0 6c 69 7a 65 73 20 61 6e 20 69 6e 73 74 61 6e 63  lizes an instanc
136e0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f  e..        /// o
136f0 66 20 74 68 65 20 73 71 6c 69 74 65 33 5f 69 6e  f the sqlite3_in
13700 64 65 78 5f 69 6e 66 6f 20 73 74 72 75 63 74 75  dex_info structu
13710 72 65 20 77 69 74 68 20 69 6e 66 6f 72 6d 61 74  re with informat
13720 69 6f 6e 20 61 62 6f 75 74 20 74 68 65 0d 0a 20  ion about the.. 
13730 20 20 20 20 20 20 20 2f 2f 2f 20 71 75 65 72 79         /// query
13740 20 74 68 61 74 20 69 74 20 69 73 20 63 75 72 72   that it is curr
13750 65 6e 74 6c 79 20 74 72 79 69 6e 67 20 74 6f 20  ently trying to 
13760 70 72 6f 63 65 73 73 2e 20 54 68 69 73 20 69 6e  process. This in
13770 66 6f 72 6d 61 74 69 6f 6e 0d 0a 20 20 20 20 20  formation..     
13780 20 20 20 2f 2f 2f 20 64 65 72 69 76 65 73 20 6d     /// derives m
13790 61 69 6e 6c 79 20 66 72 6f 6d 20 74 68 65 20 57  ainly from the W
137a0 48 45 52 45 20 63 6c 61 75 73 65 20 61 6e 64 20  HERE clause and 
137b0 4f 52 44 45 52 20 42 59 20 6f 72 20 47 52 4f 55  ORDER BY or GROU
137c0 50 20 42 59 0d 0a 20 20 20 20 20 20 20 20 2f 2f  P BY..        //
137d0 2f 20 63 6c 61 75 73 65 73 20 6f 66 20 74 68 65  / clauses of the
137e0 20 71 75 65 72 79 2c 20 62 75 74 20 61 6c 73 6f   query, but also
137f0 20 66 72 6f 6d 20 61 6e 79 20 4f 4e 20 6f 72 20   from any ON or 
13800 55 53 49 4e 47 20 63 6c 61 75 73 65 73 20 69 66  USING clauses if
13810 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
13820 2f 20 71 75 65 72 79 20 69 73 20 61 20 6a 6f 69  / query is a joi
13830 6e 2e 20 54 68 65 20 69 6e 66 6f 72 6d 61 74 69  n. The informati
13840 6f 6e 20 74 68 61 74 20 74 68 65 20 53 51 4c 69  on that the SQLi
13850 74 65 20 63 6f 72 65 20 70 72 6f 76 69 64 65 73  te core provides
13860 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   to..        ///
13870 20 74 68 65 20 78 42 65 73 74 49 6e 64 65 78 20   the xBestIndex 
13880 6d 65 74 68 6f 64 20 69 73 20 68 65 6c 64 20 69  method is held i
13890 6e 20 74 68 65 20 70 61 72 74 20 6f 66 20 74 68  n the part of th
138a0 65 20 73 74 72 75 63 74 75 72 65 20 74 68 61 74  e structure that
138b0 20 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   is..        ///
138c0 20 6d 61 72 6b 65 64 20 61 73 20 22 49 6e 70 75   marked as "Inpu
138d0 74 73 22 2e 20 54 68 65 20 22 4f 75 74 70 75 74  ts". The "Output
138e0 73 22 20 73 65 63 74 69 6f 6e 20 69 73 20 69 6e  s" section is in
138f0 69 74 69 61 6c 69 7a 65 64 20 74 6f 20 7a 65 72  itialized to zer
13900 6f 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  o...        /// 
13910 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
13920 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
13930 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 66       /// The inf
13940 6f 72 6d 61 74 69 6f 6e 20 69 6e 20 74 68 65 20  ormation in the 
13950 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e  sqlite3_index_in
13960 66 6f 20 73 74 72 75 63 74 75 72 65 20 69 73 20  fo structure is 
13970 65 70 68 65 6d 65 72 61 6c 0d 0a 20 20 20 20 20  ephemeral..     
13980 20 20 20 2f 2f 2f 20 61 6e 64 20 6d 61 79 20 62     /// and may b
13990 65 20 6f 76 65 72 77 72 69 74 74 65 6e 20 6f 72  e overwritten or
139a0 20 64 65 61 6c 6c 6f 63 61 74 65 64 20 61 73 20   deallocated as 
139b0 73 6f 6f 6e 20 61 73 20 74 68 65 20 78 42 65 73  soon as the xBes
139c0 74 49 6e 64 65 78 0d 0a 20 20 20 20 20 20 20 20  tIndex..        
139d0 2f 2f 2f 20 6d 65 74 68 6f 64 20 72 65 74 75 72  /// method retur
139e0 6e 73 2e 20 49 66 20 74 68 65 20 78 42 65 73 74  ns. If the xBest
139f0 49 6e 64 65 78 20 6d 65 74 68 6f 64 20 6e 65 65  Index method nee
13a00 64 73 20 74 6f 20 72 65 6d 65 6d 62 65 72 20 61  ds to remember a
13a10 6e 79 20 70 61 72 74 0d 0a 20 20 20 20 20 20 20  ny part..       
13a20 20 2f 2f 2f 20 6f 66 20 74 68 65 20 73 71 6c 69   /// of the sqli
13a30 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 20 73  te3_index_info s
13a40 74 72 75 63 74 75 72 65 2c 20 69 74 20 73 68 6f  tructure, it sho
13a50 75 6c 64 20 6d 61 6b 65 20 61 20 63 6f 70 79 2e  uld make a copy.
13a60 20 43 61 72 65 0d 0a 20 20 20 20 20 20 20 20 2f   Care..        /
13a70 2f 2f 20 6d 75 73 74 20 62 65 20 74 61 6b 65 20  // must be take 
13a80 74 6f 20 73 74 6f 72 65 20 74 68 65 20 63 6f 70  to store the cop
13a90 79 20 69 6e 20 61 20 70 6c 61 63 65 20 77 68 65  y in a place whe
13aa0 72 65 20 69 74 20 77 69 6c 6c 20 62 65 0d 0a 20  re it will be.. 
13ab0 20 20 20 20 20 20 20 2f 2f 2f 20 64 65 61 6c 6c         /// deall
13ac0 6f 63 61 74 65 64 2c 20 73 75 63 68 20 61 73 20  ocated, such as 
13ad0 69 6e 20 74 68 65 20 69 64 78 53 74 72 20 66 69  in the idxStr fi
13ae0 65 6c 64 20 77 69 74 68 20 6e 65 65 64 54 6f 46  eld with needToF
13af0 72 65 65 49 64 78 53 74 72 20 73 65 74 0d 0a 20  reeIdxStr set.. 
13b00 20 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20 31 2e         /// to 1.
13b10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
13b20 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
13b30 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20  // <para>..     
13b40 20 20 20 2f 2f 2f 20 4e 6f 74 65 20 74 68 61 74     /// Note that
13b50 20 78 42 65 73 74 49 6e 64 65 78 20 77 69 6c 6c   xBestIndex will
13b60 20 61 6c 77 61 79 73 20 62 65 20 63 61 6c 6c 65   always be calle
13b70 64 20 62 65 66 6f 72 65 20 78 46 69 6c 74 65 72  d before xFilter
13b80 2c 20 73 69 6e 63 65 0d 0a 20 20 20 20 20 20 20  , since..       
13b90 20 2f 2f 2f 20 74 68 65 20 69 64 78 4e 75 6d 20   /// the idxNum 
13ba0 61 6e 64 20 69 64 78 53 74 72 20 6f 75 74 70 75  and idxStr outpu
13bb0 74 73 20 66 72 6f 6d 20 78 42 65 73 74 49 6e 64  ts from xBestInd
13bc0 65 78 20 61 72 65 20 72 65 71 75 69 72 65 64 20  ex are required 
13bd0 69 6e 70 75 74 73 0d 0a 20 20 20 20 20 20 20 20  inputs..        
13be0 2f 2f 2f 20 74 6f 20 78 46 69 6c 74 65 72 2e 20  /// to xFilter. 
13bf0 48 6f 77 65 76 65 72 2c 20 74 68 65 72 65 20 69  However, there i
13c00 73 20 6e 6f 20 67 75 61 72 61 6e 74 65 65 20 74  s no guarantee t
13c10 68 61 74 20 78 46 69 6c 74 65 72 20 77 69 6c 6c  hat xFilter will
13c20 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   be..        ///
13c30 20 63 61 6c 6c 65 64 20 66 6f 6c 6c 6f 77 69 6e   called followin
13c40 67 20 61 20 73 75 63 63 65 73 73 66 75 6c 20 78  g a successful x
13c50 42 65 73 74 49 6e 64 65 78 2e 0d 0a 20 20 20 20  BestIndex...    
13c60 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d      /// </para>.
13c70 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
13c80 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
13c90 20 54 68 65 20 78 42 65 73 74 49 6e 64 65 78 20   The xBestIndex 
13ca0 6d 65 74 68 6f 64 20 69 73 20 72 65 71 75 69 72  method is requir
13cb0 65 64 20 66 6f 72 20 65 76 65 72 79 20 76 69 72  ed for every vir
13cc0 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20  tual table..    
13cd0 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e      /// implemen
13ce0 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  tation...       
13cf0 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
13d00 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
13d10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 32 2e  ..        /// 2.
13d20 33 2e 31 20 49 6e 70 75 74 73 0d 0a 20 20 20 20  3.1 Inputs..    
13d30 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d      /// </para>.
13d40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
13d50 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
13d60 20 54 68 65 20 6d 61 69 6e 20 74 68 69 6e 67 20   The main thing 
13d70 74 68 61 74 20 74 68 65 20 53 51 4c 69 74 65 20  that the SQLite 
13d80 63 6f 72 65 20 69 73 20 74 72 79 69 6e 67 20 74  core is trying t
13d90 6f 20 63 6f 6d 6d 75 6e 69 63 61 74 65 20 74 6f  o communicate to
13da0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
13db0 2f 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  / virtual table 
13dc0 69 73 20 74 68 65 20 63 6f 6e 73 74 72 61 69 6e  is the constrain
13dd0 74 73 20 74 68 61 74 20 61 72 65 20 61 76 61 69  ts that are avai
13de0 6c 61 62 6c 65 20 74 6f 20 6c 69 6d 69 74 20 74  lable to limit t
13df0 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
13e00 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77 73 20 74  number of rows t
13e10 68 61 74 20 6e 65 65 64 20 74 6f 20 62 65 20 73  hat need to be s
13e20 65 61 72 63 68 65 64 2e 20 54 68 65 20 61 43 6f  earched. The aCo
13e30 6e 73 74 72 61 69 6e 74 5b 5d 20 61 72 72 61 79  nstraint[] array
13e40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f  ..        /// co
13e50 6e 74 61 69 6e 73 20 6f 6e 65 20 65 6e 74 72 79  ntains one entry
13e60 20 66 6f 72 20 65 61 63 68 20 63 6f 6e 73 74 72   for each constr
13e70 61 69 6e 74 2e 20 54 68 65 72 65 20 77 69 6c 6c  aint. There will
13e80 20 62 65 20 65 78 61 63 74 6c 79 0d 0a 20 20 20   be exactly..   
13e90 20 20 20 20 20 2f 2f 2f 20 6e 43 6f 6e 73 74 72       /// nConstr
13ea0 61 69 6e 74 20 65 6e 74 72 69 65 73 20 69 6e 20  aint entries in 
13eb0 74 68 61 74 20 61 72 72 61 79 2e 0d 0a 20 20 20  that array...   
13ec0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
13ed0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
13ee0 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
13ef0 2f 20 45 61 63 68 20 63 6f 6e 73 74 72 61 69 6e  / Each constrain
13f00 74 20 77 69 6c 6c 20 63 6f 72 72 65 73 70 6f 6e  t will correspon
13f10 64 20 74 6f 20 61 20 74 65 72 6d 20 69 6e 20 74  d to a term in t
13f20 68 65 20 57 48 45 52 45 20 63 6c 61 75 73 65 20  he WHERE clause 
13f30 6f 72 20 69 6e 0d 0a 20 20 20 20 20 20 20 20 2f  or in..        /
13f40 2f 2f 20 61 20 55 53 49 4e 47 20 6f 72 20 4f 4e  // a USING or ON
13f50 20 63 6c 61 75 73 65 20 74 68 61 74 20 69 73 20   clause that is 
13f60 6f 66 20 74 68 65 20 66 6f 72 6d 0d 0a 20 20 20  of the form..   
13f70 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
13f80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 63  ..        /// <c
13f90 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode>..        //
13fa0 2f 20 20 20 20 20 63 6f 6c 75 6d 6e 20 4f 50 20  /     column OP 
13fb0 45 58 50 52 0d 0a 20 20 20 20 20 20 20 20 2f 2f  EXPR..        //
13fc0 2f 20 3c 2f 63 6f 64 65 3e 0d 0a 20 20 20 20 20  / </code>..     
13fd0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20     /// <para>.. 
13fe0 20 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 72 65         /// Where
13ff0 20 22 63 6f 6c 75 6d 6e 22 20 69 73 20 61 20 63   "column" is a c
14000 6f 6c 75 6d 6e 20 69 6e 20 74 68 65 20 76 69 72  olumn in the vir
14010 74 75 61 6c 20 74 61 62 6c 65 2c 20 4f 50 20 69  tual table, OP i
14020 73 20 61 6e 20 6f 70 65 72 61 74 6f 72 0d 0a 20  s an operator.. 
14030 20 20 20 20 20 20 20 2f 2f 2f 20 6c 69 6b 65 20         /// like 
14040 22 3d 22 20 6f 72 20 22 26 6c 74 3b 22 2c 20 61  "=" or "&lt;", a
14050 6e 64 20 45 58 50 52 20 69 73 20 61 6e 20 61 72  nd EXPR is an ar
14060 62 69 74 72 61 72 79 20 65 78 70 72 65 73 73 69  bitrary expressi
14070 6f 6e 2e 20 53 6f 2c 20 66 6f 72 0d 0a 20 20 20  on. So, for..   
14080 20 20 20 20 20 2f 2f 2f 20 65 78 61 6d 70 6c 65       /// example
14090 2c 20 69 66 20 74 68 65 20 57 48 45 52 45 20 63  , if the WHERE c
140a0 6c 61 75 73 65 20 63 6f 6e 74 61 69 6e 65 64 20  lause contained 
140b0 61 20 74 65 72 6d 20 6c 69 6b 65 20 74 68 69 73  a term like this
140c0 3a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  :..        /// <
140d0 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
140e0 2f 2f 2f 20 3c 63 6f 64 65 3e 0d 0a 20 20 20 20  /// <code>..    
140f0 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20      ///         
14100 20 61 20 3d 20 35 0d 0a 20 20 20 20 20 20 20 20   a = 5..        
14110 2f 2f 2f 20 3c 2f 63 6f 64 65 3e 0d 0a 20 20 20  /// </code>..   
14120 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
14130 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
14140 6e 20 6f 6e 65 20 6f 66 20 74 68 65 20 63 6f 6e  n one of the con
14150 73 74 72 61 69 6e 74 73 20 77 6f 75 6c 64 20 62  straints would b
14160 65 20 6f 6e 20 74 68 65 20 22 61 22 20 63 6f 6c  e on the "a" col
14170 75 6d 6e 20 77 69 74 68 0d 0a 20 20 20 20 20 20  umn with..      
14180 20 20 2f 2f 2f 20 6f 70 65 72 61 74 6f 72 20 22    /// operator "
14190 3d 22 20 61 6e 64 20 61 6e 20 65 78 70 72 65 73  =" and an expres
141a0 73 69 6f 6e 20 6f 66 20 22 35 22 2e 20 43 6f 6e  sion of "5". Con
141b0 73 74 72 61 69 6e 74 73 20 6e 65 65 64 20 6e 6f  straints need no
141c0 74 20 68 61 76 65 20 61 0d 0a 20 20 20 20 20 20  t have a..      
141d0 20 20 2f 2f 2f 20 6c 69 74 65 72 61 6c 20 72 65    /// literal re
141e0 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66 20  presentation of 
141f0 74 68 65 20 57 48 45 52 45 20 63 6c 61 75 73 65  the WHERE clause
14200 2e 20 54 68 65 20 71 75 65 72 79 20 6f 70 74 69  . The query opti
14210 6d 69 7a 65 72 0d 0a 20 20 20 20 20 20 20 20 2f  mizer..        /
14220 2f 2f 20 6d 69 67 68 74 20 6d 61 6b 65 20 74 72  // might make tr
14230 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 73 20 74 6f  ansformations to
14240 20 74 68 65 20 57 48 45 52 45 20 63 6c 61 75 73   the WHERE claus
14250 65 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 65 78  e in order to ex
14260 74 72 61 63 74 0d 0a 20 20 20 20 20 20 20 20 2f  tract..        /
14270 2f 2f 20 61 73 20 6d 61 6e 79 20 63 6f 6e 73 74  // as many const
14280 72 61 69 6e 74 73 20 61 73 20 69 74 20 63 61 6e  raints as it can
14290 2e 20 53 6f 2c 20 66 6f 72 20 65 78 61 6d 70 6c  . So, for exampl
142a0 65 2c 20 69 66 20 74 68 65 20 57 48 45 52 45 20  e, if the WHERE 
142b0 63 6c 61 75 73 65 0d 0a 20 20 20 20 20 20 20 20  clause..        
142c0 2f 2f 2f 20 63 6f 6e 74 61 69 6e 65 64 20 73 6f  /// contained so
142d0 6d 65 74 68 69 6e 67 20 6c 69 6b 65 20 74 68 69  mething like thi
142e0 73 3a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s:..        /// 
142f0 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
14300 20 2f 2f 2f 20 3c 63 6f 64 65 3e 0d 0a 20 20 20   /// <code>..   
14310 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20       ///        
14320 20 20 78 20 42 45 54 57 45 45 4e 20 31 30 20 41    x BETWEEN 10 A
14330 4e 44 20 31 30 30 20 41 4e 44 20 39 39 39 26 67  ND 100 AND 999&g
14340 74 3b 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  t;y..        ///
14350 20 3c 2f 63 6f 64 65 3e 0d 0a 20 20 20 20 20 20   </code>..      
14360 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20    /// <para>..  
14370 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 71 75        /// The qu
14380 65 72 79 20 6f 70 74 69 6d 69 7a 65 72 20 6d 69  ery optimizer mi
14390 67 68 74 20 74 72 61 6e 73 6c 61 74 65 20 74 68  ght translate th
143a0 69 73 20 69 6e 74 6f 20 74 68 72 65 65 20 73 65  is into three se
143b0 70 61 72 61 74 65 0d 0a 20 20 20 20 20 20 20 20  parate..        
143c0 2f 2f 2f 20 63 6f 6e 73 74 72 61 69 6e 74 73 3a  /// constraints:
143d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
143e0 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
143f0 2f 2f 20 3c 63 6f 64 65 3e 0d 0a 20 20 20 20 20  // <code>..     
14400 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20 20     ///          
14410 78 20 26 67 74 3b 3d 20 31 30 0d 0a 20 20 20 20  x &gt;= 10..    
14420 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20      ///         
14430 20 78 20 26 6c 74 3b 3d 20 31 30 30 0d 0a 20 20   x &lt;= 100..  
14440 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20        ///       
14450 20 20 20 79 20 26 6c 74 3b 20 39 39 39 0d 0a 20     y &lt; 999.. 
14460 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 63 6f 64         /// </cod
14470 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e>..        /// 
14480 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
14490 2f 2f 2f 20 46 6f 72 20 65 61 63 68 20 63 6f 6e  /// For each con
144a0 73 74 72 61 69 6e 74 2c 20 74 68 65 20 61 43 6f  straint, the aCo
144b0 6e 73 74 72 61 69 6e 74 5b 5d 2e 69 43 6f 6c 75  nstraint[].iColu
144c0 6d 6e 20 66 69 65 6c 64 20 69 6e 64 69 63 61 74  mn field indicat
144d0 65 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  es..        /// 
144e0 77 68 69 63 68 20 63 6f 6c 75 6d 6e 20 61 70 70  which column app
144f0 65 61 72 73 20 6f 6e 20 74 68 65 20 6c 65 66 74  ears on the left
14500 2d 68 61 6e 64 20 73 69 64 65 20 6f 66 20 74 68  -hand side of th
14510 65 20 63 6f 6e 73 74 72 61 69 6e 74 2e 20 54 68  e constraint. Th
14520 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 66  e..        /// f
14530 69 72 73 74 20 63 6f 6c 75 6d 6e 20 6f 66 20 74  irst column of t
14540 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
14550 20 69 73 20 63 6f 6c 75 6d 6e 20 30 2e 20 54 68   is column 0. Th
14560 65 20 72 6f 77 69 64 20 6f 66 20 74 68 65 0d 0a  e rowid of the..
14570 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 69 72 74          /// virt
14580 75 61 6c 20 74 61 62 6c 65 20 69 73 20 63 6f 6c  ual table is col
14590 75 6d 6e 20 2d 31 2e 20 54 68 65 20 61 43 6f 6e  umn -1. The aCon
145a0 73 74 72 61 69 6e 74 5b 5d 2e 6f 70 20 66 69 65  straint[].op fie
145b0 6c 64 20 69 6e 64 69 63 61 74 65 73 0d 0a 20 20  ld indicates..  
145c0 20 20 20 20 20 20 2f 2f 2f 20 77 68 69 63 68 20        /// which 
145d0 6f 70 65 72 61 74 6f 72 20 69 73 20 75 73 65 64  operator is used
145e0 2e 20 54 68 65 20 53 51 4c 49 54 45 5f 49 4e 44  . The SQLITE_IND
145f0 45 58 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 2a 20  EX_CONSTRAINT_* 
14600 63 6f 6e 73 74 61 6e 74 73 20 6d 61 70 0d 0a 20  constants map.. 
14610 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65 67         /// integ
14620 65 72 20 63 6f 6e 73 74 61 6e 74 73 20 69 6e 74  er constants int
14630 6f 20 6f 70 65 72 61 74 6f 72 20 76 61 6c 75 65  o operator value
14640 73 2e 20 43 6f 6c 75 6d 6e 73 20 6f 63 63 75 72  s. Columns occur
14650 20 69 6e 20 74 68 65 20 6f 72 64 65 72 0d 0a 20   in the order.. 
14660 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 79 20         /// they 
14670 77 65 72 65 20 64 65 66 69 6e 65 64 20 62 79 20  were defined by 
14680 74 68 65 20 63 61 6c 6c 20 74 6f 20 73 71 6c 69  the call to sqli
14690 74 65 33 5f 64 65 63 6c 61 72 65 5f 76 74 61 62  te3_declare_vtab
146a0 28 29 20 69 6e 20 74 68 65 0d 0a 20 20 20 20 20  () in the..     
146b0 20 20 20 2f 2f 2f 20 78 43 72 65 61 74 65 20 6f     /// xCreate o
146c0 72 20 78 43 6f 6e 6e 65 63 74 20 6d 65 74 68 6f  r xConnect metho
146d0 64 2e 20 48 69 64 64 65 6e 20 63 6f 6c 75 6d 6e  d. Hidden column
146e0 73 20 61 72 65 20 63 6f 75 6e 74 65 64 20 77 68  s are counted wh
146f0 65 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  en..        /// 
14700 64 65 74 65 72 6d 69 6e 69 6e 67 20 74 68 65 20  determining the 
14710 63 6f 6c 75 6d 6e 20 69 6e 64 65 78 2e 0d 0a 20  column index... 
14720 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
14730 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
14740 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
14750 2f 2f 2f 20 54 68 65 20 61 43 6f 6e 73 74 72 61  /// The aConstra
14760 69 6e 74 5b 5d 20 61 72 72 61 79 20 63 6f 6e 74  int[] array cont
14770 61 69 6e 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  ains information
14780 20 61 62 6f 75 74 20 61 6c 6c 20 63 6f 6e 73 74   about all const
14790 72 61 69 6e 74 73 0d 0a 20 20 20 20 20 20 20 20  raints..        
147a0 2f 2f 2f 20 74 68 61 74 20 61 70 70 6c 79 20 74  /// that apply t
147b0 6f 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  o the virtual ta
147c0 62 6c 65 2e 20 42 75 74 20 73 6f 6d 65 20 6f 66  ble. But some of
147d0 20 74 68 65 20 63 6f 6e 73 74 72 61 69 6e 74 73   the constraints
147e0 20 6d 69 67 68 74 0d 0a 20 20 20 20 20 20 20 20   might..        
147f0 2f 2f 2f 20 6e 6f 74 20 62 65 20 75 73 61 62 6c  /// not be usabl
14800 65 20 62 65 63 61 75 73 65 20 6f 66 20 74 68 65  e because of the
14810 20 77 61 79 20 74 61 62 6c 65 73 20 61 72 65 20   way tables are 
14820 6f 72 64 65 72 65 64 20 69 6e 20 61 20 6a 6f 69  ordered in a joi
14830 6e 2e 20 54 68 65 0d 0a 20 20 20 20 20 20 20 20  n. The..        
14840 2f 2f 2f 20 78 42 65 73 74 49 6e 64 65 78 20 6d  /// xBestIndex m
14850 65 74 68 6f 64 20 6d 75 73 74 20 74 68 65 72 65  ethod must there
14860 66 6f 72 65 20 6f 6e 6c 79 20 63 6f 6e 73 69 64  fore only consid
14870 65 72 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 74  er constraints t
14880 68 61 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  hat..        ///
14890 20 68 61 76 65 20 61 6e 20 61 43 6f 6e 73 74 72   have an aConstr
148a0 61 69 6e 74 5b 5d 2e 75 73 61 62 6c 65 20 66 6c  aint[].usable fl
148b0 61 67 20 77 68 69 63 68 20 69 73 20 74 72 75 65  ag which is true
148c0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
148d0 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
148e0 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
148f0 20 20 20 20 2f 2f 2f 20 49 6e 20 61 64 64 69 74      /// In addit
14900 69 6f 6e 20 74 6f 20 57 48 45 52 45 20 63 6c 61  ion to WHERE cla
14910 75 73 65 20 63 6f 6e 73 74 72 61 69 6e 74 73 2c  use constraints,
14920 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
14930 20 61 6c 73 6f 20 74 65 6c 6c 73 0d 0a 20 20 20   also tells..   
14940 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 78 42 65       /// the xBe
14950 73 74 49 6e 64 65 78 20 6d 65 74 68 6f 64 20 61  stIndex method a
14960 62 6f 75 74 20 74 68 65 20 4f 52 44 45 52 20 42  bout the ORDER B
14970 59 20 63 6c 61 75 73 65 2e 20 28 49 6e 20 61 6e  Y clause. (In an
14980 20 61 67 67 72 65 67 61 74 65 0d 0a 20 20 20 20   aggregate..    
14990 20 20 20 20 2f 2f 2f 20 71 75 65 72 79 2c 20 74      /// query, t
149a0 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6d  he SQLite core m
149b0 69 67 68 74 20 70 75 74 20 69 6e 20 47 52 4f 55  ight put in GROU
149c0 50 20 42 59 20 63 6c 61 75 73 65 20 69 6e 66 6f  P BY clause info
149d0 72 6d 61 74 69 6f 6e 20 69 6e 0d 0a 20 20 20 20  rmation in..    
149e0 20 20 20 20 2f 2f 2f 20 70 6c 61 63 65 20 6f 66      /// place of
149f0 20 74 68 65 20 4f 52 44 45 52 20 42 59 20 63 6c   the ORDER BY cl
14a00 61 75 73 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  ause information
14a10 2c 20 62 75 74 20 74 68 69 73 20 66 61 63 74 20  , but this fact 
14a20 73 68 6f 75 6c 64 20 6e 6f 74 0d 0a 20 20 20 20  should not..    
14a30 20 20 20 20 2f 2f 2f 20 6d 61 6b 65 20 61 6e 79      /// make any
14a40 20 64 69 66 66 65 72 65 6e 63 65 20 74 6f 20 74   difference to t
14a50 68 65 20 78 42 65 73 74 49 6e 64 65 78 20 6d 65  he xBestIndex me
14a60 74 68 6f 64 2e 29 20 49 66 20 61 6c 6c 20 74 65  thod.) If all te
14a70 72 6d 73 20 6f 66 20 74 68 65 0d 0a 20 20 20 20  rms of the..    
14a80 20 20 20 20 2f 2f 2f 20 4f 52 44 45 52 20 42 59      /// ORDER BY
14a90 20 63 6c 61 75 73 65 20 61 72 65 20 63 6f 6c 75   clause are colu
14aa0 6d 6e 73 20 69 6e 20 74 68 65 20 76 69 72 74 75  mns in the virtu
14ab0 61 6c 20 74 61 62 6c 65 2c 20 74 68 65 6e 20 6e  al table, then n
14ac0 4f 72 64 65 72 42 79 0d 0a 20 20 20 20 20 20 20  OrderBy..       
14ad0 20 2f 2f 2f 20 77 69 6c 6c 20 62 65 20 74 68 65   /// will be the
14ae0 20 6e 75 6d 62 65 72 20 6f 66 20 74 65 72 6d 73   number of terms
14af0 20 69 6e 20 74 68 65 20 4f 52 44 45 52 20 42 59   in the ORDER BY
14b00 20 63 6c 61 75 73 65 20 61 6e 64 20 74 68 65 0d   clause and the.
14b10 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 4f 72  .        /// aOr
14b20 64 65 72 42 79 5b 5d 20 61 72 72 61 79 20 77 69  derBy[] array wi
14b30 6c 6c 20 69 64 65 6e 74 69 66 79 20 74 68 65 20  ll identify the 
14b40 63 6f 6c 75 6d 6e 20 66 6f 72 20 65 61 63 68 20  column for each 
14b50 74 65 72 6d 20 69 6e 20 74 68 65 0d 0a 20 20 20  term in the..   
14b60 20 20 20 20 20 2f 2f 2f 20 6f 72 64 65 72 20 62       /// order b
14b70 79 20 63 6c 61 75 73 65 20 61 6e 64 20 77 68 65  y clause and whe
14b80 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 61 74  ther or not that
14b90 20 63 6f 6c 75 6d 6e 20 69 73 20 41 53 43 20 6f   column is ASC o
14ba0 72 20 44 45 53 43 2e 0d 0a 20 20 20 20 20 20 20  r DESC...       
14bb0 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
14bc0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
14bd0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 32 2e  ..        /// 2.
14be0 33 2e 32 20 4f 75 74 70 75 74 73 0d 0a 20 20 20  3.2 Outputs..   
14bf0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
14c00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
14c10 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
14c20 2f 20 47 69 76 65 6e 20 61 6c 6c 20 6f 66 20 74  / Given all of t
14c30 68 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61  he information a
14c40 62 6f 76 65 2c 20 74 68 65 20 6a 6f 62 20 6f 66  bove, the job of
14c50 20 74 68 65 20 78 42 65 73 74 49 6e 64 65 78 0d   the xBestIndex.
14c60 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74  .        /// met
14c70 68 6f 64 20 69 74 20 74 6f 20 66 69 67 75 72 65  hod it to figure
14c80 20 6f 75 74 20 74 68 65 20 62 65 73 74 20 77 61   out the best wa
14c90 79 20 74 6f 20 73 65 61 72 63 68 20 74 68 65 20  y to search the 
14ca0 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a  virtual table...
14cb0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
14cc0 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
14cd0 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
14ce0 20 2f 2f 2f 20 54 68 65 20 78 42 65 73 74 49 6e   /// The xBestIn
14cf0 64 65 78 20 6d 65 74 68 6f 64 20 66 69 6c 6c 73  dex method fills
14d00 20 74 68 65 20 69 64 78 4e 75 6d 20 61 6e 64 20   the idxNum and 
14d10 69 64 78 53 74 72 20 66 69 65 6c 64 73 20 77 69  idxStr fields wi
14d20 74 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  th..        /// 
14d30 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 74 68 61 74  information that
14d40 20 63 6f 6d 6d 75 6e 69 63 61 74 65 73 20 61 6e   communicates an
14d50 20 69 6e 64 65 78 69 6e 67 20 73 74 72 61 74 65   indexing strate
14d60 67 79 20 74 6f 20 74 68 65 20 78 46 69 6c 74 65  gy to the xFilte
14d70 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d  r..        /// m
14d80 65 74 68 6f 64 2e 20 54 68 65 20 69 6e 66 6f 72  ethod. The infor
14d90 6d 61 74 69 6f 6e 20 69 6e 20 69 64 78 4e 75 6d  mation in idxNum
14da0 20 61 6e 64 20 69 64 78 53 74 72 20 69 73 20 61   and idxStr is a
14db0 72 62 69 74 72 61 72 79 20 61 73 20 66 61 72 20  rbitrary as far 
14dc0 61 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  as..        /// 
14dd0 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
14de0 69 73 20 63 6f 6e 63 65 72 6e 65 64 2e 20 54 68  is concerned. Th
14df0 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6a 75  e SQLite core ju
14e00 73 74 20 63 6f 70 69 65 73 20 74 68 65 0d 0a 20  st copies the.. 
14e10 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 66 6f 72         /// infor
14e20 6d 61 74 69 6f 6e 20 74 68 72 6f 75 67 68 20 74  mation through t
14e30 6f 20 74 68 65 20 78 46 69 6c 74 65 72 20 6d 65  o the xFilter me
14e40 74 68 6f 64 2e 20 41 6e 79 20 64 65 73 69 72 65  thod. Any desire
14e50 64 20 6d 65 61 6e 69 6e 67 20 63 61 6e 0d 0a 20  d meaning can.. 
14e60 20 20 20 20 20 20 20 2f 2f 2f 20 62 65 20 61 73         /// be as
14e70 73 69 67 6e 65 64 20 74 6f 20 69 64 78 4e 75 6d  signed to idxNum
14e80 20 61 6e 64 20 69 64 78 53 74 72 20 61 73 20 6c   and idxStr as l
14e90 6f 6e 67 20 61 73 20 78 42 65 73 74 49 6e 64 65  ong as xBestInde
14ea0 78 20 61 6e 64 20 78 46 69 6c 74 65 72 0d 0a 20  x and xFilter.. 
14eb0 20 20 20 20 20 20 20 2f 2f 2f 20 61 67 72 65 65         /// agree
14ec0 20 6f 6e 20 77 68 61 74 20 74 68 61 74 20 6d 65   on what that me
14ed0 61 6e 69 6e 67 20 69 73 2e 0d 0a 20 20 20 20 20  aning is...     
14ee0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a     /// </para>..
14ef0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
14f00 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
14f10 54 68 65 20 69 64 78 53 74 72 20 76 61 6c 75 65  The idxStr value
14f20 20 6d 61 79 20 62 65 20 61 20 73 74 72 69 6e 67   may be a string
14f30 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 61   obtained from a
14f40 6e 20 53 51 4c 69 74 65 20 6d 65 6d 6f 72 79 0d  n SQLite memory.
14f50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 6c 6c  .        /// all
14f60 6f 63 61 74 69 6f 6e 20 66 75 6e 63 74 69 6f 6e  ocation function
14f70 20 73 75 63 68 20 61 73 20 73 71 6c 69 74 65 33   such as sqlite3
14f80 5f 6d 70 72 69 6e 74 66 28 29 2e 20 49 66 20 74  _mprintf(). If t
14f90 68 69 73 20 69 73 20 74 68 65 20 63 61 73 65 2c  his is the case,
14fa0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68  ..        /// th
14fb0 65 6e 20 74 68 65 20 6e 65 65 64 54 6f 46 72 65  en the needToFre
14fc0 65 49 64 78 53 74 72 20 66 6c 61 67 20 6d 75 73  eIdxStr flag mus
14fd0 74 20 62 65 20 73 65 74 20 74 6f 20 74 72 75 65  t be set to true
14fe0 20 73 6f 20 74 68 61 74 20 74 68 65 0d 0a 20 20   so that the..  
14ff0 20 20 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74 65        /// SQLite
15000 20 63 6f 72 65 20 77 69 6c 6c 20 6b 6e 6f 77 20   core will know 
15010 74 6f 20 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f  to call sqlite3_
15020 66 72 65 65 28 29 20 6f 6e 20 74 68 61 74 20 73  free() on that s
15030 74 72 69 6e 67 20 77 68 65 6e 20 69 74 0d 0a 20  tring when it.. 
15040 20 20 20 20 20 20 20 2f 2f 2f 20 68 61 73 20 66         /// has f
15050 69 6e 69 73 68 65 64 20 77 69 74 68 20 69 74 2c  inished with it,
15060 20 61 6e 64 20 74 68 75 73 20 61 76 6f 69 64 20   and thus avoid 
15070 61 20 6d 65 6d 6f 72 79 20 6c 65 61 6b 2e 0d 0a  a memory leak...
15080 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
15090 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
150a0 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
150b0 20 2f 2f 2f 20 49 66 20 74 68 65 20 76 69 72 74   /// If the virt
150c0 75 61 6c 20 74 61 62 6c 65 20 77 69 6c 6c 20 6f  ual table will o
150d0 75 74 70 75 74 20 72 6f 77 73 20 69 6e 20 74 68  utput rows in th
150e0 65 20 6f 72 64 65 72 20 73 70 65 63 69 66 69 65  e order specifie
150f0 64 20 62 79 20 74 68 65 0d 0a 20 20 20 20 20 20  d by the..      
15100 20 20 2f 2f 2f 20 4f 52 44 45 52 20 42 59 20 63    /// ORDER BY c
15110 6c 61 75 73 65 2c 20 74 68 65 6e 20 74 68 65 20  lause, then the 
15120 6f 72 64 65 72 42 79 43 6f 6e 73 75 6d 65 64 20  orderByConsumed 
15130 66 6c 61 67 20 6d 61 79 20 62 65 20 73 65 74 20  flag may be set 
15140 74 6f 20 74 72 75 65 2e 0d 0a 20 20 20 20 20 20  to true...      
15150 20 20 2f 2f 2f 20 49 66 20 74 68 65 20 6f 75 74    /// If the out
15160 70 75 74 20 69 73 20 6e 6f 74 20 61 75 74 6f 6d  put is not autom
15170 61 74 69 63 61 6c 6c 79 20 69 6e 20 74 68 65 20  atically in the 
15180 63 6f 72 72 65 63 74 20 6f 72 64 65 72 20 74 68  correct order th
15190 65 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  en..        /// 
151a0 6f 72 64 65 72 42 79 43 6f 6e 73 75 6d 65 64 20  orderByConsumed 
151b0 6d 75 73 74 20 62 65 20 6c 65 66 74 20 69 6e 20  must be left in 
151c0 69 74 73 20 64 65 66 61 75 6c 74 20 66 61 6c 73  its default fals
151d0 65 20 73 65 74 74 69 6e 67 2e 20 54 68 69 73 0d  e setting. This.
151e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 6c  .        /// wil
151f0 6c 20 69 6e 64 69 63 61 74 65 20 74 6f 20 74 68  l indicate to th
15200 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 74 68  e SQLite core th
15210 61 74 20 69 74 20 77 69 6c 6c 20 6e 65 65 64 20  at it will need 
15220 74 6f 20 64 6f 20 61 20 73 65 70 61 72 61 74 65  to do a separate
15230 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 6f  ..        /// so
15240 72 74 69 6e 67 20 70 61 73 73 20 6f 76 65 72 20  rting pass over 
15250 74 68 65 20 64 61 74 61 20 61 66 74 65 72 20 69  the data after i
15260 74 20 63 6f 6d 65 73 20 6f 75 74 20 6f 66 20 74  t comes out of t
15270 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
15280 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
15290 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
152a0 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
152b0 20 20 20 20 2f 2f 2f 20 54 68 65 20 65 73 74 69      /// The esti
152c0 6d 61 74 65 64 43 6f 73 74 20 66 69 65 6c 64 20  matedCost field 
152d0 73 68 6f 75 6c 64 20 62 65 20 73 65 74 20 74 6f  should be set to
152e0 20 74 68 65 20 65 73 74 69 6d 61 74 65 64 20 6e   the estimated n
152f0 75 6d 62 65 72 20 6f 66 0d 0a 20 20 20 20 20 20  umber of..      
15300 20 20 2f 2f 2f 20 64 69 73 6b 20 61 63 63 65 73    /// disk acces
15310 73 20 6f 70 65 72 61 74 69 6f 6e 73 20 72 65 71  s operations req
15320 75 69 72 65 64 20 74 6f 20 65 78 65 63 75 74 65  uired to execute
15330 20 74 68 69 73 20 71 75 65 72 79 20 61 67 61 69   this query agai
15340 6e 73 74 20 74 68 65 0d 0a 20 20 20 20 20 20 20  nst the..       
15350 20 2f 2f 2f 20 76 69 72 74 75 61 6c 20 74 61 62   /// virtual tab
15360 6c 65 2e 20 54 68 65 20 53 51 4c 69 74 65 20 63  le. The SQLite c
15370 6f 72 65 20 77 69 6c 6c 20 6f 66 74 65 6e 20 63  ore will often c
15380 61 6c 6c 20 78 42 65 73 74 49 6e 64 65 78 20 6d  all xBestIndex m
15390 75 6c 74 69 70 6c 65 0d 0a 20 20 20 20 20 20 20  ultiple..       
153a0 20 2f 2f 2f 20 74 69 6d 65 73 20 77 69 74 68 20   /// times with 
153b0 64 69 66 66 65 72 65 6e 74 20 63 6f 6e 73 74 72  different constr
153c0 61 69 6e 74 73 2c 20 6f 62 74 61 69 6e 20 6d 75  aints, obtain mu
153d0 6c 74 69 70 6c 65 20 63 6f 73 74 20 65 73 74 69  ltiple cost esti
153e0 6d 61 74 65 73 2c 0d 0a 20 20 20 20 20 20 20 20  mates,..        
153f0 2f 2f 2f 20 74 68 65 6e 20 63 68 6f 6f 73 65 20  /// then choose 
15400 74 68 65 20 71 75 65 72 79 20 70 6c 61 6e 20 74  the query plan t
15410 68 61 74 20 67 69 76 65 73 20 74 68 65 20 6c 6f  hat gives the lo
15420 77 65 73 74 20 65 73 74 69 6d 61 74 65 2e 0d 0a  west estimate...
15430 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
15440 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
15450 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
15460 20 2f 2f 2f 20 54 68 65 20 61 43 6f 6e 73 74 72   /// The aConstr
15470 61 69 6e 74 55 73 61 67 65 5b 5d 20 61 72 72 61  aintUsage[] arra
15480 79 20 63 6f 6e 74 61 69 6e 73 20 6f 6e 65 20 65  y contains one e
15490 6c 65 6d 65 6e 74 20 66 6f 72 20 65 61 63 68 20  lement for each 
154a0 6f 66 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  of the..        
154b0 2f 2f 2f 20 6e 43 6f 6e 73 74 72 61 69 6e 74 20  /// nConstraint 
154c0 63 6f 6e 73 74 72 61 69 6e 74 73 20 69 6e 20 74  constraints in t
154d0 68 65 20 69 6e 70 75 74 73 20 73 65 63 74 69 6f  he inputs sectio
154e0 6e 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20 20  n of the..      
154f0 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 69 6e    /// sqlite3_in
15500 64 65 78 5f 69 6e 66 6f 20 73 74 72 75 63 74 75  dex_info structu
15510 72 65 2e 20 54 68 65 20 61 43 6f 6e 73 74 72 61  re. The aConstra
15520 69 6e 74 55 73 61 67 65 5b 5d 20 61 72 72 61 79  intUsage[] array
15530 20 69 73 20 75 73 65 64 0d 0a 20 20 20 20 20 20   is used..      
15540 20 20 2f 2f 2f 20 62 79 20 78 42 65 73 74 49 6e    /// by xBestIn
15550 64 65 78 20 74 6f 20 74 65 6c 6c 20 74 68 65 20  dex to tell the 
15560 63 6f 72 65 20 68 6f 77 20 69 74 20 69 73 20 75  core how it is u
15570 73 69 6e 67 20 74 68 65 20 63 6f 6e 73 74 72 61  sing the constra
15580 69 6e 74 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ints...        /
15590 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20  // </para>..    
155a0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a      /// <para>..
155b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
155c0 78 42 65 73 74 49 6e 64 65 78 20 6d 65 74 68 6f  xBestIndex metho
155d0 64 20 6d 61 79 20 73 65 74 20 61 43 6f 6e 73 74  d may set aConst
155e0 72 61 69 6e 74 55 73 61 67 65 5b 5d 2e 61 72 67  raintUsage[].arg
155f0 76 49 6e 64 65 78 20 65 6e 74 72 69 65 73 0d 0a  vIndex entries..
15600 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20 76          /// to v
15610 61 6c 75 65 73 20 67 72 65 61 74 65 72 20 74 68  alues greater th
15620 61 6e 20 6f 6e 65 2e 20 45 78 61 63 74 6c 79 20  an one. Exactly 
15630 6f 6e 65 20 65 6e 74 72 79 20 73 68 6f 75 6c 64  one entry should
15640 20 62 65 20 73 65 74 20 74 6f 20 31 2c 0d 0a 20   be set to 1,.. 
15650 20 20 20 20 20 20 20 2f 2f 2f 20 61 6e 6f 74 68         /// anoth
15660 65 72 20 74 6f 20 32 2c 20 61 6e 6f 74 68 65 72  er to 2, another
15670 20 74 6f 20 33 2c 20 61 6e 64 20 73 6f 20 66 6f   to 3, and so fo
15680 72 74 68 20 75 70 20 74 6f 20 61 73 20 6d 61 6e  rth up to as man
15690 79 20 6f 72 20 61 73 20 66 65 77 20 61 73 0d 0a  y or as few as..
156a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20          /// the 
156b0 78 42 65 73 74 49 6e 64 65 78 20 6d 65 74 68 6f  xBestIndex metho
156c0 64 20 77 61 6e 74 73 2e 20 54 68 65 20 45 58 50  d wants. The EXP
156d0 52 20 6f 66 20 74 68 65 20 63 6f 72 72 65 73 70  R of the corresp
156e0 6f 6e 64 69 6e 67 0d 0a 20 20 20 20 20 20 20 20  onding..        
156f0 2f 2f 2f 20 63 6f 6e 73 74 72 61 69 6e 74 73 20  /// constraints 
15700 77 69 6c 6c 20 74 68 65 6e 20 62 65 20 70 61 73  will then be pas
15710 73 65 64 20 69 6e 20 61 73 20 74 68 65 20 61 72  sed in as the ar
15720 67 76 5b 5d 20 70 61 72 61 6d 65 74 65 72 73 20  gv[] parameters 
15730 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  to..        /// 
15740 78 46 69 6c 74 65 72 2e 0d 0a 20 20 20 20 20 20  xFilter...      
15750 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
15760 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
15770 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 46  >..        /// F
15780 6f 72 20 65 78 61 6d 70 6c 65 2c 20 69 66 20 74  or example, if t
15790 68 65 20 61 43 6f 6e 73 74 72 61 69 6e 74 5b 33  he aConstraint[3
157a0 5d 2e 61 72 67 76 49 6e 64 65 78 20 69 73 20 73  ].argvIndex is s
157b0 65 74 20 74 6f 20 31 2c 20 74 68 65 6e 20 77 68  et to 1, then wh
157c0 65 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  en..        /// 
157d0 78 46 69 6c 74 65 72 20 69 73 20 63 61 6c 6c 65  xFilter is calle
157e0 64 2c 20 74 68 65 20 61 72 67 76 5b 30 5d 20 70  d, the argv[0] p
157f0 61 73 73 65 64 20 74 6f 20 78 46 69 6c 74 65 72  assed to xFilter
15800 20 77 69 6c 6c 20 68 61 76 65 20 74 68 65 20 45   will have the E
15810 58 50 52 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  XPR..        ///
15820 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 61 43   value of the aC
15830 6f 6e 73 74 72 61 69 6e 74 5b 33 5d 20 63 6f 6e  onstraint[3] con
15840 73 74 72 61 69 6e 74 2e 0d 0a 20 20 20 20 20 20  straint...      
15850 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
15860 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
15870 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 42  >..        /// B
15880 79 20 64 65 66 61 75 6c 74 2c 20 74 68 65 20 53  y default, the S
15890 51 4c 69 74 65 20 63 6f 72 65 20 64 6f 75 62 6c  QLite core doubl
158a0 65 20 63 68 65 63 6b 73 20 61 6c 6c 20 63 6f 6e  e checks all con
158b0 73 74 72 61 69 6e 74 73 20 6f 6e 20 65 61 63 68  straints on each
158c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 72 6f  ..        /// ro
158d0 77 20 6f 66 20 74 68 65 20 76 69 72 74 75 61 6c  w of the virtual
158e0 20 74 61 62 6c 65 20 74 68 61 74 20 69 74 20 72   table that it r
158f0 65 63 65 69 76 65 73 2e 20 49 66 20 73 75 63 68  eceives. If such
15900 20 61 20 63 68 65 63 6b 20 69 73 0d 0a 20 20 20   a check is..   
15910 20 20 20 20 20 2f 2f 2f 20 72 65 64 75 6e 64 61       /// redunda
15920 6e 74 2c 20 74 68 65 20 78 42 65 73 74 46 69 6c  nt, the xBestFil
15930 74 65 72 20 6d 65 74 68 6f 64 20 63 61 6e 20 73  ter method can s
15940 75 70 70 72 65 73 73 20 74 68 61 74 20 64 6f 75  uppress that dou
15950 62 6c 65 2d 63 68 65 63 6b 20 62 79 0d 0a 20 20  ble-check by..  
15960 20 20 20 20 20 20 2f 2f 2f 20 73 65 74 74 69 6e        /// settin
15970 67 20 61 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  g aConstraintUsa
15980 67 65 5b 5d 2e 6f 6d 69 74 2e 0d 0a 20 20 20 20  ge[].omit...    
15990 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d      /// </para>.
159a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
159b0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
159c0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
159d0 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20  ="pVtab">..     
159e0 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
159f0 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
15a00 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65   sqlite3_vtab de
15a10 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2e  rived structure.
15a20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
15a30 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
15a40 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
15a50 22 70 49 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20  "pIndex">..     
15a60 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
15a70 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
15a80 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69   sqlite3_index_i
15a90 6e 66 6f 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  nfo structure...
15aa0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
15ab0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
15ac0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
15ad0 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64       /// A stand
15ae0 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72  ard SQLite retur
15af0 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  n code...       
15b00 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
15b10 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45  .        SQLiteE
15b20 72 72 6f 72 43 6f 64 65 20 78 42 65 73 74 49 6e  rrorCode xBestIn
15b30 64 65 78 28 0d 0a 20 20 20 20 20 20 20 20 20 20  dex(..          
15b40 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d    IntPtr pVtab,.
15b50 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
15b60 50 74 72 20 70 49 6e 64 65 78 0d 0a 20 20 20 20  Ptr pIndex..    
15b70 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20          );....  
15b80 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
15b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
15bd0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
15be0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
15bf0 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
15c00 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74      /// This met
15c10 68 6f 64 20 72 65 6c 65 61 73 65 73 20 61 20 63  hod releases a c
15c20 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20 61 20 76  onnection to a v
15c30 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 20 4f 6e  irtual table. On
15c40 6c 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  ly the..        
15c50 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 76 74 61 62  /// sqlite3_vtab
15c60 20 6f 62 6a 65 63 74 20 69 73 20 64 65 73 74 72   object is destr
15c70 6f 79 65 64 2e 20 54 68 65 20 76 69 72 74 75 61  oyed. The virtua
15c80 6c 20 74 61 62 6c 65 20 69 73 20 6e 6f 74 0d 0a  l table is not..
15c90 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 65 73 74          /// dest
15ca0 72 6f 79 65 64 20 61 6e 64 20 61 6e 79 20 62 61  royed and any ba
15cb0 63 6b 69 6e 67 20 73 74 6f 72 65 20 61 73 73 6f  cking store asso
15cc0 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20  ciated with the 
15cd0 76 69 72 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20  virtual table.. 
15ce0 20 20 20 20 20 20 20 2f 2f 2f 20 70 65 72 73 69         /// persi
15cf0 73 74 73 2e 20 54 68 69 73 20 6d 65 74 68 6f 64  sts. This method
15d00 20 75 6e 64 6f 65 73 20 74 68 65 20 77 6f 72 6b   undoes the work
15d10 20 6f 66 20 78 43 6f 6e 6e 65 63 74 2e 0d 0a 20   of xConnect... 
15d20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
15d30 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
15d40 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
15d50 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20  /// This method 
15d60 69 73 20 61 20 64 65 73 74 72 75 63 74 6f 72 20  is a destructor 
15d70 66 6f 72 20 61 20 63 6f 6e 6e 65 63 74 69 6f 6e  for a connection
15d80 20 74 6f 20 74 68 65 20 76 69 72 74 75 61 6c 20   to the virtual 
15d90 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20  table...        
15da0 2f 2f 2f 20 43 6f 6e 74 72 61 73 74 20 74 68 69  /// Contrast thi
15db0 73 20 6d 65 74 68 6f 64 20 77 69 74 68 20 78 44  s method with xD
15dc0 65 73 74 72 6f 79 2e 20 54 68 65 20 78 44 65 73  estroy. The xDes
15dd0 74 72 6f 79 20 69 73 20 61 20 64 65 73 74 72 75  troy is a destru
15de0 63 74 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ctor..        //
15df0 2f 20 66 6f 72 20 74 68 65 20 65 6e 74 69 72 65  / for the entire
15e00 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d   virtual table..
15e10 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
15e20 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
15e30 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
15e40 20 20 2f 2f 2f 20 54 68 65 20 78 44 69 73 63 6f    /// The xDisco
15e50 6e 6e 65 63 74 20 6d 65 74 68 6f 64 20 69 73 20  nnect method is 
15e60 72 65 71 75 69 72 65 64 20 66 6f 72 20 65 76 65  required for eve
15e70 72 79 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  ry virtual table
15e80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6d  ..        /// im
15e90 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2c 20 74 68  plementation, th
15ea0 6f 75 67 68 20 69 74 20 69 73 20 61 63 63 65 70  ough it is accep
15eb0 74 61 62 6c 65 20 66 6f 72 20 74 68 65 20 78 44  table for the xD
15ec0 69 73 63 6f 6e 6e 65 63 74 20 61 6e 64 0d 0a 20  isconnect and.. 
15ed0 20 20 20 20 20 20 20 2f 2f 2f 20 78 44 65 73 74         /// xDest
15ee0 72 6f 79 20 6d 65 74 68 6f 64 73 20 74 6f 20 62  roy methods to b
15ef0 65 20 74 68 65 20 73 61 6d 65 20 66 75 6e 63 74  e the same funct
15f00 69 6f 6e 20 69 66 20 74 68 61 74 20 6d 61 6b 65  ion if that make
15f10 73 20 73 65 6e 73 65 20 66 6f 72 0d 0a 20 20 20  s sense for..   
15f20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 70 61 72       /// the par
15f30 74 69 63 75 6c 61 72 20 76 69 72 74 75 61 6c 20  ticular virtual 
15f40 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20  table...        
15f50 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20  /// </para>..   
15f60 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
15f70 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
15f80 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
15f90 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  tab">..        /
15fa0 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f  // The native po
15fb0 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c  inter to the sql
15fc0 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65  ite3_vtab derive
15fd0 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20  d structure...  
15fe0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
15ff0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
16000 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
16010 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72     /// A standar
16020 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20  d SQLite return 
16030 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  code...        /
16040 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
16050 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72         SQLiteErr
16060 6f 72 43 6f 64 65 20 78 44 69 73 63 6f 6e 6e 65  orCode xDisconne
16070 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ct(..           
16080 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20   IntPtr pVtab.. 
16090 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d             );...
160a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
160b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
160c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
160d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
160e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
160f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
16100 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
16110 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20     /// <para>.. 
16120 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
16130 6d 65 74 68 6f 64 20 72 65 6c 65 61 73 65 73 20  method releases 
16140 61 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20  a connection to 
16150 61 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2c  a virtual table,
16160 20 6a 75 73 74 20 6c 69 6b 65 20 74 68 65 0d 0a   just like the..
16170 20 20 20 20 20 20 20 20 2f 2f 2f 20 78 44 69 73          /// xDis
16180 63 6f 6e 6e 65 63 74 20 6d 65 74 68 6f 64 2c 20  connect method, 
16190 61 6e 64 20 69 74 20 61 6c 73 6f 20 64 65 73 74  and it also dest
161a0 72 6f 79 73 20 74 68 65 20 75 6e 64 65 72 6c 79  roys the underly
161b0 69 6e 67 20 74 61 62 6c 65 0d 0a 20 20 20 20 20  ing table..     
161c0 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74     /// implement
161d0 61 74 69 6f 6e 2e 20 54 68 69 73 20 6d 65 74 68  ation. This meth
161e0 6f 64 20 75 6e 64 6f 65 73 20 74 68 65 20 77 6f  od undoes the wo
161f0 72 6b 20 6f 66 20 78 43 72 65 61 74 65 2e 0d 0a  rk of xCreate...
16200 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
16210 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
16220 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
16230 20 2f 2f 2f 20 54 68 65 20 78 44 69 73 63 6f 6e   /// The xDiscon
16240 6e 65 63 74 20 6d 65 74 68 6f 64 20 69 73 20 63  nect method is c
16250 61 6c 6c 65 64 20 77 68 65 6e 65 76 65 72 20 61  alled whenever a
16260 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
16270 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tion..        //
16280 2f 20 74 68 61 74 20 75 73 65 73 20 61 20 76 69  / that uses a vi
16290 72 74 75 61 6c 20 74 61 62 6c 65 20 69 73 20 63  rtual table is c
162a0 6c 6f 73 65 64 2e 20 54 68 65 20 78 44 65 73 74  losed. The xDest
162b0 72 6f 79 20 6d 65 74 68 6f 64 20 69 73 20 6f 6e  roy method is on
162c0 6c 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ly..        /// 
162d0 63 61 6c 6c 65 64 20 77 68 65 6e 20 61 20 44 52  called when a DR
162e0 4f 50 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65  OP TABLE stateme
162f0 6e 74 20 69 73 20 65 78 65 63 75 74 65 64 20 61  nt is executed a
16300 67 61 69 6e 73 74 20 74 68 65 20 76 69 72 74 75  gainst the virtu
16310 61 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  al..        /// 
16320 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20  table...        
16330 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20  /// </para>..   
16340 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
16350 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
16360 20 78 44 65 73 74 72 6f 79 20 6d 65 74 68 6f 64   xDestroy method
16370 20 69 73 20 72 65 71 75 69 72 65 64 20 66 6f 72   is required for
16380 20 65 76 65 72 79 20 76 69 72 74 75 61 6c 20 74   every virtual t
16390 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  able..        //
163a0 2f 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  / implementation
163b0 2c 20 74 68 6f 75 67 68 20 69 74 20 69 73 20 61  , though it is a
163c0 63 63 65 70 74 61 62 6c 65 20 66 6f 72 20 74 68  cceptable for th
163d0 65 20 78 44 69 73 63 6f 6e 6e 65 63 74 20 61 6e  e xDisconnect an
163e0 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 78  d..        /// x
163f0 44 65 73 74 72 6f 79 20 6d 65 74 68 6f 64 73 20  Destroy methods 
16400 74 6f 20 62 65 20 74 68 65 20 73 61 6d 65 20 66  to be the same f
16410 75 6e 63 74 69 6f 6e 20 69 66 20 74 68 61 74 20  unction if that 
16420 6d 61 6b 65 73 20 73 65 6e 73 65 20 66 6f 72 0d  makes sense for.
16430 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  .        /// the
16440 20 70 61 72 74 69 63 75 6c 61 72 20 76 69 72 74   particular virt
16450 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
16460 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d      /// </para>.
16470 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
16480 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
16490 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
164a0 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20  ="pVtab">..     
164b0 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
164c0 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
164d0 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65   sqlite3_vtab de
164e0 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2e  rived structure.
164f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
16500 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
16510 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
16520 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61         /// A sta
16530 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74  ndard SQLite ret
16540 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  urn code...     
16550 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
16560 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  >..        SQLit
16570 65 45 72 72 6f 72 43 6f 64 65 20 78 44 65 73 74  eErrorCode xDest
16580 72 6f 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  roy(..          
16590 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a    IntPtr pVtab..
165a0 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a              );..
165b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
165c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
165d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
165e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
165f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16600 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
16610 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
16620 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a      /// <para>..
16630 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
16640 78 4f 70 65 6e 20 6d 65 74 68 6f 64 20 63 72 65  xOpen method cre
16650 61 74 65 73 20 61 20 6e 65 77 20 63 75 72 73 6f  ates a new curso
16660 72 20 75 73 65 64 20 66 6f 72 20 61 63 63 65 73  r used for acces
16670 73 69 6e 67 20 28 72 65 61 64 0d 0a 20 20 20 20  sing (read..    
16680 20 20 20 20 2f 2f 2f 20 61 6e 64 2f 6f 72 20 77      /// and/or w
16690 72 69 74 69 6e 67 29 20 61 20 76 69 72 74 75 61  riting) a virtua
166a0 6c 20 74 61 62 6c 65 2e 20 41 20 73 75 63 63 65  l table. A succe
166b0 73 73 66 75 6c 20 69 6e 76 6f 63 61 74 69 6f 6e  ssful invocation
166c0 20 6f 66 20 74 68 69 73 0d 0a 20 20 20 20 20 20   of this..      
166d0 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 20 77 69 6c    /// method wil
166e0 6c 20 61 6c 6c 6f 63 61 74 65 20 74 68 65 20 6d  l allocate the m
166f0 65 6d 6f 72 79 20 66 6f 72 20 74 68 65 20 73 71  emory for the sq
16700 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f  lite3_vtab_curso
16710 72 20 28 6f 72 20 61 0d 0a 20 20 20 20 20 20 20  r (or a..       
16720 20 2f 2f 2f 20 73 75 62 63 6c 61 73 73 29 2c 20   /// subclass), 
16730 69 6e 69 74 69 61 6c 69 7a 65 20 74 68 65 20 6e  initialize the n
16740 65 77 20 6f 62 6a 65 63 74 2c 20 61 6e 64 20 6d  ew object, and m
16750 61 6b 65 20 2a 70 70 43 75 72 73 6f 72 20 70 6f  ake *ppCursor po
16760 69 6e 74 20 74 6f 0d 0a 20 20 20 20 20 20 20 20  int to..        
16770 2f 2f 2f 20 74 68 65 20 6e 65 77 20 6f 62 6a 65  /// the new obje
16780 63 74 2e 20 54 68 65 20 73 75 63 63 65 73 73 66  ct. The successf
16790 75 6c 20 63 61 6c 6c 20 74 68 65 6e 20 72 65 74  ul call then ret
167a0 75 72 6e 73 20 53 51 4c 49 54 45 5f 4f 4b 2e 0d  urns SQLITE_OK..
167b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
167c0 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
167d0 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
167e0 20 20 2f 2f 2f 20 46 6f 72 20 65 76 65 72 79 20    /// For every 
167f0 73 75 63 63 65 73 73 66 75 6c 20 63 61 6c 6c 20  successful call 
16800 74 6f 20 74 68 69 73 20 6d 65 74 68 6f 64 2c 20  to this method, 
16810 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
16820 77 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f  will..        //
16830 2f 20 6c 61 74 65 72 20 69 6e 76 6f 6b 65 20 74  / later invoke t
16840 68 65 20 78 43 6c 6f 73 65 20 6d 65 74 68 6f 64  he xClose method
16850 20 74 6f 20 64 65 73 74 72 6f 79 20 74 68 65 20   to destroy the 
16860 61 6c 6c 6f 63 61 74 65 64 20 63 75 72 73 6f 72  allocated cursor
16870 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
16880 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
16890 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
168a0 20 20 20 20 2f 2f 2f 20 54 68 65 20 78 4f 70 65      /// The xOpe
168b0 6e 20 6d 65 74 68 6f 64 20 6e 65 65 64 20 6e 6f  n method need no
168c0 74 20 69 6e 69 74 69 61 6c 69 7a 65 20 74 68 65  t initialize the
168d0 20 70 56 74 61 62 20 66 69 65 6c 64 20 6f 66 20   pVtab field of 
168e0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
168f0 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75   sqlite3_vtab_cu
16900 72 73 6f 72 20 73 74 72 75 63 74 75 72 65 2e 20  rsor structure. 
16910 54 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  The SQLite core 
16920 77 69 6c 6c 20 74 61 6b 65 20 63 61 72 65 20 6f  will take care o
16930 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  f..        /// t
16940 68 61 74 20 63 68 6f 72 65 20 61 75 74 6f 6d 61  hat chore automa
16950 74 69 63 61 6c 6c 79 2e 0d 0a 20 20 20 20 20 20  tically...      
16960 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
16970 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
16980 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
16990 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 69   virtual table i
169a0 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6d 75  mplementation mu
169b0 73 74 20 62 65 20 61 62 6c 65 20 74 6f 20 73 75  st be able to su
169c0 70 70 6f 72 74 20 61 6e 20 61 72 62 69 74 72 61  pport an arbitra
169d0 72 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ry..        /// 
169e0 6e 75 6d 62 65 72 20 6f 66 20 73 69 6d 75 6c 74  number of simult
169f0 61 6e 65 6f 75 73 6c 79 20 6f 70 65 6e 20 63 75  aneously open cu
16a00 72 73 6f 72 73 2e 0d 0a 20 20 20 20 20 20 20 20  rsors...        
16a10 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20  /// </para>..   
16a20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
16a30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 57 68 65  .        /// Whe
16a40 6e 20 69 6e 69 74 69 61 6c 6c 79 20 6f 70 65 6e  n initially open
16a50 65 64 2c 20 74 68 65 20 63 75 72 73 6f 72 20 69  ed, the cursor i
16a60 73 20 69 6e 20 61 6e 20 75 6e 64 65 66 69 6e 65  s in an undefine
16a70 64 20 73 74 61 74 65 2e 20 54 68 65 0d 0a 20 20  d state. The..  
16a80 20 20 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74 65        /// SQLite
16a90 20 63 6f 72 65 20 77 69 6c 6c 20 69 6e 76 6f 6b   core will invok
16aa0 65 20 74 68 65 20 78 46 69 6c 74 65 72 20 6d 65  e the xFilter me
16ab0 74 68 6f 64 20 6f 6e 20 74 68 65 20 63 75 72 73  thod on the curs
16ac0 6f 72 20 70 72 69 6f 72 20 74 6f 0d 0a 20 20 20  or prior to..   
16ad0 20 20 20 20 20 2f 2f 2f 20 61 6e 79 20 61 74 74       /// any att
16ae0 65 6d 70 74 20 74 6f 20 70 6f 73 69 74 69 6f 6e  empt to position
16af0 20 6f 72 20 72 65 61 64 20 66 72 6f 6d 20 74 68   or read from th
16b00 65 20 63 75 72 73 6f 72 2e 0d 0a 20 20 20 20 20  e cursor...     
16b10 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a     /// </para>..
16b20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
16b30 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
16b40 54 68 65 20 78 4f 70 65 6e 20 6d 65 74 68 6f 64  The xOpen method
16b50 20 69 73 20 72 65 71 75 69 72 65 64 20 66 6f 72   is required for
16b60 20 65 76 65 72 79 20 76 69 72 74 75 61 6c 20 74   every virtual t
16b70 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  able..        //
16b80 2f 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  / implementation
16b90 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
16ba0 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
16bb0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
16bc0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
16bd0 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e  am name="pVtab">
16be0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
16bf0 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
16c00 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
16c10 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74 72  vtab derived str
16c20 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ucture...       
16c30 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
16c40 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
16c50 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22  m name="pCursor"
16c60 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55  >..        /// U
16c70 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69  pon success, thi
16c80 73 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74  s parameter must
16c90 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20   be modified to 
16ca0 70 6f 69 6e 74 20 74 6f 20 74 68 65 20 6e 65 77  point to the new
16cb0 6c 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ly..        /// 
16cc0 63 72 65 61 74 65 64 20 6e 61 74 69 76 65 20 73  created native s
16cd0 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73  qlite3_vtab_curs
16ce0 6f 72 20 64 65 72 69 76 65 64 20 73 74 72 75 63  or derived struc
16cf0 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ture...        /
16d00 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
16d10 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
16d20 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
16d30 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74  A standard SQLit
16d40 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a  e return code...
16d50 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
16d60 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
16d70 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
16d80 78 4f 70 65 6e 28 0d 0a 20 20 20 20 20 20 20 20  xOpen(..        
16d90 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
16da0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ,..            r
16db0 65 66 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f  ef IntPtr pCurso
16dc0 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  r..            )
16dd0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
16de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16e20 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
16e30 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
16e40 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
16e50 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
16e60 68 65 20 78 43 6c 6f 73 65 20 6d 65 74 68 6f 64  he xClose method
16e70 20 63 6c 6f 73 65 73 20 61 20 63 75 72 73 6f 72   closes a cursor
16e80 20 70 72 65 76 69 6f 75 73 6c 79 20 6f 70 65 6e   previously open
16e90 65 64 20 62 79 20 78 4f 70 65 6e 2e 20 54 68 65  ed by xOpen. The
16ea0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 51  ..        /// SQ
16eb0 4c 69 74 65 20 63 6f 72 65 20 77 69 6c 6c 20 61  Lite core will a
16ec0 6c 77 61 79 73 20 63 61 6c 6c 20 78 43 6c 6f 73  lways call xClos
16ed0 65 20 6f 6e 63 65 20 66 6f 72 20 65 61 63 68 20  e once for each 
16ee0 63 75 72 73 6f 72 20 6f 70 65 6e 65 64 0d 0a 20  cursor opened.. 
16ef0 20 20 20 20 20 20 20 2f 2f 2f 20 75 73 69 6e 67         /// using
16f00 20 78 4f 70 65 6e 2e 0d 0a 20 20 20 20 20 20 20   xOpen...       
16f10 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
16f20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
16f30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
16f40 69 73 20 6d 65 74 68 6f 64 20 6d 75 73 74 20 72  is method must r
16f50 65 6c 65 61 73 65 20 61 6c 6c 20 72 65 73 6f 75  elease all resou
16f60 72 63 65 73 20 61 6c 6c 6f 63 61 74 65 64 20 62  rces allocated b
16f70 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  y the..        /
16f80 2f 2f 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67  // corresponding
16f90 20 78 4f 70 65 6e 20 63 61 6c 6c 2e 20 54 68 65   xOpen call. The
16fa0 20 72 6f 75 74 69 6e 65 20 77 69 6c 6c 20 6e 6f   routine will no
16fb0 74 20 62 65 20 63 61 6c 6c 65 64 20 61 67 61 69  t be called agai
16fc0 6e 20 65 76 65 6e 0d 0a 20 20 20 20 20 20 20 20  n even..        
16fd0 2f 2f 2f 20 69 66 20 69 74 20 72 65 74 75 72 6e  /// if it return
16fe0 73 20 61 6e 20 65 72 72 6f 72 2e 20 54 68 65 20  s an error. The 
16ff0 53 51 4c 69 74 65 20 63 6f 72 65 20 77 69 6c 6c  SQLite core will
17000 20 6e 6f 74 20 75 73 65 20 74 68 65 0d 0a 20 20   not use the..  
17010 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65        /// sqlite
17020 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 61 67  3_vtab_cursor ag
17030 61 69 6e 20 61 66 74 65 72 20 69 74 20 68 61 73  ain after it has
17040 20 62 65 65 6e 20 63 6c 6f 73 65 64 2e 0d 0a 20   been closed... 
17050 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
17060 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
17070 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
17080 2f 2f 2f 20 54 68 65 20 78 43 6c 6f 73 65 20 6d  /// The xClose m
17090 65 74 68 6f 64 20 69 73 20 72 65 71 75 69 72 65  ethod is require
170a0 64 20 66 6f 72 20 65 76 65 72 79 20 76 69 72 74  d for every virt
170b0 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20 20  ual table..     
170c0 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74     /// implement
170d0 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ation...        
170e0 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20  /// </para>..   
170f0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
17100 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
17110 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43   <param name="pC
17120 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20  ursor">..       
17130 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
17140 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73  pointer to the s
17150 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73  qlite3_vtab_curs
17160 6f 72 20 64 65 72 69 76 65 64 20 73 74 72 75 63  or derived struc
17170 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ture...        /
17180 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
17190 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
171a0 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
171b0 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74  A standard SQLit
171c0 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a  e return code...
171d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
171e0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
171f0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
17200 78 43 6c 6f 73 65 28 0d 0a 20 20 20 20 20 20 20  xClose(..       
17210 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72       IntPtr pCur
17220 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20  sor..           
17230 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   );....        /
17240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17280 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
17290 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
172a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
172b0 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
172c0 20 54 68 69 73 20 6d 65 74 68 6f 64 20 62 65 67   This method beg
172d0 69 6e 73 20 61 20 73 65 61 72 63 68 20 6f 66 20  ins a search of 
172e0 61 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e  a virtual table.
172f0 20 54 68 65 20 66 69 72 73 74 20 61 72 67 75 6d   The first argum
17300 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ent..        ///
17310 20 69 73 20 61 20 63 75 72 73 6f 72 20 6f 70 65   is a cursor ope
17320 6e 65 64 20 62 79 20 78 4f 70 65 6e 2e 20 54 68  ned by xOpen. Th
17330 65 20 6e 65 78 74 20 74 77 6f 20 61 72 67 75 6d  e next two argum
17340 65 6e 74 20 64 65 66 69 6e 65 20 61 0d 0a 20 20  ent define a..  
17350 20 20 20 20 20 20 2f 2f 2f 20 70 61 72 74 69 63        /// partic
17360 75 6c 61 72 20 73 65 61 72 63 68 20 69 6e 64 65  ular search inde
17370 78 20 70 72 65 76 69 6f 75 73 6c 79 20 63 68 6f  x previously cho
17380 73 65 6e 20 62 79 20 78 42 65 73 74 49 6e 64 65  sen by xBestInde
17390 78 2e 20 54 68 65 0d 0a 20 20 20 20 20 20 20 20  x. The..        
173a0 2f 2f 2f 20 73 70 65 63 69 66 69 63 20 6d 65 61  /// specific mea
173b0 6e 69 6e 67 73 20 6f 66 20 69 64 78 4e 75 6d 20  nings of idxNum 
173c0 61 6e 64 20 69 64 78 53 74 72 20 61 72 65 20 75  and idxStr are u
173d0 6e 69 6d 70 6f 72 74 61 6e 74 20 61 73 20 6c 6f  nimportant as lo
173e0 6e 67 20 61 73 0d 0a 20 20 20 20 20 20 20 20 2f  ng as..        /
173f0 2f 2f 20 78 46 69 6c 74 65 72 20 61 6e 64 20 78  // xFilter and x
17400 42 65 73 74 49 6e 64 65 78 20 61 67 72 65 65 20  BestIndex agree 
17410 6f 6e 20 77 68 61 74 20 74 68 61 74 20 6d 65 61  on what that mea
17420 6e 69 6e 67 20 69 73 2e 0d 0a 20 20 20 20 20 20  ning is...      
17430 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
17440 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
17450 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
17460 68 65 20 78 42 65 73 74 49 6e 64 65 78 20 66 75  he xBestIndex fu
17470 6e 63 74 69 6f 6e 20 6d 61 79 20 68 61 76 65 20  nction may have 
17480 72 65 71 75 65 73 74 65 64 20 74 68 65 20 76 61  requested the va
17490 6c 75 65 73 20 6f 66 20 63 65 72 74 61 69 6e 0d  lues of certain.
174a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 65 78 70  .        /// exp
174b0 72 65 73 73 69 6f 6e 73 20 75 73 69 6e 67 20 74  ressions using t
174c0 68 65 20 61 43 6f 6e 73 74 72 61 69 6e 74 55 73  he aConstraintUs
174d0 61 67 65 5b 5d 2e 61 72 67 76 49 6e 64 65 78 20  age[].argvIndex 
174e0 76 61 6c 75 65 73 20 6f 66 20 74 68 65 0d 0a 20  values of the.. 
174f0 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74         /// sqlit
17500 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 20 73 74  e3_index_info st
17510 72 75 63 74 75 72 65 2e 20 54 68 6f 73 65 20 76  ructure. Those v
17520 61 6c 75 65 73 20 61 72 65 20 70 61 73 73 65 64  alues are passed
17530 20 74 6f 20 78 46 69 6c 74 65 72 0d 0a 20 20 20   to xFilter..   
17540 20 20 20 20 20 2f 2f 2f 20 75 73 69 6e 67 20 74       /// using t
17550 68 65 20 61 72 67 63 20 61 6e 64 20 61 72 67 76  he argc and argv
17560 20 70 61 72 61 6d 65 74 65 72 73 2e 0d 0a 20 20   parameters...  
17570 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
17580 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
17590 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
175a0 2f 2f 20 49 66 20 74 68 65 20 76 69 72 74 75 61  // If the virtua
175b0 6c 20 74 61 62 6c 65 20 63 6f 6e 74 61 69 6e 73  l table contains
175c0 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 72 6f 77   one or more row
175d0 73 20 74 68 61 74 20 6d 61 74 63 68 20 74 68 65  s that match the
175e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 65  ..        /// se
175f0 61 72 63 68 20 63 72 69 74 65 72 69 61 2c 20 74  arch criteria, t
17600 68 65 6e 20 74 68 65 20 63 75 72 73 6f 72 20 6d  hen the cursor m
17610 75 73 74 20 62 65 20 6c 65 66 74 20 70 6f 69 6e  ust be left poin
17620 74 20 61 74 20 74 68 65 20 66 69 72 73 74 0d 0a  t at the first..
17630 20 20 20 20 20 20 20 20 2f 2f 2f 20 72 6f 77 2e          /// row.
17640 20 53 75 62 73 65 71 75 65 6e 74 20 63 61 6c 6c   Subsequent call
17650 73 20 74 6f 20 78 45 6f 66 20 6d 75 73 74 20 72  s to xEof must r
17660 65 74 75 72 6e 20 66 61 6c 73 65 20 28 7a 65 72  eturn false (zer
17670 6f 29 2e 20 49 66 20 74 68 65 72 65 0d 0a 20 20  o). If there..  
17680 20 20 20 20 20 20 2f 2f 2f 20 61 72 65 20 6e 6f        /// are no
17690 20 72 6f 77 73 20 6d 61 74 63 68 2c 20 74 68 65   rows match, the
176a0 6e 20 74 68 65 20 63 75 72 73 6f 72 20 6d 75 73  n the cursor mus
176b0 74 20 62 65 20 6c 65 66 74 20 69 6e 20 61 20 73  t be left in a s
176c0 74 61 74 65 20 74 68 61 74 0d 0a 20 20 20 20 20  tate that..     
176d0 20 20 20 2f 2f 2f 20 77 69 6c 6c 20 63 61 75 73     /// will caus
176e0 65 20 74 68 65 20 78 45 6f 66 20 74 6f 20 72 65  e the xEof to re
176f0 74 75 72 6e 20 74 72 75 65 20 28 6e 6f 6e 2d 7a  turn true (non-z
17700 65 72 6f 29 2e 20 54 68 65 20 53 51 4c 69 74 65  ero). The SQLite
17710 20 65 6e 67 69 6e 65 0d 0a 20 20 20 20 20 20 20   engine..       
17720 20 2f 2f 2f 20 77 69 6c 6c 20 75 73 65 20 74 68   /// will use th
17730 65 20 78 43 6f 6c 75 6d 6e 20 61 6e 64 20 78 52  e xColumn and xR
17740 6f 77 69 64 20 6d 65 74 68 6f 64 73 20 74 6f 20  owid methods to 
17750 61 63 63 65 73 73 20 74 68 61 74 20 72 6f 77 20  access that row 
17760 63 6f 6e 74 65 6e 74 2e 0d 0a 20 20 20 20 20 20  content...      
17770 20 20 2f 2f 2f 20 54 68 65 20 78 4e 65 78 74 20    /// The xNext 
17780 6d 65 74 68 6f 64 20 77 69 6c 6c 20 62 65 20 75  method will be u
17790 73 65 64 20 74 6f 20 61 64 76 61 6e 63 65 20 74  sed to advance t
177a0 6f 20 74 68 65 20 6e 65 78 74 20 72 6f 77 2e 0d  o the next row..
177b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
177c0 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
177d0 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
177e0 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
177f0 64 20 6d 75 73 74 20 72 65 74 75 72 6e 20 53 51  d must return SQ
17800 4c 49 54 45 5f 4f 4b 20 69 66 20 73 75 63 63 65  LITE_OK if succe
17810 73 73 66 75 6c 2c 20 6f 72 20 61 6e 20 73 71 6c  ssful, or an sql
17820 69 74 65 20 65 72 72 6f 72 0d 0a 20 20 20 20 20  ite error..     
17830 20 20 20 2f 2f 2f 20 63 6f 64 65 20 69 66 20 61     /// code if a
17840 6e 20 65 72 72 6f 72 20 6f 63 63 75 72 73 2e 0d  n error occurs..
17850 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
17860 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
17870 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
17880 20 20 2f 2f 2f 20 54 68 65 20 78 46 69 6c 74 65    /// The xFilte
17890 72 20 6d 65 74 68 6f 64 20 69 73 20 72 65 71 75  r method is requ
178a0 69 72 65 64 20 66 6f 72 20 65 76 65 72 79 20 76  ired for every v
178b0 69 72 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20  irtual table..  
178c0 20 20 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d        /// implem
178d0 65 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  entation...     
178e0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a     /// </para>..
178f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
17900 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
17910 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
17920 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20  "pCursor">..    
17930 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
17940 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
17950 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63  e sqlite3_vtab_c
17960 75 72 73 6f 72 20 64 65 72 69 76 65 64 20 73 74  ursor derived st
17970 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  ructure...      
17980 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
17990 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
179a0 61 6d 20 6e 61 6d 65 3d 22 69 64 78 4e 75 6d 22  am name="idxNum"
179b0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
179c0 75 6d 62 65 72 20 75 73 65 64 20 74 6f 20 68 65  umber used to he
179d0 6c 70 20 69 64 65 6e 74 69 66 79 20 74 68 65 20  lp identify the 
179e0 73 65 6c 65 63 74 65 64 20 69 6e 64 65 78 2e 0d  selected index..
179f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
17a00 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
17a10 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
17a20 69 64 78 53 74 72 22 3e 0d 0a 20 20 20 20 20 20  idxStr">..      
17a30 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
17a40 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
17a50 55 54 46 2d 38 20 65 6e 63 6f 64 65 64 20 73 74  UTF-8 encoded st
17a60 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20  ring containing 
17a70 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
17a80 20 73 74 72 69 6e 67 20 75 73 65 64 20 74 6f 20   string used to 
17a90 68 65 6c 70 20 69 64 65 6e 74 69 66 79 20 74 68  help identify th
17aa0 65 20 73 65 6c 65 63 74 65 64 20 69 6e 64 65 78  e selected index
17ab0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
17ac0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
17ad0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
17ae0 3d 22 61 72 67 63 22 3e 0d 0a 20 20 20 20 20 20  ="argc">..      
17af0 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72    /// The number
17b00 20 6f 66 20 6e 61 74 69 76 65 20 70 6f 69 6e 74   of native point
17b10 65 72 73 20 74 6f 20 73 71 6c 69 74 65 33 5f 76  ers to sqlite3_v
17b20 61 6c 75 65 20 73 74 72 75 63 74 75 72 65 73 20  alue structures 
17b30 73 70 65 63 69 66 69 65 64 0d 0a 20 20 20 20 20  specified..     
17b40 20 20 20 2f 2f 2f 20 69 6e 20 3c 70 61 72 61 6d     /// in <param
17b50 72 65 66 20 6e 61 6d 65 3d 22 61 72 67 76 22 20  ref name="argv" 
17b60 2f 3e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  />...        ///
17b70 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
17b80 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
17b90 6d 65 3d 22 61 72 67 76 22 3e 0d 0a 20 20 20 20  me="argv">..    
17ba0 20 20 20 20 2f 2f 2f 20 41 6e 20 61 72 72 61 79      /// An array
17bb0 20 6f 66 20 6e 61 74 69 76 65 20 70 6f 69 6e 74   of native point
17bc0 65 72 73 20 74 6f 20 73 71 6c 69 74 65 33 5f 76  ers to sqlite3_v
17bd0 61 6c 75 65 20 73 74 72 75 63 74 75 72 65 73 20  alue structures 
17be0 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20 20 20  containing..    
17bf0 20 20 20 20 2f 2f 2f 20 66 69 6c 74 65 72 69 6e      /// filterin
17c00 67 20 63 72 69 74 65 72 69 61 20 66 6f 72 20 74  g criteria for t
17c10 68 65 20 73 65 6c 65 63 74 65 64 20 69 6e 64 65  he selected inde
17c20 78 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  x...        /// 
17c30 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
17c40 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
17c50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73  .        /// A s
17c60 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72  tandard SQLite r
17c70 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20  eturn code...   
17c80 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
17c90 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c  ns>..        SQL
17ca0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 46 69  iteErrorCode xFi
17cb0 6c 74 65 72 28 0d 0a 20 20 20 20 20 20 20 20 20  lter(..         
17cc0 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f     IntPtr pCurso
17cd0 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r,..            
17ce0 69 6e 74 20 69 64 78 4e 75 6d 2c 0d 0a 20 20 20  int idxNum,..   
17cf0 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
17d00 69 64 78 53 74 72 2c 0d 0a 20 20 20 20 20 20 20  idxStr,..       
17d10 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a       int argc,..
17d20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
17d30 74 72 20 61 72 67 76 0d 0a 20 20 20 20 20 20 20  tr argv..       
17d40 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20       );....     
17d50 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
17d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
17da0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
17db0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
17dc0 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
17dd0 20 2f 2f 2f 20 54 68 65 20 78 4e 65 78 74 20 6d   /// The xNext m
17de0 65 74 68 6f 64 20 61 64 76 61 6e 63 65 73 20 61  ethod advances a
17df0 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 63   virtual table c
17e00 75 72 73 6f 72 20 74 6f 20 74 68 65 20 6e 65 78  ursor to the nex
17e10 74 20 72 6f 77 20 6f 66 0d 0a 20 20 20 20 20 20  t row of..      
17e20 20 20 2f 2f 2f 20 61 20 72 65 73 75 6c 74 20 73    /// a result s
17e30 65 74 20 69 6e 69 74 69 61 74 65 64 20 62 79 20  et initiated by 
17e40 78 46 69 6c 74 65 72 2e 20 49 66 20 74 68 65 20  xFilter. If the 
17e50 63 75 72 73 6f 72 20 69 73 20 61 6c 72 65 61 64  cursor is alread
17e60 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70  y..        /// p
17e70 6f 69 6e 74 69 6e 67 20 61 74 20 74 68 65 20 6c  ointing at the l
17e80 61 73 74 20 72 6f 77 20 77 68 65 6e 20 74 68 69  ast row when thi
17e90 73 20 72 6f 75 74 69 6e 65 20 69 73 20 63 61 6c  s routine is cal
17ea0 6c 65 64 2c 20 74 68 65 6e 20 74 68 65 0d 0a 20  led, then the.. 
17eb0 20 20 20 20 20 20 20 2f 2f 2f 20 63 75 72 73 6f         /// curso
17ec0 72 20 6e 6f 20 6c 6f 6e 67 65 72 20 70 6f 69 6e  r no longer poin
17ed0 74 73 20 74 6f 20 76 61 6c 69 64 20 64 61 74 61  ts to valid data
17ee0 20 61 6e 64 20 61 20 73 75 62 73 65 71 75 65 6e   and a subsequen
17ef0 74 20 63 61 6c 6c 20 74 6f 20 74 68 65 0d 0a 20  t call to the.. 
17f00 20 20 20 20 20 20 20 2f 2f 2f 20 78 45 6f 66 20         /// xEof 
17f10 6d 65 74 68 6f 64 20 6d 75 73 74 20 72 65 74 75  method must retu
17f20 72 6e 20 74 72 75 65 20 28 6e 6f 6e 2d 7a 65 72  rn true (non-zer
17f30 6f 29 2e 20 49 66 20 74 68 65 20 63 75 72 73 6f  o). If the curso
17f40 72 20 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  r is..        //
17f50 2f 20 73 75 63 63 65 73 73 66 75 6c 6c 79 20 61  / successfully a
17f60 64 76 61 6e 63 65 64 20 74 6f 20 61 6e 6f 74 68  dvanced to anoth
17f70 65 72 20 72 6f 77 20 6f 66 20 63 6f 6e 74 65 6e  er row of conten
17f80 74 2c 20 74 68 65 6e 20 73 75 62 73 65 71 75 65  t, then subseque
17f90 6e 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  nt..        /// 
17fa0 63 61 6c 6c 73 20 74 6f 20 78 45 6f 66 20 6d 75  calls to xEof mu
17fb0 73 74 20 72 65 74 75 72 6e 20 66 61 6c 73 65 20  st return false 
17fc0 28 7a 65 72 6f 29 2e 0d 0a 20 20 20 20 20 20 20  (zero)...       
17fd0 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
17fe0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
17ff0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
18000 69 73 20 6d 65 74 68 6f 64 20 6d 75 73 74 20 72  is method must r
18010 65 74 75 72 6e 20 53 51 4c 49 54 45 5f 4f 4b 20  eturn SQLITE_OK 
18020 69 66 20 73 75 63 63 65 73 73 66 75 6c 2c 20 6f  if successful, o
18030 72 20 61 6e 20 73 71 6c 69 74 65 20 65 72 72 6f  r an sqlite erro
18040 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  r..        /// c
18050 6f 64 65 20 69 66 20 61 6e 20 65 72 72 6f 72 20  ode if an error 
18060 6f 63 63 75 72 73 2e 0d 0a 20 20 20 20 20 20 20  occurs...       
18070 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
18080 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
18090 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
180a0 65 20 78 4e 65 78 74 20 6d 65 74 68 6f 64 20 69  e xNext method i
180b0 73 20 72 65 71 75 69 72 65 64 20 66 6f 72 20 65  s required for e
180c0 76 65 72 79 20 76 69 72 74 75 61 6c 20 74 61 62  very virtual tab
180d0 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  le..        /// 
180e0 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d  implementation..
180f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
18100 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
18110 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
18120 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
18130 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e   name="pCursor">
18140 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
18150 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
18160 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
18170 76 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69  vtab_cursor deri
18180 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  ved structure...
18190 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
181a0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
181b0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
181c0 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64       /// A stand
181d0 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72  ard SQLite retur
181e0 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  n code...       
181f0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
18200 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45  .        SQLiteE
18210 72 72 6f 72 43 6f 64 65 20 78 4e 65 78 74 28 0d  rrorCode xNext(.
18220 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
18230 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20  Ptr pCursor..   
18240 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20           );.... 
18250 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
18260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
182a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
182b0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
182c0 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
182d0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 78 45 6f       /// The xEo
182e0 66 20 6d 65 74 68 6f 64 20 6d 75 73 74 20 72 65  f method must re
182f0 74 75 72 6e 20 66 61 6c 73 65 20 28 7a 65 72 6f  turn false (zero
18300 29 20 69 66 20 74 68 65 20 73 70 65 63 69 66 69  ) if the specifi
18310 65 64 20 63 75 72 73 6f 72 0d 0a 20 20 20 20 20  ed cursor..     
18320 20 20 20 2f 2f 2f 20 63 75 72 72 65 6e 74 6c 79     /// currently
18330 20 70 6f 69 6e 74 73 20 74 6f 20 61 20 76 61 6c   points to a val
18340 69 64 20 72 6f 77 20 6f 66 20 64 61 74 61 2c 20  id row of data, 
18350 6f 72 20 74 72 75 65 20 28 6e 6f 6e 2d 7a 65 72  or true (non-zer
18360 6f 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  o)..        /// 
18370 6f 74 68 65 72 77 69 73 65 2e 20 54 68 69 73 20  otherwise. This 
18380 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64  method is called
18390 20 62 79 20 74 68 65 20 53 51 4c 20 65 6e 67 69   by the SQL engi
183a0 6e 65 20 69 6d 6d 65 64 69 61 74 65 6c 79 0d 0a  ne immediately..
183b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 66 74 65          /// afte
183c0 72 20 65 61 63 68 20 78 46 69 6c 74 65 72 20 61  r each xFilter a
183d0 6e 64 20 78 4e 65 78 74 20 69 6e 76 6f 63 61 74  nd xNext invocat
183e0 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ion...        //
183f0 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20  / </para>..     
18400 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20     /// <para>.. 
18410 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 78         /// The x
18420 45 6f 66 20 6d 65 74 68 6f 64 20 69 73 20 72 65  Eof method is re
18430 71 75 69 72 65 64 20 66 6f 72 20 65 76 65 72 79  quired for every
18440 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 69   virtual table i
18450 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d 0a  mplementation...
18460 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
18470 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
18480 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
18490 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
184a0 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d  name="pCursor">.
184b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
184c0 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
184d0 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76  to the sqlite3_v
184e0 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69 76  tab_cursor deriv
184f0 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  ed structure... 
18500 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
18510 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
18520 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
18530 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
18540 20 69 66 20 6e 6f 20 6d 6f 72 65 20 72 6f 77 73   if no more rows
18550 20 61 72 65 20 61 76 61 69 6c 61 62 6c 65 3b 20   are available; 
18560 7a 65 72 6f 20 6f 74 68 65 72 77 69 73 65 2e 0d  zero otherwise..
18570 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
18580 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
18590 20 69 6e 74 20 78 45 6f 66 28 0d 0a 20 20 20 20   int xEof(..    
185a0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
185b0 43 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20 20  Cursor..        
185c0 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20      );....      
185d0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
185e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
185f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18610 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
18620 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
18630 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
18640 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
18650 2f 2f 2f 20 54 68 65 20 53 51 4c 69 74 65 20 63  /// The SQLite c
18660 6f 72 65 20 69 6e 76 6f 6b 65 73 20 74 68 69 73  ore invokes this
18670 20 6d 65 74 68 6f 64 20 69 6e 20 6f 72 64 65 72   method in order
18680 20 74 6f 20 66 69 6e 64 20 74 68 65 20 76 61 6c   to find the val
18690 75 65 20 66 6f 72 0d 0a 20 20 20 20 20 20 20 20  ue for..        
186a0 2f 2f 2f 20 74 68 65 20 4e 2d 74 68 20 63 6f 6c  /// the N-th col
186b0 75 6d 6e 20 6f 66 20 74 68 65 20 63 75 72 72 65  umn of the curre
186c0 6e 74 20 72 6f 77 2e 20 4e 20 69 73 20 7a 65 72  nt row. N is zer
186d0 6f 2d 62 61 73 65 64 20 73 6f 20 74 68 65 20 66  o-based so the f
186e0 69 72 73 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f  irst..        //
186f0 2f 20 63 6f 6c 75 6d 6e 20 69 73 20 6e 75 6d 62  / column is numb
18700 65 72 65 64 20 30 2e 20 54 68 65 20 78 43 6f 6c  ered 0. The xCol
18710 75 6d 6e 20 6d 65 74 68 6f 64 20 6d 61 79 20 72  umn method may r
18720 65 74 75 72 6e 20 69 74 73 20 72 65 73 75 6c 74  eturn its result
18730 20 62 61 63 6b 0d 0a 20 20 20 20 20 20 20 20 2f   back..        /
18740 2f 2f 20 74 6f 20 53 51 4c 69 74 65 20 75 73 69  // to SQLite usi
18750 6e 67 20 6f 6e 65 20 6f 66 20 74 68 65 20 66 6f  ng one of the fo
18760 6c 6c 6f 77 69 6e 67 20 69 6e 74 65 72 66 61 63  llowing interfac
18770 65 3a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e:..        /// 
18780 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
18790 20 2f 2f 2f 20 3c 63 6f 64 65 3e 0d 0a 20 20 20   /// <code>..   
187a0 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 73 71 6c       ///     sql
187b0 69 74 65 33 5f 72 65 73 75 6c 74 5f 62 6c 6f 62  ite3_result_blob
187c0 28 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ()..        /// 
187d0 20 20 20 20 73 71 6c 69 74 65 33 5f 72 65 73 75      sqlite3_resu
187e0 6c 74 5f 64 6f 75 62 6c 65 28 29 0d 0a 20 20 20  lt_double()..   
187f0 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 73 71 6c       ///     sql
18800 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 28  ite3_result_int(
18810 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20  )..        ///  
18820 20 20 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c     sqlite3_resul
18830 74 5f 69 6e 74 36 34 28 29 0d 0a 20 20 20 20 20  t_int64()..     
18840 20 20 20 2f 2f 2f 20 20 20 20 20 73 71 6c 69 74     ///     sqlit
18850 65 33 5f 72 65 73 75 6c 74 5f 6e 75 6c 6c 28 29  e3_result_null()
18860 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20  ..        ///   
18870 20 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74    sqlite3_result
18880 5f 74 65 78 74 28 29 0d 0a 20 20 20 20 20 20 20  _text()..       
18890 20 2f 2f 2f 20 20 20 20 20 73 71 6c 69 74 65 33   ///     sqlite3
188a0 5f 72 65 73 75 6c 74 5f 74 65 78 74 31 36 28 29  _result_text16()
188b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20  ..        ///   
188c0 20 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74    sqlite3_result
188d0 5f 74 65 78 74 31 36 6c 65 28 29 0d 0a 20 20 20  _text16le()..   
188e0 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 73 71 6c       ///     sql
188f0 69 74 65 33 5f 72 65 73 75 6c 74 5f 74 65 78 74  ite3_result_text
18900 31 36 62 65 28 29 0d 0a 20 20 20 20 20 20 20 20  16be()..        
18910 2f 2f 2f 20 20 20 20 20 73 71 6c 69 74 65 33 5f  ///     sqlite3_
18920 72 65 73 75 6c 74 5f 7a 65 72 6f 62 6c 6f 62 28  result_zeroblob(
18930 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  )..        /// <
18940 2f 63 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20 20  /code>..        
18950 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
18960 20 20 20 20 2f 2f 2f 20 49 66 20 74 68 65 20 78      /// If the x
18970 43 6f 6c 75 6d 6e 20 6d 65 74 68 6f 64 20 69 6d  Column method im
18980 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 63 61 6c  plementation cal
18990 6c 73 20 6e 6f 6e 65 20 6f 66 20 74 68 65 20 66  ls none of the f
189a0 75 6e 63 74 69 6f 6e 73 0d 0a 20 20 20 20 20 20  unctions..      
189b0 20 20 2f 2f 2f 20 61 62 6f 76 65 2c 20 74 68 65    /// above, the
189c0 6e 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74  n the value of t
189d0 68 65 20 63 6f 6c 75 6d 6e 20 64 65 66 61 75 6c  he column defaul
189e0 74 73 20 74 6f 20 61 6e 20 53 51 4c 20 4e 55 4c  ts to an SQL NUL
189f0 4c 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  L...        /// 
18a00 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
18a10 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
18a20 20 20 20 20 20 2f 2f 2f 20 54 6f 20 72 61 69 73       /// To rais
18a30 65 20 61 6e 20 65 72 72 6f 72 2c 20 74 68 65 20  e an error, the 
18a40 78 43 6f 6c 75 6d 6e 20 6d 65 74 68 6f 64 20 73  xColumn method s
18a50 68 6f 75 6c 64 20 75 73 65 20 6f 6e 65 20 6f 66  hould use one of
18a60 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
18a70 2f 20 72 65 73 75 6c 74 5f 74 65 78 74 28 29 20  / result_text() 
18a80 6d 65 74 68 6f 64 73 20 74 6f 20 73 65 74 20 74  methods to set t
18a90 68 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65  he error message
18aa0 20 74 65 78 74 2c 20 74 68 65 6e 20 72 65 74 75   text, then retu
18ab0 72 6e 20 61 6e 0d 0a 20 20 20 20 20 20 20 20 2f  rn an..        /
18ac0 2f 2f 20 61 70 70 72 6f 70 72 69 61 74 65 20 65  // appropriate e
18ad0 72 72 6f 72 20 63 6f 64 65 2e 20 54 68 65 20 78  rror code. The x
18ae0 43 6f 6c 75 6d 6e 20 6d 65 74 68 6f 64 20 6d 75  Column method mu
18af0 73 74 20 72 65 74 75 72 6e 20 53 51 4c 49 54 45  st return SQLITE
18b00 5f 4f 4b 20 6f 6e 0d 0a 20 20 20 20 20 20 20 20  _OK on..        
18b10 2f 2f 2f 20 73 75 63 63 65 73 73 2e 0d 0a 20 20  /// success...  
18b20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
18b30 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
18b40 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
18b50 2f 2f 20 54 68 65 20 78 43 6f 6c 75 6d 6e 20 6d  // The xColumn m
18b60 65 74 68 6f 64 20 69 73 20 72 65 71 75 69 72 65  ethod is require
18b70 64 20 66 6f 72 20 65 76 65 72 79 20 76 69 72 74  d for every virt
18b80 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20 20  ual table..     
18b90 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74     /// implement
18ba0 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ation...        
18bb0 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20  /// </para>..   
18bc0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
18bd0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
18be0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43   <param name="pC
18bf0 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20  ursor">..       
18c00 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
18c10 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73  pointer to the s
18c20 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73  qlite3_vtab_curs
18c30 6f 72 20 64 65 72 69 76 65 64 20 73 74 72 75 63  or derived struc
18c40 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ture...        /
18c50 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
18c60 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
18c70 6e 61 6d 65 3d 22 70 43 6f 6e 74 65 78 74 22 3e  name="pContext">
18c80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
18c90 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
18ca0 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
18cb0 63 6f 6e 74 65 78 74 20 73 74 72 75 63 74 75 72  context structur
18cc0 65 20 74 6f 20 62 65 20 75 73 65 64 0d 0a 20 20  e to be used..  
18cd0 20 20 20 20 20 20 2f 2f 2f 20 66 6f 72 20 72 65        /// for re
18ce0 74 75 72 6e 69 6e 67 20 74 68 65 20 73 70 65 63  turning the spec
18cf0 69 66 69 65 64 20 63 6f 6c 75 6d 6e 20 76 61 6c  ified column val
18d00 75 65 20 74 6f 20 74 68 65 20 53 51 4c 69 74 65  ue to the SQLite
18d10 20 63 6f 72 65 0d 0a 20 20 20 20 20 20 20 20 2f   core..        /
18d20 2f 2f 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  // library...   
18d30 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
18d40 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
18d50 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65  param name="inde
18d60 78 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  x">..        ///
18d70 20 54 68 65 20 7a 65 72 6f 2d 62 61 73 65 64 20   The zero-based 
18d80 69 6e 64 65 78 20 63 6f 72 72 65 73 70 6f 6e 64  index correspond
18d90 69 6e 67 20 74 6f 20 74 68 65 20 63 6f 6c 75 6d  ing to the colum
18da0 6e 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65  n containing the
18db0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 61  ..        /// va
18dc0 6c 75 65 20 74 6f 20 62 65 20 72 65 74 75 72 6e  lue to be return
18dd0 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
18de0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
18df0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
18e00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20  ..        /// A 
18e10 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20  standard SQLite 
18e20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20  return code...  
18e30 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
18e40 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51  rns>..        SQ
18e50 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43  LiteErrorCode xC
18e60 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20 20 20 20 20  olumn(..        
18e70 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73      IntPtr pCurs
18e80 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  or,..           
18e90 20 49 6e 74 50 74 72 20 70 43 6f 6e 74 65 78 74   IntPtr pContext
18ea0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ,..            i
18eb0 6e 74 20 69 6e 64 65 78 0d 0a 20 20 20 20 20 20  nt index..      
18ec0 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20        );....    
18ed0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
18ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
18f20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
18f30 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
18f40 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
18f50 20 20 2f 2f 2f 20 41 20 73 75 63 63 65 73 73 66    /// A successf
18f60 75 6c 20 69 6e 76 6f 63 61 74 69 6f 6e 20 6f 66  ul invocation of
18f70 20 74 68 69 73 20 6d 65 74 68 6f 64 20 77 69 6c   this method wil
18f80 6c 20 63 61 75 73 65 20 2a 70 52 6f 77 69 64 20  l cause *pRowid 
18f90 74 6f 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f  to be..        /
18fa0 2f 2f 20 66 69 6c 6c 65 64 20 77 69 74 68 20 74  // filled with t
18fb0 68 65 20 72 6f 77 69 64 20 6f 66 20 72 6f 77 20  he rowid of row 
18fc0 74 68 61 74 20 74 68 65 20 76 69 72 74 75 61 6c  that the virtual
18fd0 20 74 61 62 6c 65 20 63 75 72 73 6f 72 20 70 43   table cursor pC
18fe0 75 72 20 69 73 0d 0a 20 20 20 20 20 20 20 20 2f  ur is..        /
18ff0 2f 2f 20 63 75 72 72 65 6e 74 6c 79 20 70 6f 69  // currently poi
19000 6e 74 69 6e 67 20 61 74 2e 20 54 68 69 73 20 6d  nting at. This m
19010 65 74 68 6f 64 20 72 65 74 75 72 6e 73 20 53 51  ethod returns SQ
19020 4c 49 54 45 5f 4f 4b 20 6f 6e 20 73 75 63 63 65  LITE_OK on succe
19030 73 73 2e 20 49 74 0d 0a 20 20 20 20 20 20 20 20  ss. It..        
19040 2f 2f 2f 20 72 65 74 75 72 6e 73 20 61 6e 20 61  /// returns an a
19050 70 70 72 6f 70 72 69 61 74 65 20 65 72 72 6f 72  ppropriate error
19060 20 63 6f 64 65 20 6f 6e 20 66 61 69 6c 75 72 65   code on failure
19070 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
19080 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
19090 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
190a0 20 20 20 20 2f 2f 2f 20 54 68 65 20 78 52 6f 77      /// The xRow
190b0 69 64 20 6d 65 74 68 6f 64 20 69 73 20 72 65 71  id method is req
190c0 75 69 72 65 64 20 66 6f 72 20 65 76 65 72 79 20  uired for every 
190d0 76 69 72 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20  virtual table.. 
190e0 20 20 20 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65         /// imple
190f0 6d 65 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20  mentation...    
19100 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d      /// </para>.
19110 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
19120 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
19130 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
19140 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20  ="pCursor">..   
19150 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
19160 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  ive pointer to t
19170 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f  he sqlite3_vtab_
19180 63 75 72 73 6f 72 20 64 65 72 69 76 65 64 20 73  cursor derived s
19190 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20  tructure...     
191a0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
191b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
191c0 72 61 6d 20 6e 61 6d 65 3d 22 72 6f 77 49 64 22  ram name="rowId"
191d0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55  >..        /// U
191e0 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69  pon success, thi
191f0 73 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74  s parameter must
19200 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20   be modified to 
19210 63 6f 6e 74 61 69 6e 20 74 68 65 20 75 6e 69 71  contain the uniq
19220 75 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ue..        /// 
19230 69 6e 74 65 67 65 72 20 72 6f 77 20 69 64 65 6e  integer row iden
19240 74 69 66 69 65 72 20 66 6f 72 20 74 68 65 20 63  tifier for the c
19250 75 72 72 65 6e 74 20 72 6f 77 20 66 6f 72 20 74  urrent row for t
19260 68 65 20 73 70 65 63 69 66 69 65 64 20 63 75 72  he specified cur
19270 73 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  sor...        //
19280 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
19290 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
192a0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
192b0 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
192c0 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
192d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
192e0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53  urns>..        S
192f0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
19300 52 6f 77 49 64 28 0d 0a 20 20 20 20 20 20 20 20  RowId(..        
19310 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73      IntPtr pCurs
19320 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  or,..           
19330 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d   ref long rowId.
19340 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d  .            );.
19350 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
19360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
193a0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
193b0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
193c0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
193d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 6c 6c  .        /// All
193e0 20 63 68 61 6e 67 65 73 20 74 6f 20 61 20 76 69   changes to a vi
193f0 72 74 75 61 6c 20 74 61 62 6c 65 20 61 72 65 20  rtual table are 
19400 6d 61 64 65 20 75 73 69 6e 67 20 74 68 65 20 78  made using the x
19410 55 70 64 61 74 65 20 6d 65 74 68 6f 64 2e 0d 0a  Update method...
19420 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
19430 20 6f 6e 65 20 6d 65 74 68 6f 64 20 63 61 6e 20   one method can 
19440 62 65 20 75 73 65 64 20 74 6f 20 69 6e 73 65 72  be used to inser
19450 74 2c 20 64 65 6c 65 74 65 2c 20 6f 72 20 75 70  t, delete, or up
19460 64 61 74 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  date...        /
19470 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20  // </para>..    
19480 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a      /// <para>..
19490 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
194a0 61 72 67 63 20 70 61 72 61 6d 65 74 65 72 20 73  argc parameter s
194b0 70 65 63 69 66 69 65 73 20 74 68 65 20 6e 75 6d  pecifies the num
194c0 62 65 72 20 6f 66 20 65 6e 74 72 69 65 73 20 69  ber of entries i
194d0 6e 20 74 68 65 20 61 72 67 76 0d 0a 20 20 20 20  n the argv..    
194e0 20 20 20 20 2f 2f 2f 20 61 72 72 61 79 2e 20 54      /// array. T
194f0 68 65 20 76 61 6c 75 65 20 6f 66 20 61 72 67 63  he value of argc
19500 20 77 69 6c 6c 20 62 65 20 31 20 66 6f 72 20 61   will be 1 for a
19510 20 70 75 72 65 20 64 65 6c 65 74 65 20 6f 70 65   pure delete ope
19520 72 61 74 69 6f 6e 20 6f 72 0d 0a 20 20 20 20 20  ration or..     
19530 20 20 20 2f 2f 2f 20 4e 2b 32 20 66 6f 72 20 61     /// N+2 for a
19540 6e 20 69 6e 73 65 72 74 20 6f 72 20 72 65 70 6c  n insert or repl
19550 61 63 65 20 6f 72 20 75 70 64 61 74 65 20 77 68  ace or update wh
19560 65 72 65 20 4e 20 69 73 20 74 68 65 20 6e 75 6d  ere N is the num
19570 62 65 72 20 6f 66 0d 0a 20 20 20 20 20 20 20 20  ber of..        
19580 2f 2f 2f 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74  /// columns in t
19590 68 65 20 74 61 62 6c 65 2e 20 49 6e 20 74 68 65  he table. In the
195a0 20 70 72 65 76 69 6f 75 73 20 73 65 6e 74 65 6e   previous senten
195b0 63 65 2c 20 4e 20 69 6e 63 6c 75 64 65 73 20 61  ce, N includes a
195c0 6e 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ny..        /// 
195d0 68 69 64 64 65 6e 20 63 6f 6c 75 6d 6e 73 2e 0d  hidden columns..
195e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
195f0 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
19600 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
19610 20 20 2f 2f 2f 20 45 76 65 72 79 20 61 72 67 76    /// Every argv
19620 20 65 6e 74 72 79 20 77 69 6c 6c 20 68 61 76 65   entry will have
19630 20 61 20 6e 6f 6e 2d 4e 55 4c 4c 20 76 61 6c 75   a non-NULL valu
19640 65 20 69 6e 20 43 20 62 75 74 20 6d 61 79 20 63  e in C but may c
19650 6f 6e 74 61 69 6e 0d 0a 20 20 20 20 20 20 20 20  ontain..        
19660 2f 2f 2f 20 74 68 65 20 53 51 4c 20 76 61 6c 75  /// the SQL valu
19670 65 20 4e 55 4c 4c 2e 20 49 6e 20 6f 74 68 65 72  e NULL. In other
19680 20 77 6f 72 64 73 2c 20 69 74 20 69 73 20 61 6c   words, it is al
19690 77 61 79 73 20 74 72 75 65 20 74 68 61 74 0d 0a  ways true that..
196a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 72 67 76          /// argv
196b0 5b 69 5d 21 3d 30 20 66 6f 72 20 69 20 62 65 74  [i]!=0 for i bet
196c0 77 65 65 6e 20 30 20 61 6e 64 20 61 72 67 63 2d  ween 0 and argc-
196d0 31 2e 20 48 6f 77 65 76 65 72 2c 20 69 74 20 6d  1. However, it m
196e0 69 67 68 74 20 62 65 20 74 68 65 0d 0a 20 20 20  ight be the..   
196f0 20 20 20 20 20 2f 2f 2f 20 63 61 73 65 20 74 68       /// case th
19700 61 74 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  at sqlite3_value
19710 5f 74 79 70 65 28 61 72 67 76 5b 69 5d 29 3d 3d  _type(argv[i])==
19720 53 51 4c 49 54 45 5f 4e 55 4c 4c 2e 0d 0a 20 20  SQLITE_NULL...  
19730 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
19740 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
19750 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
19760 2f 2f 20 54 68 65 20 61 72 67 76 5b 30 5d 20 70  // The argv[0] p
19770 61 72 61 6d 65 74 65 72 20 69 73 20 74 68 65 20  arameter is the 
19780 72 6f 77 69 64 20 6f 66 20 61 20 72 6f 77 20 69  rowid of a row i
19790 6e 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  n the virtual ta
197a0 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ble..        ///
197b0 20 74 6f 20 62 65 20 64 65 6c 65 74 65 64 2e 20   to be deleted. 
197c0 49 66 20 61 72 67 76 5b 30 5d 20 69 73 20 61 6e  If argv[0] is an
197d0 20 53 51 4c 20 4e 55 4c 4c 2c 20 74 68 65 6e 20   SQL NULL, then 
197e0 6e 6f 20 64 65 6c 65 74 69 6f 6e 20 6f 63 63 75  no deletion occu
197f0 72 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  rs...        ///
19800 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20   </para>..      
19810 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20    /// <para>..  
19820 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 72        /// The ar
19830 67 76 5b 31 5d 20 70 61 72 61 6d 65 74 65 72 20  gv[1] parameter 
19840 69 73 20 74 68 65 20 72 6f 77 69 64 20 6f 66 20  is the rowid of 
19850 61 20 6e 65 77 20 72 6f 77 20 74 6f 20 62 65 20  a new row to be 
19860 69 6e 73 65 72 74 65 64 20 69 6e 74 6f 0d 0a 20  inserted into.. 
19870 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 76         /// the v
19880 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 20 49 66  irtual table. If
19890 20 61 72 67 76 5b 31 5d 20 69 73 20 61 6e 20 53   argv[1] is an S
198a0 51 4c 20 4e 55 4c 4c 2c 20 74 68 65 6e 20 74 68  QL NULL, then th
198b0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  e..        /// i
198c0 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6d 75  mplementation mu
198d0 73 74 20 63 68 6f 6f 73 65 20 61 20 72 6f 77 69  st choose a rowi
198e0 64 20 66 6f 72 20 74 68 65 20 6e 65 77 6c 79 20  d for the newly 
198f0 69 6e 73 65 72 74 65 64 20 72 6f 77 2e 0d 0a 20  inserted row... 
19900 20 20 20 20 20 20 20 2f 2f 2f 20 53 75 62 73 65         /// Subse
19910 71 75 65 6e 74 20 61 72 67 76 5b 5d 20 65 6e 74  quent argv[] ent
19920 72 69 65 73 20 63 6f 6e 74 61 69 6e 20 76 61 6c  ries contain val
19930 75 65 73 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d  ues of the colum
19940 6e 73 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20  ns of the..     
19950 20 20 20 2f 2f 2f 20 76 69 72 74 75 61 6c 20 74     /// virtual t
19960 61 62 6c 65 2c 20 69 6e 20 74 68 65 20 6f 72 64  able, in the ord
19970 65 72 20 74 68 61 74 20 74 68 65 20 63 6f 6c 75  er that the colu
19980 6d 6e 73 20 77 65 72 65 20 64 65 63 6c 61 72 65  mns were declare
19990 64 2e 20 54 68 65 0d 0a 20 20 20 20 20 20 20 20  d. The..        
199a0 2f 2f 2f 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f  /// number of co
199b0 6c 75 6d 6e 73 20 77 69 6c 6c 20 6d 61 74 63 68  lumns will match
199c0 20 74 68 65 20 74 61 62 6c 65 20 64 65 63 6c 61   the table decla
199d0 72 61 74 69 6f 6e 20 74 68 61 74 20 74 68 65 0d  ration that the.
199e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 78 43 6f  .        /// xCo
199f0 6e 6e 65 63 74 20 6f 72 20 78 43 72 65 61 74 65  nnect or xCreate
19a00 20 6d 65 74 68 6f 64 20 6d 61 64 65 20 75 73 69   method made usi
19a10 6e 67 20 74 68 65 20 73 71 6c 69 74 65 33 5f 64  ng the sqlite3_d
19a20 65 63 6c 61 72 65 5f 76 74 61 62 28 29 0d 0a 20  eclare_vtab().. 
19a30 20 20 20 20 20 20 20 2f 2f 2f 20 63 61 6c 6c 2e         /// call.
19a40 20 41 6c 6c 20 68 69 64 64 65 6e 20 63 6f 6c 75   All hidden colu
19a50 6d 6e 73 20 61 72 65 20 69 6e 63 6c 75 64 65 64  mns are included
19a60 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
19a70 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
19a80 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
19a90 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 64 6f 69      /// When doi
19aa0 6e 67 20 61 6e 20 69 6e 73 65 72 74 20 77 69 74  ng an insert wit
19ab0 68 6f 75 74 20 61 20 72 6f 77 69 64 20 28 61 72  hout a rowid (ar
19ac0 67 63 3e 31 2c 20 61 72 67 76 5b 31 5d 20 69 73  gc>1, argv[1] is
19ad0 20 61 6e 20 53 51 4c 0d 0a 20 20 20 20 20 20 20   an SQL..       
19ae0 20 2f 2f 2f 20 4e 55 4c 4c 29 2c 20 74 68 65 20   /// NULL), the 
19af0 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6d  implementation m
19b00 75 73 74 20 73 65 74 20 2a 70 52 6f 77 69 64 20  ust set *pRowid 
19b10 74 6f 20 74 68 65 20 72 6f 77 69 64 20 6f 66 20  to the rowid of 
19b20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
19b30 20 6e 65 77 6c 79 20 69 6e 73 65 72 74 65 64 20   newly inserted 
19b40 72 6f 77 3b 20 74 68 69 73 20 77 69 6c 6c 20 62  row; this will b
19b50 65 63 6f 6d 65 20 74 68 65 20 76 61 6c 75 65 20  ecome the value 
19b60 72 65 74 75 72 6e 65 64 20 62 79 20 74 68 65 0d  returned by the.
19b70 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c  .        /// sql
19b80 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72 74  ite3_last_insert
19b90 5f 72 6f 77 69 64 28 29 20 66 75 6e 63 74 69 6f  _rowid() functio
19ba0 6e 2e 20 53 65 74 74 69 6e 67 20 74 68 69 73 20  n. Setting this 
19bb0 76 61 6c 75 65 20 69 6e 20 61 6c 6c 20 74 68 65  value in all the
19bc0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 74  ..        /// ot
19bd0 68 65 72 20 63 61 73 65 73 20 69 73 20 61 20 68  her cases is a h
19be0 61 72 6d 6c 65 73 73 20 6e 6f 2d 6f 70 3b 20 74  armless no-op; t
19bf0 68 65 20 53 51 4c 69 74 65 20 65 6e 67 69 6e 65  he SQLite engine
19c00 20 69 67 6e 6f 72 65 73 20 74 68 65 0d 0a 20 20   ignores the..  
19c10 20 20 20 20 20 20 2f 2f 2f 20 2a 70 52 6f 77 69        /// *pRowi
19c20 64 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20 69  d return value i
19c30 66 20 61 72 67 63 3d 3d 31 20 6f 72 20 61 72 67  f argc==1 or arg
19c40 76 5b 31 5d 20 69 73 20 6e 6f 74 20 61 6e 20 53  v[1] is not an S
19c50 51 4c 20 4e 55 4c 4c 2e 0d 0a 20 20 20 20 20 20  QL NULL...      
19c60 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
19c70 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
19c80 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 45  >..        /// E
19c90 61 63 68 20 63 61 6c 6c 20 74 6f 20 78 55 70 64  ach call to xUpd
19ca0 61 74 65 20 77 69 6c 6c 20 66 61 6c 6c 20 69 6e  ate will fall in
19cb0 74 6f 20 6f 6e 65 20 6f 66 20 63 61 73 65 73 20  to one of cases 
19cc0 73 68 6f 77 6e 20 62 65 6c 6f 77 2e 20 4e 6f 74  shown below. Not
19cd0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  e..        /// t
19ce0 68 61 74 20 72 65 66 65 72 65 6e 63 65 73 20 74  hat references t
19cf0 6f 20 61 72 67 76 5b 69 5d 20 6d 65 61 6e 20 74  o argv[i] mean t
19d00 68 65 20 53 51 4c 20 76 61 6c 75 65 20 68 65 6c  he SQL value hel
19d10 64 20 77 69 74 68 69 6e 20 74 68 65 0d 0a 20 20  d within the..  
19d20 20 20 20 20 20 20 2f 2f 2f 20 61 72 67 76 5b 69        /// argv[i
19d30 5d 20 6f 62 6a 65 63 74 2c 20 6e 6f 74 20 74 68  ] object, not th
19d40 65 20 61 72 67 76 5b 69 5d 20 6f 62 6a 65 63 74  e argv[i] object
19d50 20 69 74 73 65 6c 66 2e 0d 0a 20 20 20 20 20 20   itself...      
19d60 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
19d70 20 20 20 20 20 20 20 2f 2f 2f 20 3c 63 6f 64 65         /// <code
19d80 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20  >..        ///  
19d90 20 20 20 61 72 67 63 20 3d 20 31 0d 0a 20 20 20     argc = 1..   
19da0 20 20 20 20 20 2f 2f 2f 20 3c 2f 63 6f 64 65 3e       /// </code>
19db0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
19dc0 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
19dd0 2f 20 20 20 20 20 20 20 20 20 54 68 65 20 73 69  /         The si
19de0 6e 67 6c 65 20 72 6f 77 20 77 69 74 68 20 72 6f  ngle row with ro
19df0 77 69 64 20 65 71 75 61 6c 20 74 6f 20 61 72 67  wid equal to arg
19e00 76 5b 30 5d 20 69 73 20 64 65 6c 65 74 65 64 2e  v[0] is deleted.
19e10 20 4e 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   No..        ///
19e20 20 20 20 20 20 20 20 20 20 69 6e 73 65 72 74 20           insert 
19e30 6f 63 63 75 72 73 2e 0d 0a 20 20 20 20 20 20 20  occurs...       
19e40 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
19e50 20 20 20 20 20 20 2f 2f 2f 20 3c 63 6f 64 65 3e        /// <code>
19e60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20  ..        ///   
19e70 20 20 61 72 67 63 20 3e 20 31 0d 0a 20 20 20 20    argc > 1..    
19e80 20 20 20 20 2f 2f 2f 20 20 20 20 20 61 72 67 76      ///     argv
19e90 5b 30 5d 20 3d 20 4e 55 4c 4c 0d 0a 20 20 20 20  [0] = NULL..    
19ea0 20 20 20 20 2f 2f 2f 20 3c 2f 63 6f 64 65 3e 0d      /// </code>.
19eb0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
19ec0 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
19ed0 20 20 20 20 20 20 20 20 20 41 20 6e 65 77 20 72           A new r
19ee0 6f 77 20 69 73 20 69 6e 73 65 72 74 65 64 20 77  ow is inserted w
19ef0 69 74 68 20 61 20 72 6f 77 69 64 20 61 72 67 76  ith a rowid argv
19f00 5b 31 5d 20 61 6e 64 20 63 6f 6c 75 6d 6e 0d 0a  [1] and column..
19f10 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20          ///     
19f20 20 20 20 20 76 61 6c 75 65 73 20 69 6e 20 61 72      values in ar
19f30 67 76 5b 32 5d 20 61 6e 64 20 66 6f 6c 6c 6f 77  gv[2] and follow
19f40 69 6e 67 2e 20 49 66 20 61 72 67 76 5b 31 5d 20  ing. If argv[1] 
19f50 69 73 20 61 6e 20 53 51 4c 20 4e 55 4c 4c 2c 0d  is an SQL NULL,.
19f60 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20  .        ///    
19f70 20 20 20 20 20 74 68 65 20 61 20 6e 65 77 20 75       the a new u
19f80 6e 69 71 75 65 20 72 6f 77 69 64 20 69 73 20 67  nique rowid is g
19f90 65 6e 65 72 61 74 65 64 20 61 75 74 6f 6d 61 74  enerated automat
19fa0 69 63 61 6c 6c 79 2e 0d 0a 20 20 20 20 20 20 20  ically...       
19fb0 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
19fc0 20 20 20 20 20 20 2f 2f 2f 20 3c 63 6f 64 65 3e        /// <code>
19fd0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20  ..        ///   
19fe0 20 20 61 72 67 63 20 3e 20 31 0d 0a 20 20 20 20    argc > 1..    
19ff0 20 20 20 20 2f 2f 2f 20 20 20 20 20 61 72 67 76      ///     argv
1a000 5b 30 5d 20 3f 20 4e 55 4c 4c 0d 0a 20 20 20 20  [0] ? NULL..    
1a010 20 20 20 20 2f 2f 2f 20 20 20 20 20 61 72 67 76      ///     argv
1a020 5b 30 5d 20 3d 20 61 72 67 76 5b 31 5d 0d 0a 20  [0] = argv[1].. 
1a030 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 63 6f 64         /// </cod
1a040 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e>..        /// 
1a050 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
1a060 2f 2f 2f 20 20 20 20 20 20 20 20 20 54 68 65 20  ///         The 
1a070 72 6f 77 20 77 69 74 68 20 72 6f 77 69 64 20 61  row with rowid a
1a080 72 67 76 5b 30 5d 20 69 73 20 75 70 64 61 74 65  rgv[0] is update
1a090 64 20 77 69 74 68 20 6e 65 77 20 76 61 6c 75 65  d with new value
1a0a0 73 20 69 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  s in..        //
1a0b0 2f 20 20 20 20 20 20 20 20 20 61 72 67 76 5b 32  /         argv[2
1a0c0 5d 20 61 6e 64 20 66 6f 6c 6c 6f 77 69 6e 67 20  ] and following 
1a0d0 70 61 72 61 6d 65 74 65 72 73 2e 0d 0a 20 20 20  parameters...   
1a0e0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
1a0f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 63  ..        /// <c
1a100 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode>..        //
1a110 2f 20 20 20 20 20 61 72 67 63 20 3e 20 31 0d 0a  /     argc > 1..
1a120 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20          ///     
1a130 61 72 67 76 5b 30 5d 20 3f 20 4e 55 4c 4c 0d 0a  argv[0] ? NULL..
1a140 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20          ///     
1a150 61 72 67 76 5b 30 5d 20 3f 20 61 72 67 76 5b 31  argv[0] ? argv[1
1a160 5d 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ]..        /// <
1a170 2f 63 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20 20  /code>..        
1a180 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
1a190 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20      ///         
1a1a0 54 68 65 20 72 6f 77 20 77 69 74 68 20 72 6f 77  The row with row
1a1b0 69 64 20 61 72 67 76 5b 30 5d 20 69 73 20 75 70  id argv[0] is up
1a1c0 64 61 74 65 64 20 77 69 74 68 20 72 6f 77 69 64  dated with rowid
1a1d0 20 61 72 67 76 5b 31 5d 0d 0a 20 20 20 20 20 20   argv[1]..      
1a1e0 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20 61 6e    ///         an
1a1f0 64 20 6e 65 77 20 76 61 6c 75 65 73 20 69 6e 20  d new values in 
1a200 61 72 67 76 5b 32 5d 20 61 6e 64 20 66 6f 6c 6c  argv[2] and foll
1a210 6f 77 69 6e 67 20 70 61 72 61 6d 65 74 65 72 73  owing parameters
1a220 2e 20 54 68 69 73 0d 0a 20 20 20 20 20 20 20 20  . This..        
1a230 2f 2f 2f 20 20 20 20 20 20 20 20 20 77 69 6c 6c  ///         will
1a240 20 6f 63 63 75 72 20 77 68 65 6e 20 61 6e 20 53   occur when an S
1a250 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 75 70 64  QL statement upd
1a260 61 74 65 73 20 61 20 72 6f 77 69 64 2c 20 61 73  ates a rowid, as
1a270 20 69 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   in..        ///
1a280 20 20 20 20 20 20 20 20 20 74 68 65 20 73 74 61           the sta
1a290 74 65 6d 65 6e 74 3a 0d 0a 20 20 20 20 20 20 20  tement:..       
1a2a0 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
1a2b0 20 20 20 20 20 20 2f 2f 2f 20 3c 63 6f 64 65 3e        /// <code>
1a2c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20  ..        ///   
1a2d0 20 20 20 20 20 20 20 20 20 20 55 50 44 41 54 45            UPDATE
1a2e0 20 74 61 62 6c 65 20 53 45 54 20 72 6f 77 69 64   table SET rowid
1a2f0 3d 72 6f 77 69 64 2b 31 20 57 48 45 52 45 20 2e  =rowid+1 WHERE .
1a300 2e 2e 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ..;..        ///
1a310 20 3c 2f 63 6f 64 65 3e 0d 0a 20 20 20 20 20 20   </code>..      
1a320 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20    /// <para>..  
1a330 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 78 55        /// The xU
1a340 70 64 61 74 65 20 6d 65 74 68 6f 64 20 6d 75 73  pdate method mus
1a350 74 20 72 65 74 75 72 6e 20 53 51 4c 49 54 45 5f  t return SQLITE_
1a360 4f 4b 20 69 66 20 61 6e 64 20 6f 6e 6c 79 20 69  OK if and only i
1a370 66 20 69 74 20 69 73 0d 0a 20 20 20 20 20 20 20  f it is..       
1a380 20 2f 2f 2f 20 73 75 63 63 65 73 73 66 75 6c 2e   /// successful.
1a390 20 49 66 20 61 20 66 61 69 6c 75 72 65 20 6f 63   If a failure oc
1a3a0 63 75 72 73 2c 20 74 68 65 20 78 55 70 64 61 74  curs, the xUpdat
1a3b0 65 20 6d 75 73 74 20 72 65 74 75 72 6e 20 61 6e  e must return an
1a3c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 70  ..        /// ap
1a3d0 70 72 6f 70 72 69 61 74 65 20 65 72 72 6f 72 20  propriate error 
1a3e0 63 6f 64 65 2e 20 4f 6e 20 61 20 66 61 69 6c 75  code. On a failu
1a3f0 72 65 2c 20 74 68 65 20 70 56 54 61 62 2d 3e 7a  re, the pVTab->z
1a400 45 72 72 4d 73 67 20 65 6c 65 6d 65 6e 74 0d 0a  ErrMsg element..
1a410 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 61 79 20          /// may 
1a420 6f 70 74 69 6f 6e 61 6c 6c 79 20 62 65 20 72 65  optionally be re
1a430 70 6c 61 63 65 64 20 77 69 74 68 20 65 72 72 6f  placed with erro
1a440 72 20 6d 65 73 73 61 67 65 20 74 65 78 74 20 73  r message text s
1a450 74 6f 72 65 64 20 69 6e 20 6d 65 6d 6f 72 79 0d  tored in memory.
1a460 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 6c 6c  .        /// all
1a470 6f 63 61 74 65 64 20 66 72 6f 6d 20 53 51 4c 69  ocated from SQLi
1a480 74 65 20 75 73 69 6e 67 20 66 75 6e 63 74 69 6f  te using functio
1a490 6e 73 20 73 75 63 68 20 61 73 20 73 71 6c 69 74  ns such as sqlit
1a4a0 65 33 5f 6d 70 72 69 6e 74 66 28 29 20 6f 72 0d  e3_mprintf() or.
1a4b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c  .        /// sql
1a4c0 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 2e 0d 0a  ite3_malloc()...
1a4d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1a4e0 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
1a4f0 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
1a500 20 2f 2f 2f 20 49 66 20 74 68 65 20 78 55 70 64   /// If the xUpd
1a510 61 74 65 20 6d 65 74 68 6f 64 20 76 69 6f 6c 61  ate method viola
1a520 74 65 73 20 73 6f 6d 65 20 63 6f 6e 73 74 72 61  tes some constra
1a530 69 6e 74 20 6f 66 20 74 68 65 20 76 69 72 74 75  int of the virtu
1a540 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20 20 20  al table..      
1a550 20 20 2f 2f 2f 20 28 69 6e 63 6c 75 64 69 6e 67    /// (including
1a560 2c 20 62 75 74 20 6e 6f 74 20 6c 69 6d 69 74 65  , but not limite
1a570 64 20 74 6f 2c 20 61 74 74 65 6d 70 74 69 6e 67  d to, attempting
1a580 20 74 6f 20 73 74 6f 72 65 20 61 20 76 61 6c 75   to store a valu
1a590 65 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20 20  e of the..      
1a5a0 20 20 2f 2f 2f 20 77 72 6f 6e 67 20 64 61 74 61    /// wrong data
1a5b0 74 79 70 65 2c 20 61 74 74 65 6d 70 74 69 6e 67  type, attempting
1a5c0 20 74 6f 20 73 74 6f 72 65 20 61 20 76 61 6c 75   to store a valu
1a5d0 65 20 74 68 61 74 20 69 73 20 74 6f 6f 20 6c 61  e that is too la
1a5e0 72 67 65 20 6f 72 0d 0a 20 20 20 20 20 20 20 20  rge or..        
1a5f0 2f 2f 2f 20 74 6f 6f 20 73 6d 61 6c 6c 2c 20 6f  /// too small, o
1a600 72 20 61 74 74 65 6d 70 74 69 6e 67 20 74 6f 20  r attempting to 
1a610 63 68 61 6e 67 65 20 61 20 72 65 61 64 2d 6f 6e  change a read-on
1a620 6c 79 20 76 61 6c 75 65 29 20 74 68 65 6e 20 74  ly value) then t
1a630 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
1a640 78 55 70 64 61 74 65 20 6d 75 73 74 20 66 61 69  xUpdate must fai
1a650 6c 20 77 69 74 68 20 61 6e 20 61 70 70 72 6f 70  l with an approp
1a660 72 69 61 74 65 20 65 72 72 6f 72 20 63 6f 64 65  riate error code
1a670 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1a680 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
1a690 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
1a6a0 20 20 20 20 2f 2f 2f 20 54 68 65 72 65 20 6d 69      /// There mi
1a6b0 67 68 74 20 62 65 20 6f 6e 65 20 6f 72 20 6d 6f  ght be one or mo
1a6c0 72 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f  re sqlite3_vtab_
1a6d0 63 75 72 73 6f 72 20 6f 62 6a 65 63 74 73 20 6f  cursor objects o
1a6e0 70 65 6e 20 61 6e 64 20 69 6e 0d 0a 20 20 20 20  pen and in..    
1a6f0 20 20 20 20 2f 2f 2f 20 75 73 65 20 6f 6e 20 74      /// use on t
1a700 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
1a710 20 69 6e 73 74 61 6e 63 65 20 61 6e 64 20 70 65   instance and pe
1a720 72 68 61 70 73 20 65 76 65 6e 20 6f 6e 20 74 68  rhaps even on th
1a730 65 20 72 6f 77 20 6f 66 0d 0a 20 20 20 20 20 20  e row of..      
1a740 20 20 2f 2f 2f 20 74 68 65 20 76 69 72 74 75 61    /// the virtua
1a750 6c 20 74 61 62 6c 65 20 77 68 65 6e 20 74 68 65  l table when the
1a760 20 78 55 70 64 61 74 65 20 6d 65 74 68 6f 64 20   xUpdate method 
1a770 69 73 20 69 6e 76 6f 6b 65 64 2e 20 54 68 65 0d  is invoked. The.
1a780 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6d 70  .        /// imp
1a790 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 78  lementation of x
1a7a0 55 70 64 61 74 65 20 6d 75 73 74 20 62 65 20 70  Update must be p
1a7b0 72 65 70 61 72 65 64 20 66 6f 72 20 61 74 74 65  repared for atte
1a7c0 6d 70 74 73 20 74 6f 20 64 65 6c 65 74 65 0d 0a  mpts to delete..
1a7d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20 6d          /// or m
1a7e0 6f 64 69 66 79 20 72 6f 77 73 20 6f 66 20 74 68  odify rows of th
1a7f0 65 20 74 61 62 6c 65 20 6f 75 74 20 66 72 6f 6d  e table out from
1a800 20 6f 74 68 65 72 20 65 78 69 73 74 69 6e 67 20   other existing 
1a810 63 75 72 73 6f 72 73 2e 20 49 66 20 74 68 65 0d  cursors. If the.
1a820 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 69 72  .        /// vir
1a830 74 75 61 6c 20 74 61 62 6c 65 20 63 61 6e 6e 6f  tual table canno
1a840 74 20 61 63 63 6f 6d 6d 6f 64 61 74 65 20 73 75  t accommodate su
1a850 63 68 20 63 68 61 6e 67 65 73 2c 20 74 68 65 20  ch changes, the 
1a860 78 55 70 64 61 74 65 20 6d 65 74 68 6f 64 0d 0a  xUpdate method..
1a870 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 75 73 74          /// must
1a880 20 72 65 74 75 72 6e 20 61 6e 20 65 72 72 6f 72   return an error
1a890 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
1a8a0 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20  /// </para>..   
1a8b0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
1a8c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1a8d0 20 78 55 70 64 61 74 65 20 6d 65 74 68 6f 64 20   xUpdate method 
1a8e0 69 73 20 6f 70 74 69 6f 6e 61 6c 2e 20 49 66 20  is optional. If 
1a8f0 74 68 65 20 78 55 70 64 61 74 65 20 70 6f 69 6e  the xUpdate poin
1a900 74 65 72 20 69 6e 20 74 68 65 0d 0a 20 20 20 20  ter in the..    
1a910 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f      /// sqlite3_
1a920 6d 6f 64 75 6c 65 20 66 6f 72 20 61 20 76 69 72  module for a vir
1a930 74 75 61 6c 20 74 61 62 6c 65 20 69 73 20 61 20  tual table is a 
1a940 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 2c 20 74 68  NULL pointer, th
1a950 65 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  en the..        
1a960 2f 2f 2f 20 76 69 72 74 75 61 6c 20 74 61 62 6c  /// virtual tabl
1a970 65 20 69 73 20 72 65 61 64 2d 6f 6e 6c 79 2e 0d  e is read-only..
1a980 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1a990 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
1a9a0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1a9b0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1a9c0 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a   name="pVtab">..
1a9d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1a9e0 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
1a9f0 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74  o the sqlite3_vt
1aa00 61 62 20 64 65 72 69 76 65 64 20 73 74 72 75 63  ab derived struc
1aa10 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ture...        /
1aa20 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1aa30 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1aa40 6e 61 6d 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20  name="argc">..  
1aa50 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75        /// The nu
1aa60 6d 62 65 72 20 6f 66 20 6e 65 77 20 6f 72 20 6d  mber of new or m
1aa70 6f 64 69 66 69 65 64 20 63 6f 6c 75 6d 6e 20 76  odified column v
1aa80 61 6c 75 65 73 20 63 6f 6e 74 61 69 6e 65 64 20  alues contained 
1aa90 69 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  in..        /// 
1aaa0 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22  <paramref name="
1aab0 61 72 67 76 22 20 2f 3e 2e 0d 0a 20 20 20 20 20  argv" />...     
1aac0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1aad0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1aae0 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 76 22 3e  ram name="argv">
1aaf0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1ab00 65 20 61 72 72 61 79 20 6f 66 20 6e 61 74 69 76  e array of nativ
1ab10 65 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 73 71  e pointers to sq
1ab20 6c 69 74 65 33 5f 76 61 6c 75 65 20 73 74 72 75  lite3_value stru
1ab30 63 74 75 72 65 73 20 63 6f 6e 74 61 69 6e 69 6e  ctures containin
1ab40 67 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  g..        /// t
1ab50 68 65 20 6e 65 77 20 6f 72 20 6d 6f 64 69 66 69  he new or modifi
1ab60 65 64 20 63 6f 6c 75 6d 6e 20 76 61 6c 75 65 73  ed column values
1ab70 2c 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20 20  , if any...     
1ab80 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1ab90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1aba0 72 61 6d 20 6e 61 6d 65 3d 22 72 6f 77 49 64 22  ram name="rowId"
1abb0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55  >..        /// U
1abc0 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69  pon success, thi
1abd0 73 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74  s parameter must
1abe0 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20   be modified to 
1abf0 63 6f 6e 74 61 69 6e 20 74 68 65 20 75 6e 69 71  contain the uniq
1ac00 75 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ue..        /// 
1ac10 69 6e 74 65 67 65 72 20 72 6f 77 20 69 64 65 6e  integer row iden
1ac20 74 69 66 69 65 72 20 66 6f 72 20 74 68 65 20 72  tifier for the r
1ac30 6f 77 20 74 68 61 74 20 77 61 73 20 69 6e 73 65  ow that was inse
1ac40 72 74 65 64 2c 20 69 66 20 61 6e 79 2e 0d 0a 20  rted, if any... 
1ac50 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1ac60 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1ac70 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
1ac80 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61      /// A standa
1ac90 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e  rd SQLite return
1aca0 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
1acb0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
1acc0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72          SQLiteEr
1acd0 72 6f 72 43 6f 64 65 20 78 55 70 64 61 74 65 28  rorCode xUpdate(
1ace0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
1acf0 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
1ad00 20 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67           int arg
1ad10 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  c,..            
1ad20 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20  IntPtr argv,..  
1ad30 20 20 20 20 20 20 20 20 20 20 72 65 66 20 6c 6f            ref lo
1ad40 6e 67 20 72 6f 77 49 64 0d 0a 20 20 20 20 20 20  ng rowId..      
1ad50 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20        );....    
1ad60 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1ad70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ad80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ad90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ada0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1adb0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
1adc0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1add0 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
1ade0 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
1adf0 64 20 62 65 67 69 6e 73 20 61 20 74 72 61 6e 73  d begins a trans
1ae00 61 63 74 69 6f 6e 20 6f 6e 20 61 20 76 69 72 74  action on a virt
1ae10 75 61 6c 20 74 61 62 6c 65 2e 20 54 68 69 73 20  ual table. This 
1ae20 69 73 20 6d 65 74 68 6f 64 0d 0a 20 20 20 20 20  is method..     
1ae30 20 20 20 2f 2f 2f 20 69 73 20 6f 70 74 69 6f 6e     /// is option
1ae40 61 6c 2e 20 54 68 65 20 78 42 65 67 69 6e 20 70  al. The xBegin p
1ae50 6f 69 6e 74 65 72 20 6f 66 20 73 71 6c 69 74 65  ointer of sqlite
1ae60 33 5f 6d 6f 64 75 6c 65 20 6d 61 79 20 62 65 20  3_module may be 
1ae70 4e 55 4c 4c 2e 0d 0a 20 20 20 20 20 20 20 20 2f  NULL...        /
1ae80 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20  // </para>..    
1ae90 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a      /// <para>..
1aea0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
1aeb0 20 6d 65 74 68 6f 64 20 69 73 20 61 6c 77 61 79   method is alway
1aec0 73 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 6f 6e  s followed by on
1aed0 65 20 63 61 6c 6c 20 74 6f 20 65 69 74 68 65 72  e call to either
1aee0 20 74 68 65 20 78 43 6f 6d 6d 69 74 20 6f 72 0d   the xCommit or.
1aef0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 78 52 6f  .        /// xRo
1af00 6c 6c 62 61 63 6b 20 6d 65 74 68 6f 64 2e 20 56  llback method. V
1af10 69 72 74 75 61 6c 20 74 61 62 6c 65 20 74 72 61  irtual table tra
1af20 6e 73 61 63 74 69 6f 6e 73 20 64 6f 20 6e 6f 74  nsactions do not
1af30 20 6e 65 73 74 2c 20 73 6f 20 74 68 65 0d 0a 20   nest, so the.. 
1af40 20 20 20 20 20 20 20 2f 2f 2f 20 78 42 65 67 69         /// xBegi
1af50 6e 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20 6e 6f  n method will no
1af60 74 20 62 65 20 69 6e 76 6f 6b 65 64 20 6d 6f 72  t be invoked mor
1af70 65 20 74 68 61 6e 20 6f 6e 63 65 20 6f 6e 20 61  e than once on a
1af80 20 73 69 6e 67 6c 65 0d 0a 20 20 20 20 20 20 20   single..       
1af90 20 2f 2f 2f 20 76 69 72 74 75 61 6c 20 74 61 62   /// virtual tab
1afa0 6c 65 20 77 69 74 68 6f 75 74 20 61 6e 20 69 6e  le without an in
1afb0 74 65 72 76 65 6e 69 6e 67 20 63 61 6c 6c 20 74  tervening call t
1afc0 6f 20 65 69 74 68 65 72 20 78 43 6f 6d 6d 69 74  o either xCommit
1afd0 20 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   or..        ///
1afe0 20 78 52 6f 6c 6c 62 61 63 6b 2e 20 4d 75 6c 74   xRollback. Mult
1aff0 69 70 6c 65 20 63 61 6c 6c 73 20 74 6f 20 6f 74  iple calls to ot
1b000 68 65 72 20 6d 65 74 68 6f 64 73 20 63 61 6e 20  her methods can 
1b010 61 6e 64 20 6c 69 6b 65 6c 79 20 77 69 6c 6c 0d  and likely will.
1b020 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 63 63  .        /// occ
1b030 75 72 20 69 6e 20 62 65 74 77 65 65 6e 20 74 68  ur in between th
1b040 65 20 78 42 65 67 69 6e 20 61 6e 64 20 74 68 65  e xBegin and the
1b050 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 78   corresponding x
1b060 43 6f 6d 6d 69 74 20 6f 72 0d 0a 20 20 20 20 20  Commit or..     
1b070 20 20 20 2f 2f 2f 20 78 52 6f 6c 6c 62 61 63 6b     /// xRollback
1b080 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1b090 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
1b0a0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1b0b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1b0c0 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e  am name="pVtab">
1b0d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1b0e0 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
1b0f0 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
1b100 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74 72  vtab derived str
1b110 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ucture...       
1b120 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1b130 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
1b140 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
1b150 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c  / A standard SQL
1b160 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e  ite return code.
1b170 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1b180 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1b190 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64    SQLiteErrorCod
1b1a0 65 20 78 42 65 67 69 6e 28 0d 0a 20 20 20 20 20  e xBegin(..     
1b1b0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
1b1c0 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tab..           
1b1d0 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   );....        /
1b1e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b1f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b220 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1b230 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1b240 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1b250 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
1b260 20 54 68 69 73 20 6d 65 74 68 6f 64 20 73 69 67   This method sig
1b270 6e 61 6c 73 20 74 68 65 20 73 74 61 72 74 20 6f  nals the start o
1b280 66 20 61 20 74 77 6f 2d 70 68 61 73 65 20 63 6f  f a two-phase co
1b290 6d 6d 69 74 20 6f 6e 20 61 20 76 69 72 74 75 61  mmit on a virtua
1b2a0 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  l..        /// t
1b2b0 61 62 6c 65 2e 20 54 68 69 73 20 69 73 20 6d 65  able. This is me
1b2c0 74 68 6f 64 20 69 73 20 6f 70 74 69 6f 6e 61 6c  thod is optional
1b2d0 2e 20 54 68 65 20 78 53 79 6e 63 20 70 6f 69 6e  . The xSync poin
1b2e0 74 65 72 20 6f 66 0d 0a 20 20 20 20 20 20 20 20  ter of..        
1b2f0 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75  /// sqlite3_modu
1b300 6c 65 20 6d 61 79 20 62 65 20 4e 55 4c 4c 2e 0d  le may be NULL..
1b310 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1b320 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
1b330 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
1b340 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
1b350 64 20 69 73 20 6f 6e 6c 79 20 69 6e 76 6f 6b 65  d is only invoke
1b360 64 20 61 66 74 65 72 20 63 61 6c 6c 20 74 6f 20  d after call to 
1b370 74 68 65 20 78 42 65 67 69 6e 20 6d 65 74 68 6f  the xBegin metho
1b380 64 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 2f  d and..        /
1b390 2f 2f 20 70 72 69 6f 72 20 74 6f 20 61 6e 20 78  // prior to an x
1b3a0 43 6f 6d 6d 69 74 20 6f 72 20 78 52 6f 6c 6c 62  Commit or xRollb
1b3b0 61 63 6b 2e 20 49 6e 20 6f 72 64 65 72 20 74 6f  ack. In order to
1b3c0 20 69 6d 70 6c 65 6d 65 6e 74 20 74 77 6f 2d 70   implement two-p
1b3d0 68 61 73 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hase..        //
1b3e0 2f 20 63 6f 6d 6d 69 74 2c 20 74 68 65 20 78 53  / commit, the xS
1b3f0 79 6e 63 20 6d 65 74 68 6f 64 20 6f 6e 20 61 6c  ync method on al
1b400 6c 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 73  l virtual tables
1b410 20 69 73 20 69 6e 76 6f 6b 65 64 20 70 72 69 6f   is invoked prio
1b420 72 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f  r to..        //
1b430 2f 20 69 6e 76 6f 6b 69 6e 67 20 74 68 65 20 78  / invoking the x
1b440 43 6f 6d 6d 69 74 20 6d 65 74 68 6f 64 20 6f 6e  Commit method on
1b450 20 61 6e 79 20 76 69 72 74 75 61 6c 20 74 61 62   any virtual tab
1b460 6c 65 2e 20 49 66 20 61 6e 79 20 6f 66 20 74 68  le. If any of th
1b470 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 78  e..        /// x
1b480 53 79 6e 63 20 6d 65 74 68 6f 64 73 20 66 61 69  Sync methods fai
1b490 6c 2c 20 74 68 65 20 65 6e 74 69 72 65 20 74 72  l, the entire tr
1b4a0 61 6e 73 61 63 74 69 6f 6e 20 69 73 20 72 6f 6c  ansaction is rol
1b4b0 6c 65 64 20 62 61 63 6b 2e 0d 0a 20 20 20 20 20  led back...     
1b4c0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a     /// </para>..
1b4d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
1b4e0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1b4f0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1b500 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20  "pVtab">..      
1b510 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
1b520 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
1b530 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72  sqlite3_vtab der
1b540 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d  ived structure..
1b550 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1b560 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
1b570 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
1b580 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e        /// A stan
1b590 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75  dard SQLite retu
1b5a0 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  rn code...      
1b5b0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
1b5c0 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65  ..        SQLite
1b5d0 45 72 72 6f 72 43 6f 64 65 20 78 53 79 6e 63 28  ErrorCode xSync(
1b5e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
1b5f0 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20  tPtr pVtab..    
1b600 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20          );....  
1b610 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1b620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1b660 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
1b670 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1b680 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
1b690 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74      /// This met
1b6a0 68 6f 64 20 63 61 75 73 65 73 20 61 20 76 69 72  hod causes a vir
1b6b0 74 75 61 6c 20 74 61 62 6c 65 20 74 72 61 6e 73  tual table trans
1b6c0 61 63 74 69 6f 6e 20 74 6f 20 63 6f 6d 6d 69 74  action to commit
1b6d0 2e 20 54 68 69 73 20 69 73 0d 0a 20 20 20 20 20  . This is..     
1b6e0 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 20 69 73     /// method is
1b6f0 20 6f 70 74 69 6f 6e 61 6c 2e 20 54 68 65 20 78   optional. The x
1b700 43 6f 6d 6d 69 74 20 70 6f 69 6e 74 65 72 20 6f  Commit pointer o
1b710 66 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65  f sqlite3_module
1b720 20 6d 61 79 20 62 65 0d 0a 20 20 20 20 20 20 20   may be..       
1b730 20 2f 2f 2f 20 4e 55 4c 4c 2e 0d 0a 20 20 20 20   /// NULL...    
1b740 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d      /// </para>.
1b750 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1b760 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
1b770 20 41 20 63 61 6c 6c 20 74 6f 20 74 68 69 73 20   A call to this 
1b780 6d 65 74 68 6f 64 20 61 6c 77 61 79 73 20 66 6f  method always fo
1b790 6c 6c 6f 77 73 20 61 20 70 72 69 6f 72 20 63 61  llows a prior ca
1b7a0 6c 6c 20 74 6f 20 78 42 65 67 69 6e 20 61 6e 64  ll to xBegin and
1b7b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 78 53  ..        /// xS
1b7c0 79 6e 63 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ync...        //
1b7d0 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20  / </para>..     
1b7e0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1b7f0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1b800 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61  param name="pVta
1b810 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  b">..        ///
1b820 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e   The native poin
1b830 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74  ter to the sqlit
1b840 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 20  e3_vtab derived 
1b850 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20  structure...    
1b860 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1b870 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
1b880 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1b890 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20   /// A standard 
1b8a0 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f  SQLite return co
1b8b0 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de...        ///
1b8c0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
1b8d0 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72       SQLiteError
1b8e0 43 6f 64 65 20 78 43 6f 6d 6d 69 74 28 0d 0a 20  Code xCommit(.. 
1b8f0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
1b900 72 20 70 56 74 61 62 0d 0a 20 20 20 20 20 20 20  r pVtab..       
1b910 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20       );....     
1b920 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1b930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1b970 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
1b980 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1b990 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
1b9a0 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64   /// This method
1b9b0 20 63 61 75 73 65 73 20 61 20 76 69 72 74 75 61   causes a virtua
1b9c0 6c 20 74 61 62 6c 65 20 74 72 61 6e 73 61 63 74  l table transact
1b9d0 69 6f 6e 20 74 6f 20 72 6f 6c 6c 62 61 63 6b 2e  ion to rollback.
1b9e0 20 54 68 69 73 20 69 73 0d 0a 20 20 20 20 20 20   This is..      
1b9f0 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 20 69 73 20    /// method is 
1ba00 6f 70 74 69 6f 6e 61 6c 2e 20 54 68 65 20 78 52  optional. The xR
1ba10 6f 6c 6c 62 61 63 6b 20 70 6f 69 6e 74 65 72 20  ollback pointer 
1ba20 6f 66 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c  of sqlite3_modul
1ba30 65 20 6d 61 79 20 62 65 0d 0a 20 20 20 20 20 20  e may be..      
1ba40 20 20 2f 2f 2f 20 4e 55 4c 4c 2e 0d 0a 20 20 20    /// NULL...   
1ba50 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
1ba60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1ba70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
1ba80 2f 20 41 20 63 61 6c 6c 20 74 6f 20 74 68 69 73  / A call to this
1ba90 20 6d 65 74 68 6f 64 20 61 6c 77 61 79 73 20 66   method always f
1baa0 6f 6c 6c 6f 77 73 20 61 20 70 72 69 6f 72 20 63  ollows a prior c
1bab0 61 6c 6c 20 74 6f 20 78 42 65 67 69 6e 2e 0d 0a  all to xBegin...
1bac0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1bad0 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
1bae0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1baf0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1bb00 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20  name="pVtab">.. 
1bb10 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
1bb20 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
1bb30 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61   the sqlite3_vta
1bb40 62 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74  b derived struct
1bb50 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
1bb60 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1bb70 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
1bb80 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
1bb90 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
1bba0 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
1bbb0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
1bbc0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53  urns>..        S
1bbd0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
1bbe0 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20  Rollback(..     
1bbf0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
1bc00 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tab..           
1bc10 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   );....        /
1bc20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bc30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bc40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bc50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bc60 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1bc70 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1bc80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1bc90 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
1bca0 20 54 68 69 73 20 6d 65 74 68 6f 64 20 70 72 6f   This method pro
1bcb0 76 69 64 65 73 20 6e 6f 74 69 66 69 63 61 74 69  vides notificati
1bcc0 6f 6e 20 74 68 61 74 20 74 68 65 20 76 69 72 74  on that the virt
1bcd0 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20 20  ual table..     
1bce0 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74     /// implement
1bcf0 61 74 69 6f 6e 20 74 68 61 74 20 74 68 65 20 76  ation that the v
1bd00 69 72 74 75 61 6c 20 74 61 62 6c 65 20 77 69 6c  irtual table wil
1bd10 6c 20 62 65 20 67 69 76 65 6e 20 61 20 6e 65 77  l be given a new
1bd20 20 6e 61 6d 65 2e 20 49 66 0d 0a 20 20 20 20 20   name. If..     
1bd30 20 20 20 2f 2f 2f 20 74 68 69 73 20 6d 65 74 68     /// this meth
1bd40 6f 64 20 72 65 74 75 72 6e 73 20 53 51 4c 49 54  od returns SQLIT
1bd50 45 5f 4f 4b 20 74 68 65 6e 20 53 51 4c 69 74 65  E_OK then SQLite
1bd60 20 72 65 6e 61 6d 65 73 20 74 68 65 20 74 61 62   renames the tab
1bd70 6c 65 2e 20 49 66 0d 0a 20 20 20 20 20 20 20 20  le. If..        
1bd80 2f 2f 2f 20 74 68 69 73 20 6d 65 74 68 6f 64 20  /// this method 
1bd90 72 65 74 75 72 6e 73 20 61 6e 20 65 72 72 6f 72  returns an error
1bda0 20 63 6f 64 65 20 74 68 65 6e 20 74 68 65 20 72   code then the r
1bdb0 65 6e 61 6d 69 6e 67 20 69 73 20 70 72 65 76 65  enaming is preve
1bdc0 6e 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  nted...        /
1bdd0 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20  // </para>..    
1bde0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a      /// <para>..
1bdf0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1be00 78 52 65 6e 61 6d 65 20 6d 65 74 68 6f 64 20 69  xRename method i
1be10 73 20 72 65 71 75 69 72 65 64 20 66 6f 72 20 65  s required for e
1be20 76 65 72 79 20 76 69 72 74 75 61 6c 20 74 61 62  very virtual tab
1be30 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  le..        /// 
1be40 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d  implementation..
1be50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1be60 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
1be70 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1be80 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1be90 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a   name="pVtab">..
1bea0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1beb0 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
1bec0 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74  o the sqlite3_vt
1bed0 61 62 20 64 65 72 69 76 65 64 20 73 74 72 75 63  ab derived struc
1bee0 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ture...        /
1bef0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1bf00 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1bf10 6e 61 6d 65 3d 22 6e 41 72 67 22 3e 0d 0a 20 20  name="nArg">..  
1bf20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75        /// The nu
1bf30 6d 62 65 72 20 6f 66 20 61 72 67 75 6d 65 6e 74  mber of argument
1bf40 73 20 74 6f 20 74 68 65 20 66 75 6e 63 74 69 6f  s to the functio
1bf50 6e 20 62 65 69 6e 67 20 73 6f 75 67 68 74 2e 0d  n being sought..
1bf60 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1bf70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
1bf80 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1bf90 7a 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 20  zName">..       
1bfa0 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66   /// The name of
1bfb0 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 62 65   the function be
1bfc0 69 6e 67 20 73 6f 75 67 68 74 2e 0d 0a 20 20 20  ing sought...   
1bfd0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
1bfe0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1bff0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 61 6c 6c  param name="call
1c000 62 61 63 6b 22 3e 0d 0a 20 20 20 20 20 20 20 20  back">..        
1c010 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73  /// Upon success
1c020 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72  , this parameter
1c030 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65   must be modifie
1c040 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65  d to contain the
1c050 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 65  ..        /// de
1c060 6c 65 67 61 74 65 20 72 65 73 70 6f 6e 73 69 62  legate responsib
1c070 6c 65 20 66 6f 72 20 69 6d 70 6c 65 6d 65 6e 74  le for implement
1c080 69 6e 67 20 74 68 65 20 73 70 65 63 69 66 69 65  ing the specifie
1c090 64 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20  d function...   
1c0a0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
1c0b0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1c0c0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 6c 69  param name="pCli
1c0d0 65 6e 74 44 61 74 61 22 3e 0d 0a 20 20 20 20 20  entData">..     
1c0e0 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63     /// Upon succ
1c0f0 65 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65  ess, this parame
1c100 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69  ter must be modi
1c110 66 69 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20  fied to contain 
1c120 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
1c130 20 6e 61 74 69 76 65 20 75 73 65 72 2d 64 61 74   native user-dat
1c140 61 20 70 6f 69 6e 74 65 72 20 61 73 73 6f 63 69  a pointer associ
1c150 61 74 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20  ated with..     
1c160 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 72 65 66     /// <paramref
1c170 20 6e 61 6d 65 3d 22 63 61 6c 6c 62 61 63 6b 22   name="callback"
1c180 20 2f 3e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f   />...        //
1c190 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1c1a0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
1c1b0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
1c1c0 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 73  on-zero if the s
1c1d0 70 65 63 69 66 69 65 64 20 66 75 6e 63 74 69 6f  pecified functio
1c1e0 6e 20 77 61 73 20 66 6f 75 6e 64 3b 20 7a 65 72  n was found; zer
1c1f0 6f 20 6f 74 68 65 72 77 69 73 65 2e 0d 0a 20 20  o otherwise...  
1c200 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
1c210 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e  rns>..        in
1c220 74 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28  t xFindFunction(
1c230 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
1c240 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
1c250 20 20 20 20 20 20 20 20 20 69 6e 74 20 6e 41 72           int nAr
1c260 67 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g,..            
1c270 49 6e 74 50 74 72 20 7a 4e 61 6d 65 2c 0d 0a 20  IntPtr zName,.. 
1c280 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 53             ref S
1c290 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 63 61  QLiteCallback ca
1c2a0 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20  llback,..       
1c2b0 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20       ref IntPtr 
1c2c0 70 43 6c 69 65 6e 74 44 61 74 61 0d 0a 20 20 20  pClientData..   
1c2d0 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20           );.... 
1c2e0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1c2f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1c330 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1c340 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1c350 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
1c360 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65       /// This me
1c370 74 68 6f 64 20 70 72 6f 76 69 64 65 73 20 6e 6f  thod provides no
1c380 74 69 66 69 63 61 74 69 6f 6e 20 74 68 61 74 20  tification that 
1c390 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c  the virtual tabl
1c3a0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  e..        /// i
1c3b0 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 74 68  mplementation th
1c3c0 61 74 20 74 68 65 20 76 69 72 74 75 61 6c 20 74  at the virtual t
1c3d0 61 62 6c 65 20 77 69 6c 6c 20 62 65 20 67 69 76  able will be giv
1c3e0 65 6e 20 61 20 6e 65 77 20 6e 61 6d 65 2e 20 49  en a new name. I
1c3f0 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  f..        /// t
1c400 68 69 73 20 6d 65 74 68 6f 64 20 72 65 74 75 72  his method retur
1c410 6e 73 20 53 51 4c 49 54 45 5f 4f 4b 20 74 68 65  ns SQLITE_OK the
1c420 6e 20 53 51 4c 69 74 65 20 72 65 6e 61 6d 65 73  n SQLite renames
1c430 20 74 68 65 20 74 61 62 6c 65 2e 20 49 66 0d 0a   the table. If..
1c440 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 69 73          /// this
1c450 20 6d 65 74 68 6f 64 20 72 65 74 75 72 6e 73 20   method returns 
1c460 61 6e 20 65 72 72 6f 72 20 63 6f 64 65 20 74 68  an error code th
1c470 65 6e 20 74 68 65 20 72 65 6e 61 6d 69 6e 67 20  en the renaming 
1c480 69 73 20 70 72 65 76 65 6e 74 65 64 2e 0d 0a 20  is prevented... 
1c490 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1c4a0 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
1c4b0 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
1c4c0 2f 2f 2f 20 54 68 65 20 78 52 65 6e 61 6d 65 20  /// The xRename 
1c4d0 6d 65 74 68 6f 64 20 69 73 20 72 65 71 75 69 72  method is requir
1c4e0 65 64 20 66 6f 72 20 65 76 65 72 79 20 76 69 72  ed for every vir
1c4f0 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20  tual table..    
1c500 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e      /// implemen
1c510 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  tation...       
1c520 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
1c530 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
1c540 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1c550 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
1c560 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
1c570 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70  /// The native p
1c580 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71  ointer to the sq
1c590 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76  lite3_vtab deriv
1c5a0 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  ed structure... 
1c5b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1c5c0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1c5d0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 7a 4e   <param name="zN
1c5e0 65 77 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ew">..        //
1c5f0 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69  / The native poi
1c600 6e 74 65 72 20 74 6f 20 74 68 65 20 55 54 46 2d  nter to the UTF-
1c610 38 20 65 6e 63 6f 64 65 64 20 73 74 72 69 6e 67  8 encoded string
1c620 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20   containing the 
1c630 6e 65 77 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  new..        ///
1c640 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 76 69   name for the vi
1c650 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20  rtual table...  
1c660 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1c670 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
1c680 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
1c690 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72     /// A standar
1c6a0 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20  d SQLite return 
1c6b0 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  code...        /
1c6c0 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
1c6d0 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72         SQLiteErr
1c6e0 6f 72 43 6f 64 65 20 78 52 65 6e 61 6d 65 28 0d  orCode xRename(.
1c6f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
1c700 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
1c710 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 7a          IntPtr z
1c720 4e 65 77 0d 0a 20 20 20 20 20 20 20 20 20 20 20  New..           
1c730 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   );....        /
1c740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c780 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1c790 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1c7a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1c7b0 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
1c7c0 20 54 68 65 73 65 20 6d 65 74 68 6f 64 73 20 70   These methods p
1c7d0 72 6f 76 69 64 65 20 74 68 65 20 76 69 72 74 75  rovide the virtu
1c7e0 61 6c 20 74 61 62 6c 65 20 69 6d 70 6c 65 6d 65  al table impleme
1c7f0 6e 74 61 74 69 6f 6e 20 61 6e 0d 0a 20 20 20 20  ntation an..    
1c800 20 20 20 20 2f 2f 2f 20 6f 70 70 6f 72 74 75 6e      /// opportun
1c810 69 74 79 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74  ity to implement
1c820 20 6e 65 73 74 65 64 20 74 72 61 6e 73 61 63 74   nested transact
1c830 69 6f 6e 73 2e 20 54 68 65 79 20 61 72 65 20 61  ions. They are a
1c840 6c 77 61 79 73 0d 0a 20 20 20 20 20 20 20 20 2f  lways..        /
1c850 2f 2f 20 6f 70 74 69 6f 6e 61 6c 20 61 6e 64 20  // optional and 
1c860 77 69 6c 6c 20 6f 6e 6c 79 20 62 65 20 63 61 6c  will only be cal
1c870 6c 65 64 20 69 6e 20 53 51 4c 69 74 65 20 76 65  led in SQLite ve
1c880 72 73 69 6f 6e 20 33 2e 37 2e 37 20 61 6e 64 20  rsion 3.7.7 and 
1c890 6c 61 74 65 72 2e 0d 0a 20 20 20 20 20 20 20 20  later...        
1c8a0 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20  /// </para>..   
1c8b0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
1c8c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 57 68 65  .        /// Whe
1c8d0 6e 20 78 53 61 76 65 70 6f 69 6e 74 28 58 2c 4e  n xSavepoint(X,N
1c8e0 29 20 69 73 20 69 6e 76 6f 6b 65 64 2c 20 74 68  ) is invoked, th
1c8f0 61 74 20 69 73 20 61 20 73 69 67 6e 61 6c 20 74  at is a signal t
1c900 6f 20 74 68 65 20 76 69 72 74 75 61 6c 0d 0a 20  o the virtual.. 
1c910 20 20 20 20 20 20 20 2f 2f 2f 20 74 61 62 6c 65         /// table
1c920 20 58 20 74 68 61 74 20 69 74 20 73 68 6f 75 6c   X that it shoul
1c930 64 20 73 61 76 65 20 69 74 73 20 63 75 72 72 65  d save its curre
1c940 6e 74 20 73 74 61 74 65 20 61 73 20 73 61 76 65  nt state as save
1c950 70 6f 69 6e 74 20 4e 2e 20 41 0d 0a 20 20 20 20  point N. A..    
1c960 20 20 20 20 2f 2f 2f 20 73 75 62 73 65 71 75 65      /// subseque
1c970 6e 74 20 63 61 6c 6c 20 74 6f 20 78 52 6f 6c 6c  nt call to xRoll
1c980 62 61 63 6b 54 6f 28 58 2c 52 29 20 6d 65 61 6e  backTo(X,R) mean
1c990 73 20 74 68 61 74 20 74 68 65 20 73 74 61 74 65  s that the state
1c9a0 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20 20 20   of the..       
1c9b0 20 2f 2f 2f 20 76 69 72 74 75 61 6c 20 74 61 62   /// virtual tab
1c9c0 6c 65 20 73 68 6f 75 6c 64 20 72 65 74 75 72 6e  le should return
1c9d0 20 74 6f 20 77 68 61 74 20 69 74 20 77 61 73 20   to what it was 
1c9e0 77 68 65 6e 20 78 53 61 76 65 70 6f 69 6e 74 28  when xSavepoint(
1c9f0 58 2c 52 29 20 77 61 73 0d 0a 20 20 20 20 20 20  X,R) was..      
1ca00 20 20 2f 2f 2f 20 6c 61 73 74 20 63 61 6c 6c 65    /// last calle
1ca10 64 2e 20 54 68 65 20 63 61 6c 6c 20 74 6f 20 78  d. The call to x
1ca20 52 6f 6c 6c 62 61 63 6b 54 6f 28 58 2c 52 29 20  RollbackTo(X,R) 
1ca30 77 69 6c 6c 20 69 6e 76 61 6c 69 64 61 74 65 20  will invalidate 
1ca40 61 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  all..        ///
1ca50 20 73 61 76 65 70 6f 69 6e 74 73 20 77 69 74 68   savepoints with
1ca60 20 4e 3e 52 3b 20 6e 6f 6e 65 20 6f 66 20 74 68   N>R; none of th
1ca70 65 20 69 6e 76 61 6c 69 64 65 64 20 73 61 76 65  e invalided save
1ca80 70 6f 69 6e 74 73 20 77 69 6c 6c 20 62 65 0d 0a  points will be..
1ca90 20 20 20 20 20 20 20 20 2f 2f 2f 20 72 6f 6c 6c          /// roll
1caa0 65 64 20 62 61 63 6b 20 6f 72 20 72 65 6c 65 61  ed back or relea
1cab0 73 65 64 20 77 69 74 68 6f 75 74 20 66 69 72 73  sed without firs
1cac0 74 20 62 65 69 6e 67 20 72 65 69 6e 69 74 69 61  t being reinitia
1cad0 6c 69 7a 65 64 20 62 79 20 61 20 63 61 6c 6c 0d  lized by a call.
1cae0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20  .        /// to 
1caf0 78 53 61 76 65 70 6f 69 6e 74 28 29 2e 20 41 20  xSavepoint(). A 
1cb00 63 61 6c 6c 20 74 6f 20 78 52 65 6c 65 61 73 65  call to xRelease
1cb10 28 58 2c 4d 29 20 69 6e 76 61 6c 69 64 61 74 65  (X,M) invalidate
1cb20 73 20 61 6c 6c 20 73 61 76 65 70 6f 69 6e 74 73  s all savepoints
1cb30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 68  ..        /// wh
1cb40 65 72 65 20 4e 3e 3d 4d 2e 0d 0a 20 20 20 20 20  ere N>=M...     
1cb50 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a     /// </para>..
1cb60 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1cb70 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
1cb80 4e 6f 6e 65 20 6f 66 20 74 68 65 20 78 53 61 76  None of the xSav
1cb90 65 70 6f 69 6e 74 28 29 2c 20 78 52 65 6c 65 61  epoint(), xRelea
1cba0 73 65 28 29 2c 20 6f 72 20 78 52 6f 6c 6c 62 61  se(), or xRollba
1cbb0 63 6b 54 6f 28 29 20 6d 65 74 68 6f 64 73 20 77  ckTo() methods w
1cbc0 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ill..        ///
1cbd0 20 65 76 65 72 20 62 65 20 63 61 6c 6c 65 64 20   ever be called 
1cbe0 65 78 63 65 70 74 20 69 6e 20 62 65 74 77 65 65  except in betwee
1cbf0 6e 20 63 61 6c 6c 73 20 74 6f 20 78 42 65 67 69  n calls to xBegi
1cc00 6e 28 29 20 61 6e 64 20 65 69 74 68 65 72 0d 0a  n() and either..
1cc10 20 20 20 20 20 20 20 20 2f 2f 2f 20 78 43 6f 6d          /// xCom
1cc20 6d 69 74 28 29 20 6f 72 20 78 52 6f 6c 6c 62 61  mit() or xRollba
1cc30 63 6b 28 29 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ck()...        /
1cc40 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20  // </para>..    
1cc50 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1cc60 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1cc70 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74  <param name="pVt
1cc80 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ab">..        //
1cc90 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69  / The native poi
1cca0 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69  nter to the sqli
1ccb0 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64  te3_vtab derived
1ccc0 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
1ccd0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
1cce0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1ccf0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 53 61 76  param name="iSav
1cd00 65 70 6f 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20  epoint">..      
1cd10 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 61 6e    /// This is an
1cd20 20 69 6e 74 65 67 65 72 20 69 64 65 6e 74 69 66   integer identif
1cd30 69 65 72 20 75 6e 64 65 72 20 77 68 69 63 68 20  ier under which 
1cd40 74 68 65 20 74 68 65 20 63 75 72 72 65 6e 74 20  the the current 
1cd50 73 74 61 74 65 20 6f 66 0d 0a 20 20 20 20 20 20  state of..      
1cd60 20 20 2f 2f 2f 20 74 68 65 20 76 69 72 74 75 61    /// the virtua
1cd70 6c 20 74 61 62 6c 65 20 73 68 6f 75 6c 64 20 62  l table should b
1cd80 65 20 73 61 76 65 64 2e 0d 0a 20 20 20 20 20 20  e saved...      
1cd90 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
1cda0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
1cdb0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
1cdc0 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51  // A standard SQ
1cdd0 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65  Lite return code
1cde0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1cdf0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
1ce00 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f     SQLiteErrorCo
1ce10 64 65 20 78 53 61 76 65 70 6f 69 6e 74 28 0d 0a  de xSavepoint(..
1ce20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
1ce30 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
1ce40 20 20 20 20 20 20 20 69 6e 74 20 69 53 61 76 65         int iSave
1ce50 70 6f 69 6e 74 0d 0a 20 20 20 20 20 20 20 20 20  point..         
1ce60 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20     );....       
1ce70 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1ce80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ce90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ceb0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1cec0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1ced0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1cee0 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
1cef0 2f 2f 20 54 68 65 73 65 20 6d 65 74 68 6f 64 73  // These methods
1cf00 20 70 72 6f 76 69 64 65 20 74 68 65 20 76 69 72   provide the vir
1cf10 74 75 61 6c 20 74 61 62 6c 65 20 69 6d 70 6c 65  tual table imple
1cf20 6d 65 6e 74 61 74 69 6f 6e 20 61 6e 0d 0a 20 20  mentation an..  
1cf30 20 20 20 20 20 20 2f 2f 2f 20 6f 70 70 6f 72 74        /// opport
1cf40 75 6e 69 74 79 20 74 6f 20 69 6d 70 6c 65 6d 65  unity to impleme
1cf50 6e 74 20 6e 65 73 74 65 64 20 74 72 61 6e 73 61  nt nested transa
1cf60 63 74 69 6f 6e 73 2e 20 54 68 65 79 20 61 72 65  ctions. They are
1cf70 20 61 6c 77 61 79 73 0d 0a 20 20 20 20 20 20 20   always..       
1cf80 20 2f 2f 2f 20 6f 70 74 69 6f 6e 61 6c 20 61 6e   /// optional an
1cf90 64 20 77 69 6c 6c 20 6f 6e 6c 79 20 62 65 20 63  d will only be c
1cfa0 61 6c 6c 65 64 20 69 6e 20 53 51 4c 69 74 65 20  alled in SQLite 
1cfb0 76 65 72 73 69 6f 6e 20 33 2e 37 2e 37 20 61 6e  version 3.7.7 an
1cfc0 64 20 6c 61 74 65 72 2e 0d 0a 20 20 20 20 20 20  d later...      
1cfd0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
1cfe0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1cff0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 57  >..        /// W
1d000 68 65 6e 20 78 53 61 76 65 70 6f 69 6e 74 28 58  hen xSavepoint(X
1d010 2c 4e 29 20 69 73 20 69 6e 76 6f 6b 65 64 2c 20  ,N) is invoked, 
1d020 74 68 61 74 20 69 73 20 61 20 73 69 67 6e 61 6c  that is a signal
1d030 20 74 6f 20 74 68 65 20 76 69 72 74 75 61 6c 0d   to the virtual.
1d040 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 61 62  .        /// tab
1d050 6c 65 20 58 20 74 68 61 74 20 69 74 20 73 68 6f  le X that it sho
1d060 75 6c 64 20 73 61 76 65 20 69 74 73 20 63 75 72  uld save its cur
1d070 72 65 6e 74 20 73 74 61 74 65 20 61 73 20 73 61  rent state as sa
1d080 76 65 70 6f 69 6e 74 20 4e 2e 20 41 0d 0a 20 20  vepoint N. A..  
1d090 20 20 20 20 20 20 2f 2f 2f 20 73 75 62 73 65 71        /// subseq
1d0a0 75 65 6e 74 20 63 61 6c 6c 20 74 6f 20 78 52 6f  uent call to xRo
1d0b0 6c 6c 62 61 63 6b 54 6f 28 58 2c 52 29 20 6d 65  llbackTo(X,R) me
1d0c0 61 6e 73 20 74 68 61 74 20 74 68 65 20 73 74 61  ans that the sta
1d0d0 74 65 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20  te of the..     
1d0e0 20 20 20 2f 2f 2f 20 76 69 72 74 75 61 6c 20 74     /// virtual t
1d0f0 61 62 6c 65 20 73 68 6f 75 6c 64 20 72 65 74 75  able should retu
1d100 72 6e 20 74 6f 20 77 68 61 74 20 69 74 20 77 61  rn to what it wa
1d110 73 20 77 68 65 6e 20 78 53 61 76 65 70 6f 69 6e  s when xSavepoin
1d120 74 28 58 2c 52 29 20 77 61 73 0d 0a 20 20 20 20  t(X,R) was..    
1d130 20 20 20 20 2f 2f 2f 20 6c 61 73 74 20 63 61 6c      /// last cal
1d140 6c 65 64 2e 20 54 68 65 20 63 61 6c 6c 20 74 6f  led. The call to
1d150 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 58 2c 52   xRollbackTo(X,R
1d160 29 20 77 69 6c 6c 20 69 6e 76 61 6c 69 64 61 74  ) will invalidat
1d170 65 20 61 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f  e all..        /
1d180 2f 2f 20 73 61 76 65 70 6f 69 6e 74 73 20 77 69  // savepoints wi
1d190 74 68 20 4e 3e 52 3b 20 6e 6f 6e 65 20 6f 66 20  th N>R; none of 
1d1a0 74 68 65 20 69 6e 76 61 6c 69 64 65 64 20 73 61  the invalided sa
1d1b0 76 65 70 6f 69 6e 74 73 20 77 69 6c 6c 20 62 65  vepoints will be
1d1c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 72 6f  ..        /// ro
1d1d0 6c 6c 65 64 20 62 61 63 6b 20 6f 72 20 72 65 6c  lled back or rel
1d1e0 65 61 73 65 64 20 77 69 74 68 6f 75 74 20 66 69  eased without fi
1d1f0 72 73 74 20 62 65 69 6e 67 20 72 65 69 6e 69 74  rst being reinit
1d200 69 61 6c 69 7a 65 64 20 62 79 20 61 20 63 61 6c  ialized by a cal
1d210 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  l..        /// t
1d220 6f 20 78 53 61 76 65 70 6f 69 6e 74 28 29 2e 20  o xSavepoint(). 
1d230 41 20 63 61 6c 6c 20 74 6f 20 78 52 65 6c 65 61  A call to xRelea
1d240 73 65 28 58 2c 4d 29 20 69 6e 76 61 6c 69 64 61  se(X,M) invalida
1d250 74 65 73 20 61 6c 6c 20 73 61 76 65 70 6f 69 6e  tes all savepoin
1d260 74 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ts..        /// 
1d270 77 68 65 72 65 20 4e 3e 3d 4d 2e 0d 0a 20 20 20  where N>=M...   
1d280 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
1d290 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1d2a0 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
1d2b0 2f 20 4e 6f 6e 65 20 6f 66 20 74 68 65 20 78 53  / None of the xS
1d2c0 61 76 65 70 6f 69 6e 74 28 29 2c 20 78 52 65 6c  avepoint(), xRel
1d2d0 65 61 73 65 28 29 2c 20 6f 72 20 78 52 6f 6c 6c  ease(), or xRoll
1d2e0 62 61 63 6b 54 6f 28 29 20 6d 65 74 68 6f 64 73  backTo() methods
1d2f0 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f   will..        /
1d300 2f 2f 20 65 76 65 72 20 62 65 20 63 61 6c 6c 65  // ever be calle
1d310 64 20 65 78 63 65 70 74 20 69 6e 20 62 65 74 77  d except in betw
1d320 65 65 6e 20 63 61 6c 6c 73 20 74 6f 20 78 42 65  een calls to xBe
1d330 67 69 6e 28 29 20 61 6e 64 20 65 69 74 68 65 72  gin() and either
1d340 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 78 43  ..        /// xC
1d350 6f 6d 6d 69 74 28 29 20 6f 72 20 78 52 6f 6c 6c  ommit() or xRoll
1d360 62 61 63 6b 28 29 2e 0d 0a 20 20 20 20 20 20 20  back()...       
1d370 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
1d380 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
1d390 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1d3a0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
1d3b0 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
1d3c0 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70  /// The native p
1d3d0 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71  ointer to the sq
1d3e0 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76  lite3_vtab deriv
1d3f0 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  ed structure... 
1d400 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1d410 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1d420 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 53   <param name="iS
1d430 61 76 65 70 6f 69 6e 74 22 3e 0d 0a 20 20 20 20  avepoint">..    
1d440 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20      /// This is 
1d450 61 6e 20 69 6e 74 65 67 65 72 20 75 73 65 64 20  an integer used 
1d460 74 6f 20 69 6e 64 69 63 61 74 65 20 74 68 61 74  to indicate that
1d470 20 61 6e 79 20 73 61 76 65 64 20 73 74 61 74 65   any saved state
1d480 73 20 77 69 74 68 20 61 6e 0d 0a 20 20 20 20 20  s with an..     
1d490 20 20 20 2f 2f 2f 20 69 64 65 6e 74 69 66 69 65     /// identifie
1d4a0 72 20 67 72 65 61 74 65 72 20 74 68 61 6e 20 6f  r greater than o
1d4b0 72 20 65 71 75 61 6c 20 74 6f 20 74 68 69 73 20  r equal to this 
1d4c0 73 68 6f 75 6c 64 20 62 65 20 64 65 6c 65 74 65  should be delete
1d4d0 64 20 62 79 20 74 68 65 0d 0a 20 20 20 20 20 20  d by the..      
1d4e0 20 20 2f 2f 2f 20 76 69 72 74 75 61 6c 20 74 61    /// virtual ta
1d4f0 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
1d500 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1d510 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
1d520 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
1d530 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
1d540 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
1d550 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
1d560 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53  urns>..        S
1d570 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
1d580 52 65 6c 65 61 73 65 28 0d 0a 20 20 20 20 20 20  Release(..      
1d590 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
1d5a0 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ab,..           
1d5b0 20 69 6e 74 20 69 53 61 76 65 70 6f 69 6e 74 0d   int iSavepoint.
1d5c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d  .            );.
1d5d0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1d5e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d5f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d620 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
1d630 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1d640 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
1d650 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1d660 73 65 20 6d 65 74 68 6f 64 73 20 70 72 6f 76 69  se methods provi
1d670 64 65 20 74 68 65 20 76 69 72 74 75 61 6c 20 74  de the virtual t
1d680 61 62 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74  able implementat
1d690 69 6f 6e 20 61 6e 0d 0a 20 20 20 20 20 20 20 20  ion an..        
1d6a0 2f 2f 2f 20 6f 70 70 6f 72 74 75 6e 69 74 79 20  /// opportunity 
1d6b0 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 6e 65 73  to implement nes
1d6c0 74 65 64 20 74 72 61 6e 73 61 63 74 69 6f 6e 73  ted transactions
1d6d0 2e 20 54 68 65 79 20 61 72 65 20 61 6c 77 61 79  . They are alway
1d6e0 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f  s..        /// o
1d6f0 70 74 69 6f 6e 61 6c 20 61 6e 64 20 77 69 6c 6c  ptional and will
1d700 20 6f 6e 6c 79 20 62 65 20 63 61 6c 6c 65 64 20   only be called 
1d710 69 6e 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f  in SQLite versio
1d720 6e 20 33 2e 37 2e 37 20 61 6e 64 20 6c 61 74 65  n 3.7.7 and late
1d730 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
1d740 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
1d750 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
1d760 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 78 53       /// When xS
1d770 61 76 65 70 6f 69 6e 74 28 58 2c 4e 29 20 69 73  avepoint(X,N) is
1d780 20 69 6e 76 6f 6b 65 64 2c 20 74 68 61 74 20 69   invoked, that i
1d790 73 20 61 20 73 69 67 6e 61 6c 20 74 6f 20 74 68  s a signal to th
1d7a0 65 20 76 69 72 74 75 61 6c 0d 0a 20 20 20 20 20  e virtual..     
1d7b0 20 20 20 2f 2f 2f 20 74 61 62 6c 65 20 58 20 74     /// table X t
1d7c0 68 61 74 20 69 74 20 73 68 6f 75 6c 64 20 73 61  hat it should sa
1d7d0 76 65 20 69 74 73 20 63 75 72 72 65 6e 74 20 73  ve its current s
1d7e0 74 61 74 65 20 61 73 20 73 61 76 65 70 6f 69 6e  tate as savepoin
1d7f0 74 20 4e 2e 20 41 0d 0a 20 20 20 20 20 20 20 20  t N. A..        
1d800 2f 2f 2f 20 73 75 62 73 65 71 75 65 6e 74 20 63  /// subsequent c
1d810 61 6c 6c 20 74 6f 20 78 52 6f 6c 6c 62 61 63 6b  all to xRollback
1d820 54 6f 28 58 2c 52 29 20 6d 65 61 6e 73 20 74 68  To(X,R) means th
1d830 61 74 20 74 68 65 20 73 74 61 74 65 20 6f 66 20  at the state of 
1d840 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
1d850 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 73   virtual table s
1d860 68 6f 75 6c 64 20 72 65 74 75 72 6e 20 74 6f 20  hould return to 
1d870 77 68 61 74 20 69 74 20 77 61 73 20 77 68 65 6e  what it was when
1d880 20 78 53 61 76 65 70 6f 69 6e 74 28 58 2c 52 29   xSavepoint(X,R)
1d890 20 77 61 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f   was..        //
1d8a0 2f 20 6c 61 73 74 20 63 61 6c 6c 65 64 2e 20 54  / last called. T
1d8b0 68 65 20 63 61 6c 6c 20 74 6f 20 78 52 6f 6c 6c  he call to xRoll
1d8c0 62 61 63 6b 54 6f 28 58 2c 52 29 20 77 69 6c 6c  backTo(X,R) will
1d8d0 20 69 6e 76 61 6c 69 64 61 74 65 20 61 6c 6c 0d   invalidate all.
1d8e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 61 76  .        /// sav
1d8f0 65 70 6f 69 6e 74 73 20 77 69 74 68 20 4e 3e 52  epoints with N>R
1d900 3b 20 6e 6f 6e 65 20 6f 66 20 74 68 65 20 69 6e  ; none of the in
1d910 76 61 6c 69 64 65 64 20 73 61 76 65 70 6f 69 6e  valided savepoin
1d920 74 73 20 77 69 6c 6c 20 62 65 0d 0a 20 20 20 20  ts will be..    
1d930 20 20 20 20 2f 2f 2f 20 72 6f 6c 6c 65 64 20 62      /// rolled b
1d940 61 63 6b 20 6f 72 20 72 65 6c 65 61 73 65 64 20  ack or released 
1d950 77 69 74 68 6f 75 74 20 66 69 72 73 74 20 62 65  without first be
1d960 69 6e 67 20 72 65 69 6e 69 74 69 61 6c 69 7a 65  ing reinitialize
1d970 64 20 62 79 20 61 20 63 61 6c 6c 0d 0a 20 20 20  d by a call..   
1d980 20 20 20 20 20 2f 2f 2f 20 74 6f 20 78 53 61 76       /// to xSav
1d990 65 70 6f 69 6e 74 28 29 2e 20 41 20 63 61 6c 6c  epoint(). A call
1d9a0 20 74 6f 20 78 52 65 6c 65 61 73 65 28 58 2c 4d   to xRelease(X,M
1d9b0 29 20 69 6e 76 61 6c 69 64 61 74 65 73 20 61 6c  ) invalidates al
1d9c0 6c 20 73 61 76 65 70 6f 69 6e 74 73 0d 0a 20 20  l savepoints..  
1d9d0 20 20 20 20 20 20 2f 2f 2f 20 77 68 65 72 65 20        /// where 
1d9e0 4e 3e 3d 4d 2e 0d 0a 20 20 20 20 20 20 20 20 2f  N>=M...        /
1d9f0 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20  // </para>..    
1da00 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a      /// <para>..
1da10 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 65          /// None
1da20 20 6f 66 20 74 68 65 20 78 53 61 76 65 70 6f 69   of the xSavepoi
1da30 6e 74 28 29 2c 20 78 52 65 6c 65 61 73 65 28 29  nt(), xRelease()
1da40 2c 20 6f 72 20 78 52 6f 6c 6c 62 61 63 6b 54 6f  , or xRollbackTo
1da50 28 29 20 6d 65 74 68 6f 64 73 20 77 69 6c 6c 0d  () methods will.
1da60 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 65 76 65  .        /// eve
1da70 72 20 62 65 20 63 61 6c 6c 65 64 20 65 78 63 65  r be called exce
1da80 70 74 20 69 6e 20 62 65 74 77 65 65 6e 20 63 61  pt in between ca
1da90 6c 6c 73 20 74 6f 20 78 42 65 67 69 6e 28 29 20  lls to xBegin() 
1daa0 61 6e 64 20 65 69 74 68 65 72 0d 0a 20 20 20 20  and either..    
1dab0 20 20 20 20 2f 2f 2f 20 78 43 6f 6d 6d 69 74 28      /// xCommit(
1dac0 29 20 6f 72 20 78 52 6f 6c 6c 62 61 63 6b 28 29  ) or xRollback()
1dad0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1dae0 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
1daf0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1db00 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1db10 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e  am name="pVtab">
1db20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1db30 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
1db40 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
1db50 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74 72  vtab derived str
1db60 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ucture...       
1db70 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1db80 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1db90 6d 20 6e 61 6d 65 3d 22 69 53 61 76 65 70 6f 69  m name="iSavepoi
1dba0 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nt">..        //
1dbb0 2f 20 54 68 69 73 20 69 73 20 61 6e 20 69 6e 74  / This is an int
1dbc0 65 67 65 72 20 69 64 65 6e 74 69 66 69 65 72 20  eger identifier 
1dbd0 75 73 65 64 20 74 6f 20 73 70 65 63 69 66 79 20  used to specify 
1dbe0 61 20 73 70 65 63 69 66 69 63 20 73 61 76 65 64  a specific saved
1dbf0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74  ..        /// st
1dc00 61 74 65 20 66 6f 72 20 74 68 65 20 76 69 72 74  ate for the virt
1dc10 75 61 6c 20 74 61 62 6c 65 20 66 6f 72 20 69 74  ual table for it
1dc20 20 74 6f 20 72 65 73 74 6f 72 65 20 69 74 73 65   to restore itse
1dc30 6c 66 20 62 61 63 6b 20 74 6f 2c 20 77 68 69 63  lf back to, whic
1dc40 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  h..        /// s
1dc50 68 6f 75 6c 64 20 61 6c 73 6f 20 68 61 76 65 20  hould also have 
1dc60 74 68 65 20 65 66 66 65 63 74 20 6f 66 20 64 65  the effect of de
1dc70 6c 65 74 69 6e 67 20 61 6c 6c 20 73 61 76 65 64  leting all saved
1dc80 20 73 74 61 74 65 73 20 77 69 74 68 20 61 6e 0d   states with an.
1dc90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74  .        /// int
1dca0 65 67 65 72 20 69 64 65 6e 74 69 66 69 65 72 20  eger identifier 
1dcb0 67 72 65 61 74 65 72 20 74 68 61 6e 20 74 68 69  greater than thi
1dcc0 73 20 6f 6e 65 2e 0d 0a 20 20 20 20 20 20 20 20  s one...        
1dcd0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1dce0 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
1dcf0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
1dd00 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69   A standard SQLi
1dd10 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d  te return code..
1dd20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
1dd30 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1dd40 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1dd50 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20   xRollbackTo(.. 
1dd60 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
1dd70 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20  r pVtab,..      
1dd80 20 20 20 20 20 20 69 6e 74 20 69 53 61 76 65 70        int iSavep
1dd90 6f 69 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20  oint..          
1dda0 20 20 29 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 20    );..    }..   
1ddb0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
1ddc0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1ddd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dde0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ddf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1de00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1de10 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 49 53  ..    #region IS
1de20 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75  QLiteManagedModu
1de30 6c 65 20 49 6e 74 65 72 66 61 63 65 0d 0a 20 20  le Interface..  
1de40 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1de50 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 6e  .    /// This in
1de60 74 65 72 66 61 63 65 20 72 65 70 72 65 73 65 6e  terface represen
1de70 74 73 20 61 20 76 69 72 74 75 61 6c 20 74 61 62  ts a virtual tab
1de80 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  le implementatio
1de90 6e 20 77 72 69 74 74 65 6e 20 69 6e 0d 0a 20 20  n written in..  
1dea0 20 20 2f 2f 2f 20 6d 61 6e 61 67 65 64 20 63 6f    /// managed co
1deb0 64 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  de...    /// </s
1dec0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62  ummary>..    pub
1ded0 6c 69 63 20 69 6e 74 65 72 66 61 63 65 20 49 53  lic interface IS
1dee0 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75  QLiteManagedModu
1def0 6c 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  le..    {..     
1df00 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1df10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65  ..        /// Re
1df20 74 75 72 6e 73 20 6e 6f 6e 2d 7a 65 72 6f 20 69  turns non-zero i
1df30 66 20 74 68 65 20 73 63 68 65 6d 61 20 66 6f 72  f the schema for
1df40 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
1df50 6c 65 20 68 61 73 20 62 65 65 6e 0d 0a 20 20 20  le has been..   
1df60 20 20 20 20 20 2f 2f 2f 20 64 65 63 6c 61 72 65       /// declare
1df70 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
1df80 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1df90 20 20 20 20 62 6f 6f 6c 20 44 65 63 6c 61 72 65      bool Declare
1dfa0 64 20 7b 20 67 65 74 3b 20 7d 0d 0a 0d 0a 20 20  d { get; }....  
1dfb0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1dfc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dfd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dfe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1e000 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
1e010 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1e020 2f 2f 2f 20 52 65 74 75 72 6e 73 20 74 68 65 20  /// Returns the 
1e030 6e 61 6d 65 20 6f 66 20 74 68 65 20 6d 6f 64 75  name of the modu
1e040 6c 65 20 61 73 20 69 74 20 77 61 73 20 72 65 67  le as it was reg
1e050 69 73 74 65 72 65 64 20 77 69 74 68 20 74 68 65  istered with the
1e060 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 20   SQLite..       
1e070 20 2f 2f 2f 20 63 6f 72 65 20 6c 69 62 72 61 72   /// core librar
1e080 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y...        /// 
1e090 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1e0a0 20 20 20 20 73 74 72 69 6e 67 20 4e 61 6d 65 20      string Name 
1e0b0 7b 20 67 65 74 3b 20 7d 0d 0a 0d 0a 20 20 20 20  { get; }....    
1e0c0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1e0d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e0e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e0f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1e110 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
1e120 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1e130 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73  / This method is
1e140 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f   called in respo
1e150 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20  nse to the..    
1e160 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
1e170 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
1e180 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 22 20  Module.xCreate" 
1e190 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
1e1a0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1e1b0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1e1c0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e  <param name="con
1e1d0 6e 65 63 74 69 6f 6e 22 3e 0d 0a 20 20 20 20 20  nection">..     
1e1e0 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
1e1f0 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e  cref="SQLiteConn
1e200 65 63 74 69 6f 6e 22 20 2f 3e 20 6f 62 6a 65 63  ection" /> objec
1e210 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63  t instance assoc
1e220 69 61 74 65 64 20 77 69 74 68 0d 0a 20 20 20 20  iated with..    
1e230 20 20 20 20 2f 2f 2f 20 74 68 65 20 76 69 72 74      /// the virt
1e240 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
1e250 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1e260 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1e270 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 6c 69 65  aram name="pClie
1e280 6e 74 44 61 74 61 22 3e 0d 0a 20 20 20 20 20 20  ntData">..      
1e290 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
1e2a0 20 75 73 65 72 2d 64 61 74 61 20 70 6f 69 6e 74   user-data point
1e2b0 65 72 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  er associated wi
1e2c0 74 68 20 74 68 69 73 20 6d 6f 64 75 6c 65 2c 20  th this module, 
1e2d0 61 73 20 69 74 20 77 61 73 0d 0a 20 20 20 20 20  as it was..     
1e2e0 20 20 20 2f 2f 2f 20 70 72 6f 76 69 64 65 64 20     /// provided 
1e2f0 74 6f 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  to the SQLite co
1e300 72 65 20 6c 69 62 72 61 72 79 20 77 68 65 6e 20  re library when 
1e310 74 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c  the native modul
1e320 65 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20  e instance..    
1e330 20 20 20 20 2f 2f 2f 20 77 61 73 20 63 72 65 61      /// was crea
1e340 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ted...        //
1e350 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1e360 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1e370 61 6d 65 3d 22 61 72 67 75 6d 65 6e 74 73 22 3e  ame="arguments">
1e380 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1e390 65 20 6d 6f 64 75 6c 65 20 6e 61 6d 65 2c 20 64  e module name, d
1e3a0 61 74 61 62 61 73 65 20 6e 61 6d 65 2c 20 76 69  atabase name, vi
1e3b0 72 74 75 61 6c 20 74 61 62 6c 65 20 6e 61 6d 65  rtual table name
1e3c0 2c 20 61 6e 64 20 61 6c 6c 20 6f 74 68 65 72 0d  , and all other.
1e3d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 72 67  .        /// arg
1e3e0 75 6d 65 6e 74 73 20 70 61 73 73 65 64 20 74 6f  uments passed to
1e3f0 20 74 68 65 20 43 52 45 41 54 45 20 56 49 52 54   the CREATE VIRT
1e400 55 41 4c 20 54 41 42 4c 45 20 73 74 61 74 65 6d  UAL TABLE statem
1e410 65 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ent...        //
1e420 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1e430 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1e440 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20  ame="table">..  
1e450 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73        /// Upon s
1e460 75 63 63 65 73 73 2c 20 74 68 69 73 20 70 61 72  uccess, this par
1e470 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d  ameter must be m
1e480 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74 61  odified to conta
1e490 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  in the..        
1e4a0 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53  /// <see cref="S
1e4b0 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
1e4c0 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  e" /> object ins
1e4d0 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64  tance associated
1e4e0 20 77 69 74 68 0d 0a 20 20 20 20 20 20 20 20 2f   with..        /
1e4f0 2f 2f 20 74 68 65 20 76 69 72 74 75 61 6c 20 74  // the virtual t
1e500 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  able...        /
1e510 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1e520 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1e530 6e 61 6d 65 3d 22 65 72 72 6f 72 22 3e 0d 0a 20  name="error">.. 
1e540 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20         /// Upon 
1e550 66 61 69 6c 75 72 65 2c 20 74 68 69 73 20 70 61  failure, this pa
1e560 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20  rameter must be 
1e570 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74  modified to cont
1e580 61 69 6e 20 61 6e 20 65 72 72 6f 72 0d 0a 20 20  ain an error..  
1e590 20 20 20 20 20 20 2f 2f 2f 20 6d 65 73 73 61 67        /// messag
1e5a0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
1e5b0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
1e5c0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
1e5d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73  .        /// A s
1e5e0 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72  tandard SQLite r
1e5f0 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20  eturn code...   
1e600 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
1e610 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c  ns>..        SQL
1e620 69 74 65 45 72 72 6f 72 43 6f 64 65 20 43 72 65  iteErrorCode Cre
1e630 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ate(..          
1e640 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69    SQLiteConnecti
1e650 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 20  on connection,  
1e660 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
1e670 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 6c        IntPtr pCl
1e680 69 65 6e 74 44 61 74 61 2c 20 20 20 20 20 20 20  ientData,       
1e690 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20      /* in */..  
1e6a0 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
1e6b0 5b 5d 20 61 72 67 75 6d 65 6e 74 73 2c 20 20 20  [] arguments,   
1e6c0 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f          /* in */
1e6d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
1e6e0 66 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  f SQLiteVirtualT
1e6f0 61 62 6c 65 20 74 61 62 6c 65 2c 20 2f 2a 20 6f  able table, /* o
1e700 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ut */..         
1e710 20 20 20 72 65 66 20 73 74 72 69 6e 67 20 65 72     ref string er
1e720 72 6f 72 20 20 20 20 20 20 20 20 20 20 20 20 20  ror             
1e730 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20   /* out */..    
1e740 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20          );....  
1e750 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1e760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1e7a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
1e7b0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1e7c0 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20  /// This method 
1e7d0 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73  is called in res
1e7e0 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20  ponse to the..  
1e7f0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
1e800 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
1e810 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63  veModule.xConnec
1e820 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  t" /> method... 
1e830 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
1e840 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1e850 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1e860 63 6f 6e 6e 65 63 74 69 6f 6e 22 3e 0d 0a 20 20  connection">..  
1e870 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
1e880 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43  ee cref="SQLiteC
1e890 6f 6e 6e 65 63 74 69 6f 6e 22 20 2f 3e 20 6f 62  onnection" /> ob
1e8a0 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73  ject instance as
1e8b0 73 6f 63 69 61 74 65 64 20 77 69 74 68 0d 0a 20  sociated with.. 
1e8c0 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 76         /// the v
1e8d0 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20  irtual table... 
1e8e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1e8f0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1e900 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43   <param name="pC
1e910 6c 69 65 6e 74 44 61 74 61 22 3e 0d 0a 20 20 20  lientData">..   
1e920 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
1e930 69 76 65 20 75 73 65 72 2d 64 61 74 61 20 70 6f  ive user-data po
1e940 69 6e 74 65 72 20 61 73 73 6f 63 69 61 74 65 64  inter associated
1e950 20 77 69 74 68 20 74 68 69 73 20 6d 6f 64 75 6c   with this modul
1e960 65 2c 20 61 73 20 69 74 20 77 61 73 0d 0a 20 20  e, as it was..  
1e970 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f 76 69 64        /// provid
1e980 65 64 20 74 6f 20 74 68 65 20 53 51 4c 69 74 65  ed to the SQLite
1e990 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 77 68   core library wh
1e9a0 65 6e 20 74 68 65 20 6e 61 74 69 76 65 20 6d 6f  en the native mo
1e9b0 64 75 6c 65 20 69 6e 73 74 61 6e 63 65 0d 0a 20  dule instance.. 
1e9c0 20 20 20 20 20 20 20 2f 2f 2f 20 77 61 73 20 63         /// was c
1e9d0 72 65 61 74 65 64 2e 0d 0a 20 20 20 20 20 20 20  reated...       
1e9e0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1e9f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1ea00 6d 20 6e 61 6d 65 3d 22 61 72 67 75 6d 65 6e 74  m name="argument
1ea10 73 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  s">..        ///
1ea20 20 54 68 65 20 6d 6f 64 75 6c 65 20 6e 61 6d 65   The module name
1ea30 2c 20 64 61 74 61 62 61 73 65 20 6e 61 6d 65 2c  , database name,
1ea40 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 6e   virtual table n
1ea50 61 6d 65 2c 20 61 6e 64 20 61 6c 6c 20 6f 74 68  ame, and all oth
1ea60 65 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  er..        /// 
1ea70 61 72 67 75 6d 65 6e 74 73 20 70 61 73 73 65 64  arguments passed
1ea80 20 74 6f 20 74 68 65 20 43 52 45 41 54 45 20 56   to the CREATE V
1ea90 49 52 54 55 41 4c 20 54 41 42 4c 45 20 73 74 61  IRTUAL TABLE sta
1eaa0 74 65 6d 65 6e 74 2e 0d 0a 20 20 20 20 20 20 20  tement...       
1eab0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1eac0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1ead0 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d  m name="table">.
1eae0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f  .        /// Upo
1eaf0 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69 73 20  n success, this 
1eb00 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62  parameter must b
1eb10 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f  e modified to co
1eb20 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20 20 20 20  ntain the..     
1eb30 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
1eb40 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  ="SQLiteVirtualT
1eb50 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20  able" /> object 
1eb60 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61  instance associa
1eb70 74 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20  ted with..      
1eb80 20 20 2f 2f 2f 20 74 68 65 20 76 69 72 74 75 61    /// the virtua
1eb90 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  l table...      
1eba0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
1ebb0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1ebc0 61 6d 20 6e 61 6d 65 3d 22 65 72 72 6f 72 22 3e  am name="error">
1ebd0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70  ..        /// Up
1ebe0 6f 6e 20 66 61 69 6c 75 72 65 2c 20 74 68 69 73  on failure, this
1ebf0 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20   parameter must 
1ec00 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 63  be modified to c
1ec10 6f 6e 74 61 69 6e 20 61 6e 20 65 72 72 6f 72 0d  ontain an error.
1ec20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 73  .        /// mes
1ec30 73 61 67 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  sage...        /
1ec40 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1ec50 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
1ec60 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
1ec70 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74  A standard SQLit
1ec80 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a  e return code...
1ec90 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
1eca0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
1ecb0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1ecc0 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20  Connect(..      
1ecd0 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e        SQLiteConn
1ece0 65 63 74 69 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f  ection connectio
1ecf0 6e 2c 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20  n,  /* in */..  
1ed00 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
1ed10 20 70 43 6c 69 65 6e 74 44 61 74 61 2c 20 20 20   pClientData,   
1ed20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f          /* in */
1ed30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74  ..            st
1ed40 72 69 6e 67 5b 5d 20 61 72 67 75 6d 65 6e 74 73  ring[] arguments
1ed50 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69  ,           /* i
1ed60 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
1ed70 20 20 72 65 66 20 53 51 4c 69 74 65 56 69 72 74    ref SQLiteVirt
1ed80 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c 20  ualTable table, 
1ed90 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20  /* out */..     
1eda0 20 20 20 20 20 20 20 72 65 66 20 73 74 72 69 6e         ref strin
1edb0 67 20 65 72 72 6f 72 20 20 20 20 20 20 20 20 20  g error         
1edc0 20 20 20 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a       /* out */..
1edd0 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a              );..
1ede0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
1edf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ee00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ee10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ee20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ee30 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
1ee40 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
1ee50 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74      /// This met
1ee60 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e  hod is called in
1ee70 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65   response to the
1ee80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1ee90 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
1eea0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65  NativeModule.xBe
1eeb0 73 74 49 6e 64 65 78 22 20 2f 3e 20 6d 65 74 68  stIndex" /> meth
1eec0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  od...        ///
1eed0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1eee0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1eef0 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20  name="table">.. 
1ef00 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
1ef10 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
1ef20 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e  VirtualTable" />
1ef30 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
1ef40 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20   associated..   
1ef50 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68       /// with th
1ef60 69 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  is virtual table
1ef70 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1ef80 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1ef90 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1efa0 3d 22 69 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20  ="index">..     
1efb0 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
1efc0 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65  cref="SQLiteInde
1efd0 78 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  x" /> object ins
1efe0 74 61 6e 63 65 20 63 6f 6e 74 61 69 6e 69 6e 67  tance containing
1eff0 20 61 6c 6c 20 74 68 65 0d 0a 20 20 20 20 20 20   all the..      
1f000 20 20 2f 2f 2f 20 64 61 74 61 20 66 6f 72 20 74    /// data for t
1f010 68 65 20 69 6e 70 75 74 73 20 61 6e 64 20 6f 75  he inputs and ou
1f020 74 70 75 74 73 20 72 65 6c 61 74 69 6e 67 20 74  tputs relating t
1f030 6f 20 69 6e 64 65 78 20 73 65 6c 65 63 74 69 6f  o index selectio
1f040 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  n...        /// 
1f050 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
1f060 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
1f070 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73  .        /// A s
1f080 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72  tandard SQLite r
1f090 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20  eturn code...   
1f0a0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
1f0b0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c  ns>..        SQL
1f0c0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 42 65 73  iteErrorCode Bes
1f0d0 74 49 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20  tIndex(..       
1f0e0 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75       SQLiteVirtu
1f0f0 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c 20 2f  alTable table, /
1f100 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
1f110 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78       SQLiteIndex
1f120 20 69 6e 64 65 78 20 20 20 20 20 20 20 20 20 2f   index         /
1f130 2a 20 69 6e 2c 20 6f 75 74 20 2a 2f 0d 0a 20 20  * in, out */..  
1f140 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a            );....
1f150 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1f160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1f1a0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1f1b0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1f1c0 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
1f1d0 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72  d is called in r
1f1e0 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a  esponse to the..
1f1f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
1f200 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
1f210 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 69 73 63  tiveModule.xDisc
1f220 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f  onnect" /> metho
1f230 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
1f240 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1f250 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1f260 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20  ame="table">..  
1f270 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
1f280 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56  ee cref="SQLiteV
1f290 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20  irtualTable" /> 
1f2a0 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
1f2b0 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20  associated..    
1f2c0 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69      /// with thi
1f2d0 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e  s virtual table.
1f2e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1f2f0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1f300 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
1f310 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61         /// A sta
1f320 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74  ndard SQLite ret
1f330 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  urn code...     
1f340 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
1f350 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  >..        SQLit
1f360 65 45 72 72 6f 72 43 6f 64 65 20 44 69 73 63 6f  eErrorCode Disco
1f370 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20  nnect(..        
1f380 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61      SQLiteVirtua
1f390 6c 54 61 62 6c 65 20 74 61 62 6c 65 20 2f 2a 20  lTable table /* 
1f3a0 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
1f3b0 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20     );....       
1f3c0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1f3d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f3e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f3f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f400 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1f410 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1f420 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1f430 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61  his method is ca
1f440 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65  lled in response
1f450 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20   to the..       
1f460 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
1f470 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
1f480 75 6c 65 2e 78 44 65 73 74 72 6f 79 22 20 2f 3e  ule.xDestroy" />
1f490 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
1f4a0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1f4b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1f4c0 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65  aram name="table
1f4d0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
1f4e0 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
1f4f0 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
1f500 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  e" /> object ins
1f510 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64  tance associated
1f520 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69  ..        /// wi
1f530 74 68 20 74 68 69 73 20 76 69 72 74 75 61 6c 20  th this virtual 
1f540 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20  table...        
1f550 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1f560 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
1f570 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
1f580 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69   A standard SQLi
1f590 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d  te return code..
1f5a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
1f5b0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1f5c0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1f5d0 20 44 65 73 74 72 6f 79 28 0d 0a 20 20 20 20 20   Destroy(..     
1f5e0 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72         SQLiteVir
1f5f0 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 20  tualTable table 
1f600 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
1f610 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20        );....    
1f620 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1f630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1f670 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
1f680 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1f690 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73  / This method is
1f6a0 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f   called in respo
1f6b0 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20  nse to the..    
1f6c0 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
1f6d0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
1f6e0 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e 22 20 2f 3e  Module.xOpen" />
1f6f0 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
1f700 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1f710 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1f720 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65  aram name="table
1f730 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
1f740 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
1f750 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
1f760 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  e" /> object ins
1f770 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64  tance associated
1f780 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69  ..        /// wi
1f790 74 68 20 74 68 69 73 20 76 69 72 74 75 61 6c 20  th this virtual 
1f7a0 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20  table...        
1f7b0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1f7c0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1f7d0 20 6e 61 6d 65 3d 22 63 75 72 73 6f 72 22 3e 0d   name="cursor">.
1f7e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f  .        /// Upo
1f7f0 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69 73 20  n success, this 
1f800 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62  parameter must b
1f810 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f  e modified to co
1f820 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20 20 20 20  ntain the..     
1f830 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
1f840 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  ="SQLiteVirtualT
1f850 61 62 6c 65 43 75 72 73 6f 72 22 20 2f 3e 20 6f  ableCursor" /> o
1f860 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61  bject instance a
1f870 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20  ssociated..     
1f880 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 65 20     /// with the 
1f890 6e 65 77 6c 79 20 6f 70 65 6e 65 64 20 76 69 72  newly opened vir
1f8a0 74 75 61 6c 20 74 61 62 6c 65 20 63 75 72 73 6f  tual table curso
1f8b0 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
1f8c0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
1f8d0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
1f8e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73  .        /// A s
1f8f0 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72  tandard SQLite r
1f900 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20  eturn code...   
1f910 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
1f920 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c  ns>..        SQL
1f930 69 74 65 45 72 72 6f 72 43 6f 64 65 20 4f 70 65  iteErrorCode Ope
1f940 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n(..            
1f950 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
1f960 6c 65 20 74 61 62 6c 65 2c 20 20 20 20 20 20 20  le table,       
1f970 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20      /* in */..  
1f980 20 20 20 20 20 20 20 20 20 20 72 65 66 20 53 51            ref SQ
1f990 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
1f9a0 43 75 72 73 6f 72 20 63 75 72 73 6f 72 20 2f 2a  Cursor cursor /*
1f9b0 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20   out */..       
1f9c0 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20       );....     
1f9d0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1f9e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f9f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fa00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fa10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1fa20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
1fa30 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1fa40 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20   This method is 
1fa50 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e  called in respon
1fa60 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20  se to the..     
1fa70 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
1fa80 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
1fa90 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 22 20 2f 3e  odule.xClose" />
1faa0 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
1fab0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1fac0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1fad0 61 72 61 6d 20 6e 61 6d 65 3d 22 63 75 72 73 6f  aram name="curso
1fae0 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  r">..        ///
1faf0 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
1fb00 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
1fb10 6c 65 43 75 72 73 6f 72 22 20 2f 3e 20 6f 62 6a  leCursor" /> obj
1fb20 65 63 74 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20  ect instance..  
1fb30 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69        /// associ
1fb40 61 74 65 64 20 77 69 74 68 20 74 68 65 20 70 72  ated with the pr
1fb50 65 76 69 6f 75 73 6c 79 20 6f 70 65 6e 65 64 20  eviously opened 
1fb60 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 63 75  virtual table cu
1fb70 72 73 6f 72 20 74 6f 20 62 65 0d 0a 20 20 20 20  rsor to be..    
1fb80 20 20 20 20 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20      /// used... 
1fb90 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1fba0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1fbb0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
1fbc0 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61      /// A standa
1fbd0 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e  rd SQLite return
1fbe0 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
1fbf0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
1fc00 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72          SQLiteEr
1fc10 72 6f 72 43 6f 64 65 20 43 6c 6f 73 65 28 0d 0a  rorCode Close(..
1fc20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
1fc30 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75  teVirtualTableCu
1fc40 72 73 6f 72 20 63 75 72 73 6f 72 20 2f 2a 20 69  rsor cursor /* i
1fc50 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
1fc60 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    );....        
1fc70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fc80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fc90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fcb0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1fcc0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1fcd0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1fce0 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c  is method is cal
1fcf0 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20  led in response 
1fd00 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
1fd10 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
1fd20 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
1fd30 6c 65 2e 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d  le.xFilter" /> m
1fd40 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
1fd50 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1fd60 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1fd70 61 6d 20 6e 61 6d 65 3d 22 63 75 72 73 6f 72 22  am name="cursor"
1fd80 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1fd90 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
1fda0 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
1fdb0 43 75 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65 63  Cursor" /> objec
1fdc0 74 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20  t instance..    
1fdd0 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74      /// associat
1fde0 65 64 20 77 69 74 68 20 74 68 65 20 70 72 65 76  ed with the prev
1fdf0 69 6f 75 73 6c 79 20 6f 70 65 6e 65 64 20 76 69  iously opened vi
1fe00 72 74 75 61 6c 20 74 61 62 6c 65 20 63 75 72 73  rtual table curs
1fe10 6f 72 20 74 6f 20 62 65 0d 0a 20 20 20 20 20 20  or to be..      
1fe20 20 20 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20 20 20    /// used...   
1fe30 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
1fe40 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1fe50 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65  param name="inde
1fe60 78 4e 75 6d 62 65 72 22 3e 0d 0a 20 20 20 20 20  xNumber">..     
1fe70 20 20 20 2f 2f 2f 20 4e 75 6d 62 65 72 20 75 73     /// Number us
1fe80 65 64 20 74 6f 20 68 65 6c 70 20 69 64 65 6e 74  ed to help ident
1fe90 69 66 79 20 74 68 65 20 73 65 6c 65 63 74 65 64  ify the selected
1fea0 20 69 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20 20   index...       
1feb0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1fec0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1fed0 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78 53 74 72  m name="indexStr
1fee0 69 6e 67 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ing">..        /
1fef0 2f 2f 20 53 74 72 69 6e 67 20 75 73 65 64 20 74  // String used t
1ff00 6f 20 68 65 6c 70 20 69 64 65 6e 74 69 66 79 20  o help identify 
1ff10 74 68 65 20 73 65 6c 65 63 74 65 64 20 69 6e 64  the selected ind
1ff20 65 78 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ex...        ///
1ff30 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1ff40 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1ff50 6d 65 3d 22 76 61 6c 75 65 73 22 3e 0d 0a 20 20  me="values">..  
1ff60 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61        /// The va
1ff70 6c 75 65 73 20 63 6f 72 72 65 73 70 6f 6e 64 69  lues correspondi
1ff80 6e 67 20 74 6f 20 65 61 63 68 20 63 6f 6c 75 6d  ng to each colum
1ff90 6e 20 69 6e 20 74 68 65 20 73 65 6c 65 63 74 65  n in the selecte
1ffa0 64 20 69 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20  d index...      
1ffb0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
1ffc0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
1ffd0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
1ffe0 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51  // A standard SQ
1fff0 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65  Lite return code
20000 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
20010 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
20020 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f     SQLiteErrorCo
20030 64 65 20 46 69 6c 74 65 72 28 0d 0a 20 20 20 20  de Filter(..    
20040 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69          SQLiteVi
20050 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72  rtualTableCursor
20060 20 63 75 72 73 6f 72 2c 20 2f 2a 20 69 6e 20 2a   cursor, /* in *
20070 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  /..            i
20080 6e 74 20 69 6e 64 65 78 4e 75 6d 62 65 72 2c 20  nt indexNumber, 
20090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
200a0 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
200b0 20 20 20 20 20 20 73 74 72 69 6e 67 20 69 6e 64        string ind
200c0 65 78 53 74 72 69 6e 67 2c 20 20 20 20 20 20 20  exString,       
200d0 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d         /* in */.
200e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
200f0 69 74 65 56 61 6c 75 65 5b 5d 20 76 61 6c 75 65  iteValue[] value
20100 73 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a  s             /*
20110 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
20120 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20      );....      
20130 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
20140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20170 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
20180 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
20190 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
201a0 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63  This method is c
201b0 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73  alled in respons
201c0 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  e to the..      
201d0 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
201e0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
201f0 64 75 6c 65 2e 78 4e 65 78 74 22 20 2f 3e 20 6d  dule.xNext" /> m
20200 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
20210 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
20220 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
20230 61 6d 20 6e 61 6d 65 3d 22 63 75 72 73 6f 72 22  am name="cursor"
20240 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
20250 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
20260 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
20270 43 75 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65 63  Cursor" /> objec
20280 74 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20  t instance..    
20290 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74      /// associat
202a0 65 64 20 77 69 74 68 20 74 68 65 20 70 72 65 76  ed with the prev
202b0 69 6f 75 73 6c 79 20 6f 70 65 6e 65 64 20 76 69  iously opened vi
202c0 72 74 75 61 6c 20 74 61 62 6c 65 20 63 75 72 73  rtual table curs
202d0 6f 72 20 74 6f 20 62 65 0d 0a 20 20 20 20 20 20  or to be..      
202e0 20 20 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20 20 20    /// used...   
202f0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
20300 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
20310 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
20320 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64    /// A standard
20330 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63   SQLite return c
20340 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode...        //
20350 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
20360 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f        SQLiteErro
20370 72 43 6f 64 65 20 4e 65 78 74 28 0d 0a 20 20 20  rCode Next(..   
20380 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56           SQLiteV
20390 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f  irtualTableCurso
203a0 72 20 63 75 72 73 6f 72 20 2f 2a 20 69 6e 20 2a  r cursor /* in *
203b0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  /..            )
203c0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
203d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
203e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
203f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20410 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
20420 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
20430 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
20440 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64  method is called
20450 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20   in response to 
20460 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
20470 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
20480 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
20490 78 45 6f 66 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  xEof" /> method.
204a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
204b0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
204c0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
204d0 65 3d 22 63 75 72 73 6f 72 22 3e 0d 0a 20 20 20  e="cursor">..   
204e0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
204f0 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69  e cref="SQLiteVi
20500 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72  rtualTableCursor
20510 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
20520 61 6e 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ance..        //
20530 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  / associated wit
20540 68 20 74 68 65 20 70 72 65 76 69 6f 75 73 6c 79  h the previously
20550 20 6f 70 65 6e 65 64 20 76 69 72 74 75 61 6c 20   opened virtual 
20560 74 61 62 6c 65 20 63 75 72 73 6f 72 20 74 6f 20  table cursor to 
20570 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  be..        /// 
20580 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  used...        /
20590 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
205a0 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
205b0 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
205c0 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 6e 6f 20 6d  Non-zero if no m
205d0 6f 72 65 20 72 6f 77 73 20 61 72 65 20 61 76 61  ore rows are ava
205e0 69 6c 61 62 6c 65 3b 20 7a 65 72 6f 20 6f 74 68  ilable; zero oth
205f0 65 72 77 69 73 65 2e 0d 0a 20 20 20 20 20 20 20  erwise...       
20600 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
20610 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 45 6f  .        bool Eo
20620 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f(..            
20630 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
20640 6c 65 43 75 72 73 6f 72 20 63 75 72 73 6f 72 20  leCursor cursor 
20650 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
20660 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20        );....    
20670 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
20680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
206a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
206b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
206c0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
206d0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
206e0 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73  / This method is
206f0 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f   called in respo
20700 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20  nse to the..    
20710 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
20720 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
20730 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 22 20  Module.xColumn" 
20740 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
20750 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
20760 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
20770 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 75 72  <param name="cur
20780 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  sor">..        /
20790 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
207a0 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  ="SQLiteVirtualT
207b0 61 62 6c 65 43 75 72 73 6f 72 22 20 2f 3e 20 6f  ableCursor" /> o
207c0 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 0d 0a  bject instance..
207d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f          /// asso
207e0 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20  ciated with the 
207f0 70 72 65 76 69 6f 75 73 6c 79 20 6f 70 65 6e 65  previously opene
20800 64 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  d virtual table 
20810 63 75 72 73 6f 72 20 74 6f 20 62 65 0d 0a 20 20  cursor to be..  
20820 20 20 20 20 20 20 2f 2f 2f 20 75 73 65 64 2e 0d        /// used..
20830 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
20840 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
20850 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
20860 63 6f 6e 74 65 78 74 22 3e 0d 0a 20 20 20 20 20  context">..     
20870 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
20880 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 74  cref="SQLiteCont
20890 65 78 74 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  ext" /> object i
208a0 6e 73 74 61 6e 63 65 20 74 6f 20 62 65 20 75 73  nstance to be us
208b0 65 64 20 66 6f 72 0d 0a 20 20 20 20 20 20 20 20  ed for..        
208c0 2f 2f 2f 20 72 65 74 75 72 6e 69 6e 67 20 74 68  /// returning th
208d0 65 20 73 70 65 63 69 66 69 65 64 20 63 6f 6c 75  e specified colu
208e0 6d 6e 20 76 61 6c 75 65 20 74 6f 20 74 68 65 20  mn value to the 
208f0 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
20900 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary...        //
20910 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
20920 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
20930 61 6d 65 3d 22 69 6e 64 65 78 22 3e 0d 0a 20 20  ame="index">..  
20940 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 7a 65        /// The ze
20950 72 6f 2d 62 61 73 65 64 20 69 6e 64 65 78 20 63  ro-based index c
20960 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20  orresponding to 
20970 74 68 65 20 63 6f 6c 75 6d 6e 20 63 6f 6e 74 61  the column conta
20980 69 6e 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20  ining the..     
20990 20 20 20 2f 2f 2f 20 76 61 6c 75 65 20 74 6f 20     /// value to 
209a0 62 65 20 72 65 74 75 72 6e 65 64 2e 0d 0a 20 20  be returned...  
209b0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
209c0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
209d0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
209e0 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72     /// A standar
209f0 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20  d SQLite return 
20a00 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  code...        /
20a10 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
20a20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72         SQLiteErr
20a30 6f 72 43 6f 64 65 20 43 6f 6c 75 6d 6e 28 0d 0a  orCode Column(..
20a40 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
20a50 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75  teVirtualTableCu
20a60 72 73 6f 72 20 63 75 72 73 6f 72 2c 20 2f 2a 20  rsor cursor, /* 
20a70 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
20a80 20 20 20 53 51 4c 69 74 65 43 6f 6e 74 65 78 74     SQLiteContext
20a90 20 63 6f 6e 74 65 78 74 2c 20 20 20 20 20 20 20   context,       
20aa0 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20      /* in */..  
20ab0 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 6e            int in
20ac0 64 65 78 20 20 20 20 20 20 20 20 20 20 20 20 20  dex             
20ad0 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e             /* in
20ae0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
20af0 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   );....        /
20b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20b40 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
20b50 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
20b60 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
20b70 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c  s method is call
20b80 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74  ed in response t
20b90 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  o the..        /
20ba0 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  // <see cref="IS
20bb0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
20bc0 65 2e 78 52 6f 77 49 64 22 20 2f 3e 20 6d 65 74  e.xRowId" /> met
20bd0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
20be0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
20bf0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
20c00 20 6e 61 6d 65 3d 22 63 75 72 73 6f 72 22 3e 0d   name="cursor">.
20c10 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
20c20 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
20c30 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75  teVirtualTableCu
20c40 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20  rsor" /> object 
20c50 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20 20 20  instance..      
20c60 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64    /// associated
20c70 20 77 69 74 68 20 74 68 65 20 70 72 65 76 69 6f   with the previo
20c80 75 73 6c 79 20 6f 70 65 6e 65 64 20 76 69 72 74  usly opened virt
20c90 75 61 6c 20 74 61 62 6c 65 20 63 75 72 73 6f 72  ual table cursor
20ca0 20 74 6f 20 62 65 0d 0a 20 20 20 20 20 20 20 20   to be..        
20cb0 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20 20 20 20 20  /// used...     
20cc0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
20cd0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
20ce0 72 61 6d 20 6e 61 6d 65 3d 22 72 6f 77 49 64 22  ram name="rowId"
20cf0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55  >..        /// U
20d00 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69  pon success, thi
20d10 73 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74  s parameter must
20d20 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20   be modified to 
20d30 63 6f 6e 74 61 69 6e 20 74 68 65 20 75 6e 69 71  contain the uniq
20d40 75 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ue..        /// 
20d50 69 6e 74 65 67 65 72 20 72 6f 77 20 69 64 65 6e  integer row iden
20d60 74 69 66 69 65 72 20 66 6f 72 20 74 68 65 20 63  tifier for the c
20d70 75 72 72 65 6e 74 20 72 6f 77 20 66 6f 72 20 74  urrent row for t
20d80 68 65 20 73 70 65 63 69 66 69 65 64 20 63 75 72  he specified cur
20d90 73 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  sor...        //
20da0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
20db0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
20dc0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
20dd0 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
20de0 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
20df0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
20e00 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53  urns>..        S
20e10 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 52  QLiteErrorCode R
20e20 6f 77 49 64 28 0d 0a 20 20 20 20 20 20 20 20 20  owId(..         
20e30 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c     SQLiteVirtual
20e40 54 61 62 6c 65 43 75 72 73 6f 72 20 63 75 72 73  TableCursor curs
20e50 6f 72 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20  or, /* in */..  
20e60 20 20 20 20 20 20 20 20 20 20 72 65 66 20 6c 6f            ref lo
20e70 6e 67 20 72 6f 77 49 64 20 20 20 20 20 20 20 20  ng rowId        
20e80 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 6f 75             /* ou
20e90 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  t */..          
20ea0 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    );....        
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20ef0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
20f00 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
20f10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
20f20 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c  is method is cal
20f30 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20  led in response 
20f40 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
20f50 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
20f60 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
20f70 6c 65 2e 78 55 70 64 61 74 65 22 20 2f 3e 20 6d  le.xUpdate" /> m
20f80 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
20f90 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
20fa0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
20fb0 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e  am name="table">
20fc0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
20fd0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
20fe0 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22  iteVirtualTable"
20ff0 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
21000 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a  nce associated..
21010 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68          /// with
21020 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61   this virtual ta
21030 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
21040 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
21050 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
21060 61 6d 65 3d 22 76 61 6c 75 65 73 22 3e 0d 0a 20  ame="values">.. 
21070 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61         /// The a
21080 72 72 61 79 20 6f 66 20 3c 73 65 65 20 63 72 65  rray of <see cre
21090 66 3d 22 53 51 4c 69 74 65 56 61 6c 75 65 22 20  f="SQLiteValue" 
210a0 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
210b0 63 65 73 20 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a  ces containing..
210c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20          /// the 
210d0 6e 65 77 20 6f 72 20 6d 6f 64 69 66 69 65 64 20  new or modified 
210e0 63 6f 6c 75 6d 6e 20 76 61 6c 75 65 73 2c 20 69  column values, i
210f0 66 20 61 6e 79 2e 0d 0a 20 20 20 20 20 20 20 20  f any...        
21100 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
21110 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
21120 20 6e 61 6d 65 3d 22 72 6f 77 49 64 22 3e 0d 0a   name="rowId">..
21130 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e          /// Upon
21140 20 73 75 63 63 65 73 73 2c 20 74 68 69 73 20 70   success, this p
21150 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65  arameter must be
21160 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e   modified to con
21170 74 61 69 6e 20 74 68 65 20 75 6e 69 71 75 65 0d  tain the unique.
21180 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74  .        /// int
21190 65 67 65 72 20 72 6f 77 20 69 64 65 6e 74 69 66  eger row identif
211a0 69 65 72 20 66 6f 72 20 74 68 65 20 72 6f 77 20  ier for the row 
211b0 74 68 61 74 20 77 61 73 20 69 6e 73 65 72 74 65  that was inserte
211c0 64 2c 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20  d, if any...    
211d0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
211e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
211f0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
21200 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20   /// A standard 
21210 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f  SQLite return co
21220 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de...        ///
21230 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
21240 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72       SQLiteError
21250 43 6f 64 65 20 55 70 64 61 74 65 28 0d 0a 20 20  Code Update(..  
21260 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
21270 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62  VirtualTable tab
21280 6c 65 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20  le, /* in */..  
21290 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
212a0 56 61 6c 75 65 5b 5d 20 76 61 6c 75 65 73 2c 20  Value[] values, 
212b0 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20      /* in */..  
212c0 20 20 20 20 20 20 20 20 20 20 72 65 66 20 6c 6f            ref lo
212d0 6e 67 20 72 6f 77 49 64 20 20 20 20 20 20 20 20  ng rowId        
212e0 20 20 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20      /* out */.. 
212f0 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d             );...
21300 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
21310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21350 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
21360 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
21370 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68     /// This meth
21380 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20  od is called in 
21390 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d  response to the.
213a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
213b0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
213c0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 67  ativeModule.xBeg
213d0 69 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  in" /> method...
213e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
213f0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
21400 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
21410 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20  "table">..      
21420 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
21430 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75  ref="SQLiteVirtu
21440 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65  alTable" /> obje
21450 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f  ct instance asso
21460 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20  ciated..        
21470 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20 76 69  /// with this vi
21480 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20  rtual table...  
21490 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
214a0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
214b0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
214c0 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72     /// A standar
214d0 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20  d SQLite return 
214e0 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  code...        /
214f0 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
21500 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72         SQLiteErr
21510 6f 72 43 6f 64 65 20 42 65 67 69 6e 28 0d 0a 20  orCode Begin(.. 
21520 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
21530 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61  eVirtualTable ta
21540 62 6c 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20  ble /* in */..  
21550 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a            );....
21560 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
21570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
215a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
215b0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
215c0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
215d0 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
215e0 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72  d is called in r
215f0 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a  esponse to the..
21600 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
21610 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
21620 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53 79 6e 63  tiveModule.xSync
21630 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
21640 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
21650 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
21660 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74  / <param name="t
21670 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  able">..        
21680 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
21690 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c  f="SQLiteVirtual
216a0 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74  Table" /> object
216b0 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69   instance associ
216c0 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ated..        //
216d0 2f 20 77 69 74 68 20 74 68 69 73 20 76 69 72 74  / with this virt
216e0 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
216f0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
21700 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
21710 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
21720 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20   /// A standard 
21730 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f  SQLite return co
21740 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de...        ///
21750 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
21760 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72       SQLiteError
21770 43 6f 64 65 20 53 79 6e 63 28 0d 0a 20 20 20 20  Code Sync(..    
21780 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69          SQLiteVi
21790 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65  rtualTable table
217a0 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
217b0 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20         );....   
217c0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
217d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
217e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
217f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
21810 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
21820 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
21830 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69  // This method i
21840 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70  s called in resp
21850 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20  onse to the..   
21860 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
21870 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
21880 65 4d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 22  eModule.xCommit"
21890 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
218a0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
218b0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
218c0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61   <param name="ta
218d0 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ble">..        /
218e0 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
218f0 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  ="SQLiteVirtualT
21900 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20  able" /> object 
21910 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61  instance associa
21920 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ted..        ///
21930 20 77 69 74 68 20 74 68 69 73 20 76 69 72 74 75   with this virtu
21940 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20  al table...     
21950 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
21960 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
21970 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
21980 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53  /// A standard S
21990 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64  QLite return cod
219a0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
219b0 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
219c0 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43      SQLiteErrorC
219d0 6f 64 65 20 43 6f 6d 6d 69 74 28 0d 0a 20 20 20  ode Commit(..   
219e0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56           SQLiteV
219f0 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c  irtualTable tabl
21a00 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20  e /* in */..    
21a10 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20          );....  
21a20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
21a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
21a70 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
21a80 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
21a90 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20  /// This method 
21aa0 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73  is called in res
21ab0 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20  ponse to the..  
21ac0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
21ad0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
21ae0 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61  veModule.xRollba
21af0 63 6b 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  ck" /> method...
21b00 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
21b10 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
21b20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
21b30 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20  "table">..      
21b40 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
21b50 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75  ref="SQLiteVirtu
21b60 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65  alTable" /> obje
21b70 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f  ct instance asso
21b80 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20  ciated..        
21b90 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20 76 69  /// with this vi
21ba0 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20  rtual table...  
21bb0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
21bc0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
21bd0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
21be0 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72     /// A standar
21bf0 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20  d SQLite return 
21c00 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  code...        /
21c10 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
21c20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72         SQLiteErr
21c30 6f 72 43 6f 64 65 20 52 6f 6c 6c 62 61 63 6b 28  orCode Rollback(
21c40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
21c50 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
21c60 20 74 61 62 6c 65 20 2f 2a 20 69 6e 20 2a 2f 0d   table /* in */.
21c70 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d  .            );.
21c80 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
21c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21cd0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
21ce0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
21cf0 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65       /// This me
21d00 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69  thod is called i
21d10 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68  n response to th
21d20 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
21d30 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
21d40 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46  eNativeModule.xF
21d50 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20  indFunction" /> 
21d60 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
21d70 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
21d80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
21d90 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22  ram name="table"
21da0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
21db0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
21dc0 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
21dd0 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
21de0 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d  ance associated.
21df0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74  .        /// wit
21e00 68 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74  h this virtual t
21e10 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  able...        /
21e20 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
21e30 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
21e40 6e 61 6d 65 3d 22 61 72 67 75 6d 65 6e 74 43 6f  name="argumentCo
21e50 75 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  unt">..        /
21e60 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66  // The number of
21e70 20 61 72 67 75 6d 65 6e 74 73 20 74 6f 20 74 68   arguments to th
21e80 65 20 66 75 6e 63 74 69 6f 6e 20 62 65 69 6e 67  e function being
21e90 20 73 6f 75 67 68 74 2e 0d 0a 20 20 20 20 20 20   sought...      
21ea0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
21eb0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
21ec0 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d  am name="name">.
21ed0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
21ee0 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 66 75 6e   name of the fun
21ef0 63 74 69 6f 6e 20 62 65 69 6e 67 20 73 6f 75 67  ction being soug
21f00 68 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ht...        ///
21f10 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
21f20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
21f30 6d 65 3d 22 66 75 6e 63 74 69 6f 6e 22 3e 0d 0a  me="function">..
21f40 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e          /// Upon
21f50 20 73 75 63 63 65 73 73 2c 20 74 68 69 73 20 70   success, this p
21f60 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65  arameter must be
21f70 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e   modified to con
21f80 74 61 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20  tain the..      
21f90 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
21fa0 22 53 51 4c 69 74 65 46 75 6e 63 74 69 6f 6e 22  "SQLiteFunction"
21fb0 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
21fc0 6e 63 65 20 72 65 73 70 6f 6e 73 69 62 6c 65 20  nce responsible 
21fd0 66 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  for..        ///
21fe0 20 69 6d 70 6c 65 6d 65 6e 74 69 6e 67 20 74 68   implementing th
21ff0 65 20 73 70 65 63 69 66 69 65 64 20 66 75 6e 63  e specified func
22000 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  tion...        /
22010 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
22020 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
22030 6e 61 6d 65 3d 22 70 43 6c 69 65 6e 74 44 61 74  name="pClientDat
22040 61 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  a">..        ///
22050 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74   Upon success, t
22060 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d 75  his parameter mu
22070 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74  st be modified t
22080 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20  o contain the.. 
22090 20 20 20 20 20 20 20 2f 2f 2f 20 6e 61 74 69 76         /// nativ
220a0 65 20 75 73 65 72 2d 64 61 74 61 20 70 6f 69 6e  e user-data poin
220b0 74 65 72 20 61 73 73 6f 63 69 61 74 65 64 20 77  ter associated w
220c0 69 74 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ith..        ///
220d0 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d   <paramref name=
220e0 22 66 75 6e 63 74 69 6f 6e 22 20 2f 3e 2e 0d 0a  "function" />...
220f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
22100 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
22110 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
22120 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
22130 6f 20 69 66 20 74 68 65 20 73 70 65 63 69 66 69  o if the specifi
22140 65 64 20 66 75 6e 63 74 69 6f 6e 20 77 61 73 20  ed function was 
22150 66 6f 75 6e 64 3b 20 7a 65 72 6f 20 6f 74 68 65  found; zero othe
22160 72 77 69 73 65 2e 0d 0a 20 20 20 20 20 20 20 20  rwise...        
22170 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
22180 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 46 69 6e          bool Fin
22190 64 46 75 6e 63 74 69 6f 6e 28 0d 0a 20 20 20 20  dFunction(..    
221a0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69          SQLiteVi
221b0 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65  rtualTable table
221c0 2c 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  ,    /* in */.. 
221d0 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 61             int a
221e0 72 67 75 6d 65 6e 74 43 6f 75 6e 74 2c 20 20 20  rgumentCount,   
221f0 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f          /* in */
22200 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74  ..            st
22210 72 69 6e 67 20 6e 61 6d 65 2c 20 20 20 20 20 20  ring name,      
22220 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e             /* in
22230 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
22240 20 72 65 66 20 53 51 4c 69 74 65 46 75 6e 63 74   ref SQLiteFunct
22250 69 6f 6e 20 66 75 6e 63 74 69 6f 6e 2c 20 2f 2a  ion function, /*
22260 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20   out */..       
22270 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20       ref IntPtr 
22280 70 43 6c 69 65 6e 74 44 61 74 61 20 20 20 20 20  pClientData     
22290 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20    /* out */..   
222a0 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20           );.... 
222b0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
222c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
222d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
222e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
222f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
22300 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
22310 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
22320 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64   /// This method
22330 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65   is called in re
22340 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20  sponse to the.. 
22350 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
22360 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
22370 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d  iveModule.xRenam
22380 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
22390 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
223a0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
223b0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
223c0 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20  table">..       
223d0 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
223e0 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61  ef="SQLiteVirtua
223f0 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63  lTable" /> objec
22400 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63  t instance assoc
22410 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f  iated..        /
22420 2f 2f 20 77 69 74 68 20 74 68 69 73 20 76 69 72  // with this vir
22430 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20  tual table...   
22440 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
22450 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
22460 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 65 77 4e  param name="newN
22470 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ame">..        /
22480 2f 2f 20 54 68 65 20 6e 65 77 20 6e 61 6d 65 20  // The new name 
22490 66 6f 72 20 74 68 65 20 76 69 72 74 75 61 6c 20  for the virtual 
224a0 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20  table...        
224b0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
224c0 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
224d0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
224e0 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69   A standard SQLi
224f0 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d  te return code..
22500 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
22510 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
22520 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
22530 20 52 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20   Rename(..      
22540 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74        SQLiteVirt
22550 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c 20  ualTable table, 
22560 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
22570 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e 65 77        string new
22580 4e 61 6d 65 20 20 20 20 20 20 20 20 20 20 20 20  Name            
22590 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
225a0 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20        );....    
225b0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
225c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
225d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
225e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
225f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
22600 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
22610 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
22620 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73  / This method is
22630 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f   called in respo
22640 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20  nse to the..    
22650 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
22660 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
22670 4d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e  Module.xSavepoin
22680 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  t" /> method... 
22690 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
226a0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
226b0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
226c0 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20  table">..       
226d0 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
226e0 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61  ef="SQLiteVirtua
226f0 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63  lTable" /> objec
22700 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63  t instance assoc
22710 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f  iated..        /
22720 2f 2f 20 77 69 74 68 20 74 68 69 73 20 76 69 72  // with this vir
22730 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20  tual table...   
22740 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
22750 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
22760 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 61 76 65  param name="save
22770 70 6f 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20  point">..       
22780 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 61 6e 20   /// This is an 
22790 69 6e 74 65 67 65 72 20 69 64 65 6e 74 69 66 69  integer identifi
227a0 65 72 20 75 6e 64 65 72 20 77 68 69 63 68 20 74  er under which t
227b0 68 65 20 74 68 65 20 63 75 72 72 65 6e 74 20 73  he the current s
227c0 74 61 74 65 20 6f 66 0d 0a 20 20 20 20 20 20 20  tate of..       
227d0 20 2f 2f 2f 20 74 68 65 20 76 69 72 74 75 61 6c   /// the virtual
227e0 20 74 61 62 6c 65 20 73 68 6f 75 6c 64 20 62 65   table should be
227f0 20 73 61 76 65 64 2e 0d 0a 20 20 20 20 20 20 20   saved...       
22800 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
22810 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
22820 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
22830 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c  / A standard SQL
22840 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e  ite return code.
22850 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
22860 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
22870 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64    SQLiteErrorCod
22880 65 20 53 61 76 65 70 6f 69 6e 74 28 0d 0a 20 20  e Savepoint(..  
22890 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
228a0 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62  VirtualTable tab
228b0 6c 65 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20  le, /* in */..  
228c0 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 73 61            int sa
228d0 76 65 70 6f 69 6e 74 20 20 20 20 20 20 20 20 20  vepoint         
228e0 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20      /* in */..  
228f0 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a            );....
22900 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
22910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
22950 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
22960 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
22970 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
22980 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72  d is called in r
22990 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a  esponse to the..
229a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
229b0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
229c0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6c 65  tiveModule.xRele
229d0 61 73 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ase" /> method..
229e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
229f0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
22a00 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
22a10 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20  ="table">..     
22a20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
22a30 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74  cref="SQLiteVirt
22a40 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a  ualTable" /> obj
22a50 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73  ect instance ass
22a60 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20  ociated..       
22a70 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20 76   /// with this v
22a80 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20  irtual table... 
22a90 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
22aa0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
22ab0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 61   <param name="sa
22ac0 76 65 70 6f 69 6e 74 22 3e 0d 0a 20 20 20 20 20  vepoint">..     
22ad0 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 61     /// This is a
22ae0 6e 20 69 6e 74 65 67 65 72 20 75 73 65 64 20 74  n integer used t
22af0 6f 20 69 6e 64 69 63 61 74 65 20 74 68 61 74 20  o indicate that 
22b00 61 6e 79 20 73 61 76 65 64 20 73 74 61 74 65 73  any saved states
22b10 20 77 69 74 68 20 61 6e 0d 0a 20 20 20 20 20 20   with an..      
22b20 20 20 2f 2f 2f 20 69 64 65 6e 74 69 66 69 65 72    /// identifier
22b30 20 67 72 65 61 74 65 72 20 74 68 61 6e 20 6f 72   greater than or
22b40 20 65 71 75 61 6c 20 74 6f 20 74 68 69 73 20 73   equal to this s
22b50 68 6f 75 6c 64 20 62 65 20 64 65 6c 65 74 65 64  hould be deleted
22b60 20 62 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20   by the..       
22b70 20 2f 2f 2f 20 76 69 72 74 75 61 6c 20 74 61 62   /// virtual tab
22b80 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le...        ///
22b90 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
22ba0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
22bb0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20  ..        /// A 
22bc0 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20  standard SQLite 
22bd0 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20  return code...  
22be0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
22bf0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51  rns>..        SQ
22c00 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 52 65  LiteErrorCode Re
22c10 6c 65 61 73 65 28 0d 0a 20 20 20 20 20 20 20 20  lease(..        
22c20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61      SQLiteVirtua
22c30 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c 20 2f 2a  lTable table, /*
22c40 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
22c50 20 20 20 20 69 6e 74 20 73 61 76 65 70 6f 69 6e      int savepoin
22c60 74 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a  t             /*
22c70 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
22c80 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20      );....      
22c90 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
22ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
22ce0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
22cf0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
22d00 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63  This method is c
22d10 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73  alled in respons
22d20 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  e to the..      
22d30 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
22d40 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
22d50 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f  dule.xRollbackTo
22d60 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
22d70 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
22d80 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
22d90 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74  / <param name="t
22da0 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  able">..        
22db0 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
22dc0 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c  f="SQLiteVirtual
22dd0 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74  Table" /> object
22de0 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69   instance associ
22df0 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ated..        //
22e00 2f 20 77 69 74 68 20 74 68 69 73 20 76 69 72 74  / with this virt
22e10 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
22e20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
22e30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
22e40 61 72 61 6d 20 6e 61 6d 65 3d 22 73 61 76 65 70  aram name="savep
22e50 6f 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20  oint">..        
22e60 2f 2f 2f 20 54 68 69 73 20 69 73 20 61 6e 20 69  /// This is an i
22e70 6e 74 65 67 65 72 20 69 64 65 6e 74 69 66 69 65  nteger identifie
22e80 72 20 75 73 65 64 20 74 6f 20 73 70 65 63 69 66  r used to specif
22e90 79 20 61 20 73 70 65 63 69 66 69 63 20 73 61 76  y a specific sav
22ea0 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
22eb0 73 74 61 74 65 20 66 6f 72 20 74 68 65 20 76 69  state for the vi
22ec0 72 74 75 61 6c 20 74 61 62 6c 65 20 66 6f 72 20  rtual table for 
22ed0 69 74 20 74 6f 20 72 65 73 74 6f 72 65 20 69 74  it to restore it
22ee0 73 65 6c 66 20 62 61 63 6b 20 74 6f 2c 20 77 68  self back to, wh
22ef0 69 63 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ich..        ///
22f00 20 73 68 6f 75 6c 64 20 61 6c 73 6f 20 68 61 76   should also hav
22f10 65 20 74 68 65 20 65 66 66 65 63 74 20 6f 66 20  e the effect of 
22f20 64 65 6c 65 74 69 6e 67 20 61 6c 6c 20 73 61 76  deleting all sav
22f30 65 64 20 73 74 61 74 65 73 20 77 69 74 68 20 61  ed states with a
22f40 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  n..        /// i
22f50 6e 74 65 67 65 72 20 69 64 65 6e 74 69 66 69 65  nteger identifie
22f60 72 20 67 72 65 61 74 65 72 20 74 68 61 6e 20 74  r greater than t
22f70 68 69 73 20 6f 6e 65 2e 0d 0a 20 20 20 20 20 20  his one...      
22f80 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
22f90 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
22fa0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
22fb0 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51  // A standard SQ
22fc0 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65  Lite return code
22fd0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
22fe0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
22ff0 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f     SQLiteErrorCo
23000 64 65 20 52 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a  de RollbackTo(..
23010 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
23020 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74  teVirtualTable t
23030 61 62 6c 65 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a  able, /* in */..
23040 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
23050 73 61 76 65 70 6f 69 6e 74 20 20 20 20 20 20 20  savepoint       
23060 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a        /* in */..
23070 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a              );..
23080 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72      }..    #endr
23090 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
230a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
230b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
230c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
230d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
230e0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
230f0 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 4d 65  #region SQLiteMe
23100 6d 6f 72 79 20 53 74 61 74 69 63 20 43 6c 61 73  mory Static Clas
23110 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  s..    /// <summ
23120 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
23130 69 73 20 63 6c 61 73 73 20 63 6f 6e 74 61 69 6e  is class contain
23140 73 20 73 74 61 74 69 63 20 6d 65 74 68 6f 64 73  s static methods
23150 20 74 68 61 74 20 61 72 65 20 75 73 65 64 20 74   that are used t
23160 6f 20 61 6c 6c 6f 63 61 74 65 2c 0d 0a 20 20 20  o allocate,..   
23170 20 2f 2f 2f 20 6d 61 6e 69 70 75 6c 61 74 65 2c   /// manipulate,
23180 20 61 6e 64 20 66 72 65 65 20 6e 61 74 69 76 65   and free native
23190 20 6d 65 6d 6f 72 79 20 70 72 6f 76 69 64 65 64   memory provided
231a0 20 62 79 20 74 68 65 20 53 51 4c 69 74 65 20 63   by the SQLite c
231b0 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ore library...  
231c0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
231d0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
231e0 74 61 74 69 63 20 63 6c 61 73 73 20 53 51 4c 69  tatic class SQLi
231f0 74 65 4d 65 6d 6f 72 79 0d 0a 20 20 20 20 7b 0d  teMemory..    {.
23200 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
23210 20 50 72 69 76 61 74 65 20 44 61 74 61 0d 0a 23   Private Data..#
23220 69 66 20 54 52 41 43 4b 5f 4d 45 4d 4f 52 59 5f  if TRACK_MEMORY_
23230 42 59 54 45 53 0d 0a 20 20 20 20 20 20 20 20 2f  BYTES..        /
23240 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
23250 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6f        /// This o
23260 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 69  bject instance i
23270 73 20 75 73 65 64 20 74 6f 20 73 79 6e 63 68 72  s used to synchr
23280 6f 6e 69 7a 65 20 61 63 63 65 73 73 20 74 6f 20  onize access to 
23290 74 68 65 20 6f 74 68 65 72 0d 0a 20 20 20 20 20  the other..     
232a0 20 20 20 2f 2f 2f 20 73 74 61 74 69 63 20 66 69     /// static fi
232b0 65 6c 64 73 20 6f 66 20 74 68 69 73 20 63 6c 61  elds of this cla
232c0 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ss...        ///
232d0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
232e0 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
232f0 74 69 63 20 6f 62 6a 65 63 74 20 73 79 6e 63 52  tic object syncR
23300 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74  oot = new object
23310 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ();....        /
23320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23360 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
23370 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
23380 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
23390 20 74 6f 74 61 6c 20 6e 75 6d 62 65 72 20 6f 66   total number of
233a0 20 6f 75 74 73 74 61 6e 64 69 6e 67 20 6d 65 6d   outstanding mem
233b0 6f 72 79 20 62 79 74 65 73 20 61 6c 6c 6f 63 61  ory bytes alloca
233c0 74 65 64 20 62 79 20 74 68 69 73 0d 0a 20 20 20  ted by this..   
233d0 20 20 20 20 20 2f 2f 2f 20 63 6c 61 73 73 20 75       /// class u
233e0 73 69 6e 67 20 74 68 65 20 53 51 4c 69 74 65 20  sing the SQLite 
233f0 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20  core library... 
23400 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
23410 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
23420 72 69 76 61 74 65 20 73 74 61 74 69 63 20 69 6e  rivate static in
23430 74 20 62 79 74 65 73 41 6c 6c 6f 63 61 74 65 64  t bytesAllocated
23440 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
23450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23490 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
234a0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
234b0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d         /// The m
234c0 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66  aximum number of
234d0 20 6f 75 74 73 74 61 6e 64 69 6e 67 20 6d 65 6d   outstanding mem
234e0 6f 72 79 20 62 79 74 65 73 20 65 76 65 72 20 61  ory bytes ever a
234f0 6c 6c 6f 63 61 74 65 64 20 62 79 0d 0a 20 20 20  llocated by..   
23500 20 20 20 20 20 2f 2f 2f 20 74 68 69 73 20 63 6c       /// this cl
23510 61 73 73 20 75 73 69 6e 67 20 74 68 65 20 53 51  ass using the SQ
23520 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
23530 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y...        /// 
23540 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
23550 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
23560 69 63 20 69 6e 74 20 6d 61 78 69 6d 75 6d 42 79  ic int maximumBy
23570 74 65 73 41 6c 6c 6f 63 61 74 65 64 3b 0d 0a 23  tesAllocated;..#
23580 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 23  endif..        #
23590 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
235a0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
235b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
235c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
235d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
235e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
235f0 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
23600 4d 65 6d 6f 72 79 20 41 6c 6c 6f 63 61 74 69 6f  Memory Allocatio
23610 6e 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73  n Helper Methods
23620 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
23630 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
23640 20 2f 2f 2f 20 41 6c 6c 6f 63 61 74 65 73 20 61   /// Allocates a
23650 74 20 6c 65 61 73 74 20 74 68 65 20 73 70 65 63  t least the spec
23660 69 66 69 65 64 20 6e 75 6d 62 65 72 20 6f 66 20  ified number of 
23670 62 79 74 65 73 20 6f 66 20 6e 61 74 69 76 65 20  bytes of native 
23680 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20 20 20  memory..        
23690 2f 2f 2f 20 76 69 61 20 74 68 65 20 53 51 4c 69  /// via the SQLi
236a0 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20  te core library 
236b0 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29  sqlite3_malloc()
236c0 20 66 75 6e 63 74 69 6f 6e 20 61 6e 64 20 72 65   function and re
236d0 74 75 72 6e 73 0d 0a 20 20 20 20 20 20 20 20 2f  turns..        /
236e0 2f 2f 20 74 68 65 20 72 65 73 75 6c 74 69 6e 67  // the resulting
236f0 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 2e   native pointer.
23700 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
23710 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
23720 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
23730 65 3d 22 73 69 7a 65 22 3e 0d 0a 20 20 20 20 20  e="size">..     
23740 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65     /// The numbe
23750 72 20 6f 66 20 62 79 74 65 73 20 74 6f 20 61 6c  r of bytes to al
23760 6c 6f 63 61 74 65 2e 0d 0a 20 20 20 20 20 20 20  locate...       
23770 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
23780 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
23790 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
237a0 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69  / The native poi
237b0 6e 74 65 72 20 74 68 61 74 20 70 6f 69 6e 74 73  nter that points
237c0 20 74 6f 20 61 20 62 6c 6f 63 6b 20 6f 66 20 6d   to a block of m
237d0 65 6d 6f 72 79 20 6f 66 20 61 74 20 6c 65 61 73  emory of at leas
237e0 74 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  t the..        /
237f0 2f 2f 20 73 70 65 63 69 66 69 65 64 20 73 69 7a  // specified siz
23800 65 20 2d 4f 52 2d 20 3c 73 65 65 20 63 72 65 66  e -OR- <see cref
23810 3d 22 49 6e 74 50 74 72 2e 5a 65 72 6f 22 20 2f  ="IntPtr.Zero" /
23820 3e 20 69 66 20 74 68 65 20 6d 65 6d 6f 72 79 20  > if the memory 
23830 63 6f 75 6c 64 0d 0a 20 20 20 20 20 20 20 20 2f  could..        /
23840 2f 2f 20 6e 6f 74 20 62 65 20 61 6c 6c 6f 63 61  // not be alloca
23850 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ted...        //
23860 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
23870 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
23880 74 69 63 20 49 6e 74 50 74 72 20 41 6c 6c 6f 63  tic IntPtr Alloc
23890 61 74 65 28 69 6e 74 20 73 69 7a 65 29 0d 0a 20  ate(int size).. 
238a0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
238b0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 4d 65        IntPtr pMe
238c0 6d 6f 72 79 20 3d 20 55 6e 73 61 66 65 4e 61 74  mory = UnsafeNat
238d0 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
238e0 65 33 5f 6d 61 6c 6c 6f 63 28 73 69 7a 65 29 3b  e3_malloc(size);
238f0 0d 0a 0d 0a 23 69 66 20 54 52 41 43 4b 5f 4d 45  ....#if TRACK_ME
23900 4d 4f 52 59 5f 42 59 54 45 53 0d 0a 20 20 20 20  MORY_BYTES..    
23910 20 20 20 20 20 20 20 20 69 66 20 28 70 4d 65 6d          if (pMem
23920 6f 72 79 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  ory != IntPtr.Ze
23930 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
23940 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
23950 20 20 20 20 69 6e 74 20 62 6c 6f 63 6b 53 69 7a      int blockSiz
23960 65 20 3d 20 53 69 7a 65 28 70 4d 65 6d 6f 72 79  e = Size(pMemory
23970 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
23980 20 20 20 20 20 20 69 66 20 28 62 6c 6f 63 6b 53        if (blockS
23990 69 7a 65 20 3e 20 30 29 0d 0a 20 20 20 20 20 20  ize > 0)..      
239a0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
239b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
239c0 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
239d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
239e0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
239f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23a00 20 62 79 74 65 73 41 6c 6c 6f 63 61 74 65 64 20   bytesAllocated 
23a10 2b 3d 20 62 6c 6f 63 6b 53 69 7a 65 3b 0d 0a 0d  += blockSize;...
23a20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23a30 20 20 20 20 20 20 20 20 20 69 66 20 28 62 79 74           if (byt
23a40 65 73 41 6c 6c 6f 63 61 74 65 64 20 3e 20 6d 61  esAllocated > ma
23a50 78 69 6d 75 6d 42 79 74 65 73 41 6c 6c 6f 63 61  ximumBytesAlloca
23a60 74 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ted)..          
23a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23a80 20 20 6d 61 78 69 6d 75 6d 42 79 74 65 73 41 6c    maximumBytesAl
23a90 6c 6f 63 61 74 65 64 20 3d 20 62 79 74 65 73 41  located = bytesA
23aa0 6c 6c 6f 63 61 74 65 64 3b 0d 0a 20 20 20 20 20  llocated;..     
23ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
23ac0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23ad0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
23ae0 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20   }..#endif....  
23af0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
23b00 20 70 4d 65 6d 6f 72 79 3b 0d 0a 20 20 20 20 20   pMemory;..     
23b10 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
23b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23b60 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
23b70 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
23b80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 47 65  ..        /// Ge
23b90 74 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74  ts and returns t
23ba0 68 65 20 61 63 74 75 61 6c 20 73 69 7a 65 20 6f  he actual size o
23bb0 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  f the specified 
23bc0 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b 20 74 68 61  memory block tha
23bd0 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77  t..        /// w
23be0 61 73 20 70 72 65 76 69 6f 75 73 6c 79 20 6f 62  as previously ob
23bf0 74 61 69 6e 65 64 20 66 72 6f 6d 20 74 68 65 20  tained from the 
23c00 3c 73 65 65 20 63 72 65 66 3d 22 41 6c 6c 6f 63  <see cref="Alloc
23c10 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ate" /> method..
23c20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
23c30 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
23c40 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
23c50 3d 22 70 4d 65 6d 6f 72 79 22 3e 0d 0a 20 20 20  ="pMemory">..   
23c60 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
23c70 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  ive pointer to t
23c80 68 65 20 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b 20  he memory block 
23c90 70 72 65 76 69 6f 75 73 6c 79 20 6f 62 74 61 69  previously obtai
23ca0 6e 65 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20  ned from the..  
23cb0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
23cc0 72 65 66 3d 22 41 6c 6c 6f 63 61 74 65 22 20 2f  ref="Allocate" /
23cd0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
23ce0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
23cf0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
23d00 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
23d10 2f 2f 2f 20 54 68 65 20 61 63 74 75 61 6c 20 73  /// The actual s
23d20 69 7a 65 2c 20 69 6e 20 62 79 74 65 73 2c 20 6f  ize, in bytes, o
23d30 66 20 74 68 65 20 6d 65 6d 6f 72 79 20 62 6c 6f  f the memory blo
23d40 63 6b 20 73 70 65 63 69 66 69 65 64 20 76 69 61  ck specified via
23d50 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
23d60 2f 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  / native pointer
23d70 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
23d80 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
23d90 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
23da0 20 69 6e 74 20 53 69 7a 65 28 49 6e 74 50 74 72   int Size(IntPtr
23db0 20 70 4d 65 6d 6f 72 79 29 0d 0a 20 20 20 20 20   pMemory)..     
23dc0 20 20 20 7b 0d 0a 23 69 66 20 21 53 51 4c 49 54     {..#if !SQLIT
23dd0 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20  E_STANDARD..    
23de0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 55          return U
23df0 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
23e00 64 73 2e 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f  ds.sqlite3_mallo
23e10 63 5f 73 69 7a 65 5f 69 6e 74 65 72 6f 70 28 70  c_size_interop(p
23e20 4d 65 6d 6f 72 79 29 3b 0d 0a 23 65 6c 69 66 20  Memory);..#elif 
23e30 54 52 41 43 4b 5f 4d 45 4d 4f 52 59 5f 42 59 54  TRACK_MEMORY_BYT
23e40 45 53 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ES..            
23e50 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
23e60 2f 2f 20 48 41 43 4b 3a 20 4f 6b 2c 20 77 65 20  // HACK: Ok, we 
23e70 63 61 6e 6e 6f 74 20 64 65 74 65 72 6d 69 6e 65  cannot determine
23e80 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65   the size of the
23e90 20 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b 3b 0d 0a   memory block;..
23ea0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
23eb0 20 20 20 20 20 74 68 65 72 65 66 6f 72 65 2c 20       therefore, 
23ec0 6a 75 73 74 20 74 72 61 63 6b 20 6e 75 6d 62 65  just track numbe
23ed0 72 20 6f 66 20 61 6c 6c 6f 63 61 74 69 6f 6e 73  r of allocations
23ee0 20 69 6e 73 74 65 61 64 2e 0d 0a 20 20 20 20 20   instead...     
23ef0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
23f00 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 70         return (p
23f10 4d 65 6d 6f 72 79 20 21 3d 20 49 6e 74 50 74 72  Memory != IntPtr
23f20 2e 5a 65 72 6f 29 20 3f 20 31 20 3a 20 30 3b 0d  .Zero) ? 1 : 0;.
23f30 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
23f40 20 20 20 20 72 65 74 75 72 6e 20 30 3b 0d 0a 23      return 0;..#
23f50 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d  endif..        }
23f60 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
23f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23fb0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
23fc0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
23fd0 20 20 20 20 20 20 2f 2f 2f 20 46 72 65 65 73 20        /// Frees 
23fe0 61 20 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b 20 70  a memory block p
23ff0 72 65 76 69 6f 75 73 6c 79 20 6f 62 74 61 69 6e  reviously obtain
24000 65 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20  ed from the..   
24010 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
24020 65 66 3d 22 41 6c 6c 6f 63 61 74 65 22 20 2f 3e  ef="Allocate" />
24030 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
24040 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
24050 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
24060 61 72 61 6d 20 6e 61 6d 65 3d 22 70 4d 65 6d 6f  aram name="pMemo
24070 72 79 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ry">..        //
24080 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69  / The native poi
24090 6e 74 65 72 20 74 6f 20 74 68 65 20 6d 65 6d 6f  nter to the memo
240a0 72 79 20 62 6c 6f 63 6b 20 70 72 65 76 69 6f 75  ry block previou
240b0 73 6c 79 20 6f 62 74 61 69 6e 65 64 20 66 72 6f  sly obtained fro
240c0 6d 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  m the..        /
240d0 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 41 6c  // <see cref="Al
240e0 6c 6f 63 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f  locate" /> metho
240f0 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
24100 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
24110 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
24120 76 6f 69 64 20 46 72 65 65 28 49 6e 74 50 74 72  void Free(IntPtr
24130 20 70 4d 65 6d 6f 72 79 29 0d 0a 20 20 20 20 20   pMemory)..     
24140 20 20 20 7b 0d 0a 23 69 66 20 54 52 41 43 4b 5f     {..#if TRACK_
24150 4d 45 4d 4f 52 59 5f 42 59 54 45 53 0d 0a 20 20  MEMORY_BYTES..  
24160 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 4d            if (pM
24170 65 6d 6f 72 79 20 21 3d 20 49 6e 74 50 74 72 2e  emory != IntPtr.
24180 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
24190 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
241a0 20 20 20 20 20 20 69 6e 74 20 62 6c 6f 63 6b 53        int blockS
241b0 69 7a 65 20 3d 20 53 69 7a 65 28 70 4d 65 6d 6f  ize = Size(pMemo
241c0 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ry);....        
241d0 20 20 20 20 20 20 20 20 69 66 20 28 62 6c 6f 63          if (bloc
241e0 6b 53 69 7a 65 20 3e 20 30 29 0d 0a 20 20 20 20  kSize > 0)..    
241f0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
24200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24210 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
24220 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
24230 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
24240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24250 20 20 20 62 79 74 65 73 41 6c 6c 6f 63 61 74 65     bytesAllocate
24260 64 20 2d 3d 20 62 6c 6f 63 6b 53 69 7a 65 3b 0d  d -= blockSize;.
24270 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24280 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
24290 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
242a0 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
242b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
242c0 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
242d0 6f 64 73 2e 73 71 6c 69 74 65 33 5f 66 72 65 65  ods.sqlite3_free
242e0 28 70 4d 65 6d 6f 72 79 29 3b 0d 0a 20 20 20 20  (pMemory);..    
242f0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
24300 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d  endregion..    }
24310 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
24320 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
24330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24370 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69  ///....    #regi
24380 6f 6e 20 53 51 4c 69 74 65 53 74 72 69 6e 67 20  on SQLiteString 
24390 53 74 61 74 69 63 20 43 6c 61 73 73 0d 0a 20 20  Static Class..  
243a0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
243b0 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c  .    /// This cl
243c0 61 73 73 20 63 6f 6e 74 61 69 6e 73 20 73 74 61  ass contains sta
243d0 74 69 63 20 6d 65 74 68 6f 64 73 20 74 68 61 74  tic methods that
243e0 20 61 72 65 20 75 73 65 64 20 74 6f 20 64 65 61   are used to dea
243f0 6c 20 77 69 74 68 20 6e 61 74 69 76 65 0d 0a 20  l with native.. 
24400 20 20 20 2f 2f 2f 20 55 54 46 2d 38 20 73 74 72     /// UTF-8 str
24410 69 6e 67 20 70 6f 69 6e 74 65 72 73 20 74 6f 20  ing pointers to 
24420 62 65 20 75 73 65 64 20 77 69 74 68 20 74 68 65  be used with the
24430 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62   SQLite core lib
24440 72 61 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  rary...    /// <
24450 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 69  /summary>..    i
24460 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 63  nternal static c
24470 6c 61 73 73 20 53 51 4c 69 74 65 53 74 72 69 6e  lass SQLiteStrin
24480 67 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  g..    {..      
24490 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74    #region Privat
244a0 65 20 43 6f 6e 73 74 61 6e 74 73 0d 0a 20 20 20  e Constants..   
244b0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
244c0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
244d0 54 68 69 73 20 69 73 20 74 68 65 20 6d 61 78 69  This is the maxi
244e0 6d 75 6d 20 70 6f 73 73 69 62 6c 65 20 6c 65 6e  mum possible len
244f0 67 74 68 20 66 6f 72 20 74 68 65 20 6e 61 74 69  gth for the nati
24500 76 65 20 55 54 46 2d 38 20 65 6e 63 6f 64 65 64  ve UTF-8 encoded
24510 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74  ..        /// st
24520 72 69 6e 67 73 20 75 73 65 64 20 77 69 74 68 20  rings used with 
24530 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
24540 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20  library...      
24550 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
24560 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
24570 65 20 73 74 61 74 69 63 20 69 6e 74 20 54 68 69  e static int Thi
24580 72 74 79 42 69 74 73 20 3d 20 30 78 33 66 66 66  rtyBits = 0x3fff
24590 66 66 66 66 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ffff;....       
245a0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
245b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
245c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
245d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
245e0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
245f0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
24600 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
24610 68 69 73 20 69 73 20 74 68 65 20 3c 73 65 65 20  his is the <see 
24620 63 72 65 66 3d 22 45 6e 63 6f 64 69 6e 67 22 20  cref="Encoding" 
24630 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
24640 63 65 20 75 73 65 64 20 74 6f 20 68 61 6e 64 6c  ce used to handl
24650 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  e..        /// c
24660 6f 6e 76 65 72 73 69 6f 6e 73 20 66 72 6f 6d 2f  onversions from/
24670 74 6f 20 55 54 46 2d 38 2e 0d 0a 20 20 20 20 20  to UTF-8...     
24680 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
24690 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
246a0 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e  te static readon
246b0 6c 79 20 45 6e 63 6f 64 69 6e 67 20 55 74 66 38  ly Encoding Utf8
246c0 45 6e 63 6f 64 69 6e 67 20 3d 20 45 6e 63 6f 64  Encoding = Encod
246d0 69 6e 67 2e 55 54 46 38 3b 0d 0a 20 20 20 20 20  ing.UTF8;..     
246e0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
246f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
24700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24740 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
24750 69 6f 6e 20 55 54 46 2d 38 20 45 6e 63 6f 64 69  ion UTF-8 Encodi
24760 6e 67 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64  ng Helper Method
24770 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
24780 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
24790 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 74    /// Converts t
247a0 68 65 20 73 70 65 63 69 66 69 65 64 20 6d 61 6e  he specified man
247b0 61 67 65 64 20 73 74 72 69 6e 67 20 69 6e 74 6f  aged string into
247c0 20 74 68 65 20 55 54 46 2d 38 20 65 6e 63 6f 64   the UTF-8 encod
247d0 69 6e 67 20 61 6e 64 0d 0a 20 20 20 20 20 20 20  ing and..       
247e0 20 2f 2f 2f 20 72 65 74 75 72 6e 73 20 74 68 65   /// returns the
247f0 20 61 72 72 61 79 20 6f 66 20 62 79 74 65 73 20   array of bytes 
24800 63 6f 6e 74 61 69 6e 69 6e 67 20 69 74 73 20 72  containing its r
24810 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 69 6e  epresentation in
24820 20 74 68 61 74 0d 0a 20 20 20 20 20 20 20 20 2f   that..        /
24830 2f 2f 20 65 6e 63 6f 64 69 6e 67 2e 0d 0a 20 20  // encoding...  
24840 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
24850 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
24860 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76  / <param name="v
24870 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  alue">..        
24880 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20  /// The managed 
24890 73 74 72 69 6e 67 20 74 6f 20 63 6f 6e 76 65 72  string to conver
248a0 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  t...        /// 
248b0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
248c0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
248d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
248e0 20 61 72 72 61 79 20 6f 66 20 62 79 74 65 73 20   array of bytes 
248f0 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 72  containing the r
24900 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66  epresentation of
24910 20 74 68 65 20 6d 61 6e 61 67 65 64 0d 0a 20 20   the managed..  
24920 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 69 6e 67        /// string
24930 20 69 6e 20 74 68 65 20 55 54 46 2d 38 20 65 6e   in the UTF-8 en
24940 63 6f 64 69 6e 67 20 6f 72 20 6e 75 6c 6c 20 75  coding or null u
24950 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20  pon failure...  
24960 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
24970 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  rns>..        pu
24980 62 6c 69 63 20 73 74 61 74 69 63 20 62 79 74 65  blic static byte
24990 5b 5d 20 47 65 74 55 74 66 38 42 79 74 65 73 46  [] GetUtf8BytesF
249a0 72 6f 6d 53 74 72 69 6e 67 28 0d 0a 20 20 20 20  romString(..    
249b0 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 76          string v
249c0 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20  alue..          
249d0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
249e0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
249f0 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  value == null)..
24a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24a10 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a  return null;....
24a20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
24a30 72 6e 20 55 74 66 38 45 6e 63 6f 64 69 6e 67 2e  rn Utf8Encoding.
24a40 47 65 74 42 79 74 65 73 28 76 61 6c 75 65 29 3b  GetBytes(value);
24a50 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
24a60 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
24a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
24ab0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
24ac0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
24ad0 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 74 68   /// Converts th
24ae0 65 20 73 70 65 63 69 66 69 65 64 20 61 72 72 61  e specified arra
24af0 79 20 6f 66 20 62 79 74 65 73 20 72 65 70 72 65  y of bytes repre
24b00 73 65 6e 74 69 6e 67 20 61 20 73 74 72 69 6e 67  senting a string
24b10 20 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20   in the..       
24b20 20 2f 2f 2f 20 55 54 46 2d 38 20 65 6e 63 6f 64   /// UTF-8 encod
24b30 69 6e 67 20 61 6e 64 20 72 65 74 75 72 6e 73 20  ing and returns 
24b40 61 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67  a managed string
24b50 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
24b60 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
24b70 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
24b80 6d 65 3d 22 62 79 74 65 73 22 3e 0d 0a 20 20 20  me="bytes">..   
24b90 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 72 72       /// The arr
24ba0 61 79 20 6f 66 20 62 79 74 65 73 20 74 6f 20 63  ay of bytes to c
24bb0 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 20  onvert...       
24bc0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
24bd0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
24be0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
24bf0 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20 73 74  / The managed st
24c00 72 69 6e 67 20 6f 72 20 6e 75 6c 6c 20 75 70 6f  ring or null upo
24c10 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20  n failure...    
24c20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
24c30 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  s>..        publ
24c40 69 63 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  ic static string
24c50 20 47 65 74 53 74 72 69 6e 67 46 72 6f 6d 55 74   GetStringFromUt
24c60 66 38 42 79 74 65 73 28 0d 0a 20 20 20 20 20 20  f8Bytes(..      
24c70 20 20 20 20 20 20 62 79 74 65 5b 5d 20 62 79 74        byte[] byt
24c80 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  es..            
24c90 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
24ca0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 79            if (by
24cb0 74 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  tes == null)..  
24cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
24cd0 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 23 69  turn null;....#i
24ce0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
24cf0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
24d00 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
24d10 20 55 74 66 38 45 6e 63 6f 64 69 6e 67 2e 47 65   Utf8Encoding.Ge
24d20 74 53 74 72 69 6e 67 28 62 79 74 65 73 29 3b 0d  tString(bytes);.
24d30 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
24d40 20 20 20 20 72 65 74 75 72 6e 20 55 74 66 38 45      return Utf8E
24d50 6e 63 6f 64 69 6e 67 2e 47 65 74 53 74 72 69 6e  ncoding.GetStrin
24d60 67 28 62 79 74 65 73 2c 20 30 2c 20 62 79 74 65  g(bytes, 0, byte
24d70 73 2e 4c 65 6e 67 74 68 29 3b 0d 0a 23 65 6e 64  s.Length);..#end
24d80 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  if..        }.. 
24d90 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
24da0 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
24db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
24e00 23 72 65 67 69 6f 6e 20 55 54 46 2d 38 20 53 74  #region UTF-8 St
24e10 72 69 6e 67 20 48 65 6c 70 65 72 20 4d 65 74 68  ring Helper Meth
24e20 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ods..        ///
24e30 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
24e40 20 20 20 20 2f 2f 2f 20 50 72 6f 62 65 73 20 61      /// Probes a
24e50 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
24e60 74 6f 20 61 20 73 74 72 69 6e 67 20 69 6e 20 74  to a string in t
24e70 68 65 20 55 54 46 2d 38 20 65 6e 63 6f 64 69 6e  he UTF-8 encodin
24e80 67 20 66 6f 72 20 69 74 73 0d 0a 20 20 20 20 20  g for its..     
24e90 20 20 20 2f 2f 2f 20 74 65 72 6d 69 6e 61 74 69     /// terminati
24ea0 6e 67 20 4e 55 4c 20 63 68 61 72 61 63 74 65 72  ng NUL character
24eb0 2c 20 77 69 74 68 69 6e 20 74 68 65 20 73 70 65  , within the spe
24ec0 63 69 66 69 65 64 20 6c 65 6e 67 74 68 20 6c 69  cified length li
24ed0 6d 69 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  mit...        //
24ee0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
24ef0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
24f00 20 6e 61 6d 65 3d 22 70 56 61 6c 75 65 22 3e 0d   name="pValue">.
24f10 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
24f20 20 6e 61 74 69 76 65 20 4e 55 4c 2d 74 65 72 6d   native NUL-term
24f30 69 6e 61 74 65 64 20 73 74 72 69 6e 67 20 70 6f  inated string po
24f40 69 6e 74 65 72 2e 0d 0a 20 20 20 20 20 20 20 20  inter...        
24f50 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
24f60 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
24f70 20 6e 61 6d 65 3d 22 6c 69 6d 69 74 22 3e 0d 0a   name="limit">..
24f80 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
24f90 6d 61 78 69 6d 75 6d 20 6c 65 6e 67 74 68 20 6f  maximum length o
24fa0 66 20 74 68 65 20 6e 61 74 69 76 65 20 73 74 72  f the native str
24fb0 69 6e 67 2c 20 69 6e 20 62 79 74 65 73 2e 0d 0a  ing, in bytes...
24fc0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
24fd0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
24fe0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
24ff0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6c 65 6e       /// The len
25000 67 74 68 20 6f 66 20 74 68 65 20 6e 61 74 69 76  gth of the nativ
25010 65 20 73 74 72 69 6e 67 2c 20 69 6e 20 62 79 74  e string, in byt
25020 65 73 20 2d 4f 52 2d 20 7a 65 72 6f 20 69 66 20  es -OR- zero if 
25030 74 68 65 20 6c 65 6e 67 74 68 0d 0a 20 20 20 20  the length..    
25040 20 20 20 20 2f 2f 2f 20 63 6f 75 6c 64 20 6e 6f      /// could no
25050 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e  t be determined.
25060 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
25070 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
25080 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
25090 69 6e 74 20 50 72 6f 62 65 46 6f 72 55 74 66 38  int ProbeForUtf8
250a0 42 79 74 65 4c 65 6e 67 74 68 28 0d 0a 20 20 20  ByteLength(..   
250b0 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
250c0 70 56 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20 20  pValue,..       
250d0 20 20 20 20 20 69 6e 74 20 6c 69 6d 69 74 0d 0a       int limit..
250e0 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
250f0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
25100 20 20 20 20 20 20 69 6e 74 20 6c 65 6e 67 74 68        int length
25110 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20   = 0;....       
25120 20 20 20 20 20 69 66 20 28 28 70 56 61 6c 75 65       if ((pValue
25130 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
25140 20 26 26 20 28 6c 69 6d 69 74 20 3e 20 30 29 29   && (limit > 0))
25150 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
25160 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25170 20 64 6f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   do..           
25180 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
25190 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
251a0 4d 61 72 73 68 61 6c 2e 52 65 61 64 42 79 74 65  Marshal.ReadByte
251b0 28 70 56 61 6c 75 65 2c 20 6c 65 6e 67 74 68 29  (pValue, length)
251c0 20 3d 3d 20 30 29 0d 0a 20 20 20 20 20 20 20 20   == 0)..        
251d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
251e0 62 72 65 61 6b 3b 0d 0a 0d 0a 20 20 20 20 20 20  break;....      
251f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
25200 20 28 6c 65 6e 67 74 68 20 3e 3d 20 6c 69 6d 69   (length >= limi
25210 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
25220 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61              brea
25230 6b 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  k;....          
25240 20 20 20 20 20 20 20 20 20 20 6c 65 6e 67 74 68            length
25250 2b 2b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ++;..           
25260 20 20 20 20 20 7d 20 77 68 69 6c 65 20 28 74 72       } while (tr
25270 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ue);..          
25280 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
25290 20 20 20 72 65 74 75 72 6e 20 6c 65 6e 67 74 68     return length
252a0 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
252b0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
252c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
252d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
252e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
252f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
25300 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
25310 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
25320 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 74    /// Converts t
25330 68 65 20 73 70 65 63 69 66 69 65 64 20 6e 61 74  he specified nat
25340 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69 6e 61 74  ive NUL-terminat
25350 65 64 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20  ed UTF-8 string 
25360 70 6f 69 6e 74 65 72 0d 0a 20 20 20 20 20 20 20  pointer..       
25370 20 2f 2f 2f 20 69 6e 74 6f 20 61 20 6d 61 6e 61   /// into a mana
25380 67 65 64 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20  ged string...   
25390 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
253a0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
253b0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
253c0 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  alue">..        
253d0 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 4e  /// The native N
253e0 55 4c 2d 74 65 72 6d 69 6e 61 74 65 64 20 55 54  UL-terminated UT
253f0 46 2d 38 20 73 74 72 69 6e 67 20 70 6f 69 6e 74  F-8 string point
25400 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  er...        ///
25410 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
25420 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
25430 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
25440 65 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67  e managed string
25450 20 6f 72 20 6e 75 6c 6c 20 75 70 6f 6e 20 66 61   or null upon fa
25460 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  ilure...        
25470 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
25480 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
25490 74 61 74 69 63 20 73 74 72 69 6e 67 20 53 74 72  tatic string Str
254a0 69 6e 67 46 72 6f 6d 55 74 66 38 49 6e 74 50 74  ingFromUtf8IntPt
254b0 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
254c0 49 6e 74 50 74 72 20 70 56 61 6c 75 65 0d 0a 20  IntPtr pValue.. 
254d0 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
254e0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
254f0 20 20 20 20 20 72 65 74 75 72 6e 20 53 74 72 69       return Stri
25500 6e 67 46 72 6f 6d 55 74 66 38 49 6e 74 50 74 72  ngFromUtf8IntPtr
25510 28 70 56 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20  (pValue,..      
25520 20 20 20 20 20 20 20 20 20 20 50 72 6f 62 65 46            ProbeF
25530 6f 72 55 74 66 38 42 79 74 65 4c 65 6e 67 74 68  orUtf8ByteLength
25540 28 70 56 61 6c 75 65 2c 20 54 68 69 72 74 79 42  (pValue, ThirtyB
25550 69 74 73 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  its));..        
25560 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
25570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
255a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
255b0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
255c0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
255d0 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65         /// Conve
255e0 72 74 73 20 74 68 65 20 73 70 65 63 69 66 69 65  rts the specifie
255f0 64 20 6e 61 74 69 76 65 20 55 54 46 2d 38 20 73  d native UTF-8 s
25600 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 20 6f 66  tring pointer of
25610 20 74 68 65 20 73 70 65 63 69 66 69 65 64 0d 0a   the specified..
25620 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 65 6e 67          /// leng
25630 74 68 20 69 6e 74 6f 20 61 20 6d 61 6e 61 67 65  th into a manage
25640 64 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 20  d string...     
25650 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
25660 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
25670 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 61 6c  param name="pVal
25680 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ue">..        //
25690 2f 20 54 68 65 20 6e 61 74 69 76 65 20 55 54 46  / The native UTF
256a0 2d 38 20 73 74 72 69 6e 67 20 70 6f 69 6e 74 65  -8 string pointe
256b0 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
256c0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
256d0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
256e0 65 3d 22 6c 65 6e 67 74 68 22 3e 0d 0a 20 20 20  e="length">..   
256f0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6c 65 6e       /// The len
25700 67 74 68 20 6f 66 20 74 68 65 20 6e 61 74 69 76  gth of the nativ
25710 65 20 73 74 72 69 6e 67 2c 20 69 6e 20 62 79 74  e string, in byt
25720 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  es...        ///
25730 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
25740 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
25750 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
25760 65 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67  e managed string
25770 20 6f 72 20 6e 75 6c 6c 20 75 70 6f 6e 20 66 61   or null upon fa
25780 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  ilure...        
25790 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
257a0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
257b0 74 61 74 69 63 20 73 74 72 69 6e 67 20 53 74 72  tatic string Str
257c0 69 6e 67 46 72 6f 6d 55 74 66 38 49 6e 74 50 74  ingFromUtf8IntPt
257d0 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
257e0 49 6e 74 50 74 72 20 70 56 61 6c 75 65 2c 0d 0a  IntPtr pValue,..
257f0 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
25800 6c 65 6e 67 74 68 0d 0a 20 20 20 20 20 20 20 20  length..        
25810 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
25820 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
25830 20 28 70 56 61 6c 75 65 20 3d 3d 20 49 6e 74 50   (pValue == IntP
25840 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
25850 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
25860 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20   null;....      
25870 20 20 20 20 20 20 69 66 20 28 6c 65 6e 67 74 68        if (length
25880 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20   > 0)..         
25890 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
258a0 20 20 20 20 20 20 62 79 74 65 5b 5d 20 62 79 74        byte[] byt
258b0 65 73 20 3d 20 6e 65 77 20 62 79 74 65 5b 6c 65  es = new byte[le
258c0 6e 67 74 68 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20  ngth];....      
258d0 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61            Marsha
258e0 6c 2e 43 6f 70 79 28 70 56 61 6c 75 65 2c 20 62  l.Copy(pValue, b
258f0 79 74 65 73 2c 20 30 2c 20 6c 65 6e 67 74 68 29  ytes, 0, length)
25900 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
25910 20 20 20 20 20 72 65 74 75 72 6e 20 47 65 74 53       return GetS
25920 74 72 69 6e 67 46 72 6f 6d 55 74 66 38 42 79 74  tringFromUtf8Byt
25930 65 73 28 62 79 74 65 73 29 3b 0d 0a 20 20 20 20  es(bytes);..    
25940 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
25950 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
25960 53 74 72 69 6e 67 2e 45 6d 70 74 79 3b 0d 0a 20  String.Empty;.. 
25970 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
25980 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
25990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
259a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
259b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
259c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
259d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
259e0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
259f0 2f 20 43 6f 6e 76 65 72 74 73 20 74 68 65 20 73  / Converts the s
25a00 70 65 63 69 66 69 65 64 20 6d 61 6e 61 67 65 64  pecified managed
25a10 20 73 74 72 69 6e 67 20 69 6e 74 6f 20 61 20 6e   string into a n
25a20 61 74 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69 6e  ative NUL-termin
25a30 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ated..        //
25a40 2f 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20 70  / UTF-8 string p
25a50 6f 69 6e 74 65 72 20 75 73 69 6e 67 20 6d 65 6d  ointer using mem
25a60 6f 72 79 20 6f 62 74 61 69 6e 65 64 20 66 72 6f  ory obtained fro
25a70 6d 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  m the SQLite cor
25a80 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c  e..        /// l
25a90 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20  ibrary...       
25aa0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
25ab0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
25ac0 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22  ram name="value"
25ad0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
25ae0 68 65 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e  he managed strin
25af0 67 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20  g to convert... 
25b00 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
25b10 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
25b20 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
25b30 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
25b40 76 65 20 4e 55 4c 2d 74 65 72 6d 69 6e 61 74 65  ve NUL-terminate
25b50 64 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20 70  d UTF-8 string p
25b60 6f 69 6e 74 65 72 20 6f 72 0d 0a 20 20 20 20 20  ointer or..     
25b70 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
25b80 3d 22 49 6e 74 50 74 72 2e 5a 65 72 6f 22 20 2f  ="IntPtr.Zero" /
25b90 3e 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d  > upon failure..
25ba0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
25bb0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
25bc0 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 49   public static I
25bd0 6e 74 50 74 72 20 55 74 66 38 49 6e 74 50 74 72  ntPtr Utf8IntPtr
25be0 46 72 6f 6d 53 74 72 69 6e 67 28 0d 0a 20 20 20  FromString(..   
25bf0 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
25c00 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20  value..         
25c10 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
25c20 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
25c30 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d  (value == null).
25c40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25c50 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a   return IntPtr.Z
25c60 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ero;....        
25c70 20 20 20 20 49 6e 74 50 74 72 20 72 65 73 75 6c      IntPtr resul
25c80 74 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  t = IntPtr.Zero;
25c90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 79  ..            by
25ca0 74 65 5b 5d 20 62 79 74 65 73 20 3d 20 47 65 74  te[] bytes = Get
25cb0 55 74 66 38 42 79 74 65 73 46 72 6f 6d 53 74 72  Utf8BytesFromStr
25cc0 69 6e 67 28 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20  ing(value);.... 
25cd0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62             if (b
25ce0 79 74 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  ytes == null).. 
25cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
25d00 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72  eturn IntPtr.Zer
25d10 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  o;....          
25d20 20 20 69 6e 74 20 6c 65 6e 67 74 68 20 3d 20 62    int length = b
25d30 79 74 65 73 2e 4c 65 6e 67 74 68 3b 0d 0a 0d 0a  ytes.Length;....
25d40 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75              resu
25d50 6c 74 20 3d 20 53 51 4c 69 74 65 4d 65 6d 6f 72  lt = SQLiteMemor
25d60 79 2e 41 6c 6c 6f 63 61 74 65 28 6c 65 6e 67 74  y.Allocate(lengt
25d70 68 20 2b 20 31 29 3b 0d 0a 0d 0a 20 20 20 20 20  h + 1);....     
25d80 20 20 20 20 20 20 20 69 66 20 28 72 65 73 75 6c         if (resul
25d90 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  t == IntPtr.Zero
25da0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
25db0 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72     return IntPtr
25dc0 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20  .Zero;....      
25dd0 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 43 6f        Marshal.Co
25de0 70 79 28 62 79 74 65 73 2c 20 30 2c 20 72 65 73  py(bytes, 0, res
25df0 75 6c 74 2c 20 6c 65 6e 67 74 68 29 3b 0d 0a 20  ult, length);.. 
25e00 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68             Marsh
25e10 61 6c 2e 57 72 69 74 65 42 79 74 65 28 72 65 73  al.WriteByte(res
25e20 75 6c 74 2c 20 6c 65 6e 67 74 68 2c 20 30 29 3b  ult, length, 0);
25e30 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
25e40 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a  return result;..
25e50 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
25e60 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
25e70 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
25e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25ea0 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
25ed0 69 6f 6e 20 55 54 46 2d 38 20 53 74 72 69 6e 67  ion UTF-8 String
25ee0 20 41 72 72 61 79 20 48 65 6c 70 65 72 20 4d 65   Array Helper Me
25ef0 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f  thods..        /
25f00 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
25f10 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72        /// Conver
25f20 74 73 20 61 20 6c 6f 67 69 63 61 6c 20 61 72 72  ts a logical arr
25f30 61 79 20 6f 66 20 6e 61 74 69 76 65 20 4e 55 4c  ay of native NUL
25f40 2d 74 65 72 6d 69 6e 61 74 65 64 20 55 54 46 2d  -terminated UTF-
25f50 38 20 73 74 72 69 6e 67 0d 0a 20 20 20 20 20 20  8 string..      
25f60 20 20 2f 2f 2f 20 70 6f 69 6e 74 65 72 73 20 69    /// pointers i
25f70 6e 74 6f 20 61 6e 20 61 72 72 61 79 20 6f 66 20  nto an array of 
25f80 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67 73 2e  managed strings.
25f90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
25fa0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
25fb0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
25fc0 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20 20 20 20  e="argc">..     
25fd0 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65     /// The numbe
25fe0 72 20 6f 66 20 65 6c 65 6d 65 6e 74 73 20 69 6e  r of elements in
25ff0 20 74 68 65 20 6c 6f 67 69 63 61 6c 20 61 72 72   the logical arr
26000 61 79 20 6f 66 20 6e 61 74 69 76 65 0d 0a 20 20  ay of native..  
26010 20 20 20 20 20 20 2f 2f 2f 20 4e 55 4c 2d 74 65        /// NUL-te
26020 72 6d 69 6e 61 74 65 64 20 55 54 46 2d 38 20 73  rminated UTF-8 s
26030 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 73 2e 0d  tring pointers..
26040 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
26050 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
26060 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
26070 61 72 67 76 22 3e 0d 0a 20 20 20 20 20 20 20 20  argv">..        
26080 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70  /// The native p
26090 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 6c 6f  ointer to the lo
260a0 67 69 63 61 6c 20 61 72 72 61 79 20 6f 66 20 6e  gical array of n
260b0 61 74 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69 6e  ative NUL-termin
260c0 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ated..        //
260d0 2f 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20 70  / UTF-8 string p
260e0 6f 69 6e 74 65 72 73 20 74 6f 20 63 6f 6e 76 65  ointers to conve
260f0 72 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  rt...        ///
26100 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
26110 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
26120 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
26130 65 20 61 72 72 61 79 20 6f 66 20 6d 61 6e 61 67  e array of manag
26140 65 64 20 73 74 72 69 6e 67 73 20 6f 72 20 6e 75  ed strings or nu
26150 6c 6c 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e  ll upon failure.
26160 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
26170 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
26180 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
26190 73 74 72 69 6e 67 5b 5d 20 53 74 72 69 6e 67 41  string[] StringA
261a0 72 72 61 79 46 72 6f 6d 55 74 66 38 53 69 7a 65  rrayFromUtf8Size
261b0 41 6e 64 49 6e 74 50 74 72 28 0d 0a 20 20 20 20  AndIntPtr(..    
261c0 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63          int argc
261d0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  ,..            I
261e0 6e 74 50 74 72 20 61 72 67 76 0d 0a 20 20 20 20  ntPtr argv..    
261f0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
26200 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
26210 20 20 69 66 20 28 61 72 67 63 20 3c 20 30 29 0d    if (argc < 0).
26220 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26230 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d   return null;...
26240 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
26250 28 61 72 67 76 20 3d 3d 20 49 6e 74 50 74 72 2e  (argv == IntPtr.
26260 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
26270 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
26280 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ll;....         
26290 20 20 20 73 74 72 69 6e 67 5b 5d 20 72 65 73 75     string[] resu
262a0 6c 74 20 3d 20 6e 65 77 20 73 74 72 69 6e 67 5b  lt = new string[
262b0 61 72 67 63 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20  argc];....      
262c0 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74 20 69        for (int i
262d0 6e 64 65 78 20 3d 20 30 2c 20 6f 66 66 73 65 74  ndex = 0, offset
262e0 20 3d 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 20   = 0;..         
262f0 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 65 78             index
26300 20 3c 20 72 65 73 75 6c 74 2e 4c 65 6e 67 74 68   < result.Length
26310 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
26320 20 20 20 20 20 20 20 69 6e 64 65 78 2b 2b 2c 20         index++, 
26330 6f 66 66 73 65 74 20 2b 3d 20 49 6e 74 50 74 72  offset += IntPtr
26340 2e 53 69 7a 65 29 0d 0a 20 20 20 20 20 20 20 20  .Size)..        
26350 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
26360 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 41         IntPtr pA
26370 72 67 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  rg = SQLiteMarsh
26380 61 6c 2e 52 65 61 64 49 6e 74 50 74 72 28 61 72  al.ReadIntPtr(ar
26390 67 76 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a  gv, offset);....
263a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
263b0 72 65 73 75 6c 74 5b 69 6e 64 65 78 5d 20 3d 20  result[index] = 
263c0 28 70 41 72 67 20 21 3d 20 49 6e 74 50 74 72 2e  (pArg != IntPtr.
263d0 5a 65 72 6f 29 20 3f 0d 0a 20 20 20 20 20 20 20  Zero) ?..       
263e0 20 20 20 20 20 20 20 20 20 20 20 20 20 53 74 72               Str
263f0 69 6e 67 46 72 6f 6d 55 74 66 38 49 6e 74 50 74  ingFromUtf8IntPt
26400 72 28 70 41 72 67 29 20 3a 20 6e 75 6c 6c 3b 0d  r(pArg) : null;.
26410 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
26420 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
26430 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20  turn result;..  
26440 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
26450 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
26460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
264a0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
264b0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
264c0 20 43 6f 6e 76 65 72 74 73 20 61 6e 20 61 72 72   Converts an arr
264d0 61 79 20 6f 66 20 6d 61 6e 61 67 65 64 20 73 74  ay of managed st
264e0 72 69 6e 67 73 20 69 6e 74 6f 20 61 6e 20 61 72  rings into an ar
264f0 72 61 79 20 6f 66 20 6e 61 74 69 76 65 0d 0a 20  ray of native.. 
26500 20 20 20 20 20 20 20 2f 2f 2f 20 4e 55 4c 2d 74         /// NUL-t
26510 65 72 6d 69 6e 61 74 65 64 20 55 54 46 2d 38 20  erminated UTF-8 
26520 73 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 73 2e  string pointers.
26530 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
26540 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
26550 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
26560 65 3d 22 76 61 6c 75 65 73 22 3e 0d 0a 20 20 20  e="values">..   
26570 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 72 72       /// The arr
26580 61 79 20 6f 66 20 6d 61 6e 61 67 65 64 20 73 74  ay of managed st
26590 72 69 6e 67 73 20 74 6f 20 63 6f 6e 76 65 72 74  rings to convert
265a0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
265b0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
265c0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
265d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
265e0 61 72 72 61 79 20 6f 66 20 6e 61 74 69 76 65 20  array of native 
265f0 4e 55 4c 2d 74 65 72 6d 69 6e 61 74 65 64 20 55  NUL-terminated U
26600 54 46 2d 38 20 73 74 72 69 6e 67 20 70 6f 69 6e  TF-8 string poin
26610 74 65 72 73 20 6f 72 20 6e 75 6c 6c 0d 0a 20 20  ters or null..  
26620 20 20 20 20 20 20 2f 2f 2f 20 75 70 6f 6e 20 66        /// upon f
26630 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ailure...       
26640 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
26650 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
26660 73 74 61 74 69 63 20 49 6e 74 50 74 72 5b 5d 20  static IntPtr[] 
26670 55 74 66 38 49 6e 74 50 74 72 41 72 72 61 79 46  Utf8IntPtrArrayF
26680 72 6f 6d 53 74 72 69 6e 67 41 72 72 61 79 28 0d  romStringArray(.
26690 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72  .            str
266a0 69 6e 67 5b 5d 20 76 61 6c 75 65 73 0d 0a 20 20  ing[] values..  
266b0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
266c0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
266d0 20 20 20 20 69 66 20 28 76 61 6c 75 65 73 20 3d      if (values =
266e0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
266f0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
26700 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
26710 20 20 20 20 20 49 6e 74 50 74 72 5b 5d 20 72 65       IntPtr[] re
26720 73 75 6c 74 20 3d 20 6e 65 77 20 49 6e 74 50 74  sult = new IntPt
26730 72 5b 76 61 6c 75 65 73 2e 4c 65 6e 67 74 68 5d  r[values.Length]
26740 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
26750 20 66 6f 72 20 28 69 6e 74 20 69 6e 64 65 78 20   for (int index 
26760 3d 20 30 3b 20 69 6e 64 65 78 20 3c 20 72 65 73  = 0; index < res
26770 75 6c 74 2e 4c 65 6e 67 74 68 3b 20 69 6e 64 65  ult.Length; inde
26780 78 2b 2b 29 0d 0a 20 20 20 20 20 20 20 20 20 20  x++)..          
26790 20 20 20 20 20 20 72 65 73 75 6c 74 5b 69 6e 64        result[ind
267a0 65 78 5d 20 3d 20 55 74 66 38 49 6e 74 50 74 72  ex] = Utf8IntPtr
267b0 46 72 6f 6d 53 74 72 69 6e 67 28 76 61 6c 75 65  FromString(value
267c0 73 5b 69 6e 64 65 78 5d 29 3b 0d 0a 0d 0a 20 20  s[index]);....  
267d0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
267e0 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20   result;..      
267f0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
26800 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a  dregion..    }..
26810 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
26820 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
26830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26870 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
26880 20 53 51 4c 69 74 65 42 79 74 65 73 20 53 74 61   SQLiteBytes Sta
26890 74 69 63 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f  tic Class..    /
268a0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
268b0 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73    /// This class
268c0 20 63 6f 6e 74 61 69 6e 73 20 73 74 61 74 69 63   contains static
268d0 20 6d 65 74 68 6f 64 73 20 74 68 61 74 20 61 72   methods that ar
268e0 65 20 75 73 65 64 20 74 6f 20 64 65 61 6c 20 77  e used to deal w
268f0 69 74 68 20 6e 61 74 69 76 65 0d 0a 20 20 20 20  ith native..    
26900 2f 2f 2f 20 70 6f 69 6e 74 65 72 73 20 74 6f 20  /// pointers to 
26910 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b 73 20 74 68  memory blocks th
26920 61 74 20 6c 6f 67 69 63 61 6c 6c 79 20 63 6f 6e  at logically con
26930 74 61 69 6e 20 61 72 72 61 79 73 20 6f 66 20 62  tain arrays of b
26940 79 74 65 73 20 74 6f 20 62 65 0d 0a 20 20 20 20  ytes to be..    
26950 2f 2f 2f 20 75 73 65 64 20 77 69 74 68 20 74 68  /// used with th
26960 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69  e SQLite core li
26970 62 72 61 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20  brary...    /// 
26980 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
26990 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
269a0 63 6c 61 73 73 20 53 51 4c 69 74 65 42 79 74 65  class SQLiteByte
269b0 73 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  s..    {..      
269c0 20 20 23 72 65 67 69 6f 6e 20 42 79 74 65 20 41    #region Byte A
269d0 72 72 61 79 20 48 65 6c 70 65 72 20 4d 65 74 68  rray Helper Meth
269e0 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ods..        ///
269f0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
26a00 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73      /// Converts
26a10 20 61 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65   a native pointe
26a20 72 20 74 6f 20 61 20 6c 6f 67 69 63 61 6c 20 61  r to a logical a
26a30 72 72 61 79 20 6f 66 20 62 79 74 65 73 20 6f 66  rray of bytes of
26a40 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
26a50 2f 20 73 70 65 63 69 66 69 65 64 20 6c 65 6e 67  / specified leng
26a60 74 68 20 69 6e 74 6f 20 61 20 6d 61 6e 61 67 65  th into a manage
26a70 64 20 62 79 74 65 20 61 72 72 61 79 2e 0d 0a 20  d byte array... 
26a80 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
26a90 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
26aa0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
26ab0 70 56 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20  pValue">..      
26ac0 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
26ad0 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
26ae0 6c 6f 67 69 63 61 6c 20 61 72 72 61 79 20 6f 66  logical array of
26af0 20 62 79 74 65 73 20 74 6f 20 63 6f 6e 76 65 72   bytes to conver
26b00 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  t...        /// 
26b10 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
26b20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
26b30 65 3d 22 6c 65 6e 67 74 68 22 3e 0d 0a 20 20 20  e="length">..   
26b40 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6c 65 6e       /// The len
26b50 67 74 68 2c 20 69 6e 20 62 79 74 65 73 2c 20 6f  gth, in bytes, o
26b60 66 20 74 68 65 20 6c 6f 67 69 63 61 6c 20 61 72  f the logical ar
26b70 72 61 79 20 6f 66 20 62 79 74 65 73 20 74 6f 20  ray of bytes to 
26b80 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20  convert...      
26b90 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
26ba0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
26bb0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
26bc0 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20 62  // The managed b
26bd0 79 74 65 20 61 72 72 61 79 20 6f 72 20 6e 75 6c  yte array or nul
26be0 6c 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d  l upon failure..
26bf0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
26c00 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
26c10 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 62   public static b
26c20 79 74 65 5b 5d 20 46 72 6f 6d 49 6e 74 50 74 72  yte[] FromIntPtr
26c30 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  (..            I
26c40 6e 74 50 74 72 20 70 56 61 6c 75 65 2c 0d 0a 20  ntPtr pValue,.. 
26c50 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6c             int l
26c60 65 6e 67 74 68 0d 0a 20 20 20 20 20 20 20 20 20  ength..         
26c70 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
26c80 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
26c90 28 70 56 61 6c 75 65 20 3d 3d 20 49 6e 74 50 74  (pValue == IntPt
26ca0 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
26cb0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
26cc0 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
26cd0 20 20 20 20 20 69 66 20 28 6c 65 6e 67 74 68 20       if (length 
26ce0 3d 3d 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20  == 0)..         
26cf0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65         return ne
26d00 77 20 62 79 74 65 5b 30 5d 3b 0d 0a 0d 0a 20 20  w byte[0];....  
26d10 20 20 20 20 20 20 20 20 20 20 62 79 74 65 5b 5d            byte[]
26d20 20 72 65 73 75 6c 74 20 3d 20 6e 65 77 20 62 79   result = new by
26d30 74 65 5b 6c 65 6e 67 74 68 5d 3b 0d 0a 0d 0a 20  te[length];.... 
26d40 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68             Marsh
26d50 61 6c 2e 43 6f 70 79 28 70 56 61 6c 75 65 2c 20  al.Copy(pValue, 
26d60 72 65 73 75 6c 74 2c 20 30 2c 20 6c 65 6e 67 74  result, 0, lengt
26d70 68 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  h);....         
26d80 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74     return result
26d90 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
26da0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
26db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
26df0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
26e00 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
26e10 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61    /// Converts a
26e20 20 6d 61 6e 61 67 65 64 20 62 79 74 65 20 61 72   managed byte ar
26e30 72 61 79 20 69 6e 74 6f 20 61 20 6e 61 74 69 76  ray into a nativ
26e40 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6c  e pointer to a l
26e50 6f 67 69 63 61 6c 0d 0a 20 20 20 20 20 20 20 20  ogical..        
26e60 2f 2f 2f 20 61 72 72 61 79 20 6f 66 20 62 79 74  /// array of byt
26e70 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  es...        ///
26e80 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
26e90 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
26ea0 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20  name="value">.. 
26eb0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d         /// The m
26ec0 61 6e 61 67 65 64 20 62 79 74 65 20 61 72 72 61  anaged byte arra
26ed0 79 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20  y to convert... 
26ee0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
26ef0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
26f00 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
26f10 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
26f20 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20  ve pointer to a 
26f30 6c 6f 67 69 63 61 6c 20 62 79 74 65 20 61 72 72  logical byte arr
26f40 61 79 20 6f 72 20 6e 75 6c 6c 20 75 70 6f 6e 20  ay or null upon 
26f50 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20  failure...      
26f60 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
26f70 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
26f80 20 73 74 61 74 69 63 20 49 6e 74 50 74 72 20 54   static IntPtr T
26f90 6f 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20  oIntPtr(..      
26fa0 20 20 20 20 20 20 62 79 74 65 5b 5d 20 76 61 6c        byte[] val
26fb0 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ue..            
26fc0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
26fd0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61            if (va
26fe0 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  lue == null)..  
26ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
27000 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f  turn IntPtr.Zero
27010 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
27020 20 69 6e 74 20 6c 65 6e 67 74 68 20 3d 20 76 61   int length = va
27030 6c 75 65 2e 4c 65 6e 67 74 68 3b 0d 0a 0d 0a 20  lue.Length;.... 
27040 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c             if (l
27050 65 6e 67 74 68 20 3d 3d 20 30 29 0d 0a 20 20 20  ength == 0)..   
27060 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
27070 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  urn IntPtr.Zero;
27080 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
27090 49 6e 74 50 74 72 20 72 65 73 75 6c 74 20 3d 20  IntPtr result = 
270a0 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 41 6c 6c  SQLiteMemory.All
270b0 6f 63 61 74 65 28 6c 65 6e 67 74 68 29 3b 0d 0a  ocate(length);..
270c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
270d0 20 28 72 65 73 75 6c 74 20 3d 3d 20 49 6e 74 50   (result == IntP
270e0 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
270f0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
27100 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d   IntPtr.Zero;...
27110 0a 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72  .            Mar
27120 73 68 61 6c 2e 43 6f 70 79 28 76 61 6c 75 65 2c  shal.Copy(value,
27130 20 30 2c 20 72 65 73 75 6c 74 2c 20 6c 65 6e 67   0, result, leng
27140 74 68 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  th);....        
27150 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c      return resul
27160 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  t;..        }.. 
27170 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
27180 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65  n..    }..    #e
27190 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
271a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
271b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
271c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
271d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
271e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
271f0 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74     #region SQLit
27200 65 4d 61 72 73 68 61 6c 20 53 74 61 74 69 63 20  eMarshal Static 
27210 43 6c 61 73 73 0d 0a 20 20 20 20 69 6e 74 65 72  Class..    inter
27220 6e 61 6c 20 73 74 61 74 69 63 20 63 6c 61 73 73  nal static class
27230 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 0d 0a   SQLiteMarshal..
27240 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23      {..        #
27250 72 65 67 69 6f 6e 20 49 6e 74 50 74 72 20 48 65  region IntPtr He
27260 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20  lper Methods..  
27270 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
27280 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
27290 20 52 65 74 75 72 6e 73 20 61 20 6e 65 77 20 3c   Returns a new <
272a0 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72  see cref="IntPtr
272b0 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
272c0 61 6e 63 65 20 62 61 73 65 64 20 6f 6e 20 74 68  ance based on th
272d0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  e..        /// s
272e0 70 65 63 69 66 69 65 64 20 3c 73 65 65 20 63 72  pecified <see cr
272f0 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f  ef="IntPtr" /> o
27300 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61  bject instance a
27310 6e 64 20 61 6e 20 69 6e 74 65 67 65 72 0d 0a 20  nd an integer.. 
27320 20 20 20 20 20 20 20 2f 2f 2f 20 6f 66 66 73 65         /// offse
27330 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  t...        /// 
27340 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
27350 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
27360 61 6d 65 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a  ame="pointer">..
27370 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
27380 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74  <see cref="IntPt
27390 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  r" /> object ins
273a0 74 61 6e 63 65 20 72 65 70 72 65 73 65 6e 74 69  tance representi
273b0 6e 67 20 74 68 65 20 62 61 73 65 0d 0a 20 20 20  ng the base..   
273c0 20 20 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20       /// memory 
273d0 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  location...     
273e0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
273f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
27400 72 61 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74  ram name="offset
27410 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
27420 54 68 65 20 69 6e 74 65 67 65 72 20 6f 66 66 73  The integer offs
27430 65 74 20 66 72 6f 6d 20 74 68 65 20 62 61 73 65  et from the base
27440 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e   memory location
27450 20 74 68 61 74 20 74 68 65 20 6e 65 77 0d 0a 20   that the new.. 
27460 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
27470 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e  cref="IntPtr" />
27480 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
27490 20 73 68 6f 75 6c 64 20 70 6f 69 6e 74 20 74 6f   should point to
274a0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
274b0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
274c0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
274d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
274e0 6e 65 77 20 3c 73 65 65 20 63 72 65 66 3d 22 49  new <see cref="I
274f0 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74  ntPtr" /> object
27500 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20   instance...    
27510 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
27520 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  s>..        publ
27530 69 63 20 73 74 61 74 69 63 20 49 6e 74 50 74 72  ic static IntPtr
27540 20 49 6e 74 50 74 72 46 6f 72 4f 66 66 73 65 74   IntPtrForOffset
27550 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  (..            I
27560 6e 74 50 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a  ntPtr pointer,..
27570 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
27580 6f 66 66 73 65 74 0d 0a 20 20 20 20 20 20 20 20  offset..        
27590 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
275a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
275b0 74 75 72 6e 20 6e 65 77 20 49 6e 74 50 74 72 28  turn new IntPtr(
275c0 70 6f 69 6e 74 65 72 2e 54 6f 49 6e 74 36 34 28  pointer.ToInt64(
275d0 29 20 2b 20 6f 66 66 73 65 74 29 3b 0d 0a 20 20  ) + offset);..  
275e0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
275f0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
27600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
27640 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
27650 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
27660 20 52 6f 75 6e 64 73 20 75 70 20 61 6e 20 69 6e   Rounds up an in
27670 74 65 67 65 72 20 73 69 7a 65 20 74 6f 20 74 68  teger size to th
27680 65 20 6e 65 78 74 20 6d 75 6c 74 69 70 6c 65 20  e next multiple 
27690 6f 66 20 74 68 65 20 61 6c 69 67 6e 6d 65 6e 74  of the alignment
276a0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
276b0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
276c0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
276d0 6d 65 3d 22 73 69 7a 65 22 3e 0d 0a 20 20 20 20  me="size">..    
276e0 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 69 7a 65      /// The size
276f0 2c 20 69 6e 20 62 79 74 65 73 2c 20 74 6f 20 62  , in bytes, to b
27700 65 20 72 6f 75 6e 64 65 64 20 75 70 2e 0d 0a 20  e rounded up... 
27710 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
27720 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
27730 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 6c   <param name="al
27740 69 67 6e 6d 65 6e 74 22 3e 0d 0a 20 20 20 20 20  ignment">..     
27750 20 20 20 2f 2f 2f 20 54 68 65 20 72 65 71 75 69     /// The requi
27760 72 65 64 20 61 6c 69 67 6e 6d 65 6e 74 20 66 6f  red alignment fo
27770 72 20 74 68 65 20 72 65 74 75 72 6e 20 76 61 6c  r the return val
27780 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ue...        ///
27790 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
277a0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
277b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
277c0 65 20 73 69 7a 65 2c 20 69 6e 20 62 79 74 65 73  e size, in bytes
277d0 2c 20 72 6f 75 6e 64 65 64 20 75 70 20 74 6f 20  , rounded up to 
277e0 74 68 65 20 6e 65 78 74 20 6d 75 6c 74 69 70 6c  the next multipl
277f0 65 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20 20  e of the..      
27800 20 20 2f 2f 2f 20 61 6c 69 67 6e 6d 65 6e 74 2e    /// alignment.
27810 20 20 54 68 69 73 20 76 61 6c 75 65 20 6d 61 79    This value may
27820 20 65 6e 64 20 75 70 20 62 65 69 6e 67 20 74 68   end up being th
27830 65 20 73 61 6d 65 20 61 73 20 74 68 65 20 6f 72  e same as the or
27840 69 67 69 6e 61 6c 0d 0a 20 20 20 20 20 20 20 20  iginal..        
27850 2f 2f 2f 20 73 69 7a 65 2e 0d 0a 20 20 20 20 20  /// size...     
27860 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
27870 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
27880 63 20 73 74 61 74 69 63 20 69 6e 74 20 52 6f 75  c static int Rou
27890 6e 64 55 70 28 0d 0a 20 20 20 20 20 20 20 20 20  ndUp(..         
278a0 20 20 20 69 6e 74 20 73 69 7a 65 2c 0d 0a 20 20     int size,..  
278b0 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 61 6c            int al
278c0 69 67 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20  ignment..       
278d0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
278e0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
278f0 6e 74 20 61 6c 69 67 6e 6d 65 6e 74 4d 69 6e 75  nt alignmentMinu
27900 73 4f 6e 65 20 3d 20 61 6c 69 67 6e 6d 65 6e 74  sOne = alignment
27910 20 2d 20 31 3b 0d 0a 20 20 20 20 20 20 20 20 20   - 1;..         
27920 20 20 20 72 65 74 75 72 6e 20 28 28 73 69 7a 65     return ((size
27930 20 2b 20 61 6c 69 67 6e 6d 65 6e 74 4d 69 6e 75   + alignmentMinu
27940 73 4f 6e 65 29 20 26 20 7e 61 6c 69 67 6e 6d 65  sOne) & ~alignme
27950 6e 74 4d 69 6e 75 73 4f 6e 65 29 3b 0d 0a 20 20  ntMinusOne);..  
27960 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
27970 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
27980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
279a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
279b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
279c0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
279d0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
279e0 20 44 65 74 65 72 6d 69 6e 65 73 20 74 68 65 20   Determines the 
279f0 6f 66 66 73 65 74 2c 20 69 6e 20 62 79 74 65 73  offset, in bytes
27a00 2c 20 6f 66 20 74 68 65 20 6e 65 78 74 20 73 74  , of the next st
27a10 72 75 63 74 75 72 65 20 6d 65 6d 62 65 72 2e 0d  ructure member..
27a20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
27a30 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
27a40 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
27a50 3d 22 6f 66 66 73 65 74 22 3e 0d 0a 20 20 20 20  ="offset">..    
27a60 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 66 66 73      /// The offs
27a70 65 74 2c 20 69 6e 20 62 79 74 65 73 2c 20 6f 66  et, in bytes, of
27a80 20 74 68 65 20 63 75 72 72 65 6e 74 20 73 74 72   the current str
27a90 75 63 74 75 72 65 20 6d 65 6d 62 65 72 2e 0d 0a  ucture member...
27aa0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
27ab0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
27ac0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73  / <param name="s
27ad0 69 7a 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ize">..        /
27ae0 2f 2f 20 54 68 65 20 73 69 7a 65 2c 20 69 6e 20  // The size, in 
27af0 62 79 74 65 73 2c 20 6f 66 20 74 68 65 20 63 75  bytes, of the cu
27b00 72 72 65 6e 74 20 73 74 72 75 63 74 75 72 65 20  rrent structure 
27b10 6d 65 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20 20  member...       
27b20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
27b30 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
27b40 6d 20 6e 61 6d 65 3d 22 61 6c 69 67 6e 6d 65 6e  m name="alignmen
27b50 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  t">..        ///
27b60 20 54 68 65 20 61 6c 69 67 6e 6d 65 6e 74 2c 20   The alignment, 
27b70 69 6e 20 62 79 74 65 73 2c 20 6f 66 20 74 68 65  in bytes, of the
27b80 20 6e 65 78 74 20 73 74 72 75 63 74 75 72 65 20   next structure 
27b90 6d 65 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20 20  member...       
27ba0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
27bb0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
27bc0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
27bd0 2f 20 54 68 65 20 6f 66 66 73 65 74 2c 20 69 6e  / The offset, in
27be0 20 62 79 74 65 73 2c 20 6f 66 20 74 68 65 20 6e   bytes, of the n
27bf0 65 78 74 20 73 74 72 75 63 74 75 72 65 20 6d 65  ext structure me
27c00 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f  mber...        /
27c10 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
27c20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
27c30 61 74 69 63 20 69 6e 74 20 4e 65 78 74 4f 66 66  atic int NextOff
27c40 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20  setOf(..        
27c50 20 20 20 20 69 6e 74 20 6f 66 66 73 65 74 2c 0d      int offset,.
27c60 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
27c70 20 73 69 7a 65 2c 0d 0a 20 20 20 20 20 20 20 20   size,..        
27c80 20 20 20 20 69 6e 74 20 61 6c 69 67 6e 6d 65 6e      int alignmen
27c90 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  t..            )
27ca0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
27cb0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
27cc0 52 6f 75 6e 64 55 70 28 6f 66 66 73 65 74 20 2b  RoundUp(offset +
27cd0 20 73 69 7a 65 2c 20 61 6c 69 67 6e 6d 65 6e 74   size, alignment
27ce0 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  );..        }.. 
27cf0 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
27d00 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
27d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27d50 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
27d60 23 72 65 67 69 6f 6e 20 4d 61 72 73 68 61 6c 20  #region Marshal 
27d70 52 65 61 64 20 48 65 6c 70 65 72 20 4d 65 74 68  Read Helper Meth
27d80 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ods..        ///
27d90 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
27da0 20 20 20 20 2f 2f 2f 20 52 65 61 64 73 20 61 20      /// Reads a 
27db0 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 33 32  <see cref="Int32
27dc0 22 20 2f 3e 20 76 61 6c 75 65 20 66 72 6f 6d 20  " /> value from 
27dd0 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6d 65  the specified me
27de0 6d 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f  mory..        //
27df0 2f 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20  / location...   
27e00 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
27e10 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
27e20 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 6f   <param name="po
27e30 69 6e 74 65 72 22 3e 0d 0a 20 20 20 20 20 20 20  inter">..       
27e40 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
27e50 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f  ef="IntPtr" /> o
27e60 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 72  bject instance r
27e70 65 70 72 65 73 65 6e 74 69 6e 67 20 74 68 65 20  epresenting the 
27e80 62 61 73 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  base..        //
27e90 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f  / memory locatio
27ea0 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  n...        /// 
27eb0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
27ec0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
27ed0 65 3d 22 6f 66 66 73 65 74 22 3e 0d 0a 20 20 20  e="offset">..   
27ee0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74       /// The int
27ef0 65 67 65 72 20 6f 66 66 73 65 74 20 66 72 6f 6d  eger offset from
27f00 20 74 68 65 20 62 61 73 65 20 6d 65 6d 6f 72 79   the base memory
27f10 20 6c 6f 63 61 74 69 6f 6e 20 77 68 65 72 65 20   location where 
27f20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
27f30 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 33   <see cref="Int3
27f40 32 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 62  2" /> value to b
27f50 65 20 72 65 61 64 20 69 73 20 6c 6f 63 61 74 65  e read is locate
27f60 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
27f70 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
27f80 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
27f90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
27fa0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 33   <see cref="Int3
27fb0 32 22 20 2f 3e 20 76 61 6c 75 65 20 61 74 20 74  2" /> value at t
27fc0 68 65 20 73 70 65 63 69 66 69 65 64 20 6d 65 6d  he specified mem
27fd0 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20  ory location... 
27fe0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
27ff0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
28000 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6e 74  ublic static int
28010 20 52 65 61 64 49 6e 74 33 32 28 0d 0a 20 20 20   ReadInt32(..   
28020 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
28030 70 6f 69 6e 74 65 72 2c 0d 0a 20 20 20 20 20 20  pointer,..      
28040 20 20 20 20 20 20 69 6e 74 20 6f 66 66 73 65 74        int offset
28050 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
28060 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
28070 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
28080 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
28090 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d          return M
280a0 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 33 32  arshal.ReadInt32
280b0 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74  (pointer, offset
280c0 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  );..#else..     
280d0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 61         return Ma
280e0 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 33 32 28  rshal.ReadInt32(
280f0 49 6e 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28  IntPtrForOffset(
28100 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29  pointer, offset)
28110 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
28120 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
28130 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
28140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28170 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
28180 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
28190 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52  >..        /// R
281a0 65 61 64 73 20 61 20 3c 73 65 65 20 63 72 65 66  eads a <see cref
281b0 3d 22 44 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c  ="Double" /> val
281c0 75 65 20 66 72 6f 6d 20 74 68 65 20 73 70 65 63  ue from the spec
281d0 69 66 69 65 64 20 6d 65 6d 6f 72 79 0d 0a 20 20  ified memory..  
281e0 20 20 20 20 20 20 2f 2f 2f 20 6c 6f 63 61 74 69        /// locati
281f0 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  on...        ///
28200 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
28210 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
28220 6e 61 6d 65 3d 22 70 6f 69 6e 74 65 72 22 3e 0d  name="pointer">.
28230 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
28240 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50   <see cref="IntP
28250 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  tr" /> object in
28260 73 74 61 6e 63 65 20 72 65 70 72 65 73 65 6e 74  stance represent
28270 69 6e 67 20 74 68 65 20 62 61 73 65 0d 0a 20 20  ing the base..  
28280 20 20 20 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79        /// memory
28290 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20   location...    
282a0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
282b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
282c0 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65  aram name="offse
282d0 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  t">..        ///
282e0 20 54 68 65 20 69 6e 74 65 67 65 72 20 6f 66 66   The integer off
282f0 73 65 74 20 66 72 6f 6d 20 74 68 65 20 62 61 73  set from the bas
28300 65 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f  e memory locatio
28310 6e 20 77 68 65 72 65 20 74 68 65 0d 0a 20 20 20  n where the..   
28320 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
28330 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f 3e 20 74  ef="Double" /> t
28340 6f 20 62 65 20 72 65 61 64 20 69 73 20 6c 6f 63  o be read is loc
28350 61 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ated...        /
28360 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
28370 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
28380 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
28390 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 44  The <see cref="D
283a0 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65 20  ouble" /> value 
283b0 61 74 20 74 68 65 20 73 70 65 63 69 66 69 65 64  at the specified
283c0 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e   memory location
283d0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
283e0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
283f0 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
28400 20 64 6f 75 62 6c 65 20 52 65 61 64 44 6f 75 62   double ReadDoub
28410 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le(..           
28420 20 49 6e 74 50 74 72 20 70 6f 69 6e 74 65 72 2c   IntPtr pointer,
28430 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
28440 74 20 6f 66 66 73 65 74 0d 0a 20 20 20 20 20 20  t offset..      
28450 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
28460 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52   {..#if !PLATFOR
28470 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
28480 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
28490 72 65 74 75 72 6e 20 42 69 74 43 6f 6e 76 65 72  return BitConver
284a0 74 65 72 2e 49 6e 74 36 34 42 69 74 73 54 6f 44  ter.Int64BitsToD
284b0 6f 75 62 6c 65 28 4d 61 72 73 68 61 6c 2e 52 65  ouble(Marshal.Re
284c0 61 64 49 6e 74 36 34 28 0d 0a 20 20 20 20 20 20  adInt64(..      
284d0 20 20 20 20 20 20 20 20 20 20 70 6f 69 6e 74 65            pointe
284e0 72 2c 20 6f 66 66 73 65 74 29 29 3b 0d 0a 23 65  r, offset));..#e
284f0 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
28500 20 72 65 74 75 72 6e 20 42 69 74 43 6f 6e 76 65   return BitConve
28510 72 74 65 72 2e 54 6f 44 6f 75 62 6c 65 28 42 69  rter.ToDouble(Bi
28520 74 43 6f 6e 76 65 72 74 65 72 2e 47 65 74 42 79  tConverter.GetBy
28530 74 65 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20  tes(..          
28540 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 52 65        Marshal.Re
28550 61 64 49 6e 74 36 34 28 49 6e 74 50 74 72 46 6f  adInt64(IntPtrFo
28560 72 4f 66 66 73 65 74 28 70 6f 69 6e 74 65 72 2c  rOffset(pointer,
28570 20 6f 66 66 73 65 74 29 29 29 2c 20 30 29 3b 0d   offset))), 0);.
28580 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
28590 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
285a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
285b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
285c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
285d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
285e0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
285f0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
28600 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65 61 64          /// Read
28610 73 20 61 6e 20 3c 73 65 65 20 63 72 65 66 3d 22  s an <see cref="
28620 49 6e 74 50 74 72 22 20 2f 3e 20 76 61 6c 75 65  IntPtr" /> value
28630 20 66 72 6f 6d 20 74 68 65 20 73 70 65 63 69 66   from the specif
28640 69 65 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20  ied memory..    
28650 20 20 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e      /// location
28660 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
28670 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
28680 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
28690 6d 65 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20  me="pointer">.. 
286a0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
286b0 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72  see cref="IntPtr
286c0 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
286d0 61 6e 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e  ance representin
286e0 67 20 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20  g the base..    
286f0 20 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c      /// memory l
28700 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ocation...      
28710 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
28720 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
28730 61 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22  am name="offset"
28740 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
28750 68 65 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65  he integer offse
28760 74 20 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20  t from the base 
28770 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20  memory location 
28780 77 68 65 72 65 20 74 68 65 0d 0a 20 20 20 20 20  where the..     
28790 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
287a0 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20 76 61 6c  ="IntPtr" /> val
287b0 75 65 20 74 6f 20 62 65 20 72 65 61 64 20 69 73  ue to be read is
287c0 20 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20 20   located...     
287d0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
287e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
287f0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
28800 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
28810 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20 76 61  f="IntPtr" /> va
28820 6c 75 65 20 61 74 20 74 68 65 20 73 70 65 63 69  lue at the speci
28830 66 69 65 64 20 6d 65 6d 6f 72 79 20 6c 6f 63 61  fied memory loca
28840 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  tion...        /
28850 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
28860 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
28870 61 74 69 63 20 49 6e 74 50 74 72 20 52 65 61 64  atic IntPtr Read
28880 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20  IntPtr(..       
28890 20 20 20 20 20 49 6e 74 50 74 72 20 70 6f 69 6e       IntPtr poin
288a0 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ter,..          
288b0 20 20 69 6e 74 20 6f 66 66 73 65 74 0d 0a 20 20    int offset..  
288c0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
288d0 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41       {..#if !PLA
288e0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
288f0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
28900 20 20 20 20 72 65 74 75 72 6e 20 4d 61 72 73 68      return Marsh
28910 61 6c 2e 52 65 61 64 49 6e 74 50 74 72 28 70 6f  al.ReadIntPtr(po
28920 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 3b 0d  inter, offset);.
28930 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
28940 20 20 20 20 72 65 74 75 72 6e 20 4d 61 72 73 68      return Marsh
28950 61 6c 2e 52 65 61 64 49 6e 74 50 74 72 28 49 6e  al.ReadIntPtr(In
28960 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28 70 6f  tPtrForOffset(po
28970 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 29 3b  inter, offset));
28980 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
28990 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
289a0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
289b0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
289c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
289d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
289e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
289f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
28a00 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 4d 61        #region Ma
28a10 72 73 68 61 6c 20 57 72 69 74 65 20 48 65 6c 70  rshal Write Help
28a20 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20  er Methods..    
28a30 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
28a40 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 57  >..        /// W
28a50 72 69 74 65 73 20 61 6e 20 3c 73 65 65 20 63 72  rites an <see cr
28a60 65 66 3d 22 49 6e 74 33 32 22 20 2f 3e 20 76 61  ef="Int32" /> va
28a70 6c 75 65 20 74 6f 20 74 68 65 20 73 70 65 63 69  lue to the speci
28a80 66 69 65 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20  fied memory..   
28a90 20 20 20 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f       /// locatio
28aa0 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  n...        /// 
28ab0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
28ac0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
28ad0 61 6d 65 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a  ame="pointer">..
28ae0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
28af0 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74  <see cref="IntPt
28b00 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  r" /> object ins
28b10 74 61 6e 63 65 20 72 65 70 72 65 73 65 6e 74 69  tance representi
28b20 6e 67 20 74 68 65 20 62 61 73 65 0d 0a 20 20 20  ng the base..   
28b30 20 20 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20       /// memory 
28b40 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  location...     
28b50 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
28b60 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
28b70 72 61 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74  ram name="offset
28b80 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
28b90 54 68 65 20 69 6e 74 65 67 65 72 20 6f 66 66 73  The integer offs
28ba0 65 74 20 66 72 6f 6d 20 74 68 65 20 62 61 73 65  et from the base
28bb0 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e   memory location
28bc0 20 77 68 65 72 65 20 74 68 65 0d 0a 20 20 20 20   where the..    
28bd0 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
28be0 66 3d 22 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c  f="Int32" /> val
28bf0 75 65 20 74 6f 20 62 65 20 77 72 69 74 74 65 6e  ue to be written
28c00 20 69 73 20 6c 6f 63 61 74 65 64 2e 0d 0a 20 20   is located...  
28c10 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
28c20 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
28c30 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c  <param name="val
28c40 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ue">..        //
28c50 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
28c60 22 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75 65  "Int32" /> value
28c70 20 74 6f 20 77 72 69 74 65 2e 0d 0a 20 20 20 20   to write...    
28c80 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
28c90 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
28ca0 20 73 74 61 74 69 63 20 76 6f 69 64 20 57 72 69   static void Wri
28cb0 74 65 49 6e 74 33 32 28 0d 0a 20 20 20 20 20 20  teInt32(..      
28cc0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 6f 69        IntPtr poi
28cd0 6e 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20  nter,..         
28ce0 20 20 20 69 6e 74 20 6f 66 66 73 65 74 2c 0d 0a     int offset,..
28cf0 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
28d00 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20  value..         
28d10 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
28d20 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
28d30 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
28d40 0a 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72  .            Mar
28d50 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 33 32 28  shal.WriteInt32(
28d60 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 2c  pointer, offset,
28d70 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6c 73 65 0d   value);..#else.
28d80 0a 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72  .            Mar
28d90 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 33 32 28  shal.WriteInt32(
28da0 49 6e 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28  IntPtrForOffset(
28db0 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29  pointer, offset)
28dc0 2c 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69  , value);..#endi
28dd0 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
28de0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
28df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
28e30 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
28e40 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
28e50 20 20 2f 2f 2f 20 57 72 69 74 65 73 20 61 20 3c    /// Writes a <
28e60 73 65 65 20 63 72 65 66 3d 22 44 6f 75 62 6c 65  see cref="Double
28e70 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 74 68  " /> value to th
28e80 65 20 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f  e specified memo
28e90 72 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ry..        /// 
28ea0 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  location...     
28eb0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
28ec0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
28ed0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e  param name="poin
28ee0 74 65 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ter">..        /
28ef0 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
28f00 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a  ="IntPtr" /> obj
28f10 65 63 74 20 69 6e 73 74 61 6e 63 65 20 72 65 70  ect instance rep
28f20 72 65 73 65 6e 74 69 6e 67 20 74 68 65 20 62 61  resenting the ba
28f30 73 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  se..        /// 
28f40 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e  memory location.
28f50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
28f60 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
28f70 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
28f80 22 6f 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20  "offset">..     
28f90 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67     /// The integ
28fa0 65 72 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74  er offset from t
28fb0 68 65 20 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c  he base memory l
28fc0 6f 63 61 74 69 6f 6e 20 77 68 65 72 65 20 74 68  ocation where th
28fd0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
28fe0 73 65 65 20 63 72 65 66 3d 22 44 6f 75 62 6c 65  see cref="Double
28ff0 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 62 65  " /> value to be
29000 20 77 72 69 74 74 65 6e 20 69 73 20 6c 6f 63 61   written is loca
29010 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ted...        //
29020 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
29030 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
29040 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20  ame="value">..  
29050 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
29060 65 65 20 63 72 65 66 3d 22 44 6f 75 62 6c 65 22  ee cref="Double"
29070 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 77 72 69   /> value to wri
29080 74 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  te...        ///
29090 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
290a0 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
290b0 20 76 6f 69 64 20 57 72 69 74 65 44 6f 75 62 6c   void WriteDoubl
290c0 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
290d0 49 6e 74 50 74 72 20 70 6f 69 6e 74 65 72 2c 0d  IntPtr pointer,.
290e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
290f0 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20 20 20   offset,..      
29100 20 20 20 20 20 20 64 6f 75 62 6c 65 20 76 61 6c        double val
29110 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ue..            
29120 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
29130 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
29140 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
29150 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61            Marsha
29160 6c 2e 57 72 69 74 65 49 6e 74 36 34 28 70 6f 69  l.WriteInt64(poi
29170 6e 74 65 72 2c 20 6f 66 66 73 65 74 2c 0d 0a 20  nter, offset,.. 
29180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 42                 B
29190 69 74 43 6f 6e 76 65 72 74 65 72 2e 44 6f 75 62  itConverter.Doub
291a0 6c 65 54 6f 49 6e 74 36 34 42 69 74 73 28 76 61  leToInt64Bits(va
291b0 6c 75 65 29 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20  lue));..#else.. 
291c0 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68             Marsh
291d0 61 6c 2e 57 72 69 74 65 49 6e 74 36 34 28 49 6e  al.WriteInt64(In
291e0 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28 70 6f  tPtrForOffset(po
291f0 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 2c 0d  inter, offset),.
29200 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29210 20 42 69 74 43 6f 6e 76 65 72 74 65 72 2e 54 6f   BitConverter.To
29220 49 6e 74 36 34 28 42 69 74 43 6f 6e 76 65 72 74  Int64(BitConvert
29230 65 72 2e 47 65 74 42 79 74 65 73 28 76 61 6c 75  er.GetBytes(valu
29240 65 29 2c 20 30 29 29 3b 0d 0a 23 65 6e 64 69 66  e), 0));..#endif
29250 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
29260 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
29270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
292a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
292b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
292c0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
292d0 20 2f 2f 2f 20 57 72 69 74 65 73 20 61 20 3c 73   /// Writes a <s
292e0 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22  ee cref="IntPtr"
292f0 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 74 68 65   /> value to the
29300 20 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72   specified memor
29310 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c  y..        /// l
29320 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ocation...      
29330 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
29340 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
29350 61 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74  aram name="point
29360 65 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  er">..        //
29370 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
29380 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65  "IntPtr" /> obje
29390 63 74 20 69 6e 73 74 61 6e 63 65 20 72 65 70 72  ct instance repr
293a0 65 73 65 6e 74 69 6e 67 20 74 68 65 20 62 61 73  esenting the bas
293b0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d  e..        /// m
293c0 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d  emory location..
293d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
293e0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
293f0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
29400 6f 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20  offset">..      
29410 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67 65    /// The intege
29420 72 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68  r offset from th
29430 65 20 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f  e base memory lo
29440 63 61 74 69 6f 6e 20 77 68 65 72 65 20 74 68 65  cation where the
29450 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
29460 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22  ee cref="IntPtr"
29470 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 62 65 20   /> value to be 
29480 77 72 69 74 74 65 6e 20 69 73 20 6c 6f 63 61 74  written is locat
29490 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
294a0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
294b0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
294c0 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20  me="value">..   
294d0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
294e0 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20  e cref="IntPtr" 
294f0 2f 3e 20 76 61 6c 75 65 20 74 6f 20 77 72 69 74  /> value to writ
29500 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
29510 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
29520 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
29530 76 6f 69 64 20 57 72 69 74 65 49 6e 74 50 74 72  void WriteIntPtr
29540 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  (..            I
29550 6e 74 50 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a  ntPtr pointer,..
29560 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
29570 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20 20 20 20  offset,..       
29580 20 20 20 20 20 49 6e 74 50 74 72 20 76 61 6c 75       IntPtr valu
29590 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  e..            )
295a0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
295b0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
295c0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
295d0 20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c           Marshal
295e0 2e 57 72 69 74 65 49 6e 74 50 74 72 28 70 6f 69  .WriteIntPtr(poi
295f0 6e 74 65 72 2c 20 6f 66 66 73 65 74 2c 20 76 61  nter, offset, va
29600 6c 75 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  lue);..#else..  
29610 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61            Marsha
29620 6c 2e 57 72 69 74 65 49 6e 74 50 74 72 28 49 6e  l.WriteIntPtr(In
29630 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28 70 6f  tPtrForOffset(po
29640 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 2c 20  inter, offset), 
29650 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  value);..#endif.
29660 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
29670 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
29680 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72      }..    #endr
29690 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
296a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
296b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
296c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
296d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
296e0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
296f0 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 4d 6f  #region SQLiteMo
29700 64 75 6c 65 20 42 61 73 65 20 43 6c 61 73 73 0d  dule Base Class.
29710 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
29720 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73  y>..    /// This
29730 20 63 6c 61 73 73 20 72 65 70 72 65 73 65 6e 74   class represent
29740 73 20 61 20 6d 61 6e 61 67 65 64 20 76 69 72 74  s a managed virt
29750 75 61 6c 20 74 61 62 6c 65 20 6d 6f 64 75 6c 65  ual table module
29760 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e   implementation.
29770 0d 0a 20 20 20 20 2f 2f 2f 20 49 74 20 69 73 20  ..    /// It is 
29780 6e 6f 74 20 73 65 61 6c 65 64 20 61 6e 64 20 6d  not sealed and m
29790 75 73 74 20 62 65 20 75 73 65 64 20 61 73 20 74  ust be used as t
297a0 68 65 20 62 61 73 65 20 63 6c 61 73 73 20 66 6f  he base class fo
297b0 72 20 61 6e 79 0d 0a 20 20 20 20 2f 2f 2f 20 75  r any..    /// u
297c0 73 65 72 2d 64 65 66 69 6e 65 64 20 76 69 72 74  ser-defined virt
297d0 75 61 6c 20 74 61 62 6c 65 20 6d 6f 64 75 6c 65  ual table module
297e0 20 63 6c 61 73 73 65 73 20 69 6d 70 6c 65 6d 65   classes impleme
297f0 6e 74 65 64 20 69 6e 20 6d 61 6e 61 67 65 64 20  nted in managed 
29800 63 6f 64 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  code...    /// <
29810 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70  /summary>..    p
29820 75 62 6c 69 63 20 61 62 73 74 72 61 63 74 20 63  ublic abstract c
29830 6c 61 73 73 20 53 51 4c 69 74 65 4d 6f 64 75 6c  lass SQLiteModul
29840 65 20 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e :..           
29850 20 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d   ISQLiteManagedM
29860 6f 64 75 6c 65 2c 20 2f 2a 49 53 51 4c 69 74 65  odule, /*ISQLite
29870 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2c 2a 2f 0d  NativeModule,*/.
29880 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 44 69  .            IDi
29890 73 70 6f 73 61 62 6c 65 20 2f 2a 20 4e 4f 54 20  sposable /* NOT 
298a0 53 45 41 4c 45 44 20 2a 2f 0d 0a 20 20 20 20 7b  SEALED */..    {
298b0 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
298c0 6e 20 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  n SQLiteNativeMo
298d0 64 75 6c 65 20 50 72 69 76 61 74 65 20 43 6c 61  dule Private Cla
298e0 73 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ss..        priv
298f0 61 74 65 20 73 65 61 6c 65 64 20 63 6c 61 73 73  ate sealed class
29900 20 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64   SQLiteNativeMod
29910 75 6c 65 20 3a 0d 0a 20 20 20 20 20 20 20 20 20  ule :..         
29920 20 20 20 20 20 20 20 49 53 51 4c 69 74 65 4e 61         ISQLiteNa
29930 74 69 76 65 4d 6f 64 75 6c 65 2c 20 49 44 69 73  tiveModule, IDis
29940 70 6f 73 61 62 6c 65 0d 0a 20 20 20 20 20 20 20  posable..       
29950 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
29960 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
29970 43 6f 6e 73 74 61 6e 74 73 0d 0a 20 20 20 20 20  Constants..     
29980 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
29990 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
299a0 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68    /// This is th
299b0 65 20 76 61 6c 75 65 20 74 68 61 74 20 69 73 20  e value that is 
299c0 61 6c 77 61 79 73 20 75 73 65 64 20 66 6f 72 20  always used for 
299d0 74 68 65 20 22 6c 6f 67 45 72 72 6f 72 73 22 0d  the "logErrors".
299e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
299f0 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 74 68   parameter to th
29a00 65 20 76 61 72 69 6f 75 73 20 73 74 61 74 69 63  e various static
29a10 20 65 72 72 6f 72 20 68 61 6e 64 6c 69 6e 67 20   error handling 
29a20 6d 65 74 68 6f 64 73 20 70 72 6f 76 69 64 65 64  methods provided
29a30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
29a40 2f 20 62 79 20 74 68 65 20 3c 73 65 65 20 63 72  / by the <see cr
29a50 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65  ef="SQLiteModule
29a60 22 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20 20 20  " /> class...   
29a70 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73           /// </s
29a80 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
29a90 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e       private con
29aa0 73 74 20 62 6f 6f 6c 20 44 65 66 61 75 6c 74 4c  st bool DefaultL
29ab0 6f 67 45 72 72 6f 72 73 20 3d 20 74 72 75 65 3b  ogErrors = true;
29ac0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
29ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29af0 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
29b20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
29b30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
29b40 2f 20 54 68 69 73 20 69 73 20 74 68 65 20 65 72  / This is the er
29b50 72 6f 72 20 6d 65 73 73 61 67 65 20 74 65 78 74  ror message text
29b60 20 75 73 65 64 20 77 68 65 6e 20 74 68 65 20 63   used when the c
29b70 6f 6e 74 61 69 6e 65 64 0d 0a 20 20 20 20 20 20  ontained..      
29b80 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
29b90 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c  ref="SQLiteModul
29ba0 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  e" /> object ins
29bb0 74 61 6e 63 65 20 69 73 20 6e 6f 74 20 61 76 61  tance is not ava
29bc0 69 6c 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20  ilable..        
29bd0 20 20 20 20 2f 2f 2f 20 66 6f 72 20 61 6e 79 20      /// for any 
29be0 72 65 61 73 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  reason...       
29bf0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
29c00 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
29c10 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73   private const s
29c20 74 72 69 6e 67 20 4d 6f 64 75 6c 65 4e 6f 74 41  tring ModuleNotA
29c30 76 61 69 6c 61 62 6c 65 45 72 72 6f 72 4d 65 73  vailableErrorMes
29c40 73 61 67 65 20 3d 0d 0a 20 20 20 20 20 20 20 20  sage =..        
29c50 20 20 20 20 20 20 20 20 22 6e 61 74 69 76 65 20          "native 
29c60 6d 6f 64 75 6c 65 20 69 6d 70 6c 65 6d 65 6e 74  module implement
29c70 61 74 69 6f 6e 20 6e 6f 74 20 61 76 61 69 6c 61  ation not availa
29c80 62 6c 65 22 3b 0d 0a 20 20 20 20 20 20 20 20 20  ble";..         
29c90 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
29ca0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
29cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29cf0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
29d00 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
29d10 44 61 74 61 0d 0a 20 20 20 20 20 20 20 20 20 20  Data..          
29d20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
29d30 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
29d40 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
29d50 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e  SQLiteModule" />
29d60 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
29d70 20 75 73 65 64 20 74 6f 20 70 72 6f 76 69 64 65   used to provide
29d80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
29d90 2f 20 61 6e 20 69 6d 70 6c 65 6d 65 6e 74 61 74  / an implementat
29da0 69 6f 6e 20 6f 66 20 74 68 65 20 3c 73 65 65 20  ion of the <see 
29db0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
29dc0 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 0d 0a 20  iveModule" />.. 
29dd0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 69             /// i
29de0 6e 74 65 72 66 61 63 65 2e 0d 0a 20 20 20 20 20  nterface...     
29df0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
29e00 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
29e10 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74     private SQLit
29e20 65 4d 6f 64 75 6c 65 20 6d 6f 64 75 6c 65 3b 0d  eModule module;.
29e30 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e  .            #en
29e40 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
29e50 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
29e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
29ea0 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
29eb0 6e 20 50 75 62 6c 69 63 20 43 6f 6e 73 74 72 75  n Public Constru
29ec0 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 20  ctors..         
29ed0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
29ee0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
29ef0 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20  / Constructs an 
29f00 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73  instance of this
29f10 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20   class...       
29f20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
29f30 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
29f40 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
29f50 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20 20 20  ="module">..    
29f60 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
29f70 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
29f80 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65  eModule" /> obje
29f90 63 74 20 69 6e 73 74 61 6e 63 65 20 75 73 65 64  ct instance used
29fa0 20 74 6f 20 70 72 6f 76 69 64 65 0d 0a 20 20 20   to provide..   
29fb0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 6e 20           /// an 
29fc0 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f  implementation o
29fd0 66 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  f the <see cref=
29fe0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
29ff0 64 75 6c 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20  dule" />..      
2a000 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65 72 66        /// interf
2a010 61 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ace...          
2a020 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2a030 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
2a040 69 63 20 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ic SQLiteNativeM
2a050 6f 64 75 6c 65 28 0d 0a 20 20 20 20 20 20 20 20  odule(..        
2a060 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 6f          SQLiteMo
2a070 64 75 6c 65 20 6d 6f 64 75 6c 65 0d 0a 20 20 20  dule module..   
2a080 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
2a090 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2a0a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2a0b0 68 69 73 2e 6d 6f 64 75 6c 65 20 3d 20 6d 6f 64  his.module = mod
2a0c0 75 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ule;..          
2a0d0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
2a0e0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
2a0f0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
2a100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2a140 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72  ..            #r
2a150 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 53 74  egion Private St
2a160 61 74 69 63 20 4d 65 74 68 6f 64 73 0d 0a 20 20  atic Methods..  
2a170 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73            /// <s
2a180 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2a190 20 20 20 20 20 2f 2f 2f 20 53 65 74 73 20 74 68       /// Sets th
2a1a0 65 20 74 61 62 6c 65 20 65 72 72 6f 72 20 6d 65  e table error me
2a1b0 73 73 61 67 65 20 74 6f 20 6f 6e 65 20 74 68 61  ssage to one tha
2a1c0 74 20 69 6e 64 69 63 61 74 65 73 20 74 68 65 20  t indicates the 
2a1d0 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20  native..        
2a1e0 20 20 20 20 2f 2f 2f 20 6d 6f 64 75 6c 65 20 69      /// module i
2a1f0 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 69 73  mplementation is
2a200 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65 2e 0d   not available..
2a210 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2a220 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
2a230 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
2a240 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22  ram name="pVtab"
2a250 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2a260 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f  // The native po
2a270 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c  inter to the sql
2a280 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65  ite3_vtab derive
2a290 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20  d structure...  
2a2a0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2a2b0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
2a2c0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
2a2d0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2a2e0 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20  // The value of 
2a2f0 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
2a300 65 45 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72  eErrorCode.Error
2a310 22 20 2f 3e 2e 0d 0a 20 20 20 20 20 20 20 20 20  " />...         
2a320 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
2a330 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
2a340 72 69 76 61 74 65 20 73 74 61 74 69 63 20 53 51  rivate static SQ
2a350 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 4d 6f  LiteErrorCode Mo
2a360 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65  duleNotAvailable
2a370 54 61 62 6c 65 45 72 72 6f 72 28 0d 0a 20 20 20  TableError(..   
2a380 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
2a390 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 20  Ptr pVtab..     
2a3a0 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
2a3b0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2a3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74               Set
2a3d0 54 61 62 6c 65 45 72 72 6f 72 28 6e 75 6c 6c 2c  TableError(null,
2a3e0 20 70 56 74 61 62 2c 20 44 65 66 61 75 6c 74 4c   pVtab, DefaultL
2a3f0 6f 67 45 72 72 6f 72 73 2c 0d 0a 20 20 20 20 20  ogErrors,..     
2a400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d                 M
2a410 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c  oduleNotAvailabl
2a420 65 45 72 72 6f 72 4d 65 73 73 61 67 65 29 3b 0d  eErrorMessage);.
2a430 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2a440 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65     return SQLite
2a450 45 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 3b  ErrorCode.Error;
2a460 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2a470 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2a480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a4a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a4b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a4c0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
2a4d0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
2a4e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2a4f0 20 53 65 74 73 20 74 68 65 20 74 61 62 6c 65 20   Sets the table 
2a500 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 74 6f  error message to
2a510 20 6f 6e 65 20 74 68 61 74 20 69 6e 64 69 63 61   one that indica
2a520 74 65 73 20 74 68 65 20 6e 61 74 69 76 65 0d 0a  tes the native..
2a530 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2a540 6d 6f 64 75 6c 65 20 69 6d 70 6c 65 6d 65 6e 74  module implement
2a550 61 74 69 6f 6e 20 69 73 20 6e 6f 74 20 61 76 61  ation is not ava
2a560 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20  ilable...       
2a570 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
2a580 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
2a590 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2a5a0 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20  ="pCursor">..   
2a5b0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65           /// The
2a5c0 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
2a5d0 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76  to the sqlite3_v
2a5e0 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69 76  tab_cursor deriv
2a5f0 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ed..            
2a600 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  /// structure...
2a610 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2a620 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
2a630 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
2a640 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
2a650 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 6f   /// The value o
2a660 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  f <see cref="SQL
2a670 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 45 72 72  iteErrorCode.Err
2a680 6f 72 22 20 2f 3e 2e 0d 0a 20 20 20 20 20 20 20  or" />...       
2a690 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
2a6a0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
2a6b0 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
2a6c0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
2a6d0 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62  ModuleNotAvailab
2a6e0 6c 65 43 75 72 73 6f 72 45 72 72 6f 72 28 0d 0a  leCursorError(..
2a6f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a700 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a  IntPtr pCursor..
2a710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a720 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
2a730 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a740 20 20 53 65 74 43 75 72 73 6f 72 45 72 72 6f 72    SetCursorError
2a750 28 6e 75 6c 6c 2c 20 70 43 75 72 73 6f 72 2c 20  (null, pCursor, 
2a760 44 65 66 61 75 6c 74 4c 6f 67 45 72 72 6f 72 73  DefaultLogErrors
2a770 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2a780 20 20 20 20 20 20 20 4d 6f 64 75 6c 65 4e 6f 74         ModuleNot
2a790 41 76 61 69 6c 61 62 6c 65 45 72 72 6f 72 4d 65  AvailableErrorMe
2a7a0 73 73 61 67 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  ssage);....     
2a7b0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2a7c0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
2a7d0 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20 20 20 20  e.Error;..      
2a7e0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2a7f0 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
2a800 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2a810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a850 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
2a860 20 20 23 72 65 67 69 6f 6e 20 49 53 51 4c 69 74    #region ISQLit
2a870 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20 4d 65  eNativeModule Me
2a880 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 20  mbers..         
2a890 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2a8a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2a8b0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
2a8c0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
2a8d0 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65  veModule.xCreate
2a8e0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
2a8f0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2a900 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2a910 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
2a920 20 6e 61 6d 65 3d 22 70 44 62 22 3e 0d 0a 20 20   name="pDb">..  
2a930 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2a940 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
2a950 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2a960 64 75 6c 65 2e 78 43 72 65 61 74 65 22 20 2f 3e  dule.xCreate" />
2a970 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
2a980 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
2a990 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
2a9a0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
2a9b0 22 70 41 75 78 22 3e 0d 0a 20 20 20 20 20 20 20  "pAux">..       
2a9c0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2a9d0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2a9e0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2a9f0 78 43 72 65 61 74 65 22 20 2f 3e 20 6d 65 74 68  xCreate" /> meth
2aa00 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
2aa10 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
2aa20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2aa30 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 63  param name="argc
2aa40 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
2aa50 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
2aa60 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
2aa70 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61  tiveModule.xCrea
2aa80 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  te" /> method...
2aa90 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2aaa0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
2aab0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
2aac0 20 6e 61 6d 65 3d 22 61 72 67 76 22 3e 0d 0a 20   name="argv">.. 
2aad0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
2aae0 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
2aaf0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
2ab00 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 22 20 2f  odule.xCreate" /
2ab10 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
2ab20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
2ab30 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
2ab40 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2ab50 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20  ="pVtab">..     
2ab60 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
2ab70 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
2ab80 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2ab90 65 2e 78 43 72 65 61 74 65 22 20 2f 3e 20 6d 65  e.xCreate" /> me
2aba0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2abb0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
2abc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2abd0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 45   <param name="pE
2abe0 72 72 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20  rror">..        
2abf0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
2ac00 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
2ac10 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
2ac20 43 72 65 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f  Create" /> metho
2ac30 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
2ac40 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
2ac50 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72            /// <r
2ac60 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
2ac70 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2ac80 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2ac90 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2aca0 78 43 72 65 61 74 65 22 20 2f 3e 20 6d 65 74 68  xCreate" /> meth
2acb0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
2acc0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
2acd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
2ace0 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43  lic SQLiteErrorC
2acf0 6f 64 65 20 78 43 72 65 61 74 65 28 0d 0a 20 20  ode xCreate(..  
2ad00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
2ad10 74 50 74 72 20 70 44 62 2c 0d 0a 20 20 20 20 20  tPtr pDb,..     
2ad20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
2ad30 72 20 70 41 75 78 2c 0d 0a 20 20 20 20 20 20 20  r pAux,..       
2ad40 20 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67           int arg
2ad50 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  c,..            
2ad60 20 20 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c      IntPtr argv,
2ad70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ad80 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 56 74    ref IntPtr pVt
2ad90 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ab,..           
2ada0 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20       ref IntPtr 
2adb0 70 45 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20  pError..        
2adc0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
2add0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2ade0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65            // Che
2adf0 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d  ckDisposed();...
2ae00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ae10 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e   if (module == n
2ae20 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
2ae30 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2ae40 20 20 20 20 20 20 20 20 20 20 20 20 20 70 45 72               pEr
2ae50 72 6f 72 20 3d 20 53 51 4c 69 74 65 53 74 72 69  ror = SQLiteStri
2ae60 6e 67 2e 55 74 66 38 49 6e 74 50 74 72 46 72 6f  ng.Utf8IntPtrFro
2ae70 6d 53 74 72 69 6e 67 28 0d 0a 20 20 20 20 20 20  mString(..      
2ae80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ae90 20 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c    ModuleNotAvail
2aea0 61 62 6c 65 45 72 72 6f 72 4d 65 73 73 61 67 65  ableErrorMessage
2aeb0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2aec0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2aed0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
2aee0 2e 45 72 72 6f 72 3b 0d 0a 20 20 20 20 20 20 20  .Error;..       
2aef0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
2af00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2af10 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 43 72 65  turn module.xCre
2af20 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ate(..          
2af30 20 20 20 20 20 20 20 20 20 20 70 44 62 2c 20 70            pDb, p
2af40 41 75 78 2c 20 61 72 67 63 2c 20 61 72 67 76 2c  Aux, argc, argv,
2af50 20 72 65 66 20 70 56 74 61 62 2c 20 72 65 66 20   ref pVtab, ref 
2af60 70 45 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20  pError);..      
2af70 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2af80 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2af90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2afa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2afb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2afc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2afd0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73            /// <s
2afe0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2aff0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2b000 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2b010 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2b020 78 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74  xConnect" /> met
2b030 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
2b040 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2b050 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2b060 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
2b070 44 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  Db">..          
2b080 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
2b090 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2b0a0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  NativeModule.xCo
2b0b0 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64  nnect" /> method
2b0c0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2b0d0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
2b0e0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
2b0f0 72 61 6d 20 6e 61 6d 65 3d 22 70 41 75 78 22 3e  ram name="pAux">
2b100 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2b110 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
2b120 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
2b130 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63  veModule.xConnec
2b140 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  t" /> method... 
2b150 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2b160 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
2b170 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
2b180 6e 61 6d 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20  name="argc">..  
2b190 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2b1a0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
2b1b0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2b1c0 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 22 20 2f  dule.xConnect" /
2b1d0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
2b1e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
2b1f0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
2b200 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2b210 3d 22 61 72 67 76 22 3e 0d 0a 20 20 20 20 20 20  ="argv">..      
2b220 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
2b230 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
2b240 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2b250 2e 78 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65  .xConnect" /> me
2b260 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2b270 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
2b280 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2b290 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
2b2a0 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  tab">..         
2b2b0 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2b2c0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2b2d0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
2b2e0 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f  onnect" /> metho
2b2f0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
2b300 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
2b310 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
2b320 61 72 61 6d 20 6e 61 6d 65 3d 22 70 45 72 72 6f  aram name="pErro
2b330 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r">..           
2b340 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
2b350 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
2b360 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e  ativeModule.xCon
2b370 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  nect" /> method.
2b380 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2b390 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
2b3a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
2b3b0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
2b3c0 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2b3d0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2b3e0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
2b3f0 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f  onnect" /> metho
2b400 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
2b410 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
2b420 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
2b430 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  ic SQLiteErrorCo
2b440 64 65 20 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20  de xConnect(..  
2b450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
2b460 74 50 74 72 20 70 44 62 2c 0d 0a 20 20 20 20 20  tPtr pDb,..     
2b470 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
2b480 72 20 70 41 75 78 2c 0d 0a 20 20 20 20 20 20 20  r pAux,..       
2b490 20 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67           int arg
2b4a0 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  c,..            
2b4b0 20 20 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c      IntPtr argv,
2b4c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b4d0 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 56 74    ref IntPtr pVt
2b4e0 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ab,..           
2b4f0 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20       ref IntPtr 
2b500 70 45 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20  pError..        
2b510 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
2b520 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2b530 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65            // Che
2b540 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d  ckDisposed();...
2b550 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b560 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e   if (module == n
2b570 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
2b580 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2b590 20 20 20 20 20 20 20 20 20 20 20 20 20 70 45 72               pEr
2b5a0 72 6f 72 20 3d 20 53 51 4c 69 74 65 53 74 72 69  ror = SQLiteStri
2b5b0 6e 67 2e 55 74 66 38 49 6e 74 50 74 72 46 72 6f  ng.Utf8IntPtrFro
2b5c0 6d 53 74 72 69 6e 67 28 0d 0a 20 20 20 20 20 20  mString(..      
2b5d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b5e0 20 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c    ModuleNotAvail
2b5f0 61 62 6c 65 45 72 72 6f 72 4d 65 73 73 61 67 65  ableErrorMessage
2b600 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2b610 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2b620 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
2b630 2e 45 72 72 6f 72 3b 0d 0a 20 20 20 20 20 20 20  .Error;..       
2b640 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
2b650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2b660 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 43 6f 6e  turn module.xCon
2b670 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20  nect(..         
2b680 20 20 20 20 20 20 20 20 20 20 20 70 44 62 2c 20             pDb, 
2b690 70 41 75 78 2c 20 61 72 67 63 2c 20 61 72 67 76  pAux, argc, argv
2b6a0 2c 20 72 65 66 20 70 56 74 61 62 2c 20 72 65 66  , ref pVtab, ref
2b6b0 20 70 45 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20   pError);..     
2b6c0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2b6d0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2b6e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b6f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2b720 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2b730 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2b740 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
2b750 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
2b760 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2b770 2e 78 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 20  .xBestIndex" /> 
2b780 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2b790 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
2b7a0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
2b7b0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2b7c0 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20  ="pVtab">..     
2b7d0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
2b7e0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
2b7f0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2b800 65 2e 78 42 65 73 74 49 6e 64 65 78 22 20 2f 3e  e.xBestIndex" />
2b810 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
2b820 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
2b830 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
2b840 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
2b850 22 70 49 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20  "pIndex">..     
2b860 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
2b870 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
2b880 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2b890 65 2e 78 42 65 73 74 49 6e 64 65 78 22 20 2f 3e  e.xBestIndex" />
2b8a0 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
2b8b0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
2b8c0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
2b8d0 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
2b8e0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
2b8f0 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
2b900 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
2b910 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78  odule.xBestIndex
2b920 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
2b930 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2b940 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
2b950 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c        public SQL
2b960 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 42 65  iteErrorCode xBe
2b970 73 74 49 6e 64 65 78 28 0d 0a 20 20 20 20 20 20  stIndex(..      
2b980 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
2b990 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20   pVtab,..       
2b9a0 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
2b9b0 70 49 6e 64 65 78 0d 0a 20 20 20 20 20 20 20 20  pIndex..        
2b9c0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
2b9d0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2b9e0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65            // Che
2b9f0 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d  ckDisposed();...
2ba00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ba10 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e   if (module == n
2ba20 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
2ba30 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2ba40 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61   ModuleNotAvaila
2ba50 62 6c 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56  bleTableError(pV
2ba60 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  tab);....       
2ba70 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2ba80 6d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65  module.xBestInde
2ba90 78 28 70 56 74 61 62 2c 20 70 49 6e 64 65 78 29  x(pVtab, pIndex)
2baa0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
2bab0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2bac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2baf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bb00 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
2bb10 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2bb20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2bb30 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
2bb40 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
2bb50 76 65 4d 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e  veModule.xDiscon
2bb60 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  nect" /> method.
2bb70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2bb80 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2bb90 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
2bba0 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62  aram name="pVtab
2bbb0 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
2bbc0 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
2bbd0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
2bbe0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 69 73 63  tiveModule.xDisc
2bbf0 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f  onnect" /> metho
2bc00 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
2bc10 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
2bc20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72            /// <r
2bc30 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
2bc40 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2bc50 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2bc60 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2bc70 78 44 69 73 63 6f 6e 6e 65 63 74 22 20 2f 3e 20  xDisconnect" /> 
2bc80 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2bc90 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
2bca0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
2bcb0 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72   public SQLiteEr
2bcc0 72 6f 72 43 6f 64 65 20 78 44 69 73 63 6f 6e 6e  rorCode xDisconn
2bcd0 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ect(..          
2bce0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
2bcf0 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ab..            
2bd00 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
2bd10 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2bd20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69        // CheckDi
2bd30 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20  sposed();....   
2bd40 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2bd50 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29  (module == null)
2bd60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2bd70 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64        return Mod
2bd80 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54  uleNotAvailableT
2bd90 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29  ableError(pVtab)
2bda0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2bdb0 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75       return modu
2bdc0 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 28 70  le.xDisconnect(p
2bdd0 56 74 61 62 29 3b 0d 0a 20 20 20 20 20 20 20 20  Vtab);..        
2bde0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2bdf0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2be00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be30 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2be40 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
2be50 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
2be60 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2be70 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2be80 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44  eNativeModule.xD
2be90 65 73 74 72 6f 79 22 20 2f 3e 20 6d 65 74 68 6f  estroy" /> metho
2bea0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
2beb0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
2bec0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2bed0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74  <param name="pVt
2bee0 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ab">..          
2bef0 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
2bf00 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2bf10 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 65  NativeModule.xDe
2bf20 73 74 72 6f 79 22 20 2f 3e 20 6d 65 74 68 6f 64  stroy" /> method
2bf30 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2bf40 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
2bf50 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65           /// <re
2bf60 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
2bf70 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
2bf80 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
2bf90 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
2bfa0 44 65 73 74 72 6f 79 22 20 2f 3e 20 6d 65 74 68  Destroy" /> meth
2bfb0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
2bfc0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
2bfd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
2bfe0 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43  lic SQLiteErrorC
2bff0 6f 64 65 20 78 44 65 73 74 72 6f 79 28 0d 0a 20  ode xDestroy(.. 
2c000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
2c010 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20  ntPtr pVtab..   
2c020 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
2c030 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2c040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2c050 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  / CheckDisposed(
2c060 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2c070 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65        if (module
2c080 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
2c090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2c0a0 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41  eturn ModuleNotA
2c0b0 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72  vailableTableErr
2c0c0 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20  or(pVtab);....  
2c0d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2c0e0 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 44 65 73  turn module.xDes
2c0f0 74 72 6f 79 28 70 56 74 61 62 29 3b 0d 0a 20 20  troy(pVtab);..  
2c100 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
2c110 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
2c120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2c160 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2c170 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
2c180 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
2c190 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
2c1a0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2c1b0 75 6c 65 2e 78 4f 70 65 6e 22 20 2f 3e 20 6d 65  ule.xOpen" /> me
2c1c0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2c1d0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
2c1e0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2c1f0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
2c200 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20  pVtab">..       
2c210 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2c220 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2c230 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2c240 78 4f 70 65 6e 22 20 2f 3e 20 6d 65 74 68 6f 64  xOpen" /> method
2c250 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2c260 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
2c270 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
2c280 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f  ram name="pCurso
2c290 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r">..           
2c2a0 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
2c2b0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
2c2c0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4f 70 65  ativeModule.xOpe
2c2d0 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  n" /> method... 
2c2e0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2c2f0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
2c300 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
2c310 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
2c320 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
2c330 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
2c340 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e  tiveModule.xOpen
2c350 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
2c360 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2c370 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
2c380 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c        public SQL
2c390 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 4f 70  iteErrorCode xOp
2c3a0 65 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  en(..           
2c3b0 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
2c3c0 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  b,..            
2c3d0 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70      ref IntPtr p
2c3e0 43 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20 20  Cursor..        
2c3f0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
2c400 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2c410 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65            // Che
2c420 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d  ckDisposed();...
2c430 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c440 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e   if (module == n
2c450 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
2c460 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2c470 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61   ModuleNotAvaila
2c480 62 6c 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56  bleTableError(pV
2c490 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  tab);....       
2c4a0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2c4b0 6d 6f 64 75 6c 65 2e 78 4f 70 65 6e 28 70 56 74  module.xOpen(pVt
2c4c0 61 62 2c 20 72 65 66 20 70 43 75 72 73 6f 72 29  ab, ref pCursor)
2c4d0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
2c4e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2c4f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c530 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
2c540 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2c550 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2c560 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
2c570 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
2c580 76 65 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 22  veModule.xClose"
2c590 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
2c5a0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73           /// </s
2c5b0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2c5c0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
2c5d0 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d  name="pCursor">.
2c5e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2c5f0 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
2c600 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
2c610 65 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 22 20  eModule.xClose" 
2c620 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2c630 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
2c640 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
2c650 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
2c660 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2c670 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
2c680 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
2c690 65 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 22 20  eModule.xClose" 
2c6a0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2c6b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
2c6c0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
2c6d0 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
2c6e0 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6c 6f 73  eErrorCode xClos
2c6f0 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
2c700 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73      IntPtr pCurs
2c710 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  or..            
2c720 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
2c730 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2c740 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69        // CheckDi
2c750 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20  sposed();....   
2c760 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2c770 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29  (module == null)
2c780 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2c790 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64        return Mod
2c7a0 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43  uleNotAvailableC
2c7b0 75 72 73 6f 72 45 72 72 6f 72 28 70 43 75 72 73  ursorError(pCurs
2c7c0 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  or);....        
2c7d0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d          return m
2c7e0 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 28 70 43 75  odule.xClose(pCu
2c7f0 72 73 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20  rsor);..        
2c800 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2c810 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2c820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c850 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2c860 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
2c870 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
2c880 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2c890 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2c8a0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46  eNativeModule.xF
2c8b0 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64  ilter" /> method
2c8c0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2c8d0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2c8e0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2c8f0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72  param name="pCur
2c900 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  sor">..         
2c910 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2c920 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2c930 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46  eNativeModule.xF
2c940 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64  ilter" /> method
2c950 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2c960 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
2c970 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
2c980 72 61 6d 20 6e 61 6d 65 3d 22 69 64 78 4e 75 6d  ram name="idxNum
2c990 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
2c9a0 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
2c9b0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
2c9c0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74  tiveModule.xFilt
2c9d0 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  er" /> method...
2c9e0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2c9f0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
2ca00 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
2ca10 20 6e 61 6d 65 3d 22 69 64 78 53 74 72 22 3e 0d   name="idxStr">.
2ca20 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2ca30 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
2ca40 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
2ca50 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 22  eModule.xFilter"
2ca60 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
2ca70 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
2ca80 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
2ca90 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2caa0 6d 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20 20 20  me="argc">..    
2cab0 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
2cac0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
2cad0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2cae0 6c 65 2e 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d  le.xFilter" /> m
2caf0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2cb00 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2cb10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2cb20 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61  / <param name="a
2cb30 72 67 76 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  rgv">..         
2cb40 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2cb50 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2cb60 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46  eNativeModule.xF
2cb70 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64  ilter" /> method
2cb80 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2cb90 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
2cba0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65           /// <re
2cbb0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
2cbc0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
2cbd0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
2cbe0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
2cbf0 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f  Filter" /> metho
2cc00 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
2cc10 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
2cc20 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
2cc30 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  ic SQLiteErrorCo
2cc40 64 65 20 78 46 69 6c 74 65 72 28 0d 0a 20 20 20  de xFilter(..   
2cc50 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
2cc60 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20  Ptr pCursor,..  
2cc70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
2cc80 74 20 69 64 78 4e 75 6d 2c 0d 0a 20 20 20 20 20  t idxNum,..     
2cc90 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
2cca0 72 20 69 64 78 53 74 72 2c 0d 0a 20 20 20 20 20  r idxStr,..     
2ccb0 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 61             int a
2ccc0 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  rgc,..          
2ccd0 20 20 20 20 20 20 49 6e 74 50 74 72 20 61 72 67        IntPtr arg
2cce0 76 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  v..             
2ccf0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
2cd00 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2cd10 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73       // CheckDis
2cd20 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20  posed();....    
2cd30 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2cd40 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d  module == null).
2cd50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2cd60 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75       return Modu
2cd70 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43 75  leNotAvailableCu
2cd80 72 73 6f 72 45 72 72 6f 72 28 70 43 75 72 73 6f  rsorError(pCurso
2cd90 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  r);....         
2cda0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f         return mo
2cdb0 64 75 6c 65 2e 78 46 69 6c 74 65 72 28 70 43 75  dule.xFilter(pCu
2cdc0 72 73 6f 72 2c 20 69 64 78 4e 75 6d 2c 20 69 64  rsor, idxNum, id
2cdd0 78 53 74 72 2c 20 61 72 67 63 2c 20 61 72 67 76  xStr, argc, argv
2cde0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2cdf0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
2ce00 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2ce10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ce20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ce30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ce40 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2ce50 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2ce60 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2ce70 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
2ce80 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
2ce90 69 76 65 4d 6f 64 75 6c 65 2e 78 4e 65 78 74 22  iveModule.xNext"
2cea0 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
2ceb0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73           /// </s
2cec0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2ced0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
2cee0 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d  name="pCursor">.
2cef0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2cf00 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
2cf10 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
2cf20 65 4d 6f 64 75 6c 65 2e 78 4e 65 78 74 22 20 2f  eModule.xNext" /
2cf30 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
2cf40 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
2cf50 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
2cf60 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
2cf70 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2cf80 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
2cf90 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
2cfa0 4d 6f 64 75 6c 65 2e 78 4e 65 78 74 22 20 2f 3e  Module.xNext" />
2cfb0 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
2cfc0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
2cfd0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
2cfe0 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45    public SQLiteE
2cff0 72 72 6f 72 43 6f 64 65 20 78 4e 65 78 74 28 0d  rrorCode xNext(.
2d000 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d010 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d   IntPtr pCursor.
2d020 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d030 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
2d040 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2d050 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f     // CheckDispo
2d060 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  sed();....      
2d070 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f            if (mo
2d080 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  dule == null).. 
2d090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d0a0 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65     return Module
2d0b0 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43 75 72 73  NotAvailableCurs
2d0c0 6f 72 45 72 72 6f 72 28 70 43 75 72 73 6f 72 29  orError(pCursor)
2d0d0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2d0e0 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75       return modu
2d0f0 6c 65 2e 78 4e 65 78 74 28 70 43 75 72 73 6f 72  le.xNext(pCursor
2d100 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2d110 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
2d120 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2d130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d160 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2d170 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2d180 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2d190 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
2d1a0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
2d1b0 69 76 65 4d 6f 64 75 6c 65 2e 78 45 6f 66 22 20  iveModule.xEof" 
2d1c0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2d1d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
2d1e0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2d1f0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
2d200 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a  ame="pCursor">..
2d210 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2d220 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
2d230 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
2d240 4d 6f 64 75 6c 65 2e 78 45 6f 66 22 20 2f 3e 20  Module.xEof" /> 
2d250 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2d260 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2d270 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2d280 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
2d290 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2d2a0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
2d2b0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2d2c0 64 75 6c 65 2e 78 45 6f 66 22 20 2f 3e 20 6d 65  dule.xEof" /> me
2d2d0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2d2e0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
2d2f0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
2d300 75 62 6c 69 63 20 69 6e 74 20 78 45 6f 66 28 0d  ublic int xEof(.
2d310 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d320 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d   IntPtr pCursor.
2d330 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d340 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
2d350 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2d360 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f     // CheckDispo
2d370 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  sed();....      
2d380 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f            if (mo
2d390 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  dule == null).. 
2d3a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
2d3b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d3c0 20 20 20 20 20 20 4d 6f 64 75 6c 65 4e 6f 74 41        ModuleNotA
2d3d0 76 61 69 6c 61 62 6c 65 43 75 72 73 6f 72 45 72  vailableCursorEr
2d3e0 72 6f 72 28 70 43 75 72 73 6f 72 29 3b 0d 0a 20  ror(pCursor);.. 
2d3f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d400 20 20 20 72 65 74 75 72 6e 20 31 3b 0d 0a 20 20     return 1;..  
2d410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
2d420 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2d430 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65     return module
2d440 2e 78 45 6f 66 28 70 43 75 72 73 6f 72 29 3b 0d  .xEof(pCursor);.
2d450 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2d460 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2d470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d4a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d4b0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
2d4c0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
2d4d0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2d4e0 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
2d4f0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
2d500 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 22 20  Module.xColumn" 
2d510 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2d520 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
2d530 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2d540 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
2d550 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a  ame="pCursor">..
2d560 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2d570 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
2d580 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
2d590 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 22 20  Module.xColumn" 
2d5a0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2d5b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
2d5c0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
2d5d0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2d5e0 65 3d 22 70 43 6f 6e 74 65 78 74 22 3e 0d 0a 20  e="pContext">.. 
2d5f0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
2d600 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
2d610 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
2d620 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 22 20 2f  odule.xColumn" /
2d630 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
2d640 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
2d650 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
2d660 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2d670 3d 22 69 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20  ="index">..     
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 43 6f 6c 75 6d 6e 22 20 2f 3e 20 6d 65  e.xColumn" /> me
2d6c0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2d6d0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
2d6e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2d6f0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
2d700 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
2d710 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
2d720 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2d730 6c 65 2e 78 43 6f 6c 75 6d 6e 22 20 2f 3e 20 6d  le.xColumn" /> m
2d740 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2d750 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
2d760 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
2d770 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72  public SQLiteErr
2d780 6f 72 43 6f 64 65 20 78 43 6f 6c 75 6d 6e 28 0d  orCode xColumn(.
2d790 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d7a0 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 2c   IntPtr pCursor,
2d7b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d7c0 20 20 49 6e 74 50 74 72 20 70 43 6f 6e 74 65 78    IntPtr pContex
2d7d0 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
2d7e0 20 20 20 20 69 6e 74 20 69 6e 64 65 78 0d 0a 20      int index.. 
2d7f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
2d800 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2d810 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d820 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65   // CheckDispose
2d830 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  d();....        
2d840 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75          if (modu
2d850 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  le == null)..   
2d860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d870 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f   return ModuleNo
2d880 74 41 76 61 69 6c 61 62 6c 65 43 75 72 73 6f 72  tAvailableCursor
2d890 45 72 72 6f 72 28 70 43 75 72 73 6f 72 29 3b 0d  Error(pCursor);.
2d8a0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2d8b0 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65     return module
2d8c0 2e 78 43 6f 6c 75 6d 6e 28 70 43 75 72 73 6f 72  .xColumn(pCursor
2d8d0 2c 20 70 43 6f 6e 74 65 78 74 2c 20 69 6e 64 65  , pContext, inde
2d8e0 78 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  x);..           
2d8f0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
2d900 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2d910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d940 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2d950 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
2d960 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
2d970 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
2d980 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
2d990 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 77 49  tiveModule.xRowI
2d9a0 64 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  d" /> method... 
2d9b0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2d9c0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
2d9d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
2d9e0 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22  m name="pCursor"
2d9f0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2da00 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
2da10 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
2da20 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64  iveModule.xRowId
2da30 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
2da40 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2da50 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
2da60 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
2da70 61 6d 65 3d 22 72 6f 77 49 64 22 3e 0d 0a 20 20  ame="rowId">..  
2da80 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2da90 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
2daa0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2dab0 64 75 6c 65 2e 78 52 6f 77 49 64 22 20 2f 3e 20  dule.xRowId" /> 
2dac0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2dad0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2dae0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2daf0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
2db00 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2db10 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
2db20 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2db30 64 75 6c 65 2e 78 52 6f 77 49 64 22 20 2f 3e 20  dule.xRowId" /> 
2db40 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2db50 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
2db60 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
2db70 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72   public SQLiteEr
2db80 72 6f 72 43 6f 64 65 20 78 52 6f 77 49 64 28 0d  rorCode xRowId(.
2db90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2dba0 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 2c   IntPtr pCursor,
2dbb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2dbc0 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64    ref long rowId
2dbd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2dbe0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
2dbf0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2dc00 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70      // CheckDisp
2dc10 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  osed();....     
2dc20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d             if (m
2dc30 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  odule == null)..
2dc40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dc50 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c      return Modul
2dc60 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43 75 72  eNotAvailableCur
2dc70 73 6f 72 45 72 72 6f 72 28 70 43 75 72 73 6f 72  sorError(pCursor
2dc80 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2dc90 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64        return mod
2dca0 75 6c 65 2e 78 52 6f 77 49 64 28 70 43 75 72 73  ule.xRowId(pCurs
2dcb0 6f 72 2c 20 72 65 66 20 72 6f 77 49 64 29 3b 0d  or, ref rowId);.
2dcc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2dcd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2dce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dcf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dd00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dd10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dd20 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
2dd30 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
2dd40 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2dd50 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
2dd60 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
2dd70 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 22 20  Module.xUpdate" 
2dd80 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2dd90 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
2dda0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2ddb0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
2ddc0 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20  ame="pVtab">..  
2ddd0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2dde0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
2ddf0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2de00 64 75 6c 65 2e 78 55 70 64 61 74 65 22 20 2f 3e  dule.xUpdate" />
2de10 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
2de20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
2de30 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
2de40 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
2de50 22 61 72 67 63 22 3e 0d 0a 20 20 20 20 20 20 20  "argc">..       
2de60 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2de70 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2de80 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2de90 78 55 70 64 61 74 65 22 20 2f 3e 20 6d 65 74 68  xUpdate" /> meth
2dea0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
2deb0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
2dec0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2ded0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 76  param name="argv
2dee0 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
2def0 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
2df00 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
2df10 74 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61  tiveModule.xUpda
2df20 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  te" /> method...
2df30 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2df40 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
2df50 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
2df60 20 6e 61 6d 65 3d 22 72 6f 77 49 64 22 3e 0d 0a   name="rowId">..
2df70 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2df80 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
2df90 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
2dfa0 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 22 20  Module.xUpdate" 
2dfb0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2dfc0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
2dfd0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
2dfe0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
2dff0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2e000 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
2e010 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
2e020 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 22  eModule.xUpdate"
2e030 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
2e040 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72           /// </r
2e050 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
2e060 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69       public SQLi
2e070 74 65 45 72 72 6f 72 43 6f 64 65 20 78 55 70 64  teErrorCode xUpd
2e080 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ate(..          
2e090 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
2e0a0 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ab,..           
2e0b0 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a       int argc,..
2e0c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e0d0 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20  IntPtr argv,..  
2e0e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2e0f0 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a 20 20  f long rowId..  
2e100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
2e110 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
2e120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e130 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64  // CheckDisposed
2e140 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
2e150 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c         if (modul
2e160 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
2e170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e180 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74  return ModuleNot
2e190 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72  AvailableTableEr
2e1a0 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20  ror(pVtab);.... 
2e1b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2e1c0 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 55 70  eturn module.xUp
2e1d0 64 61 74 65 28 70 56 74 61 62 2c 20 61 72 67 63  date(pVtab, argc
2e1e0 2c 20 61 72 67 76 2c 20 72 65 66 20 72 6f 77 49  , argv, ref rowI
2e1f0 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  d);..           
2e200 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
2e210 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2e220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e250 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2e260 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
2e270 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
2e280 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
2e290 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
2e2a0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 67 69  tiveModule.xBegi
2e2b0 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  n" /> method... 
2e2c0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2e2d0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
2e2e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
2e2f0 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d  m name="pVtab">.
2e300 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2e310 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
2e320 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
2e330 65 4d 6f 64 75 6c 65 2e 78 42 65 67 69 6e 22 20  eModule.xBegin" 
2e340 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2e350 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
2e360 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
2e370 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
2e380 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2e390 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
2e3a0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
2e3b0 65 4d 6f 64 75 6c 65 2e 78 42 65 67 69 6e 22 20  eModule.xBegin" 
2e3c0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2e3d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
2e3e0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
2e3f0 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
2e400 65 45 72 72 6f 72 43 6f 64 65 20 78 42 65 67 69  eErrorCode xBegi
2e410 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n(..            
2e420 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
2e430 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e440 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
2e450 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2e460 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70      // CheckDisp
2e470 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  osed();....     
2e480 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d             if (m
2e490 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  odule == null)..
2e4a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e4b0 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c      return Modul
2e4c0 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62  eNotAvailableTab
2e4d0 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d  leError(pVtab);.
2e4e0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2e4f0 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65     return module
2e500 2e 78 42 65 67 69 6e 28 70 56 74 61 62 29 3b 0d  .xBegin(pVtab);.
2e510 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2e520 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2e530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e570 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
2e580 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
2e590 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2e5a0 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
2e5b0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
2e5c0 4d 6f 64 75 6c 65 2e 78 53 79 6e 63 22 20 2f 3e  Module.xSync" />
2e5d0 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
2e5e0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
2e5f0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
2e600 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2e610 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20  e="pVtab">..    
2e620 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
2e630 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
2e640 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2e650 6c 65 2e 78 53 79 6e 63 22 20 2f 3e 20 6d 65 74  le.xSync" /> met
2e660 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
2e670 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2e680 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2e690 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
2e6a0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
2e6b0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
2e6c0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2e6d0 65 2e 78 53 79 6e 63 22 20 2f 3e 20 6d 65 74 68  e.xSync" /> meth
2e6e0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
2e6f0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
2e700 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
2e710 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43  lic SQLiteErrorC
2e720 6f 64 65 20 78 53 79 6e 63 28 0d 0a 20 20 20 20  ode xSync(..    
2e730 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
2e740 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 20 20  tr pVtab..      
2e750 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
2e760 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2e770 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43              // C
2e780 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d  heckDisposed();.
2e790 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2e7a0 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d     if (module ==
2e7b0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
2e7c0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2e7d0 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69  rn ModuleNotAvai
2e7e0 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72 28  lableTableError(
2e7f0 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20  pVtab);....     
2e800 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2e810 6e 20 6d 6f 64 75 6c 65 2e 78 53 79 6e 63 28 70  n module.xSync(p
2e820 56 74 61 62 29 3b 0d 0a 20 20 20 20 20 20 20 20  Vtab);..        
2e830 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2e840 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2e850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e880 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2e890 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
2e8a0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
2e8b0 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2e8c0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2e8d0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
2e8e0 6f 6d 6d 69 74 22 20 2f 3e 20 6d 65 74 68 6f 64  ommit" /> method
2e8f0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2e900 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2e910 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2e920 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61  param name="pVta
2e930 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  b">..           
2e940 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
2e950 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
2e960 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6d  ativeModule.xCom
2e970 6d 69 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  mit" /> method..
2e980 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2e990 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
2e9a0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
2e9b0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
2e9c0 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
2e9d0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2e9e0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  NativeModule.xCo
2e9f0 6d 6d 69 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  mmit" /> method.
2ea00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2ea10 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
2ea20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
2ea30 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
2ea40 20 78 43 6f 6d 6d 69 74 28 0d 0a 20 20 20 20 20   xCommit(..     
2ea50 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
2ea60 72 20 70 56 74 61 62 0d 0a 20 20 20 20 20 20 20  r pVtab..       
2ea70 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
2ea80 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2ea90 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68             // Ch
2eaa0 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a  eckDisposed();..
2eab0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2eac0 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20    if (module == 
2ead0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
2eae0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2eaf0 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c  n ModuleNotAvail
2eb00 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72 28 70  ableTableError(p
2eb10 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Vtab);....      
2eb20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2eb30 20 6d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 28   module.xCommit(
2eb40 70 56 74 61 62 29 3b 0d 0a 20 20 20 20 20 20 20  pVtab);..       
2eb50 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2eb60 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2eb70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eb80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eb90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2ebb0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75           /// <su
2ebc0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2ebd0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
2ebe0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
2ebf0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
2ec00 52 6f 6c 6c 62 61 63 6b 22 20 2f 3e 20 6d 65 74  Rollback" /> met
2ec10 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
2ec20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2ec30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2ec40 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
2ec50 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
2ec60 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
2ec70 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
2ec80 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
2ec90 52 6f 6c 6c 62 61 63 6b 22 20 2f 3e 20 6d 65 74  Rollback" /> met
2eca0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
2ecb0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2ecc0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2ecd0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
2ece0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
2ecf0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
2ed00 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2ed10 65 2e 78 52 6f 6c 6c 62 61 63 6b 22 20 2f 3e 20  e.xRollback" /> 
2ed20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2ed30 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
2ed40 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
2ed50 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72   public SQLiteEr
2ed60 72 6f 72 43 6f 64 65 20 78 52 6f 6c 6c 62 61 63  rorCode xRollbac
2ed70 6b 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k(..            
2ed80 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
2ed90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2eda0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
2edb0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2edc0 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70      // CheckDisp
2edd0 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  osed();....     
2ede0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d             if (m
2edf0 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  odule == null)..
2ee00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ee10 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c      return Modul
2ee20 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62  eNotAvailableTab
2ee30 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d  leError(pVtab);.
2ee40 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2ee50 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65     return module
2ee60 2e 78 52 6f 6c 6c 62 61 63 6b 28 70 56 74 61 62  .xRollback(pVtab
2ee70 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2ee80 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
2ee90 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2eea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eeb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eed0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2eee0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2eef0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2ef00 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
2ef10 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
2ef20 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46  iveModule.xFindF
2ef30 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6d 65 74 68  unction" /> meth
2ef40 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
2ef50 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2ef60 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2ef70 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
2ef80 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  tab">..         
2ef90 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2efa0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2efb0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46  eNativeModule.xF
2efc0 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20  indFunction" /> 
2efd0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2efe0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2eff0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2f000 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
2f010 6e 41 72 67 22 3e 0d 0a 20 20 20 20 20 20 20 20  nArg">..        
2f020 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
2f030 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
2f040 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
2f050 46 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e  FindFunction" />
2f060 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
2f070 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
2f080 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
2f090 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
2f0a0 22 7a 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20  "zName">..      
2f0b0 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
2f0c0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
2f0d0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2f0e0 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20  .xFindFunction" 
2f0f0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2f100 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
2f110 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
2f120 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2f130 65 3d 22 63 61 6c 6c 62 61 63 6b 22 3e 0d 0a 20  e="callback">.. 
2f140 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
2f150 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
2f160 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
2f170 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74  odule.xFindFunct
2f180 69 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ion" /> method..
2f190 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2f1a0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
2f1b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
2f1c0 6d 20 6e 61 6d 65 3d 22 70 43 6c 69 65 6e 74 44  m name="pClientD
2f1d0 61 74 61 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  ata">..         
2f1e0 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2f1f0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2f200 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46  eNativeModule.xF
2f210 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20  indFunction" /> 
2f220 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2f230 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2f240 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2f250 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
2f260 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2f270 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
2f280 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2f290 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74 69  dule.xFindFuncti
2f2a0 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  on" /> method...
2f2b0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2f2c0 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
2f2d0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69          public i
2f2e0 6e 74 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e  nt xFindFunction
2f2f0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2f300 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c     IntPtr pVtab,
2f310 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f320 20 20 69 6e 74 20 6e 41 72 67 2c 0d 0a 20 20 20    int nArg,..   
2f330 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
2f340 50 74 72 20 7a 4e 61 6d 65 2c 0d 0a 20 20 20 20  Ptr zName,..    
2f350 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
2f360 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 63  SQLiteCallback c
2f370 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20  allback,..      
2f380 20 20 20 20 20 20 20 20 20 20 72 65 66 20 49 6e            ref In
2f390 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61  tPtr pClientData
2f3a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f3b0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
2f3c0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2f3d0 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70      // CheckDisp
2f3e0 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  osed();....     
2f3f0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d             if (m
2f400 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  odule == null)..
2f410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f420 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2f430 20 20 20 20 20 20 20 4d 6f 64 75 6c 65 4e 6f 74         ModuleNot
2f440 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72  AvailableTableEr
2f450 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 20 20 20  ror(pVtab);..   
2f460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f470 20 72 65 74 75 72 6e 20 30 3b 0d 0a 20 20 20 20   return 0;..    
2f480 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
2f490 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f4a0 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78   return module.x
2f4b0 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28 0d 0a 20  FindFunction(.. 
2f4c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f4d0 20 20 20 70 56 74 61 62 2c 20 6e 41 72 67 2c 20     pVtab, nArg, 
2f4e0 7a 4e 61 6d 65 2c 20 72 65 66 20 63 61 6c 6c 62  zName, ref callb
2f4f0 61 63 6b 2c 20 72 65 66 20 70 43 6c 69 65 6e 74  ack, ref pClient
2f500 44 61 74 61 29 3b 0d 0a 20 20 20 20 20 20 20 20  Data);..        
2f510 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2f520 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2f530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f560 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2f570 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
2f580 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
2f590 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2f5a0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2f5b0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52  eNativeModule.xR
2f5c0 65 6e 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64  ename" /> method
2f5d0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2f5e0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2f5f0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2f600 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61  param name="pVta
2f610 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  b">..           
2f620 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
2f630 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
2f640 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6e  ativeModule.xRen
2f650 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ame" /> method..
2f660 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2f670 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
2f680 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
2f690 6d 20 6e 61 6d 65 3d 22 7a 4e 65 77 22 3e 0d 0a  m name="zNew">..
2f6a0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2f6b0 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
2f6c0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
2f6d0 4d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65 22 20  Module.xRename" 
2f6e0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2f6f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
2f700 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
2f710 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
2f720 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2f730 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
2f740 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
2f750 65 4d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65 22  eModule.xRename"
2f760 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
2f770 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72           /// </r
2f780 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
2f790 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69       public SQLi
2f7a0 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52 65 6e  teErrorCode xRen
2f7b0 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ame(..          
2f7c0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
2f7d0 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ab,..           
2f7e0 20 20 20 20 20 49 6e 74 50 74 72 20 7a 4e 65 77       IntPtr zNew
2f7f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f800 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
2f810 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2f820 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70      // CheckDisp
2f830 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  osed();....     
2f840 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d             if (m
2f850 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  odule == null)..
2f860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f870 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c      return Modul
2f880 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62  eNotAvailableTab
2f890 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d  leError(pVtab);.
2f8a0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2f8b0 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65     return module
2f8c0 2e 78 52 65 6e 61 6d 65 28 70 56 74 61 62 2c 20  .xRename(pVtab, 
2f8d0 7a 4e 65 77 29 3b 0d 0a 20 20 20 20 20 20 20 20  zNew);..        
2f8e0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2f8f0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2f900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f930 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2f940 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
2f950 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
2f960 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2f970 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2f980 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53  eNativeModule.xS
2f990 61 76 65 70 6f 69 6e 74 22 20 2f 3e 20 6d 65 74  avepoint" /> met
2f9a0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
2f9b0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2f9c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2f9d0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
2f9e0 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
2f9f0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
2fa00 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
2fa10 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
2fa20 53 61 76 65 70 6f 69 6e 74 22 20 2f 3e 20 6d 65  Savepoint" /> me
2fa30 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2fa40 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
2fa50 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2fa60 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 53   <param name="iS
2fa70 61 76 65 70 6f 69 6e 74 22 3e 0d 0a 20 20 20 20  avepoint">..    
2fa80 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
2fa90 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
2faa0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2fab0 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74 22 20 2f  le.xSavepoint" /
2fac0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
2fad0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
2fae0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
2faf0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
2fb00 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2fb10 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
2fb20 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
2fb30 4d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e  Module.xSavepoin
2fb40 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  t" /> method... 
2fb50 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2fb60 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
2fb70 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51         public SQ
2fb80 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 53  LiteErrorCode xS
2fb90 61 76 65 70 6f 69 6e 74 28 0d 0a 20 20 20 20 20  avepoint(..     
2fba0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
2fbb0 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20  r pVtab,..      
2fbc0 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 53            int iS
2fbd0 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20 20 20  avepoint..      
2fbe0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
2fbf0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2fc00 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43              // C
2fc10 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d  heckDisposed();.
2fc20 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2fc30 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d     if (module ==
2fc40 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
2fc50 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2fc60 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69  rn ModuleNotAvai
2fc70 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72 28  lableTableError(
2fc80 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20  pVtab);....     
2fc90 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2fca0 6e 20 6d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f  n module.xSavepo
2fcb0 69 6e 74 28 70 56 74 61 62 2c 20 69 53 61 76 65  int(pVtab, iSave
2fcc0 70 6f 69 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20  point);..       
2fcd0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2fce0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2fcf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fd00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fd10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fd20 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2fd30 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75           /// <su
2fd40 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2fd50 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
2fd60 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
2fd70 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
2fd80 52 65 6c 65 61 73 65 22 20 2f 3e 20 6d 65 74 68  Release" /> meth
2fd90 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
2fda0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2fdb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2fdc0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
2fdd0 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  tab">..         
2fde0 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2fdf0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2fe00 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52  eNativeModule.xR
2fe10 65 6c 65 61 73 65 22 20 2f 3e 20 6d 65 74 68 6f  elease" /> metho
2fe20 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
2fe30 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
2fe40 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
2fe50 61 72 61 6d 20 6e 61 6d 65 3d 22 69 53 61 76 65  aram name="iSave
2fe60 70 6f 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20  point">..       
2fe70 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2fe80 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2fe90 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2fea0 78 52 65 6c 65 61 73 65 22 20 2f 3e 20 6d 65 74  xRelease" /> met
2feb0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
2fec0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2fed0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2fee0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
2fef0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
2ff00 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
2ff10 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2ff20 65 2e 78 52 65 6c 65 61 73 65 22 20 2f 3e 20 6d  e.xRelease" /> m
2ff30 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2ff40 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
2ff50 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
2ff60 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72  public SQLiteErr
2ff70 6f 72 43 6f 64 65 20 78 52 65 6c 65 61 73 65 28  orCode xRelease(
2ff80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ff90 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d    IntPtr pVtab,.
2ffa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ffb0 20 69 6e 74 20 69 53 61 76 65 70 6f 69 6e 74 0d   int iSavepoint.
2ffc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ffd0 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
2ffe0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2fff0 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f     // CheckDispo
30000 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  sed();....      
30010 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f            if (mo
30020 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  dule == null).. 
30030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30040 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65     return Module
30050 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c  NotAvailableTabl
30060 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a  eError(pVtab);..
30070 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30080 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e    return module.
30090 78 52 65 6c 65 61 73 65 28 70 56 74 61 62 2c 20  xRelease(pVtab, 
300a0 69 53 61 76 65 70 6f 69 6e 74 29 3b 0d 0a 20 20  iSavepoint);..  
300b0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
300c0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
300d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
300e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
300f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
30110 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
30120 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
30130 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
30140 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
30150 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
30160 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 22  ule.xRollbackTo"
30170 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
30180 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73           /// </s
30190 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
301a0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
301b0 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20  name="pVtab">.. 
301c0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
301d0 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
301e0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
301f0 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54  odule.xRollbackT
30200 6f 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  o" /> method... 
30210 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
30220 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
30230 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
30240 6e 61 6d 65 3d 22 69 53 61 76 65 70 6f 69 6e 74  name="iSavepoint
30250 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
30260 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
30270 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
30280 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c  tiveModule.xRoll
30290 62 61 63 6b 54 6f 22 20 2f 3e 20 6d 65 74 68 6f  backTo" /> metho
302a0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
302b0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
302c0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72            /// <r
302d0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
302e0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
302f0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
30300 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
30310 78 52 6f 6c 6c 62 61 63 6b 54 6f 22 20 2f 3e 20  xRollbackTo" /> 
30320 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
30330 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
30340 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
30350 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72   public SQLiteEr
30360 72 6f 72 43 6f 64 65 20 78 52 6f 6c 6c 62 61 63  rorCode xRollbac
30370 6b 54 6f 28 0d 0a 20 20 20 20 20 20 20 20 20 20  kTo(..          
30380 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
30390 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ab,..           
303a0 20 20 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f       int iSavepo
303b0 69 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  int..           
303c0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
303d0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
303e0 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44         // CheckD
303f0 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20  isposed();....  
30400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
30410 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c   (module == null
30420 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
30430 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f         return Mo
30440 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65  duleNotAvailable
30450 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62  TableError(pVtab
30460 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
30470 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64        return mod
30480 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 28  ule.xRollbackTo(
30490 70 56 74 61 62 2c 20 69 53 61 76 65 70 6f 69 6e  pVtab, iSavepoin
304a0 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t);..           
304b0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
304c0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
304d0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
304e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
304f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
30520 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65  .            #re
30530 67 69 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c 65  gion IDisposable
30540 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20   Members..      
30550 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
30560 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
30570 20 2f 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f 66   /// Disposes of
30580 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73   this object ins
30590 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20  tance...        
305a0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
305b0 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
305c0 70 75 62 6c 69 63 20 76 6f 69 64 20 44 69 73 70  public void Disp
305d0 6f 73 65 28 29 0d 0a 20 20 20 20 20 20 20 20 20  ose()..         
305e0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
305f0 20 20 20 20 20 20 44 69 73 70 6f 73 65 28 74 72        Dispose(tr
30600 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ue);..          
30610 20 20 20 20 20 20 47 43 2e 53 75 70 70 72 65 73        GC.Suppres
30620 73 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b  sFinalize(this);
30630 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
30640 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e  .            #en
30650 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
30660 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
30670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
306a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
306b0 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
306c0 6e 20 49 44 69 73 70 6f 73 61 62 6c 65 20 22 50  n IDisposable "P
306d0 61 74 74 65 72 6e 22 20 4d 65 6d 62 65 72 73 0d  attern" Members.
306e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
306f0 76 61 74 65 20 62 6f 6f 6c 20 64 69 73 70 6f 73  vate bool dispos
30700 65 64 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ed;..           
30710 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
30720 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
30730 54 68 72 6f 77 73 20 61 6e 20 3c 73 65 65 20 63  Throws an <see c
30740 72 65 66 3d 22 4f 62 6a 65 63 74 44 69 73 70 6f  ref="ObjectDispo
30750 73 65 64 45 78 63 65 70 74 69 6f 6e 22 20 2f 3e  sedException" />
30760 20 69 66 20 74 68 69 73 20 6f 62 6a 65 63 74 0d   if this object.
30770 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
30780 20 69 6e 73 74 61 6e 63 65 20 68 61 73 20 62 65   instance has be
30790 65 6e 20 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20  en disposed...  
307a0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
307b0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
307c0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 76 6f        private vo
307d0 69 64 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64  id CheckDisposed
307e0 28 29 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  () /* throw */..
307f0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
30800 69 66 20 54 48 52 4f 57 5f 4f 4e 5f 44 49 53 50  if THROW_ON_DISP
30810 4f 53 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20  OSED..          
30820 20 20 20 20 20 20 69 66 20 28 64 69 73 70 6f 73        if (dispos
30830 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ed)..           
30840 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
30850 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
30860 77 20 6e 65 77 20 4f 62 6a 65 63 74 44 69 73 70  w new ObjectDisp
30870 6f 73 65 64 45 78 63 65 70 74 69 6f 6e 28 0d 0a  osedException(..
30880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30890 20 20 20 20 20 20 20 20 74 79 70 65 6f 66 28 53          typeof(S
308a0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
308b0 65 29 2e 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20  e).Name);..     
308c0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
308d0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
308e0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
308f0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
30900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30930 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
30940 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
30950 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
30960 20 2f 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f 66   /// Disposes of
30970 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73   this object ins
30980 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20  tance...        
30990 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
309a0 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
309b0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
309c0 22 64 69 73 70 6f 73 69 6e 67 22 3e 0d 0a 20 20  "disposing">..  
309d0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f            /// No
309e0 6e 2d 7a 65 72 6f 20 69 66 20 74 68 69 73 20 6d  n-zero if this m
309f0 65 74 68 6f 64 20 69 73 20 62 65 69 6e 67 20 63  ethod is being c
30a00 61 6c 6c 65 64 20 66 72 6f 6d 20 74 68 65 0d 0a  alled from the..
30a10 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
30a20 3c 73 65 65 20 63 72 65 66 3d 22 44 69 73 70 6f  <see cref="Dispo
30a30 73 65 28 29 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  se()" /> method.
30a40 20 20 5a 65 72 6f 20 69 66 20 74 68 69 73 20 6d    Zero if this m
30a50 65 74 68 6f 64 20 69 73 20 62 65 69 6e 67 0d 0a  ethod is being..
30a60 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
30a70 63 61 6c 6c 65 64 20 66 72 6f 6d 20 74 68 65 20  called from the 
30a80 66 69 6e 61 6c 69 7a 65 72 2e 0d 0a 20 20 20 20  finalizer...    
30a90 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
30aa0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
30ab0 20 20 70 72 69 76 61 74 65 20 2f 2a 20 70 72 6f    private /* pro
30ac0 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 2a  tected virtual *
30ad0 2f 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 62  / void Dispose(b
30ae0 6f 6f 6c 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a  ool disposing)..
30af0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
30b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
30b10 66 20 28 21 64 69 73 70 6f 73 65 64 29 0d 0a 20  f (!disposed).. 
30b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
30b30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30b40 20 20 20 20 20 20 2f 2f 69 66 20 28 64 69 73 70        //if (disp
30b50 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20  osing)..        
30b60 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 7b 0d              //{.
30b70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30b80 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f       //    /////
30b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
30bb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30bc0 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 20 64 69       //    // di
30bd0 73 70 6f 73 65 20 6d 61 6e 61 67 65 64 20 72 65  spose managed re
30be0 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d  sources here....
30bf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30c00 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f       //    /////
30c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
30c30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30c40 20 20 20 20 20 2f 2f 7d 0d 0a 0d 0a 20 20 20 20       //}....    
30c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30c80 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20  //////..        
30c90 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 72              // r
30ca0 65 6c 65 61 73 65 20 75 6e 6d 61 6e 61 67 65 64  elease unmanaged
30cb0 20 72 65 73 6f 75 72 63 65 73 20 68 65 72 65 2e   resources here.
30cc0 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
30cd0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
30ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
30d00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30d10 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
30d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
30d30 20 4e 4f 54 45 3a 20 54 68 65 20 6d 6f 64 75 6c   NOTE: The modul
30d40 65 20 69 73 20 6e 6f 74 20 6f 77 6e 65 64 20 62  e is not owned b
30d50 79 20 75 73 3b 20 74 68 65 72 65 66 6f 72 65 2c  y us; therefore,
30d60 20 64 6f 20 6e 6f 74 0d 0a 20 20 20 20 20 20 20   do not..       
30d70 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
30d80 20 20 20 20 20 20 64 69 73 70 6f 73 65 20 69 74        dispose it
30d90 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
30da0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
30db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
30dc0 66 20 28 6d 6f 64 75 6c 65 20 21 3d 20 6e 75 6c  f (module != nul
30dd0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
30de0 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75              modu
30df0 6c 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  le = null;....  
30e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30e10 20 20 64 69 73 70 6f 73 65 64 20 3d 20 74 72 75    disposed = tru
30e20 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
30e30 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
30e40 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
30e50 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
30e60 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
30e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
30eb0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ...            #
30ec0 72 65 67 69 6f 6e 20 44 65 73 74 72 75 63 74 6f  region Destructo
30ed0 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  r..            /
30ee0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
30ef0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 46 69            /// Fi
30f00 6e 61 6c 69 7a 65 73 20 74 68 69 73 20 6f 62 6a  nalizes this obj
30f10 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20  ect instance... 
30f20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
30f30 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
30f40 20 20 20 20 20 20 20 7e 53 51 4c 69 74 65 4e 61         ~SQLiteNa
30f50 74 69 76 65 4d 6f 64 75 6c 65 28 29 0d 0a 20 20  tiveModule()..  
30f60 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
30f70 20 20 20 20 20 20 20 20 20 20 20 20 20 44 69 73               Dis
30f80 70 6f 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20  pose(false);..  
30f90 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
30fa0 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67           #endreg
30fb0 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ion..        }..
30fc0 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
30fd0 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
30fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31020 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
31030 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65   #region Private
31040 20 43 6f 6e 73 74 61 6e 74 73 0d 0a 20 20 20 20   Constants..    
31050 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
31060 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
31070 68 65 20 64 65 66 61 75 6c 74 20 76 65 72 73 69  he default versi
31080 6f 6e 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65  on of the native
31090 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20   sqlite3_module 
310a0 73 74 72 75 63 74 75 72 65 20 69 6e 20 75 73 65  structure in use
310b0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
310c0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
310d0 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
310e0 63 20 72 65 61 64 6f 6e 6c 79 20 69 6e 74 20 44  c readonly int D
310f0 65 66 61 75 6c 74 4d 6f 64 75 6c 65 56 65 72 73  efaultModuleVers
31100 69 6f 6e 20 3d 20 32 3b 0d 0a 20 20 20 20 20 20  ion = 2;..      
31110 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
31120 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
31130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
31170 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
31180 6f 6e 20 50 72 69 76 61 74 65 20 44 61 74 61 0d  on Private Data.
31190 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
311a0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
311b0 2f 2f 2f 20 54 68 69 73 20 66 69 65 6c 64 20 69  /// This field i
311c0 73 20 75 73 65 64 20 74 6f 20 73 74 6f 72 65 20  s used to store 
311d0 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74  the native sqlit
311e0 65 33 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63 74  e3_module struct
311f0 75 72 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ure..        ///
31200 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
31210 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73   this object ins
31220 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20  tance...        
31230 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
31240 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
31250 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
31260 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75  ods.sqlite3_modu
31270 6c 65 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 3b  le nativeModule;
31280 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
31290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
312a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
312b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
312c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
312d0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
312e0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
312f0 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 66        /// This f
31300 69 65 6c 64 20 69 73 20 75 73 65 64 20 74 6f 20  ield is used to 
31310 73 74 6f 72 65 20 61 20 70 6f 69 6e 74 65 72 20  store a pointer 
31320 74 6f 20 74 68 65 20 6e 61 74 69 76 65 20 73 71  to the native sq
31330 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20  lite3_module..  
31340 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74        /// struct
31350 75 72 65 20 72 65 74 75 72 6e 65 64 20 62 79 20  ure returned by 
31360 74 68 65 20 73 71 6c 69 74 65 33 5f 63 72 65 61  the sqlite3_crea
31370 74 65 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f  te_disposable_mo
31380 64 75 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  dule..        //
31390 2f 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20  / function...   
313a0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
313b0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
313c0 76 61 74 65 20 49 6e 74 50 74 72 20 64 69 73 70  vate IntPtr disp
313d0 6f 73 61 62 6c 65 4d 6f 64 75 6c 65 3b 0d 0a 0d  osableModule;...
313e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
313f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31430 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d  ....#if PLATFORM
31440 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
31450 4b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  K..        /// <
31460 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
31470 20 20 2f 2f 2f 20 54 68 69 73 20 66 69 65 6c 64    /// This field
31480 20 69 73 20 75 73 65 64 20 74 6f 20 68 6f 6c 64   is used to hold
31490 20 74 68 65 20 62 6c 6f 63 6b 20 6f 66 20 6e 61   the block of na
314a0 74 69 76 65 20 6d 65 6d 6f 72 79 20 74 68 61 74  tive memory that
314b0 20 63 6f 6e 74 61 69 6e 73 0d 0a 20 20 20 20 20   contains..     
314c0 20 20 20 2f 2f 2f 20 74 68 65 20 6e 61 74 69 76     /// the nativ
314d0 65 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65  e sqlite3_module
314e0 20 73 74 72 75 63 74 75 72 65 20 61 73 73 6f 63   structure assoc
314f0 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20  iated with this 
31500 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20  object..        
31510 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 20 77 68 65  /// instance whe
31520 6e 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 74 68 65  n running on the
31530 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72   .NET Compact Fr
31540 61 6d 65 77 6f 72 6b 2e 0d 0a 20 20 20 20 20 20  amework...      
31550 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
31560 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
31570 65 20 49 6e 74 50 74 72 20 70 4e 61 74 69 76 65  e IntPtr pNative
31580 4d 6f 64 75 6c 65 3b 0d 0a 23 65 6e 64 69 66 0d  Module;..#endif.
31590 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
315a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
315b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
315c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
315d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
315e0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
315f0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
31600 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 66 69       /// This fi
31610 65 6c 64 20 69 73 20 75 73 65 64 20 74 6f 20 73  eld is used to s
31620 74 6f 72 65 20 74 68 65 20 76 69 72 74 75 61 6c  tore the virtual
31630 20 74 61 62 6c 65 20 69 6e 73 74 61 6e 63 65 73   table instances
31640 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20   associated..   
31650 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68       /// with th
31660 69 73 20 6d 6f 64 75 6c 65 2e 20 20 54 68 65 20  is module.  The 
31670 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
31680 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74  o the sqlite3_vt
31690 61 62 20 64 65 72 69 76 65 64 0d 0a 20 20 20 20  ab derived..    
316a0 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72      /// structur
316b0 65 20 69 73 20 75 73 65 64 20 74 6f 20 6b 65 79  e is used to key
316c0 20 69 6e 74 6f 20 74 68 69 73 20 63 6f 6c 6c 65   into this colle
316d0 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ction...        
316e0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
316f0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
31700 44 69 63 74 69 6f 6e 61 72 79 3c 49 6e 74 50 74  Dictionary<IntPt
31710 72 2c 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c  r, SQLiteVirtual
31720 54 61 62 6c 65 3e 20 74 61 62 6c 65 73 3b 0d 0a  Table> tables;..
31730 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
31740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31780 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
31790 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
317a0 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 66 69 65      /// This fie
317b0 6c 64 20 69 73 20 75 73 65 64 20 74 6f 20 73 74  ld is used to st
317c0 6f 72 65 20 74 68 65 20 76 69 72 74 75 61 6c 20  ore the virtual 
317d0 74 61 62 6c 65 20 63 75 72 73 6f 72 20 69 6e 73  table cursor ins
317e0 74 61 6e 63 65 73 0d 0a 20 20 20 20 20 20 20 20  tances..        
317f0 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77  /// associated w
31800 69 74 68 20 74 68 69 73 20 6d 6f 64 75 6c 65 2e  ith this module.
31810 20 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69    The native poi
31820 6e 74 65 72 20 74 6f 20 74 68 65 0d 0a 20 20 20  nter to the..   
31830 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33       /// sqlite3
31840 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72  _vtab_cursor der
31850 69 76 65 64 20 73 74 72 75 63 74 75 72 65 20 69  ived structure i
31860 73 20 75 73 65 64 20 74 6f 20 6b 65 79 20 69 6e  s used to key in
31870 74 6f 20 74 68 69 73 0d 0a 20 20 20 20 20 20 20  to this..       
31880 20 2f 2f 2f 20 63 6f 6c 6c 65 63 74 69 6f 6e 2e   /// collection.
31890 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
318a0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
318b0 20 20 70 72 69 76 61 74 65 20 44 69 63 74 69 6f    private Dictio
318c0 6e 61 72 79 3c 49 6e 74 50 74 72 2c 20 53 51 4c  nary<IntPtr, SQL
318d0 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43  iteVirtualTableC
318e0 75 72 73 6f 72 3e 20 63 75 72 73 6f 72 73 3b 0d  ursor> cursors;.
318f0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
31900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31940 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
31950 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
31960 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 66 69       /// This fi
31970 65 6c 64 20 69 73 20 75 73 65 64 20 74 6f 20 73  eld is used to s
31980 74 6f 72 65 20 74 68 65 20 76 69 72 74 75 61 6c  tore the virtual
31990 20 74 61 62 6c 65 20 66 75 6e 63 74 69 6f 6e 20   table function 
319a0 69 6e 73 74 61 6e 63 65 73 0d 0a 20 20 20 20 20  instances..     
319b0 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65     /// associate
319c0 64 20 77 69 74 68 20 74 68 69 73 20 6d 6f 64 75  d with this modu
319d0 6c 65 2e 20 20 54 68 65 20 63 61 73 65 2d 69 6e  le.  The case-in
319e0 73 65 6e 73 69 74 69 76 65 20 66 75 6e 63 74 69  sensitive functi
319f0 6f 6e 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20  on name..       
31a00 20 2f 2f 2f 20 61 6e 64 20 74 68 65 20 6e 75 6d   /// and the num
31a10 62 65 72 20 6f 66 20 61 72 67 75 6d 65 6e 74 73  ber of arguments
31a20 20 28 77 69 74 68 20 2d 31 20 6d 65 61 6e 69 6e   (with -1 meanin
31a30 67 20 22 61 6e 79 22 29 20 61 72 65 20 75 73 65  g "any") are use
31a40 64 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f  d to..        //
31a50 2f 20 63 6f 6e 73 74 72 75 63 74 20 74 68 65 20  / construct the 
31a60 73 74 72 69 6e 67 20 74 68 61 74 20 69 73 20 75  string that is u
31a70 73 65 64 20 74 6f 20 6b 65 79 20 69 6e 74 6f 20  sed to key into 
31a80 74 68 69 73 20 63 6f 6c 6c 65 63 74 69 6f 6e 2e  this collection.
31a90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
31aa0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
31ab0 20 20 70 72 69 76 61 74 65 20 44 69 63 74 69 6f    private Dictio
31ac0 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 53 51 4c  nary<string, SQL
31ad0 69 74 65 46 75 6e 63 74 69 6f 6e 3e 20 66 75 6e  iteFunction> fun
31ae0 63 74 69 6f 6e 73 3b 0d 0a 20 20 20 20 20 20 20  ctions;..       
31af0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
31b00 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
31b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
31b50 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
31b60 6e 20 50 75 62 6c 69 63 20 43 6f 6e 73 74 72 75  n Public Constru
31b70 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 2f  ctors..        /
31b80 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
31b90 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72        /// Constr
31ba0 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63 65  ucts an instance
31bb0 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73 2e 0d   of this class..
31bc0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
31bd0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
31be0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
31bf0 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20  ="name">..      
31c00 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f    /// The name o
31c10 66 20 74 68 65 20 6d 6f 64 75 6c 65 2e 20 20 54  f the module.  T
31c20 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 63 61  his parameter ca
31c30 6e 6e 6f 74 20 62 65 20 6e 75 6c 6c 2e 0d 0a 20  nnot be null... 
31c40 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
31c50 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  am>..        pub
31c60 6c 69 63 20 53 51 4c 69 74 65 4d 6f 64 75 6c 65  lic SQLiteModule
31c70 28 73 74 72 69 6e 67 20 6e 61 6d 65 29 0d 0a 20  (string name).. 
31c80 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
31c90 20 20 20 20 20 20 69 66 20 28 6e 61 6d 65 20 3d        if (name =
31ca0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
31cb0 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e           throw n
31cc0 65 77 20 41 72 67 75 6d 65 6e 74 4e 75 6c 6c 45  ew ArgumentNullE
31cd0 78 63 65 70 74 69 6f 6e 28 22 6e 61 6d 65 22 29  xception("name")
31ce0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
31cf0 20 74 68 69 73 2e 6e 61 6d 65 20 3d 20 6e 61 6d   this.name = nam
31d00 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
31d10 74 68 69 73 2e 74 61 62 6c 65 73 20 3d 20 6e 65  this.tables = ne
31d20 77 20 44 69 63 74 69 6f 6e 61 72 79 3c 49 6e 74  w Dictionary<Int
31d30 50 74 72 2c 20 53 51 4c 69 74 65 56 69 72 74 75  Ptr, SQLiteVirtu
31d40 61 6c 54 61 62 6c 65 3e 28 29 3b 0d 0a 20 20 20  alTable>();..   
31d50 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 75           this.cu
31d60 72 73 6f 72 73 20 3d 20 6e 65 77 20 44 69 63 74  rsors = new Dict
31d70 69 6f 6e 61 72 79 3c 49 6e 74 50 74 72 2c 20 53  ionary<IntPtr, S
31d80 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
31d90 65 43 75 72 73 6f 72 3e 28 29 3b 0d 0a 20 20 20  eCursor>();..   
31da0 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 66 75           this.fu
31db0 6e 63 74 69 6f 6e 73 20 3d 20 6e 65 77 20 44 69  nctions = new Di
31dc0 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c  ctionary<string,
31dd0 20 53 51 4c 69 74 65 46 75 6e 63 74 69 6f 6e 3e   SQLiteFunction>
31de0 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ();..        }..
31df0 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
31e00 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
31e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31e50 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
31e60 20 23 72 65 67 69 6f 6e 20 49 6e 74 65 72 6e 61   #region Interna
31e70 6c 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20  l Methods..     
31e80 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
31e90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 61  ..        /// Ca
31ea0 6c 6c 73 20 74 68 65 20 6e 61 74 69 76 65 20 53  lls the native S
31eb0 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
31ec0 72 79 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 63  ry in order to c
31ed0 72 65 61 74 65 20 61 20 6e 65 77 0d 0a 20 20 20  reate a new..   
31ee0 20 20 20 20 20 2f 2f 2f 20 64 69 73 70 6f 73 61       /// disposa
31ef0 62 6c 65 20 6d 6f 64 75 6c 65 20 63 6f 6e 74 61  ble module conta
31f00 69 6e 69 6e 67 20 74 68 65 20 69 6d 70 6c 65 6d  ining the implem
31f10 65 6e 74 61 74 69 6f 6e 20 6f 66 20 61 20 76 69  entation of a vi
31f20 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20  rtual table...  
31f30 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
31f40 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
31f50 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
31f60 44 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  Db">..        //
31f70 2f 20 54 68 65 20 6e 61 74 69 76 65 20 64 61 74  / The native dat
31f80 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
31f90 20 70 6f 69 6e 74 65 72 20 74 6f 20 75 73 65 2e   pointer to use.
31fa0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
31fb0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
31fc0 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
31fd0 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a         /// Non-z
31fe0 65 72 6f 20 75 70 6f 6e 20 73 75 63 63 65 73 73  ero upon success
31ff0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
32000 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
32010 20 20 20 69 6e 74 65 72 6e 61 6c 20 62 6f 6f 6c     internal bool
32020 20 43 72 65 61 74 65 44 69 73 70 6f 73 61 62 6c   CreateDisposabl
32030 65 4d 6f 64 75 6c 65 28 0d 0a 20 20 20 20 20 20  eModule(..      
32040 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 44 62        IntPtr pDb
32050 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
32060 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
32070 20 20 20 20 20 20 20 20 69 66 20 28 64 69 73 70          if (disp
32080 6f 73 61 62 6c 65 4d 6f 64 75 6c 65 20 21 3d 20  osableModule != 
32090 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
320a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
320b0 74 75 72 6e 20 74 72 75 65 3b 0d 0a 0d 0a 20 20  turn true;....  
320c0 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
320d0 20 70 4e 61 6d 65 20 3d 20 49 6e 74 50 74 72 2e   pName = IntPtr.
320e0 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Zero;....       
320f0 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
32100 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
32110 20 20 20 20 20 20 20 20 20 70 4e 61 6d 65 20 3d           pName =
32120 20 53 51 4c 69 74 65 53 74 72 69 6e 67 2e 55 74   SQLiteString.Ut
32130 66 38 49 6e 74 50 74 72 46 72 6f 6d 53 74 72 69  f8IntPtrFromStri
32140 6e 67 28 6e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20  ng(name);....   
32150 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73               Uns
32160 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
32170 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20  .sqlite3_module 
32180 6e 61 74 69 76 65 4d 6f 64 75 6c 65 20 3d 0d 0a  nativeModule =..
32190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
321a0 20 20 20 20 41 6c 6c 6f 63 61 74 65 4e 61 74 69      AllocateNati
321b0 76 65 4d 6f 64 75 6c 65 28 29 3b 0d 0a 0d 0a 23  veModule();....#
321c0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
321d0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
321e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
321f0 69 73 70 6f 73 61 62 6c 65 4d 6f 64 75 6c 65 20  isposableModule 
32200 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  =..             
32210 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74         UnsafeNat
32220 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
32230 65 33 5f 63 72 65 61 74 65 5f 64 69 73 70 6f 73  e3_create_dispos
32240 61 62 6c 65 5f 6d 6f 64 75 6c 65 28 0d 0a 20 20  able_module(..  
32250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32260 20 20 20 20 20 20 70 44 62 2c 20 70 4e 61 6d 65        pDb, pName
32270 2c 20 72 65 66 20 6e 61 74 69 76 65 4d 6f 64 75  , ref nativeModu
32280 6c 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2c  le, IntPtr.Zero,
32290 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20   null);....     
322a0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
322b0 6e 20 28 64 69 73 70 6f 73 61 62 6c 65 4d 6f 64  n (disposableMod
322c0 75 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  ule != IntPtr.Ze
322d0 72 6f 29 3b 0d 0a 23 65 6c 69 66 20 21 53 51 4c  ro);..#elif !SQL
322e0 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20  ITE_STANDARD..  
322f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 69                di
32300 73 70 6f 73 61 62 6c 65 4d 6f 64 75 6c 65 20 3d  sposableModule =
32310 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
32320 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69        UnsafeNati
32330 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
32340 33 5f 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61  3_create_disposa
32350 62 6c 65 5f 6d 6f 64 75 6c 65 5f 69 6e 74 65 72  ble_module_inter
32360 6f 70 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  op(..           
32370 20 20 20 20 20 20 20 20 20 20 20 20 70 44 62 2c              pDb,
32380 20 70 4e 61 6d 65 2c 20 41 6c 6c 6f 63 61 74 65   pName, Allocate
32390 4e 61 74 69 76 65 4d 6f 64 75 6c 65 49 6e 74 65  NativeModuleInte
323a0 72 6f 70 28 29 2c 0d 0a 20 20 20 20 20 20 20 20  rop(),..        
323b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
323c0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 69 56 65 72  ativeModule.iVer
323d0 73 69 6f 6e 2c 20 6e 61 74 69 76 65 4d 6f 64 75  sion, nativeModu
323e0 6c 65 2e 78 43 72 65 61 74 65 2c 0d 0a 20 20 20  le.xCreate,..   
323f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32400 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
32410 2e 78 43 6f 6e 6e 65 63 74 2c 20 6e 61 74 69 76  .xConnect, nativ
32420 65 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64  eModule.xBestInd
32430 65 78 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ex,..           
32440 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
32450 76 65 4d 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e  veModule.xDiscon
32460 6e 65 63 74 2c 20 6e 61 74 69 76 65 4d 6f 64 75  nect, nativeModu
32470 6c 65 2e 78 44 65 73 74 72 6f 79 2c 0d 0a 20 20  le.xDestroy,..  
32480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32490 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
324a0 65 2e 78 4f 70 65 6e 2c 20 6e 61 74 69 76 65 4d  e.xOpen, nativeM
324b0 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 2c 0d 0a 20  odule.xClose,.. 
324c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
324d0 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
324e0 6c 65 2e 78 46 69 6c 74 65 72 2c 20 6e 61 74 69  le.xFilter, nati
324f0 76 65 4d 6f 64 75 6c 65 2e 78 4e 65 78 74 2c 0d  veModule.xNext,.
32500 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32510 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
32520 64 75 6c 65 2e 78 45 6f 66 2c 20 6e 61 74 69 76  dule.xEof, nativ
32530 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 2c  eModule.xColumn,
32540 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
32550 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
32560 6f 64 75 6c 65 2e 78 52 6f 77 49 64 2c 20 6e 61  odule.xRowId, na
32570 74 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61  tiveModule.xUpda
32580 74 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  te,..           
32590 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
325a0 76 65 4d 6f 64 75 6c 65 2e 78 42 65 67 69 6e 2c  veModule.xBegin,
325b0 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53   nativeModule.xS
325c0 79 6e 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ync,..          
325d0 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
325e0 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69  iveModule.xCommi
325f0 74 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  t, nativeModule.
32600 78 52 6f 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20  xRollback,..    
32610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32620 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
32630 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 2c 20 6e  xFindFunction, n
32640 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6e  ativeModule.xRen
32650 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ame,..          
32660 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
32670 69 76 65 4d 6f 64 75 6c 65 2e 78 53 61 76 65 70  iveModule.xSavep
32680 6f 69 6e 74 2c 20 6e 61 74 69 76 65 4d 6f 64 75  oint, nativeModu
32690 6c 65 2e 78 52 65 6c 65 61 73 65 2c 0d 0a 20 20  le.xRelease,..  
326a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
326b0 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
326c0 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 2c 20 49  e.xRollbackTo, I
326d0 6e 74 50 74 72 2e 5a 65 72 6f 2c 20 6e 75 6c 6c  ntPtr.Zero, null
326e0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
326f0 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 64 69        return (di
32700 73 70 6f 73 61 62 6c 65 4d 6f 64 75 6c 65 20 21  sposableModule !
32710 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d  = IntPtr.Zero);.
32720 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
32730 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65          throw ne
32740 77 20 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74 65 64  w NotImplemented
32750 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 23 65  Exception();..#e
32760 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
32770 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
32780 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20   finally..      
32790 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
327a0 20 20 20 20 20 20 20 20 20 69 66 20 28 70 4e 61           if (pNa
327b0 6d 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  me != IntPtr.Zer
327c0 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
327d0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
327e0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
327f0 65 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70 4e 61  eMemory.Free(pNa
32800 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  me);..          
32810 20 20 20 20 20 20 20 20 20 20 70 4e 61 6d 65 20            pName 
32820 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  = IntPtr.Zero;..
32830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32840 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
32850 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
32860 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
32870 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
32880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
328a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
328b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
328c0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
328d0 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 4d 65  egion Private Me
328e0 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f  thods..        /
328f0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
32900 20 20 20 20 20 20 2f 2f 2f 20 43 72 65 61 74 65        /// Create
32910 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68  s and returns th
32920 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 5f  e native sqlite_
32930 6d 6f 64 75 6c 65 20 73 74 72 75 63 74 75 72 65  module structure
32940 20 75 73 69 6e 67 20 74 68 65 0d 0a 20 20 20 20   using the..    
32950 20 20 20 20 2f 2f 2f 20 63 6f 6e 66 69 67 75 72      /// configur
32960 65 64 20 28 6f 72 20 64 65 66 61 75 6c 74 29 20  ed (or default) 
32970 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
32980 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20  teNativeModule" 
32990 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  />..        /// 
329a0 69 6e 74 65 72 66 61 63 65 20 69 6d 70 6c 65 6d  interface implem
329b0 65 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  entation...     
329c0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
329d0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
329e0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
329f0 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
32a00 20 73 71 6c 69 74 65 5f 6d 6f 64 75 6c 65 20 73   sqlite_module s
32a10 74 72 75 63 74 75 72 65 20 75 73 69 6e 67 20 74  tructure using t
32a20 68 65 20 63 6f 6e 66 69 67 75 72 65 64 20 28 6f  he configured (o
32a30 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64  r..        /// d
32a40 65 66 61 75 6c 74 29 20 3c 73 65 65 20 63 72 65  efault) <see cre
32a50 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
32a60 4d 6f 64 75 6c 65 22 20 2f 3e 20 69 6e 74 65 72  Module" /> inter
32a70 66 61 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  face..        //
32a80 2f 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  / implementation
32a90 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
32aa0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
32ab0 20 20 20 70 72 69 76 61 74 65 20 55 6e 73 61 66     private Unsaf
32ac0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
32ad0 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 41 6c  qlite3_module Al
32ae0 6c 6f 63 61 74 65 4e 61 74 69 76 65 4d 6f 64 75  locateNativeModu
32af0 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  le()..        {.
32b00 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
32b10 75 72 6e 20 41 6c 6c 6f 63 61 74 65 4e 61 74 69  urn AllocateNati
32b20 76 65 4d 6f 64 75 6c 65 28 47 65 74 4e 61 74 69  veModule(GetNati
32b30 76 65 4d 6f 64 75 6c 65 49 6d 70 6c 28 29 29 3b  veModuleImpl());
32b40 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
32b50 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
32b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
32ba0 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
32bb0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
32bc0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
32bd0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
32be0 2f 2f 2f 20 43 72 65 61 74 65 73 20 61 6e 64 20  /// Creates and 
32bf0 72 65 74 75 72 6e 73 20 61 20 6d 65 6d 6f 72 79  returns a memory
32c00 20 62 6c 6f 63 6b 20 6f 62 74 61 69 6e 65 64 20   block obtained 
32c10 66 72 6f 6d 20 74 68 65 20 53 51 4c 69 74 65 20  from the SQLite 
32c20 63 6f 72 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  core..        //
32c30 2f 20 6c 69 62 72 61 72 79 20 75 73 65 64 20 74  / library used t
32c40 6f 20 73 74 6f 72 65 20 74 68 65 20 6e 61 74 69  o store the nati
32c50 76 65 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c  ve sqlite3_modul
32c60 65 20 73 74 72 75 63 74 75 72 65 20 66 6f 72 20  e structure for 
32c70 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  this..        //
32c80 2f 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  / object instanc
32c90 65 20 77 68 65 6e 20 72 75 6e 6e 69 6e 67 20 6f  e when running o
32ca0 6e 20 74 68 65 20 2e 4e 45 54 20 43 6f 6d 70 61  n the .NET Compa
32cb0 63 74 20 46 72 61 6d 65 77 6f 72 6b 2e 0d 0a 20  ct Framework... 
32cc0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
32cd0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
32ce0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
32cf0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
32d00 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
32d10 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74  the native sqlit
32d20 65 33 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63 74  e3_module struct
32d30 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
32d40 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
32d50 20 20 20 20 20 20 70 72 69 76 61 74 65 20 49 6e        private In
32d60 74 50 74 72 20 41 6c 6c 6f 63 61 74 65 4e 61 74  tPtr AllocateNat
32d70 69 76 65 4d 6f 64 75 6c 65 49 6e 74 65 72 6f 70  iveModuleInterop
32d80 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
32d90 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
32da0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20 3d 3d 20  NativeModule == 
32db0 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
32dc0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
32dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
32de0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32df0 20 2f 2f 20 48 41 43 4b 3a 20 4e 6f 20 65 61 73   // HACK: No eas
32e00 79 20 77 61 79 20 74 6f 20 64 65 74 65 72 6d 69  y way to determi
32e10 6e 65 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74  ne the size of t
32e20 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20  he native..     
32e30 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
32e40 20 20 20 20 73 71 6c 69 74 65 5f 6d 6f 64 75 6c      sqlite_modul
32e50 65 20 73 74 72 75 63 74 75 72 65 20 77 68 65 6e  e structure when
32e60 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 74 68 65 20   running on the 
32e70 2e 4e 45 54 0d 0a 20 20 20 20 20 20 20 20 20 20  .NET..          
32e80 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 43        //       C
32e90 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b  ompact Framework
32ea0 3b 20 74 68 65 72 65 66 6f 72 65 2c 20 6a 75 73  ; therefore, jus
32eb0 74 20 62 61 73 65 20 74 68 65 20 73 69 7a 65 0d  t base the size.
32ec0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32ed0 20 2f 2f 20 20 20 20 20 20 20 6f 6e 20 77 68 61   //       on wha
32ee0 74 20 77 65 20 6b 6e 6f 77 3a 0d 0a 20 20 20 20  t we know:..    
32ef0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
32f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32f10 2f 2f 20 20 20 20 20 20 20 54 68 65 72 65 20 69  //       There i
32f20 73 20 6f 6e 65 20 69 6e 74 65 67 65 72 20 6d 65  s one integer me
32f30 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 20  mber...         
32f40 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
32f50 54 68 65 72 65 20 61 72 65 20 32 32 20 66 75 6e  There are 22 fun
32f60 63 74 69 6f 6e 20 70 6f 69 6e 74 65 72 20 6d 65  ction pointer me
32f70 6d 62 65 72 73 2e 0d 0a 20 20 20 20 20 20 20 20  mbers...        
32f80 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
32f90 20 20 20 20 20 20 20 20 20 20 20 20 70 4e 61 74              pNat
32fa0 69 76 65 4d 6f 64 75 6c 65 20 3d 20 53 51 4c 69  iveModule = SQLi
32fb0 74 65 4d 65 6d 6f 72 79 2e 41 6c 6c 6f 63 61 74  teMemory.Allocat
32fc0 65 28 32 33 20 2a 20 49 6e 74 50 74 72 2e 53 69  e(23 * IntPtr.Si
32fd0 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ze);....        
32fe0 20 20 20 20 20 20 20 20 69 66 20 28 70 4e 61 74          if (pNat
32ff0 69 76 65 4d 6f 64 75 6c 65 20 3d 3d 20 49 6e 74  iveModule == Int
33000 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
33010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
33020 68 72 6f 77 20 6e 65 77 20 4f 75 74 4f 66 4d 65  hrow new OutOfMe
33030 6d 6f 72 79 45 78 63 65 70 74 69 6f 6e 28 22 73  moryException("s
33040 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 22 29 3b  qlite3_module");
33050 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
33060 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
33070 65 74 75 72 6e 20 70 4e 61 74 69 76 65 4d 6f 64  eturn pNativeMod
33080 75 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ule;..        }.
33090 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
330a0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
330b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
330c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
330d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
330e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
330f0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
33100 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
33110 20 43 72 65 61 74 65 73 20 61 6e 64 20 72 65 74   Creates and ret
33120 75 72 6e 73 20 74 68 65 20 6e 61 74 69 76 65 20  urns the native 
33130 73 71 6c 69 74 65 5f 6d 6f 64 75 6c 65 20 73 74  sqlite_module st
33140 72 75 63 74 75 72 65 20 75 73 69 6e 67 20 74 68  ructure using th
33150 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  e..        /// s
33160 70 65 63 69 66 69 65 64 20 3c 73 65 65 20 63 72  pecified <see cr
33170 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
33180 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 69 6e 74 65  eModule" /> inte
33190 72 66 61 63 65 0d 0a 20 20 20 20 20 20 20 20 2f  rface..        /
331a0 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  // implementatio
331b0 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  n...        /// 
331c0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
331d0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
331e0 61 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20  ame="module">.. 
331f0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
33200 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
33210 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f  eNativeModule" /
33220 3e 20 69 6e 74 65 72 66 61 63 65 20 69 6d 70 6c  > interface impl
33230 65 6d 65 6e 74 61 74 69 6f 6e 20 74 6f 0d 0a 20  ementation to.. 
33240 20 20 20 20 20 20 20 2f 2f 2f 20 75 73 65 2e 0d         /// use..
33250 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
33260 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
33270 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
33280 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
33290 74 69 76 65 20 73 71 6c 69 74 65 5f 6d 6f 64 75  tive sqlite_modu
332a0 6c 65 20 73 74 72 75 63 74 75 72 65 20 75 73 69  le structure usi
332b0 6e 67 20 74 68 65 20 73 70 65 63 69 66 69 65 64  ng the specified
332c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
332d0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
332e0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e  NativeModule" />
332f0 20 69 6e 74 65 72 66 61 63 65 20 69 6d 70 6c 65   interface imple
33300 6d 65 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20  mentation...    
33310 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
33320 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  s>..        priv
33330 61 74 65 20 55 6e 73 61 66 65 4e 61 74 69 76 65  ate UnsafeNative
33340 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
33350 6d 6f 64 75 6c 65 20 41 6c 6c 6f 63 61 74 65 4e  module AllocateN
33360 61 74 69 76 65 4d 6f 64 75 6c 65 28 0d 0a 20 20  ativeModule(..  
33370 20 20 20 20 20 20 20 20 20 20 49 53 51 4c 69 74            ISQLit
33380 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20 6d 6f  eNativeModule mo
33390 64 75 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 20  dule..          
333a0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
333b0 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
333c0 76 65 4d 6f 64 75 6c 65 20 3d 20 6e 65 77 20 55  veModule = new U
333d0 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
333e0 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c  ds.sqlite3_modul
333f0 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  e();..          
33400 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 69    nativeModule.i
33410 56 65 72 73 69 6f 6e 20 3d 20 44 65 66 61 75 6c  Version = Defaul
33420 74 4d 6f 64 75 6c 65 56 65 72 73 69 6f 6e 3b 0d  tModuleVersion;.
33430 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
33440 66 20 28 6d 6f 64 75 6c 65 20 21 3d 20 6e 75 6c  f (module != nul
33450 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
33460 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
33470 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
33480 78 43 72 65 61 74 65 20 3d 20 6e 65 77 20 55 6e  xCreate = new Un
33490 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
334a0 73 2e 78 43 72 65 61 74 65 28 0d 0a 20 20 20 20  s.xCreate(..    
334b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d                 m
334c0 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 29 3b 0d  odule.xCreate);.
334d0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
334e0 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
334f0 78 43 6f 6e 6e 65 63 74 20 3d 20 6e 65 77 20 55  xConnect = new U
33500 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
33510 64 73 2e 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20  ds.xConnect(..  
33520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33530 20 20 6d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63    module.xConnec
33540 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  t);....         
33550 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
33560 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 20 3d  ule.xBestIndex =
33570 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
33580 65 4d 65 74 68 6f 64 73 2e 78 42 65 73 74 49 6e  eMethods.xBestIn
33590 64 65 78 28 0d 0a 20 20 20 20 20 20 20 20 20 20  dex(..          
335a0 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65            module
335b0 2e 78 42 65 73 74 49 6e 64 65 78 29 3b 0d 0a 0d  .xBestIndex);...
335c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
335d0 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44   nativeModule.xD
335e0 69 73 63 6f 6e 6e 65 63 74 20 3d 20 6e 65 77 20  isconnect = new 
335f0 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
33600 6f 64 73 2e 78 44 69 73 63 6f 6e 6e 65 63 74 28  ods.xDisconnect(
33610 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
33620 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 44 69        module.xDi
33630 73 63 6f 6e 6e 65 63 74 29 3b 0d 0a 0d 0a 20 20  sconnect);....  
33640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
33650 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 65 73 74  tiveModule.xDest
33660 72 6f 79 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  roy = new Unsafe
33670 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 44  NativeMethods.xD
33680 65 73 74 72 6f 79 28 0d 0a 20 20 20 20 20 20 20  estroy(..       
33690 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64               mod
336a0 75 6c 65 2e 78 44 65 73 74 72 6f 79 29 3b 0d 0a  ule.xDestroy);..
336b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
336c0 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
336d0 4f 70 65 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66  Open = new Unsaf
336e0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
336f0 4f 70 65 6e 28 0d 0a 20 20 20 20 20 20 20 20 20  Open(..         
33700 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c             modul
33710 65 2e 78 4f 70 65 6e 29 3b 0d 0a 0d 0a 20 20 20  e.xOpen);....   
33720 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
33730 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65  iveModule.xClose
33740 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
33750 69 76 65 4d 65 74 68 6f 64 73 2e 78 43 6c 6f 73  iveMethods.xClos
33760 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
33770 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78          module.x
33780 43 6c 6f 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  Close);....     
33790 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
337a0 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 20  eModule.xFilter 
337b0 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
337c0 76 65 4d 65 74 68 6f 64 73 2e 78 46 69 6c 74 65  veMethods.xFilte
337d0 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
337e0 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78          module.x
337f0 46 69 6c 74 65 72 29 3b 0d 0a 0d 0a 20 20 20 20  Filter);....    
33800 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
33810 76 65 4d 6f 64 75 6c 65 2e 78 4e 65 78 74 20 3d  veModule.xNext =
33820 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
33830 65 4d 65 74 68 6f 64 73 2e 78 4e 65 78 74 28 0d  eMethods.xNext(.
33840 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
33850 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 4e 65 78       module.xNex
33860 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  t);....         
33870 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
33880 75 6c 65 2e 78 45 6f 66 20 3d 20 6e 65 77 20 55  ule.xEof = new U
33890 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
338a0 64 73 2e 78 45 6f 66 28 6d 6f 64 75 6c 65 2e 78  ds.xEof(module.x
338b0 45 6f 66 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Eof);....       
338c0 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
338d0 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 20 3d 20  odule.xColumn = 
338e0 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
338f0 4d 65 74 68 6f 64 73 2e 78 43 6f 6c 75 6d 6e 28  Methods.xColumn(
33900 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
33910 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 43 6f        module.xCo
33920 6c 75 6d 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  lumn);....      
33930 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
33940 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 20 3d 20  Module.xRowId = 
33950 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
33960 4d 65 74 68 6f 64 73 2e 78 52 6f 77 49 64 28 0d  Methods.xRowId(.
33970 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
33980 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 52 6f 77       module.xRow
33990 49 64 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  Id);....        
339a0 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
339b0 64 75 6c 65 2e 78 55 70 64 61 74 65 20 3d 20 6e  dule.xUpdate = n
339c0 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
339d0 65 74 68 6f 64 73 2e 78 55 70 64 61 74 65 28 0d  ethods.xUpdate(.
339e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
339f0 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 55 70 64       module.xUpd
33a00 61 74 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ate);....       
33a10 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
33a20 6f 64 75 6c 65 2e 78 42 65 67 69 6e 20 3d 20 6e  odule.xBegin = n
33a30 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
33a40 65 74 68 6f 64 73 2e 78 42 65 67 69 6e 28 0d 0a  ethods.xBegin(..
33a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33a60 20 20 20 20 6d 6f 64 75 6c 65 2e 78 42 65 67 69      module.xBegi
33a70 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  n);....         
33a80 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
33a90 75 6c 65 2e 78 53 79 6e 63 20 3d 20 6e 65 77 20  ule.xSync = new 
33aa0 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
33ab0 6f 64 73 2e 78 53 79 6e 63 28 0d 0a 20 20 20 20  ods.xSync(..    
33ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33ad0 6d 6f 64 75 6c 65 2e 78 53 79 6e 63 29 3b 0d 0a  module.xSync);..
33ae0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
33af0 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
33b00 43 6f 6d 6d 69 74 20 3d 20 6e 65 77 20 55 6e 73  Commit = new Uns
33b10 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
33b20 2e 78 43 6f 6d 6d 69 74 28 0d 0a 20 20 20 20 20  .xCommit(..     
33b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d                 m
33b40 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 29 3b 0d  odule.xCommit);.
33b50 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
33b60 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
33b70 78 52 6f 6c 6c 62 61 63 6b 20 3d 20 6e 65 77 20  xRollback = new 
33b80 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
33b90 6f 64 73 2e 78 52 6f 6c 6c 62 61 63 6b 28 0d 0a  ods.xRollback(..
33ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33bb0 20 20 20 20 6d 6f 64 75 6c 65 2e 78 52 6f 6c 6c      module.xRoll
33bc0 62 61 63 6b 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  back);....      
33bd0 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
33be0 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63  Module.xFindFunc
33bf0 74 69 6f 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66  tion = new Unsaf
33c00 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
33c10 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28 0d 0a 20  FindFunction(.. 
33c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33c30 20 20 20 6d 6f 64 75 6c 65 2e 78 46 69 6e 64 46     module.xFindF
33c40 75 6e 63 74 69 6f 6e 29 3b 0d 0a 0d 0a 20 20 20  unction);....   
33c50 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
33c60 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d  iveModule.xRenam
33c70 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  e = new UnsafeNa
33c80 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 65 6e  tiveMethods.xRen
33c90 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ame(..          
33ca0 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65            module
33cb0 2e 78 52 65 6e 61 6d 65 29 3b 0d 0a 0d 0a 20 20  .xRename);....  
33cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
33cd0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53 61 76 65  tiveModule.xSave
33ce0 70 6f 69 6e 74 20 3d 20 6e 65 77 20 55 6e 73 61  point = new Unsa
33cf0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
33d00 78 53 61 76 65 70 6f 69 6e 74 28 0d 0a 20 20 20  xSavepoint(..   
33d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33d20 20 6d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69   module.xSavepoi
33d30 6e 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  nt);....        
33d40 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
33d50 64 75 6c 65 2e 78 52 65 6c 65 61 73 65 20 3d 20  dule.xRelease = 
33d60 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
33d70 4d 65 74 68 6f 64 73 2e 78 52 65 6c 65 61 73 65  Methods.xRelease
33d80 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
33d90 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 52         module.xR
33da0 65 6c 65 61 73 65 29 3b 0d 0a 0d 0a 20 20 20 20  elease);....    
33db0 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
33dc0 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61  veModule.xRollba
33dd0 63 6b 54 6f 20 3d 20 6e 65 77 20 55 6e 73 61 66  ckTo = new Unsaf
33de0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
33df0 52 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20 20 20  RollbackTo(..   
33e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33e10 20 6d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63   module.xRollbac
33e20 6b 54 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  kTo);..         
33e30 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
33e40 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20    else..        
33e50 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
33e60 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
33e70 75 6c 65 2e 78 43 72 65 61 74 65 20 3d 20 6e 65  ule.xCreate = ne
33e80 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
33e90 74 68 6f 64 73 2e 78 43 72 65 61 74 65 28 0d 0a  thods.xCreate(..
33ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33eb0 20 20 20 20 78 43 72 65 61 74 65 29 3b 0d 0a 0d      xCreate);...
33ec0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
33ed0 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43   nativeModule.xC
33ee0 6f 6e 6e 65 63 74 20 3d 20 6e 65 77 20 55 6e 73  onnect = new Uns
33ef0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
33f00 2e 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20  .xConnect(..    
33f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33f20 78 43 6f 6e 6e 65 63 74 29 3b 0d 0a 0d 0a 20 20  xConnect);....  
33f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
33f40 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 73 74  tiveModule.xBest
33f50 49 6e 64 65 78 20 3d 20 6e 65 77 20 55 6e 73 61  Index = new Unsa
33f60 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
33f70 78 42 65 73 74 49 6e 64 65 78 28 0d 0a 20 20 20  xBestIndex(..   
33f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33f90 20 78 42 65 73 74 49 6e 64 65 78 29 3b 0d 0a 0d   xBestIndex);...
33fa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
33fb0 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44   nativeModule.xD
33fc0 69 73 63 6f 6e 6e 65 63 74 20 3d 20 6e 65 77 20  isconnect = new 
33fd0 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
33fe0 6f 64 73 2e 78 44 69 73 63 6f 6e 6e 65 63 74 28  ods.xDisconnect(
33ff0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
34000 20 20 20 20 20 20 78 44 69 73 63 6f 6e 6e 65 63        xDisconnec
34010 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  t);....         
34020 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
34030 75 6c 65 2e 78 44 65 73 74 72 6f 79 20 3d 20 6e  ule.xDestroy = n
34040 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
34050 65 74 68 6f 64 73 2e 78 44 65 73 74 72 6f 79 28  ethods.xDestroy(
34060 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
34070 20 20 20 20 20 20 78 44 65 73 74 72 6f 79 29 3b        xDestroy);
34080 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
34090 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
340a0 2e 78 4f 70 65 6e 20 3d 20 6e 65 77 20 55 6e 73  .xOpen = new Uns
340b0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
340c0 2e 78 4f 70 65 6e 28 78 4f 70 65 6e 29 3b 0d 0a  .xOpen(xOpen);..
340d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
340e0 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6c  nativeModule.xCl
340f0 6f 73 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  ose = new Unsafe
34100 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 43  NativeMethods.xC
34110 6c 6f 73 65 28 78 43 6c 6f 73 65 29 3b 0d 0a 0d  lose(xClose);...
34120 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
34130 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46   nativeModule.xF
34140 69 6c 74 65 72 20 3d 20 6e 65 77 20 55 6e 73 61  ilter = new Unsa
34150 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
34160 78 46 69 6c 74 65 72 28 0d 0a 20 20 20 20 20 20  xFilter(..      
34170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 46                xF
34180 69 6c 74 65 72 29 3b 0d 0a 0d 0a 20 20 20 20 20  ilter);....     
34190 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
341a0 65 4d 6f 64 75 6c 65 2e 78 4e 65 78 74 20 3d 20  eModule.xNext = 
341b0 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
341c0 4d 65 74 68 6f 64 73 2e 78 4e 65 78 74 28 78 4e  Methods.xNext(xN
341d0 65 78 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ext);..         
341e0 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
341f0 75 6c 65 2e 78 45 6f 66 20 3d 20 6e 65 77 20 55  ule.xEof = new U
34200 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
34210 64 73 2e 78 45 6f 66 28 78 45 6f 66 29 3b 0d 0a  ds.xEof(xEof);..
34220 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
34230 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
34240 43 6f 6c 75 6d 6e 20 3d 20 6e 65 77 20 55 6e 73  Column = new Uns
34250 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
34260 2e 78 43 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20 20  .xColumn(..     
34270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78                 x
34280 43 6f 6c 75 6d 6e 29 3b 0d 0a 0d 0a 20 20 20 20  Column);....    
34290 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
342a0 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 20  veModule.xRowId 
342b0 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
342c0 76 65 4d 65 74 68 6f 64 73 2e 78 52 6f 77 49 64  veMethods.xRowId
342d0 28 78 52 6f 77 49 64 29 3b 0d 0a 0d 0a 20 20 20  (xRowId);....   
342e0 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
342f0 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74  iveModule.xUpdat
34300 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  e = new UnsafeNa
34310 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 55 70 64  tiveMethods.xUpd
34320 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ate(..          
34330 20 20 20 20 20 20 20 20 20 20 78 55 70 64 61 74            xUpdat
34340 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
34350 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
34360 75 6c 65 2e 78 42 65 67 69 6e 20 3d 20 6e 65 77  ule.xBegin = new
34370 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
34380 68 6f 64 73 2e 78 42 65 67 69 6e 28 78 42 65 67  hods.xBegin(xBeg
34390 69 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  in);..          
343a0 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
343b0 6c 65 2e 78 53 79 6e 63 20 3d 20 6e 65 77 20 55  le.xSync = new U
343c0 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
343d0 64 73 2e 78 53 79 6e 63 28 78 53 79 6e 63 29 3b  ds.xSync(xSync);
343e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
343f0 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
34400 2e 78 43 6f 6d 6d 69 74 20 3d 20 6e 65 77 20 55  .xCommit = new U
34410 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
34420 64 73 2e 78 43 6f 6d 6d 69 74 28 0d 0a 20 20 20  ds.xCommit(..   
34430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34440 20 78 43 6f 6d 6d 69 74 29 3b 0d 0a 0d 0a 20 20   xCommit);....  
34450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
34460 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c  tiveModule.xRoll
34470 62 61 63 6b 20 3d 20 6e 65 77 20 55 6e 73 61 66  back = new Unsaf
34480 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
34490 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20  Rollback(..     
344a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78                 x
344b0 52 6f 6c 6c 62 61 63 6b 29 3b 0d 0a 0d 0a 20 20  Rollback);....  
344c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
344d0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64  tiveModule.xFind
344e0 46 75 6e 63 74 69 6f 6e 20 3d 20 6e 65 77 20 55  Function = new U
344f0 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
34500 64 73 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e  ds.xFindFunction
34510 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
34520 20 20 20 20 20 20 20 78 46 69 6e 64 46 75 6e 63         xFindFunc
34530 74 69 6f 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  tion);....      
34540 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
34550 4d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65 20 3d  Module.xRename =
34560 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
34570 65 4d 65 74 68 6f 64 73 2e 78 52 65 6e 61 6d 65  eMethods.xRename
34580 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
34590 20 20 20 20 20 20 20 78 52 65 6e 61 6d 65 29 3b         xRename);
345a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
345b0 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
345c0 2e 78 53 61 76 65 70 6f 69 6e 74 20 3d 20 6e 65  .xSavepoint = ne
345d0 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
345e0 74 68 6f 64 73 2e 78 53 61 76 65 70 6f 69 6e 74  thods.xSavepoint
345f0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
34600 20 20 20 20 20 20 20 78 53 61 76 65 70 6f 69 6e         xSavepoin
34610 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  t);....         
34620 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
34630 75 6c 65 2e 78 52 65 6c 65 61 73 65 20 3d 20 6e  ule.xRelease = n
34640 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
34650 65 74 68 6f 64 73 2e 78 52 65 6c 65 61 73 65 28  ethods.xRelease(
34660 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
34670 20 20 20 20 20 20 78 52 65 6c 65 61 73 65 29 3b        xRelease);
34680 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
34690 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
346a0 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 20 3d 20 6e  .xRollbackTo = n
346b0 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
346c0 65 74 68 6f 64 73 2e 78 52 6f 6c 6c 62 61 63 6b  ethods.xRollback
346d0 54 6f 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  To(..           
346e0 20 20 20 20 20 20 20 20 20 78 52 6f 6c 6c 62 61           xRollba
346f0 63 6b 54 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20  ckTo);..        
34700 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
34710 20 20 20 20 20 72 65 74 75 72 6e 20 6e 61 74 69       return nati
34720 76 65 4d 6f 64 75 6c 65 3b 0d 0a 20 20 20 20 20  veModule;..     
34730 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34780 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
34790 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
347a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 72  ..        /// Cr
347b0 65 61 74 65 73 20 61 20 63 6f 70 79 20 6f 66 20  eates a copy of 
347c0 74 68 65 20 73 70 65 63 69 66 69 65 64 0d 0a 20  the specified.. 
347d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
347e0 63 72 65 66 3d 22 55 6e 73 61 66 65 4e 61 74 69  cref="UnsafeNati
347f0 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
34800 33 5f 6d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a  3_module" /> obj
34810 65 63 74 20 69 6e 73 74 61 6e 63 65 2c 0d 0a 20  ect instance,.. 
34820 20 20 20 20 20 20 20 2f 2f 2f 20 75 73 69 6e 67         /// using
34830 20 64 65 66 61 75 6c 74 20 69 6d 70 6c 65 6d 65   default impleme
34840 6e 74 61 74 69 6f 6e 73 20 66 6f 72 20 74 68 65  ntations for the
34850 20 63 6f 6e 74 61 69 6e 65 64 20 64 65 6c 65 67   contained deleg
34860 61 74 65 73 20 77 68 65 6e 0d 0a 20 20 20 20 20  ates when..     
34870 20 20 20 2f 2f 2f 20 6e 65 63 65 73 73 61 72 79     /// necessary
34880 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
34890 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
348a0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
348b0 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20  me="module">..  
348c0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
348d0 65 65 20 63 72 65 66 3d 22 55 6e 73 61 66 65 4e  ee cref="UnsafeN
348e0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
348f0 69 74 65 33 5f 6d 6f 64 75 6c 65 22 20 2f 3e 20  ite3_module" /> 
34900 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20  object..        
34910 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 20 74 6f 20  /// instance to 
34920 63 6f 70 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f  copy...        /
34930 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
34940 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
34950 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
34960 54 68 65 20 6e 65 77 20 3c 73 65 65 20 63 72 65  The new <see cre
34970 66 3d 22 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  f="UnsafeNativeM
34980 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d  ethods.sqlite3_m
34990 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74  odule" /> object
349a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e  ..        /// in
349b0 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20  stance...       
349c0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
349d0 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
349e0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
349f0 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64  hods.sqlite3_mod
34a00 75 6c 65 20 43 6f 70 79 4e 61 74 69 76 65 4d 6f  ule CopyNativeMo
34a10 64 75 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20  dule(..         
34a20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
34a30 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d  ethods.sqlite3_m
34a40 6f 64 75 6c 65 20 6d 6f 64 75 6c 65 0d 0a 20 20  odule module..  
34a50 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
34a60 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
34a70 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65      UnsafeNative
34a80 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
34a90 6d 6f 64 75 6c 65 20 6e 65 77 4d 6f 64 75 6c 65  module newModule
34aa0 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   =..            
34ab0 20 20 20 20 6e 65 77 20 55 6e 73 61 66 65 4e 61      new UnsafeNa
34ac0 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
34ad0 74 65 33 5f 6d 6f 64 75 6c 65 28 29 3b 0d 0a 0d  te3_module();...
34ae0 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
34af0 4d 6f 64 75 6c 65 2e 69 56 65 72 73 69 6f 6e 20  Module.iVersion 
34b00 3d 20 6d 6f 64 75 6c 65 2e 69 56 65 72 73 69 6f  = module.iVersio
34b10 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  n;....          
34b20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 43 72 65    newModule.xCre
34b30 61 74 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  ate = new Unsafe
34b40 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 43  NativeMethods.xC
34b50 72 65 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20  reate(..        
34b60 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e          (module.
34b70 78 43 72 65 61 74 65 20 21 3d 20 6e 75 6c 6c 29  xCreate != null)
34b80 20 3f 20 6d 6f 64 75 6c 65 2e 78 43 72 65 61 74   ? module.xCreat
34b90 65 20 3a 20 78 43 72 65 61 74 65 29 3b 0d 0a 0d  e : xCreate);...
34ba0 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
34bb0 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 20  Module.xConnect 
34bc0 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
34bd0 76 65 4d 65 74 68 6f 64 73 2e 78 43 6f 6e 6e 65  veMethods.xConne
34be0 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ct(..           
34bf0 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 43 6f       (module.xCo
34c00 6e 6e 65 63 74 20 21 3d 20 6e 75 6c 6c 29 20 3f  nnect != null) ?
34c10 20 6d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74   module.xConnect
34c20 20 3a 20 78 43 6f 6e 6e 65 63 74 29 3b 0d 0a 0d   : xConnect);...
34c30 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
34c40 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65  Module.xBestInde
34c50 78 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  x = new UnsafeNa
34c60 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 42 65 73  tiveMethods.xBes
34c70 74 49 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20  tIndex(..       
34c80 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65           (module
34c90 2e 78 42 65 73 74 49 6e 64 65 78 20 21 3d 20 6e  .xBestIndex != n
34ca0 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 42  ull) ? module.xB
34cb0 65 73 74 49 6e 64 65 78 20 3a 20 78 42 65 73 74  estIndex : xBest
34cc0 49 6e 64 65 78 29 3b 0d 0a 0d 0a 20 20 20 20 20  Index);....     
34cd0 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65         newModule
34ce0 2e 78 44 69 73 63 6f 6e 6e 65 63 74 20 3d 20 6e  .xDisconnect = n
34cf0 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
34d00 65 74 68 6f 64 73 2e 78 44 69 73 63 6f 6e 6e 65  ethods.xDisconne
34d10 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ct(..           
34d20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 44 69       (module.xDi
34d30 73 63 6f 6e 6e 65 63 74 20 21 3d 20 6e 75 6c 6c  sconnect != null
34d40 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 44 69 73 63  ) ? module.xDisc
34d50 6f 6e 6e 65 63 74 20 3a 0d 0a 20 20 20 20 20 20  onnect :..      
34d60 20 20 20 20 20 20 20 20 20 20 78 44 69 73 63 6f            xDisco
34d70 6e 6e 65 63 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  nnect);....     
34d80 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65         newModule
34d90 2e 78 44 65 73 74 72 6f 79 20 3d 20 6e 65 77 20  .xDestroy = new 
34da0 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
34db0 6f 64 73 2e 78 44 65 73 74 72 6f 79 28 0d 0a 20  ods.xDestroy(.. 
34dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
34dd0 6d 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f 79 20  module.xDestroy 
34de0 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c  != null) ? modul
34df0 65 2e 78 44 65 73 74 72 6f 79 20 3a 20 78 44 65  e.xDestroy : xDe
34e00 73 74 72 6f 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  stroy);....     
34e10 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65         newModule
34e20 2e 78 4f 70 65 6e 20 3d 20 6e 65 77 20 55 6e 73  .xOpen = new Uns
34e30 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
34e40 2e 78 4f 70 65 6e 28 0d 0a 20 20 20 20 20 20 20  .xOpen(..       
34e50 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65           (module
34e60 2e 78 4f 70 65 6e 20 21 3d 20 6e 75 6c 6c 29 20  .xOpen != null) 
34e70 3f 20 6d 6f 64 75 6c 65 2e 78 4f 70 65 6e 20 3a  ? module.xOpen :
34e80 20 78 4f 70 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20   xOpen);....    
34e90 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c          newModul
34ea0 65 2e 78 43 6c 6f 73 65 20 3d 20 6e 65 77 20 55  e.xClose = new U
34eb0 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
34ec0 64 73 2e 78 43 6c 6f 73 65 28 0d 0a 20 20 20 20  ds.xClose(..    
34ed0 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64              (mod
34ee0 75 6c 65 2e 78 43 6c 6f 73 65 20 21 3d 20 6e 75  ule.xClose != nu
34ef0 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 43 6c  ll) ? module.xCl
34f00 6f 73 65 20 3a 20 78 43 6c 6f 73 65 29 3b 0d 0a  ose : xClose);..
34f10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
34f20 77 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 20  wModule.xFilter 
34f30 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
34f40 76 65 4d 65 74 68 6f 64 73 2e 78 46 69 6c 74 65  veMethods.xFilte
34f50 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
34f60 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 46 69 6c      (module.xFil
34f70 74 65 72 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d  ter != null) ? m
34f80 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 20 3a 20  odule.xFilter : 
34f90 78 46 69 6c 74 65 72 29 3b 0d 0a 0d 0a 20 20 20  xFilter);....   
34fa0 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75           newModu
34fb0 6c 65 2e 78 4e 65 78 74 20 3d 20 6e 65 77 20 55  le.xNext = new U
34fc0 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
34fd0 64 73 2e 78 4e 65 78 74 28 0d 0a 20 20 20 20 20  ds.xNext(..     
34fe0 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75             (modu
34ff0 6c 65 2e 78 4e 65 78 74 20 21 3d 20 6e 75 6c 6c  le.xNext != null
35000 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 4e 65 78 74  ) ? module.xNext
35010 20 3a 20 78 4e 65 78 74 29 3b 0d 0a 0d 0a 20 20   : xNext);....  
35020 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64            newMod
35030 75 6c 65 2e 78 45 6f 66 20 3d 20 6e 65 77 20 55  ule.xEof = new U
35040 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
35050 64 73 2e 78 45 6f 66 28 0d 0a 20 20 20 20 20 20  ds.xEof(..      
35060 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c            (modul
35070 65 2e 78 45 6f 66 20 21 3d 20 6e 75 6c 6c 29 20  e.xEof != null) 
35080 3f 20 6d 6f 64 75 6c 65 2e 78 45 6f 66 20 3a 20  ? module.xEof : 
35090 78 45 6f 66 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  xEof);....      
350a0 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e        newModule.
350b0 78 43 6f 6c 75 6d 6e 20 3d 20 6e 65 77 20 55 6e  xColumn = new Un
350c0 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
350d0 73 2e 78 43 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20  s.xColumn(..    
350e0 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64              (mod
350f0 75 6c 65 2e 78 43 6f 6c 75 6d 6e 20 21 3d 20 6e  ule.xColumn != n
35100 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 43  ull) ? module.xC
35110 6f 6c 75 6d 6e 20 3a 20 78 43 6f 6c 75 6d 6e 29  olumn : xColumn)
35120 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
35130 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 52 6f 77 49   newModule.xRowI
35140 64 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  d = new UnsafeNa
35150 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 6f 77  tiveMethods.xRow
35160 49 64 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Id(..           
35170 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 52 6f       (module.xRo
35180 77 49 64 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d  wId != null) ? m
35190 6f 64 75 6c 65 2e 78 52 6f 77 49 64 20 3a 20 78  odule.xRowId : x
351a0 52 6f 77 49 64 29 3b 0d 0a 0d 0a 20 20 20 20 20  RowId);....     
351b0 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65         newModule
351c0 2e 78 55 70 64 61 74 65 20 3d 20 6e 65 77 20 55  .xUpdate = new U
351d0 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
351e0 64 73 2e 78 55 70 64 61 74 65 28 0d 0a 20 20 20  ds.xUpdate(..   
351f0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f               (mo
35200 64 75 6c 65 2e 78 55 70 64 61 74 65 20 21 3d 20  dule.xUpdate != 
35210 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78  null) ? module.x
35220 55 70 64 61 74 65 20 3a 20 78 55 70 64 61 74 65  Update : xUpdate
35230 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
35240 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 42 65 67    newModule.xBeg
35250 69 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  in = new UnsafeN
35260 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 42 65  ativeMethods.xBe
35270 67 69 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  gin(..          
35280 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 42        (module.xB
35290 65 67 69 6e 20 21 3d 20 6e 75 6c 6c 29 20 3f 20  egin != null) ? 
352a0 6d 6f 64 75 6c 65 2e 78 42 65 67 69 6e 20 3a 20  module.xBegin : 
352b0 78 42 65 67 69 6e 29 3b 0d 0a 0d 0a 20 20 20 20  xBegin);....    
352c0 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c          newModul
352d0 65 2e 78 53 79 6e 63 20 3d 20 6e 65 77 20 55 6e  e.xSync = new Un
352e0 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
352f0 73 2e 78 53 79 6e 63 28 0d 0a 20 20 20 20 20 20  s.xSync(..      
35300 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c            (modul
35310 65 2e 78 53 79 6e 63 20 21 3d 20 6e 75 6c 6c 29  e.xSync != null)
35320 20 3f 20 6d 6f 64 75 6c 65 2e 78 53 79 6e 63 20   ? module.xSync 
35330 3a 20 78 53 79 6e 63 29 3b 0d 0a 0d 0a 20 20 20  : xSync);....   
35340 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75           newModu
35350 6c 65 2e 78 43 6f 6d 6d 69 74 20 3d 20 6e 65 77  le.xCommit = new
35360 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
35370 68 6f 64 73 2e 78 43 6f 6d 6d 69 74 28 0d 0a 20  hods.xCommit(.. 
35380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
35390 6d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 20 21  module.xCommit !
353a0 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65  = null) ? module
353b0 2e 78 43 6f 6d 6d 69 74 20 3a 20 78 43 6f 6d 6d  .xCommit : xComm
353c0 69 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  it);....        
353d0 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 52      newModule.xR
353e0 6f 6c 6c 62 61 63 6b 20 3d 20 6e 65 77 20 55 6e  ollback = new Un
353f0 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
35400 73 2e 78 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20  s.xRollback(..  
35410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d                (m
35420 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 20  odule.xRollback 
35430 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c  != null) ? modul
35440 65 2e 78 52 6f 6c 6c 62 61 63 6b 20 3a 20 78 52  e.xRollback : xR
35450 6f 6c 6c 62 61 63 6b 29 3b 0d 0a 0d 0a 20 20 20  ollback);....   
35460 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75           newModu
35470 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e  le.xFindFunction
35480 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
35490 69 76 65 4d 65 74 68 6f 64 73 2e 78 46 69 6e 64  iveMethods.xFind
354a0 46 75 6e 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20  Function(..     
354b0 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75             (modu
354c0 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e  le.xFindFunction
354d0 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75   != null) ? modu
354e0 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e  le.xFindFunction
354f0 20 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   :..            
35500 20 20 20 20 78 46 69 6e 64 46 75 6e 63 74 69 6f      xFindFunctio
35510 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  n);....         
35520 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 52 65     newModule.xRe
35530 6e 61 6d 65 20 3d 20 6e 65 77 20 55 6e 73 61 66  name = new Unsaf
35540 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
35550 52 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20  Rename(..       
35560 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65           (module
35570 2e 78 52 65 6e 61 6d 65 20 21 3d 20 6e 75 6c 6c  .xRename != null
35580 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 52 65 6e 61  ) ? module.xRena
35590 6d 65 20 3a 20 78 52 65 6e 61 6d 65 29 3b 0d 0a  me : xRename);..
355a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
355b0 77 4d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69  wModule.xSavepoi
355c0 6e 74 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  nt = new UnsafeN
355d0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 53 61  ativeMethods.xSa
355e0 76 65 70 6f 69 6e 74 28 0d 0a 20 20 20 20 20 20  vepoint(..      
355f0 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c            (modul
35600 65 2e 78 53 61 76 65 70 6f 69 6e 74 20 21 3d 20  e.xSavepoint != 
35610 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78  null) ? module.x
35620 53 61 76 65 70 6f 69 6e 74 20 3a 20 78 53 61 76  Savepoint : xSav
35630 65 70 6f 69 6e 74 29 3b 0d 0a 0d 0a 20 20 20 20  epoint);....    
35640 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c          newModul
35650 65 2e 78 52 65 6c 65 61 73 65 20 3d 20 6e 65 77  e.xRelease = new
35660 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
35670 68 6f 64 73 2e 78 52 65 6c 65 61 73 65 28 0d 0a  hods.xRelease(..
35680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35690 28 6d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73 65  (module.xRelease
356a0 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75   != null) ? modu
356b0 6c 65 2e 78 52 65 6c 65 61 73 65 20 3a 20 78 52  le.xRelease : xR
356c0 65 6c 65 61 73 65 29 3b 0d 0a 0d 0a 20 20 20 20  elease);....    
356d0 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c          newModul
356e0 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 20 3d 20  e.xRollbackTo = 
356f0 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
35700 4d 65 74 68 6f 64 73 2e 78 52 6f 6c 6c 62 61 63  Methods.xRollbac
35710 6b 54 6f 28 0d 0a 20 20 20 20 20 20 20 20 20 20  kTo(..          
35720 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 52        (module.xR
35730 6f 6c 6c 62 61 63 6b 54 6f 20 21 3d 20 6e 75 6c  ollbackTo != nul
35740 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 52 6f 6c  l) ? module.xRol
35750 6c 62 61 63 6b 54 6f 20 3a 0d 0a 20 20 20 20 20  lbackTo :..     
35760 20 20 20 20 20 20 20 20 20 20 20 78 52 6f 6c 6c             xRoll
35770 62 61 63 6b 54 6f 29 3b 0d 0a 0d 0a 20 20 20 20  backTo);....    
35780 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
35790 65 77 4d 6f 64 75 6c 65 3b 0d 0a 20 20 20 20 20  ewModule;..     
357a0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
357b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
357c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
357d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
357e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
357f0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
35800 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
35810 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 61  ..        /// Ca
35820 6c 6c 73 20 6f 6e 65 20 6f 66 20 74 68 65 20 76  lls one of the v
35830 69 72 74 75 61 6c 20 74 61 62 6c 65 20 69 6e 69  irtual table ini
35840 74 69 61 6c 69 7a 61 74 69 6f 6e 20 6d 65 74 68  tialization meth
35850 6f 64 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ods...        //
35860 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
35870 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
35880 20 6e 61 6d 65 3d 22 63 72 65 61 74 65 22 3e 0d   name="create">.
35890 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  .        /// Non
358a0 2d 7a 65 72 6f 20 74 6f 20 63 61 6c 6c 20 74 68  -zero to call th
358b0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
358c0 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c  LiteManagedModul
358d0 65 2e 43 72 65 61 74 65 22 20 2f 3e 0d 0a 20 20  e.Create" />..  
358e0 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64        /// method
358f0 3b 20 6f 74 68 65 72 77 69 73 65 2c 20 74 68 65  ; otherwise, the
35900 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
35910 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65  iteManagedModule
35920 2e 43 6f 6e 6e 65 63 74 22 20 2f 3e 0d 0a 20 20  .Connect" />..  
35930 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64        /// method
35940 20 77 69 6c 6c 20 62 65 20 63 61 6c 6c 65 64 2e   will be called.
35950 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
35960 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
35970 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
35980 22 70 44 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  "pDb">..        
35990 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 64  /// The native d
359a0 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
359b0 6f 6e 20 68 61 6e 64 6c 65 2e 0d 0a 20 20 20 20  on handle...    
359c0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
359d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
359e0 61 72 61 6d 20 6e 61 6d 65 3d 22 70 41 75 78 22  aram name="pAux"
359f0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
35a00 68 65 20 6f 72 69 67 69 6e 61 6c 20 6e 61 74 69  he original nati
35a10 76 65 20 70 6f 69 6e 74 65 72 20 76 61 6c 75 65  ve pointer value
35a20 20 74 68 61 74 20 77 61 73 20 70 72 6f 76 69 64   that was provid
35a30 65 64 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20  ed to the..     
35a40 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 63     /// sqlite3_c
35a50 72 65 61 74 65 5f 6d 6f 64 75 6c 65 28 29 2c 20  reate_module(), 
35a60 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 6d  sqlite3_create_m
35a70 6f 64 75 6c 65 5f 76 32 28 29 20 6f 72 0d 0a 20  odule_v2() or.. 
35a80 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74         /// sqlit
35a90 65 33 5f 63 72 65 61 74 65 5f 64 69 73 70 6f 73  e3_create_dispos
35aa0 61 62 6c 65 5f 6d 6f 64 75 6c 65 28 29 20 66 75  able_module() fu
35ab0 6e 63 74 69 6f 6e 73 2e 0d 0a 20 20 20 20 20 20  nctions...      
35ac0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
35ad0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
35ae0 61 6d 20 6e 61 6d 65 3d 22 61 72 67 63 22 3e 0d  am name="argc">.
35af0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
35b00 20 6e 75 6d 62 65 72 20 6f 66 20 61 72 67 75 6d   number of argum
35b10 65 6e 74 73 20 66 72 6f 6d 20 74 68 65 20 43 52  ents from the CR
35b20 45 41 54 45 20 56 49 52 54 55 41 4c 20 54 41 42  EATE VIRTUAL TAB
35b30 4c 45 20 73 74 61 74 65 6d 65 6e 74 2e 0d 0a 20  LE statement... 
35b40 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
35b50 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
35b60 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72   <param name="ar
35b70 67 76 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  gv">..        //
35b80 2f 20 54 68 65 20 61 72 72 61 79 20 6f 66 20 73  / The array of s
35b90 74 72 69 6e 67 20 61 72 67 75 6d 65 6e 74 73 20  tring arguments 
35ba0 66 72 6f 6d 20 74 68 65 20 43 52 45 41 54 45 20  from the CREATE 
35bb0 56 49 52 54 55 41 4c 20 54 41 42 4c 45 0d 0a 20  VIRTUAL TABLE.. 
35bc0 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 61 74 65         /// state
35bd0 6d 65 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ment...        /
35be0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
35bf0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
35c00 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20  name="pVtab">.. 
35c10 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20         /// Upon 
35c20 73 75 63 63 65 73 73 2c 20 74 68 69 73 20 70 61  success, this pa
35c30 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20  rameter must be 
35c40 6d 6f 64 69 66 69 65 64 20 74 6f 20 70 6f 69 6e  modified to poin
35c50 74 20 74 6f 20 74 68 65 20 6e 65 77 6c 79 0d 0a  t to the newly..
35c60 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 72 65 61          /// crea
35c70 74 65 64 20 6e 61 74 69 76 65 20 73 71 6c 69 74  ted native sqlit
35c80 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 20  e3_vtab derived 
35c90 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20  structure...    
35ca0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
35cb0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
35cc0 61 72 61 6d 20 6e 61 6d 65 3d 22 70 45 72 72 6f  aram name="pErro
35cd0 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  r">..        ///
35ce0 20 55 70 6f 6e 20 66 61 69 6c 75 72 65 2c 20 74   Upon failure, t
35cf0 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d 75  his parameter mu
35d00 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74  st be modified t
35d10 6f 20 70 6f 69 6e 74 20 74 6f 20 74 68 65 20 65  o point to the e
35d20 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rror..        //
35d30 2f 20 6d 65 73 73 61 67 65 2c 20 77 69 74 68 20  / message, with 
35d40 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 6d  the underlying m
35d50 65 6d 6f 72 79 20 68 61 76 69 6e 67 20 62 65 65  emory having bee
35d60 6e 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20  n obtained from 
35d70 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
35d80 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28   sqlite3_malloc(
35d90 29 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20  ) function...   
35da0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
35db0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
35dc0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
35dd0 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64    /// A standard
35de0 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63   SQLite return c
35df0 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode...        //
35e00 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
35e10 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51        private SQ
35e20 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 43 72  LiteErrorCode Cr
35e30 65 61 74 65 4f 72 43 6f 6e 6e 65 63 74 28 0d 0a  eateOrConnect(..
35e40 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
35e50 20 63 72 65 61 74 65 2c 0d 0a 20 20 20 20 20 20   create,..      
35e60 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 44 62        IntPtr pDb
35e70 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  ,..            I
35e80 6e 74 50 74 72 20 70 41 75 78 2c 0d 0a 20 20 20  ntPtr pAux,..   
35e90 20 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67           int arg
35ea0 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  c,..            
35eb0 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20  IntPtr argv,..  
35ec0 20 20 20 20 20 20 20 20 20 20 72 65 66 20 49 6e            ref In
35ed0 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
35ee0 20 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74           ref Int
35ef0 50 74 72 20 70 45 72 72 6f 72 0d 0a 20 20 20 20  Ptr pError..    
35f00 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
35f10 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
35f20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
35f30 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
35f40 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c        string fil
35f50 65 4e 61 6d 65 20 3d 20 53 51 4c 69 74 65 53 74  eName = SQLiteSt
35f60 72 69 6e 67 2e 53 74 72 69 6e 67 46 72 6f 6d 55  ring.StringFromU
35f70 74 66 38 49 6e 74 50 74 72 28 0d 0a 20 20 20 20  tf8IntPtr(..    
35f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35f90 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
35fa0 6f 64 73 2e 73 71 6c 69 74 65 33 5f 64 62 5f 66  ods.sqlite3_db_f
35fb0 69 6c 65 6e 61 6d 65 28 70 44 62 2c 20 49 6e 74  ilename(pDb, Int
35fc0 50 74 72 2e 5a 65 72 6f 29 29 3b 0d 0a 0d 0a 20  Ptr.Zero));.... 
35fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75                 u
35fe0 73 69 6e 67 20 28 53 51 4c 69 74 65 43 6f 6e 6e  sing (SQLiteConn
35ff0 65 63 74 69 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f  ection connectio
36000 6e 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 43 6f  n = new SQLiteCo
36010 6e 6e 65 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20  nnection(..     
36020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36030 20 20 20 70 44 62 2c 20 66 69 6c 65 4e 61 6d 65     pDb, fileName
36040 2c 20 66 61 6c 73 65 29 29 0d 0a 20 20 20 20 20  , false))..     
36050 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
36060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36070 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54    SQLiteVirtualT
36080 61 62 6c 65 20 74 61 62 6c 65 20 3d 20 6e 75 6c  able table = nul
36090 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l;..            
360a0 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 65          string e
360b0 72 72 6f 72 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a  rror = null;....
360c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
360d0 20 20 20 20 69 66 20 28 28 63 72 65 61 74 65 20      if ((create 
360e0 26 26 20 43 72 65 61 74 65 28 63 6f 6e 6e 65 63  && Create(connec
360f0 74 69 6f 6e 2c 20 70 41 75 78 2c 0d 0a 20 20 20  tion, pAux,..   
36100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36110 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 53           SQLiteS
36120 74 72 69 6e 67 2e 53 74 72 69 6e 67 41 72 72 61  tring.StringArra
36130 79 46 72 6f 6d 55 74 66 38 53 69 7a 65 41 6e 64  yFromUtf8SizeAnd
36140 49 6e 74 50 74 72 28 61 72 67 63 2c 0d 0a 20 20  IntPtr(argc,..  
36150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36160 20 20 20 20 20 20 20 20 20 20 61 72 67 76 29 2c            argv),
36170 20 72 65 66 20 74 61 62 6c 65 2c 20 72 65 66 20   ref table, ref 
36180 65 72 72 6f 72 29 20 3d 3d 20 53 51 4c 69 74 65  error) == SQLite
36190 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 29 20 7c 7c  ErrorCode.Ok) ||
361a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
361b0 20 20 20 20 20 20 20 20 20 20 28 21 63 72 65 61            (!crea
361c0 74 65 20 26 26 20 43 6f 6e 6e 65 63 74 28 63 6f  te && Connect(co
361d0 6e 6e 65 63 74 69 6f 6e 2c 20 70 41 75 78 2c 0d  nnection, pAux,.
361e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
361f0 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
36200 69 74 65 53 74 72 69 6e 67 2e 53 74 72 69 6e 67  iteString.String
36210 41 72 72 61 79 46 72 6f 6d 55 74 66 38 53 69 7a  ArrayFromUtf8Siz
36220 65 41 6e 64 49 6e 74 50 74 72 28 61 72 67 63 2c  eAndIntPtr(argc,
36230 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
36240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 72                ar
36250 67 76 29 2c 20 72 65 66 20 74 61 62 6c 65 2c 20  gv), ref table, 
36260 72 65 66 20 65 72 72 6f 72 29 20 3d 3d 20 53 51  ref error) == SQ
36270 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b  LiteErrorCode.Ok
36280 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
36290 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
362a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
362b0 20 20 20 69 66 20 28 74 61 62 6c 65 20 21 3d 20     if (table != 
362c0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
362d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
362e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
362f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 56                pV
36300 74 61 62 20 3d 20 54 61 62 6c 65 54 6f 49 6e 74  tab = TableToInt
36310 50 74 72 28 74 61 62 6c 65 29 3b 0d 0a 20 20 20  Ptr(table);..   
36320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36330 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
36340 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e  SQLiteErrorCode.
36350 4f 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Ok;..           
36360 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
36370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36380 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20          else..  
36390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
363a0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
363b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
363c0 20 20 20 20 20 70 45 72 72 6f 72 20 3d 20 53 51       pError = SQ
363d0 4c 69 74 65 53 74 72 69 6e 67 2e 55 74 66 38 49  LiteString.Utf8I
363e0 6e 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28  ntPtrFromString(
363f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
36400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36410 20 20 22 6e 6f 20 74 61 62 6c 65 20 77 61 73 20    "no table was 
36420 63 72 65 61 74 65 64 22 29 3b 0d 0a 20 20 20 20  created");..    
36430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36440 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
36450 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
36460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36470 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20    else..        
36480 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
36490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
364a0 20 20 20 20 20 20 20 70 45 72 72 6f 72 20 3d 20         pError = 
364b0 53 51 4c 69 74 65 53 74 72 69 6e 67 2e 55 74 66  SQLiteString.Utf
364c0 38 49 6e 74 50 74 72 46 72 6f 6d 53 74 72 69 6e  8IntPtrFromStrin
364d0 67 28 65 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20  g(error);..     
364e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
364f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
36500 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
36510 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
36520 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e  catch (Exception
36530 20 65 29 20 2f 2a 20 4e 4f 54 45 3a 20 4d 75 73   e) /* NOTE: Mus
36540 74 20 63 61 74 63 68 20 41 4c 4c 2e 20 2a 2f 0d  t catch ALL. */.
36550 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
36560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36570 70 45 72 72 6f 72 20 3d 20 53 51 4c 69 74 65 53  pError = SQLiteS
36580 74 72 69 6e 67 2e 55 74 66 38 49 6e 74 50 74 72  tring.Utf8IntPtr
36590 46 72 6f 6d 53 74 72 69 6e 67 28 65 2e 54 6f 53  FromString(e.ToS
365a0 74 72 69 6e 67 28 29 29 3b 0d 0a 20 20 20 20 20  tring());..     
365b0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
365c0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53          return S
365d0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 45  QLiteErrorCode.E
365e0 72 72 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 7d  rror;..        }
365f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
36600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36640 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
36650 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
36660 20 20 20 20 20 20 2f 2f 2f 20 43 61 6c 6c 73 20        /// Calls 
36670 6f 6e 65 20 6f 66 20 74 68 65 20 76 69 72 74 75  one of the virtu
36680 61 6c 20 74 61 62 6c 65 20 66 69 6e 61 6c 69 7a  al table finaliz
36690 61 74 69 6f 6e 20 6d 65 74 68 6f 64 73 2e 0d 0a  ation methods...
366a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
366b0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
366c0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
366d0 22 64 65 73 74 72 6f 79 22 3e 0d 0a 20 20 20 20  "destroy">..    
366e0 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
366f0 20 74 6f 20 63 61 6c 6c 20 74 68 65 20 3c 73 65   to call the <se
36700 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d  e cref="ISQLiteM
36710 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 44 65 73  anagedModule.Des
36720 74 72 6f 79 22 20 2f 3e 0d 0a 20 20 20 20 20 20  troy" />..      
36730 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 3b 20 6f 74    /// method; ot
36740 68 65 72 77 69 73 65 2c 20 74 68 65 0d 0a 20 20  herwise, the..  
36750 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
36760 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61  ref="ISQLiteMana
36770 67 65 64 4d 6f 64 75 6c 65 2e 44 69 73 63 6f 6e  gedModule.Discon
36780 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 20  nect" /> method 
36790 77 69 6c 6c 20 62 65 0d 0a 20 20 20 20 20 20 20  will be..       
367a0 20 2f 2f 2f 20 63 61 6c 6c 65 64 2e 0d 0a 20 20   /// called...  
367b0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
367c0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
367d0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74  <param name="pVt
367e0 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ab">..        //
367f0 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69  / The native poi
36800 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69  nter to the sqli
36810 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64  te3_vtab derived
36820 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
36830 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
36840 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
36850 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
36860 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64    /// A standard
36870 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63   SQLite return c
36880 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode...        //
36890 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
368a0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51        private SQ
368b0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 44 65  LiteErrorCode De
368c0 73 74 72 6f 79 4f 72 44 69 73 63 6f 6e 6e 65 63  stroyOrDisconnec
368d0 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
368e0 62 6f 6f 6c 20 64 65 73 74 72 6f 79 2c 0d 0a 20  bool destroy,.. 
368f0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
36900 72 20 70 56 74 61 62 0d 0a 20 20 20 20 20 20 20  r pVtab..       
36910 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
36920 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  {..            t
36930 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
36940 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
36950 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c     SQLiteVirtual
36960 54 61 62 6c 65 20 74 61 62 6c 65 20 3d 20 54 61  Table table = Ta
36970 62 6c 65 46 72 6f 6d 49 6e 74 50 74 72 28 70 56  bleFromIntPtr(pV
36980 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  tab);....       
36990 20 20 20 20 20 20 20 20 20 69 66 20 28 74 61 62           if (tab
369a0 6c 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  le != null)..   
369b0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
369c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
369d0 20 20 20 20 69 66 20 28 28 64 65 73 74 72 6f 79      if ((destroy
369e0 20 26 26 20 28 44 65 73 74 72 6f 79 28 74 61 62   && (Destroy(tab
369f0 6c 65 29 20 3d 3d 20 53 51 4c 69 74 65 45 72 72  le) == SQLiteErr
36a00 6f 72 43 6f 64 65 2e 4f 6b 29 29 20 7c 7c 0d 0a  orCode.Ok)) ||..
36a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36a20 20 20 20 20 20 20 20 20 28 21 64 65 73 74 72 6f          (!destro
36a30 79 20 26 26 20 28 44 69 73 63 6f 6e 6e 65 63 74  y && (Disconnect
36a40 28 74 61 62 6c 65 29 20 3d 3d 20 53 51 4c 69 74  (table) == SQLit
36a50 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 29 29 29  eErrorCode.Ok)))
36a60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
36a70 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
36a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36a90 20 69 66 20 28 74 61 62 6c 65 73 20 21 3d 20 6e   if (tables != n
36aa0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
36ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36ac0 20 20 74 61 62 6c 65 73 2e 52 65 6d 6f 76 65 28    tables.Remove(
36ad0 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20  pVtab);....     
36ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36af0 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65     return SQLite
36b00 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 3b 0d 0a 20  ErrorCode.Ok;.. 
36b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36b20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
36b30 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
36b40 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
36b50 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
36b60 74 69 6f 6e 20 65 29 20 2f 2a 20 4e 4f 54 45 3a  tion e) /* NOTE:
36b70 20 4d 75 73 74 20 63 61 74 63 68 20 41 4c 4c 2e   Must catch ALL.
36b80 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
36b90 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
36ba0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
36bb0 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
36bc0 20 41 74 20 74 68 69 73 20 70 6f 69 6e 74 2c 20   At this point, 
36bd0 74 68 65 72 65 20 69 73 20 6e 6f 20 77 61 79 20  there is no way 
36be0 74 6f 20 72 65 70 6f 72 74 20 74 68 65 20 65 72  to report the er
36bf0 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ror..           
36c00 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 6f       //       co
36c10 6e 64 69 74 69 6f 6e 20 62 61 63 6b 20 74 6f 20  ndition back to 
36c20 74 68 65 20 63 61 6c 6c 65 72 3b 20 74 68 65 72  the caller; ther
36c30 65 66 6f 72 65 2c 20 75 73 65 20 74 68 65 0d 0a  efore, use the..
36c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36c50 2f 2f 20 20 20 20 20 20 20 6c 6f 67 67 69 6e 67  //       logging
36c60 20 66 61 63 69 6c 69 74 79 20 69 6e 73 74 65 61   facility instea
36c70 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
36c80 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
36c90 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
36ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
36cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36cc0 20 20 20 20 69 66 20 28 4c 6f 67 45 78 63 65 70      if (LogExcep
36cd0 74 69 6f 6e 73 4e 6f 54 68 72 6f 77 29 0d 0a 20  tionsNoThrow).. 
36ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36cf0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
36d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a                /*
36d10 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
36d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36d30 20 20 20 53 51 4c 69 74 65 4c 6f 67 2e 4c 6f 67     SQLiteLog.Log
36d40 4d 65 73 73 61 67 65 28 53 51 4c 69 74 65 42 61  Message(SQLiteBa
36d50 73 65 2e 43 4f 52 5f 45 5f 45 58 43 45 50 54 49  se.COR_E_EXCEPTI
36d60 4f 4e 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ON,..           
36d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36d80 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 43   String.Format(C
36d90 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65  ultureInfo.Curre
36da0 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20  ntCulture,..    
36db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36dc0 20 20 20 20 20 20 20 20 22 43 61 75 67 68 74 20          "Caught 
36dd0 65 78 63 65 70 74 69 6f 6e 20 69 6e 20 5c 22 7b  exception in \"{
36de0 30 7d 5c 22 20 6d 65 74 68 6f 64 3a 20 7b 31 7d  0}\" method: {1}
36df0 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
36e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36e10 64 65 73 74 72 6f 79 20 3f 20 22 78 44 65 73 74  destroy ? "xDest
36e20 72 6f 79 22 20 3a 20 22 78 44 69 73 63 6f 6e 6e  roy" : "xDisconn
36e30 65 63 74 22 2c 20 65 29 29 3b 0d 0a 20 20 20 20  ect", e));..    
36e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36e50 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
36e60 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
36e70 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
36e80 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
36e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36ea0 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e      // do nothin
36eb0 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g...            
36ec0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
36ed0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
36ee0 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20    finally..     
36ef0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
36f00 20 20 20 20 20 20 20 20 20 20 46 72 65 65 54 61            FreeTa
36f10 62 6c 65 28 70 56 74 61 62 29 3b 0d 0a 20 20 20  ble(pVtab);..   
36f20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
36f30 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
36f40 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
36f50 2e 45 72 72 6f 72 3b 0d 0a 20 20 20 20 20 20 20  .Error;..       
36f60 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
36f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36fb0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
36fc0 20 23 72 65 67 69 6f 6e 20 53 74 61 74 69 63 20   #region Static 
36fd0 45 72 72 6f 72 20 48 61 6e 64 6c 69 6e 67 20 48  Error Handling H
36fe0 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20  elper Methods.. 
36ff0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
37000 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
37010 2f 20 41 72 72 61 6e 67 65 73 20 66 6f 72 20 74  / Arranges for t
37020 68 65 20 73 70 65 63 69 66 69 65 64 20 65 72 72  he specified err
37030 6f 72 20 6d 65 73 73 61 67 65 20 74 6f 20 62 65  or message to be
37040 20 70 6c 61 63 65 64 20 69 6e 74 6f 20 74 68 65   placed into the
37050 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 7a 45  ..        /// zE
37060 72 72 4d 73 67 20 66 69 65 6c 64 20 6f 66 20 61  rrMsg field of a
37070 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65   sqlite3_vtab de
37080 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2c  rived structure,
37090 20 66 72 65 65 69 6e 67 20 74 68 65 0d 0a 20 20   freeing the..  
370a0 20 20 20 20 20 20 2f 2f 2f 20 65 78 69 73 74 69        /// existi
370b0 6e 67 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65  ng error message
370c0 2c 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20 20  , if any...     
370d0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
370e0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
370f0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75  param name="modu
37100 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  le">..        //
37110 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
37120 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f  "SQLiteModule" /
37130 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
37140 65 20 74 6f 20 62 65 20 75 73 65 64 2e 0d 0a 20  e to be used... 
37150 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
37160 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
37170 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
37180 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  tab">..        /
37190 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f  // The native po
371a0 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c  inter to the sql
371b0 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65  ite3_vtab derive
371c0 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20  d structure...  
371d0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
371e0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
371f0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c 6f 67  <param name="log
37200 45 72 72 6f 72 73 22 3e 0d 0a 20 20 20 20 20 20  Errors">..      
37210 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
37220 66 20 74 68 69 73 20 65 72 72 6f 72 20 6d 65 73  f this error mes
37230 73 61 67 65 20 73 68 6f 75 6c 64 20 61 6c 73 6f  sage should also
37240 20 62 65 20 6c 6f 67 67 65 64 20 75 73 69 6e 67   be logged using
37250 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
37260 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  / <see cref="SQL
37270 69 74 65 4c 6f 67 22 20 2f 3e 20 63 6c 61 73 73  iteLog" /> class
37280 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
37290 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
372a0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
372b0 3d 22 65 72 72 6f 72 22 3e 0d 0a 20 20 20 20 20  ="error">..     
372c0 20 20 20 2f 2f 2f 20 54 68 65 20 65 72 72 6f 72     /// The error
372d0 20 6d 65 73 73 61 67 65 2e 0d 0a 20 20 20 20 20   message...     
372e0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
372f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
37300 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
37310 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 75 70 6f  /// Non-zero upo
37320 6e 20 73 75 63 63 65 73 73 2e 0d 0a 20 20 20 20  n success...    
37330 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
37340 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  s>..        priv
37350 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  ate static bool 
37360 53 65 74 54 61 62 6c 65 45 72 72 6f 72 28 0d 0a  SetTableError(..
37370 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
37380 74 65 4d 6f 64 75 6c 65 20 6d 6f 64 75 6c 65 2c  teModule module,
37390 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
373a0 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
373b0 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6c 6f           bool lo
373c0 67 45 72 72 6f 72 73 2c 0d 0a 20 20 20 20 20 20  gErrors,..      
373d0 20 20 20 20 20 20 73 74 72 69 6e 67 20 65 72 72        string err
373e0 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  or..            
373f0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
37400 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
37410 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
37420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
37430 20 28 6c 6f 67 45 72 72 6f 72 73 29 0d 0a 20 20   (logErrors)..  
37440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
37450 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
37460 20 20 20 20 20 53 51 4c 69 74 65 4c 6f 67 2e 4c       SQLiteLog.L
37470 6f 67 4d 65 73 73 61 67 65 28 53 51 4c 69 74 65  ogMessage(SQLite
37480 45 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 2c  ErrorCode.Error,
37490 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
374a0 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e 67            String
374b0 2e 46 6f 72 6d 61 74 28 43 75 6c 74 75 72 65 49  .Format(CultureI
374c0 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
374d0 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
374e0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 56 69               "Vi
374f0 72 74 75 61 6c 20 74 61 62 6c 65 20 65 72 72 6f  rtual table erro
37500 72 3a 20 7b 30 7d 22 2c 20 65 72 72 6f 72 29 29  r: {0}", error))
37510 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
37520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
37530 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
37540 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74  .            cat
37550 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
37560 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
37570 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
37580 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ...            }
37590 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
375a0 69 66 20 28 70 56 74 61 62 20 3d 3d 20 49 6e 74  if (pVtab == Int
375b0 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
375c0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
375d0 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  n false;....    
375e0 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66 73          int offs
375f0 65 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20  et = 0;....     
37600 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20         offset = 
37610 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65  SQLiteMarshal.Ne
37620 78 74 4f 66 66 73 65 74 4f 66 28 6f 66 66 73 65  xtOffsetOf(offse
37630 74 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c 0d  t, IntPtr.Size,.
37640 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
37650 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a   sizeof(int));..
37660 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 66  ..            of
37670 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72  fset = SQLiteMar
37680 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f  shal.NextOffsetO
37690 66 28 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66  f(offset, sizeof
376a0 28 69 6e 74 29 2c 0d 0a 20 20 20 20 20 20 20 20  (int),..        
376b0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 2e 53          IntPtr.S
376c0 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ize);....       
376d0 20 20 20 20 20 49 6e 74 50 74 72 20 70 45 72 72       IntPtr pErr
376e0 6f 72 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  or = SQLiteMarsh
376f0 61 6c 2e 52 65 61 64 49 6e 74 50 74 72 28 70 56  al.ReadIntPtr(pV
37700 74 61 62 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d  tab, offset);...
37710 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
37720 28 70 45 72 72 6f 72 20 21 3d 20 49 6e 74 50 74  (pError != IntPt
37730 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
37740 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
37750 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 65          SQLiteMe
37760 6d 6f 72 79 2e 46 72 65 65 28 70 45 72 72 6f 72  mory.Free(pError
37770 29 3b 20 70 45 72 72 6f 72 20 3d 20 49 6e 74 50  ); pError = IntP
37780 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20  tr.Zero;..      
37790 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
377a0 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74  Marshal.WriteInt
377b0 50 74 72 28 70 56 74 61 62 2c 20 6f 66 66 73 65  Ptr(pVtab, offse
377c0 74 2c 20 70 45 72 72 6f 72 29 3b 0d 0a 20 20 20  t, pError);..   
377d0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
377e0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65 72            if (er
377f0 72 6f 72 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ror == null)..  
37800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
37810 74 75 72 6e 20 74 72 75 65 3b 0d 0a 0d 0a 20 20  turn true;....  
37820 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 73            bool s
37830 75 63 63 65 73 73 20 3d 20 66 61 6c 73 65 3b 0d  uccess = false;.
37840 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ...            t
37850 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
37860 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
37870 20 20 20 70 45 72 72 6f 72 20 3d 20 53 51 4c 69     pError = SQLi
37880 74 65 53 74 72 69 6e 67 2e 55 74 66 38 49 6e 74  teString.Utf8Int
37890 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28 65 72  PtrFromString(er
378a0 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ror);..         
378b0 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72         SQLiteMar
378c0 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 50 74 72  shal.WriteIntPtr
378d0 28 70 56 74 61 62 2c 20 6f 66 66 73 65 74 2c 20  (pVtab, offset, 
378e0 70 45 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20  pError);..      
378f0 20 20 20 20 20 20 20 20 20 20 73 75 63 63 65 73            succes
37900 73 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  s = true;..     
37910 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
37920 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20        finally.. 
37930 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
37940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
37950 20 28 21 73 75 63 63 65 73 73 20 26 26 20 28 70   (!success && (p
37960 45 72 72 6f 72 20 21 3d 20 49 6e 74 50 74 72 2e  Error != IntPtr.
37970 5a 65 72 6f 29 29 0d 0a 20 20 20 20 20 20 20 20  Zero))..        
37980 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
37990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
379a0 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46 72 65 65  QLiteMemory.Free
379b0 28 70 45 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20  (pError);..     
379c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
379d0 45 72 72 6f 72 20 3d 20 49 6e 74 50 74 72 2e 5a  Error = IntPtr.Z
379e0 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ero;..          
379f0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
37a00 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
37a10 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 75 63        return suc
37a20 63 65 73 73 3b 0d 0a 20 20 20 20 20 20 20 20 7d  cess;..        }
37a30 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
37a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37a80 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
37a90 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
37aa0 20 20 20 20 20 20 2f 2f 2f 20 41 72 72 61 6e 67        /// Arrang
37ab0 65 73 20 66 6f 72 20 74 68 65 20 73 70 65 63 69  es for the speci
37ac0 66 69 65 64 20 65 72 72 6f 72 20 6d 65 73 73 61  fied error messa
37ad0 67 65 20 74 6f 20 62 65 20 70 6c 61 63 65 64 20  ge to be placed 
37ae0 69 6e 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  into the..      
37af0 20 20 2f 2f 2f 20 7a 45 72 72 4d 73 67 20 66 69    /// zErrMsg fi
37b00 65 6c 64 20 6f 66 20 61 20 73 71 6c 69 74 65 33  eld of a sqlite3
37b10 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74  _vtab derived st
37b20 72 75 63 74 75 72 65 2c 20 66 72 65 65 69 6e 67  ructure, freeing
37b30 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
37b40 2f 20 65 78 69 73 74 69 6e 67 20 65 72 72 6f 72  / existing error
37b50 20 6d 65 73 73 61 67 65 2c 20 69 66 20 61 6e 79   message, if any
37b60 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
37b70 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
37b80 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
37b90 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20  me="module">..  
37ba0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
37bb0 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d  ee cref="SQLiteM
37bc0 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74  odule" /> object
37bd0 20 69 6e 73 74 61 6e 63 65 20 74 6f 20 62 65 20   instance to be 
37be0 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  used...        /
37bf0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
37c00 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
37c10 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20  name="table">.. 
37c20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
37c30 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
37c40 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e  VirtualTable" />
37c50 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
37c60 20 75 73 65 64 20 74 6f 0d 0a 20 20 20 20 20 20   used to..      
37c70 20 20 2f 2f 2f 20 6c 6f 6f 6b 75 70 20 74 68 65    /// lookup the
37c80 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
37c90 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76  to the sqlite3_v
37ca0 74 61 62 20 64 65 72 69 76 65 64 20 73 74 72 75  tab derived stru
37cb0 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  cture...        
37cc0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
37cd0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
37ce0 20 6e 61 6d 65 3d 22 6c 6f 67 45 72 72 6f 72 73   name="logErrors
37cf0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
37d00 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 69 73  Non-zero if this
37d10 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 73   error message s
37d20 68 6f 75 6c 64 20 61 6c 73 6f 20 62 65 20 6c 6f  hould also be lo
37d30 67 67 65 64 20 75 73 69 6e 67 20 74 68 65 0d 0a  gged using the..
37d40 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
37d50 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4c 6f 67   cref="SQLiteLog
37d60 22 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20 20 20  " /> clas