System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact e7938655d23455a7b6ff816eddcdaeed6583809d:


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 20 65 73 74 69 6d 61 74 65 64 43 6f 73 74 3b  e estimatedCost;
8970: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
8980: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
8990: 20 2f 2f 2f 20 45 73 74 69 6d 61 74 65 64 20 63   /// Estimated c
89a0: 6f 73 74 20 6f 66 20 75 73 69 6e 67 20 74 68 69  ost of using thi
89b0: 73 20 69 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20  s index...      
89c0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
89d0: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
89e0: 20 64 6f 75 62 6c 65 20 45 73 74 69 6d 61 74 65   double Estimate
89f0: 64 43 6f 73 74 0d 0a 20 20 20 20 20 20 20 20 7b  dCost..        {
8a00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
8a10: 74 20 7b 20 72 65 74 75 72 6e 20 65 73 74 69 6d  t { return estim
8a20: 61 74 65 64 43 6f 73 74 3b 20 7d 0d 0a 20 20 20  atedCost; }..   
8a30: 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 65           set { e
8a40: 73 74 69 6d 61 74 65 64 43 6f 73 74 20 3d 20 76  stimatedCost = v
8a50: 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20  alue; }..       
8a60: 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
8a70: 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20  region..    }.. 
8a80: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
8a90: 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
8aa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8ab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8ae0: 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
8af0: 53 51 4c 69 74 65 49 6e 64 65 78 20 48 65 6c 70  SQLiteIndex Help
8b00: 65 72 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f  er Class..    //
8b10: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
8b20: 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20   /// This class 
8b30: 72 65 70 72 65 73 65 6e 74 73 20 74 68 65 20 76  represents the v
8b40: 61 72 69 6f 75 73 20 69 6e 70 75 74 73 20 61 6e  arious inputs an
8b50: 64 20 6f 75 74 70 75 74 73 20 75 73 65 64 20 77  d outputs used w
8b60: 69 74 68 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f  ith the..    ///
8b70: 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
8b80: 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65  iteManagedModule
8b90: 2e 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 20 6d  .BestIndex" /> m
8ba0: 65 74 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20  ethod...    /// 
8bb0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
8bc0: 70 75 62 6c 69 63 20 73 65 61 6c 65 64 20 63 6c  public sealed cl
8bd0: 61 73 73 20 53 51 4c 69 74 65 49 6e 64 65 78 0d  ass SQLiteIndex.
8be0: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
8bf0: 23 72 65 67 69 6f 6e 20 49 6e 74 65 72 6e 61 6c  #region Internal
8c00: 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20   Constructors.. 
8c10: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
8c20: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
8c30: 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20  / Constructs an 
8c40: 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73  instance of this
8c50: 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20   class...       
8c60: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
8c70: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
8c80: 72 61 6d 20 6e 61 6d 65 3d 22 6e 43 6f 6e 73 74  ram name="nConst
8c90: 72 61 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20  raint">..       
8ca0: 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20   /// The number 
8cb0: 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  of <see cref="SQ
8cc0: 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61  LiteIndexConstra
8cd0: 69 6e 74 22 20 2f 3e 20 28 61 6e 64 0d 0a 20 20  int" /> (and..  
8ce0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
8cf0: 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78  ref="SQLiteIndex
8d00: 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 22  ConstraintUsage"
8d10: 20 2f 3e 29 20 69 6e 73 74 61 6e 63 65 73 20 74   />) instances t
8d20: 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70  o..        /// p
8d30: 72 65 2d 61 6c 6c 6f 63 61 74 65 20 73 70 61 63  re-allocate spac
8d40: 65 20 66 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20  e for...        
8d50: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
8d60: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
8d70: 20 6e 61 6d 65 3d 22 6e 4f 72 64 65 72 42 79 22   name="nOrderBy"
8d80: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
8d90: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 3c 73 65  he number of <se
8da0: 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e  e cref="SQLiteIn
8db0: 64 65 78 4f 72 64 65 72 42 79 22 20 2f 3e 20 69  dexOrderBy" /> i
8dc0: 6e 73 74 61 6e 63 65 73 20 74 6f 0d 0a 20 20 20  nstances to..   
8dd0: 20 20 20 20 20 2f 2f 2f 20 70 72 65 2d 61 6c 6c       /// pre-all
8de0: 6f 63 61 74 65 20 73 70 61 63 65 20 66 6f 72 2e  ocate space for.
8df0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
8e00: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
8e10: 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 49  internal SQLiteI
8e20: 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20 20 20  ndex(..         
8e30: 20 20 20 69 6e 74 20 6e 43 6f 6e 73 74 72 61 69     int nConstrai
8e40: 6e 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nt,..           
8e50: 20 69 6e 74 20 6e 4f 72 64 65 72 42 79 0d 0a 20   int nOrderBy.. 
8e60: 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
8e70: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
8e80: 20 20 20 20 20 69 6e 70 75 74 73 20 3d 20 6e 65       inputs = ne
8e90: 77 20 53 51 4c 69 74 65 49 6e 64 65 78 49 6e 70  w SQLiteIndexInp
8ea0: 75 74 73 28 6e 43 6f 6e 73 74 72 61 69 6e 74 2c  uts(nConstraint,
8eb0: 20 6e 4f 72 64 65 72 42 79 29 3b 0d 0a 20 20 20   nOrderBy);..   
8ec0: 20 20 20 20 20 20 20 20 20 6f 75 74 70 75 74 73           outputs
8ed0: 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 49 6e 64   = new SQLiteInd
8ee0: 65 78 4f 75 74 70 75 74 73 28 6e 43 6f 6e 73 74  exOutputs(nConst
8ef0: 72 61 69 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20  raint);..       
8f00: 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
8f10: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
8f20: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
8f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
8f70: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 6e 74       #region Int
8f80: 65 72 6e 61 6c 20 4d 61 72 73 68 61 6c 20 48 65  ernal Marshal He
8f90: 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20  lper Methods..  
8fa0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
8fb0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
8fc0: 20 43 6f 6e 76 65 72 74 73 20 61 20 6e 61 74 69   Converts a nati
8fd0: 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20  ve pointer to a 
8fe0: 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 69  native sqlite3_i
8ff0: 6e 64 65 78 5f 69 6e 66 6f 20 73 74 72 75 63 74  ndex_info struct
9000: 75 72 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ure..        ///
9010: 20 69 6e 74 6f 20 61 20 6e 65 77 20 3c 73 65 65   into a new <see
9020: 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64   cref="SQLiteInd
9030: 65 78 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  ex" /> object in
9040: 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20  stance...       
9050: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
9060: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
9070: 72 61 6d 20 6e 61 6d 65 3d 22 70 49 6e 64 65 78  ram name="pIndex
9080: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
9090: 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  The native point
90a0: 65 72 20 74 6f 20 74 68 65 20 6e 61 74 69 76 65  er to the native
90b0: 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69   sqlite3_index_i
90c0: 6e 66 6f 20 73 74 72 75 63 74 75 72 65 20 74 6f  nfo structure to
90d0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f  ..        /// co
90e0: 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 20 20  nvert...        
90f0: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
9100: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
9110: 20 6e 61 6d 65 3d 22 69 6e 64 65 78 22 3e 0d 0a   name="index">..
9120: 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e          /// Upon
9130: 20 73 75 63 63 65 73 73 2c 20 74 68 69 73 20 70   success, this p
9140: 61 72 61 6d 65 74 65 72 20 77 69 6c 6c 20 62 65  arameter will be
9150: 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e   modified to con
9160: 74 61 69 6e 20 74 68 65 20 6e 65 77 6c 79 0d 0a  tain the newly..
9170: 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 72 65 61          /// crea
9180: 74 65 64 20 3c 73 65 65 20 63 72 65 66 3d 22 53  ted <see cref="S
9190: 51 4c 69 74 65 49 6e 64 65 78 22 20 2f 3e 20 6f  QLiteIndex" /> o
91a0: 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d  bject instance..
91b0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
91c0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 69  aram>..        i
91d0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 76  nternal static v
91e0: 6f 69 64 20 46 72 6f 6d 49 6e 74 50 74 72 28 0d  oid FromIntPtr(.
91f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
9200: 50 74 72 20 70 49 6e 64 65 78 2c 0d 0a 20 20 20  Ptr pIndex,..   
9210: 20 20 20 20 20 20 20 20 20 72 65 66 20 53 51 4c           ref SQL
9220: 69 74 65 49 6e 64 65 78 20 69 6e 64 65 78 0d 0a  iteIndex index..
9230: 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
9240: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
9250: 20 20 20 20 20 20 69 66 20 28 70 49 6e 64 65 78        if (pIndex
9260: 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
9270: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9280: 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20    return;....   
9290: 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66           int off
92a0: 73 65 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20  set = 0;....    
92b0: 20 20 20 20 20 20 20 20 69 6e 74 20 6e 43 6f 6e          int nCon
92c0: 73 74 72 61 69 6e 74 20 3d 20 53 51 4c 69 74 65  straint = SQLite
92d0: 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 33  Marshal.ReadInt3
92e0: 32 28 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74  2(pIndex, offset
92f0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
9300: 20 20 6f 66 66 73 65 74 20 2b 3d 20 53 51 4c 69    offset += SQLi
9310: 74 65 4d 61 72 73 68 61 6c 2e 53 69 7a 65 4f 66  teMarshal.SizeOf
9320: 53 74 72 75 63 74 49 6e 74 28 29 3b 0d 0a 0d 0a  StructInt();....
9330: 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
9340: 74 72 20 70 43 6f 6e 73 74 72 61 69 6e 74 20 3d  tr pConstraint =
9350: 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52   SQLiteMarshal.R
9360: 65 61 64 49 6e 74 50 74 72 28 70 49 6e 64 65 78  eadIntPtr(pIndex
9370: 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20  , offset);....  
9380: 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
9390: 20 2b 3d 20 49 6e 74 50 74 72 2e 53 69 7a 65 3b   += IntPtr.Size;
93a0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
93b0: 69 6e 74 20 6e 4f 72 64 65 72 42 79 20 3d 20 53  int nOrderBy = S
93c0: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61  QLiteMarshal.Rea
93d0: 64 49 6e 74 33 32 28 70 49 6e 64 65 78 2c 20 6f  dInt32(pIndex, o
93e0: 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  ffset);....     
93f0: 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 2b 3d         offset +=
9400: 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 53   SQLiteMarshal.S
9410: 69 7a 65 4f 66 53 74 72 75 63 74 49 6e 74 28 29  izeOfStructInt()
9420: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
9430: 20 49 6e 74 50 74 72 20 70 4f 72 64 65 72 42 79   IntPtr pOrderBy
9440: 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c   = SQLiteMarshal
9450: 2e 52 65 61 64 49 6e 74 50 74 72 28 70 49 6e 64  .ReadIntPtr(pInd
9460: 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a  ex, offset);....
9470: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 65              inde
9480: 78 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 49 6e  x = new SQLiteIn
9490: 64 65 78 28 6e 43 6f 6e 73 74 72 61 69 6e 74 2c  dex(nConstraint,
94a0: 20 6e 4f 72 64 65 72 42 79 29 3b 0d 0a 0d 0a 20   nOrderBy);.... 
94b0: 20 20 20 20 20 20 20 20 20 20 20 54 79 70 65 20             Type 
94c0: 69 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 54  indexConstraintT
94d0: 79 70 65 20 3d 20 74 79 70 65 6f 66 28 0d 0a 20  ype = typeof(.. 
94e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55                 U
94f0: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
9500: 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ds.sqlite3_index
9510: 5f 63 6f 6e 73 74 72 61 69 6e 74 29 3b 0d 0a 0d  _constraint);...
9520: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
9530: 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e   sizeOfConstrain
9540: 74 54 79 70 65 20 3d 20 4d 61 72 73 68 61 6c 2e  tType = Marshal.
9550: 53 69 7a 65 4f 66 28 69 6e 64 65 78 43 6f 6e 73  SizeOf(indexCons
9560: 74 72 61 69 6e 74 54 79 70 65 29 3b 0d 0a 0d 0a  traintType);....
9570: 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20              for 
9580: 28 69 6e 74 20 69 43 6f 6e 73 74 72 61 69 6e 74  (int iConstraint
9590: 20 3d 20 30 3b 20 69 43 6f 6e 73 74 72 61 69 6e   = 0; iConstrain
95a0: 74 20 3c 20 6e 43 6f 6e 73 74 72 61 69 6e 74 3b  t < nConstraint;
95b0: 20 69 43 6f 6e 73 74 72 61 69 6e 74 2b 2b 29 0d   iConstraint++).
95c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
95d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
95e0: 49 6e 74 50 74 72 20 70 4f 66 66 73 65 74 20 3d  IntPtr pOffset =
95f0: 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 49   SQLiteMarshal.I
9600: 6e 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28 0d  ntPtrForOffset(.
9610: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9620: 20 20 20 20 20 70 43 6f 6e 73 74 72 61 69 6e 74       pConstraint
9630: 2c 20 69 43 6f 6e 73 74 72 61 69 6e 74 20 2a 20  , iConstraint * 
9640: 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74  sizeOfConstraint
9650: 54 79 70 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Type);....      
9660: 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
9670: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
9680: 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73  lite3_index_cons
9690: 74 72 61 69 6e 74 20 63 6f 6e 73 74 72 61 69 6e  traint constrain
96a0: 74 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t =..           
96b0: 20 20 20 20 20 20 20 20 20 28 55 6e 73 61 66 65           (Unsafe
96c0: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
96d0: 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73  lite3_index_cons
96e0: 74 72 61 69 6e 74 29 0d 0a 20 20 20 20 20 20 20  traint)..       
96f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9700: 20 4d 61 72 73 68 61 6c 2e 50 74 72 54 6f 53 74   Marshal.PtrToSt
9710: 72 75 63 74 75 72 65 28 70 4f 66 66 73 65 74 2c  ructure(pOffset,
9720: 20 69 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74   indexConstraint
9730: 54 79 70 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Type);....      
9740: 20 20 20 20 20 20 20 20 20 20 69 6e 64 65 78 2e            index.
9750: 49 6e 70 75 74 73 2e 43 6f 6e 73 74 72 61 69 6e  Inputs.Constrain
9760: 74 73 5b 69 43 6f 6e 73 74 72 61 69 6e 74 5d 20  ts[iConstraint] 
9770: 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  =..             
9780: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
9790: 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74  eIndexConstraint
97a0: 28 63 6f 6e 73 74 72 61 69 6e 74 29 3b 0d 0a 20  (constraint);.. 
97b0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
97c0: 20 20 20 20 20 20 20 20 20 20 20 20 54 79 70 65              Type
97d0: 20 69 6e 64 65 78 4f 72 64 65 72 42 79 54 79 70   indexOrderByTyp
97e0: 65 20 3d 20 74 79 70 65 6f 66 28 0d 0a 20 20 20  e = typeof(..   
97f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73               Uns
9800: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
9810: 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f  .sqlite3_index_o
9820: 72 64 65 72 62 79 29 3b 0d 0a 0d 0a 20 20 20 20  rderby);....    
9830: 20 20 20 20 20 20 20 20 69 6e 74 20 73 69 7a 65          int size
9840: 4f 66 4f 72 64 65 72 42 79 54 79 70 65 20 3d 20  OfOrderByType = 
9850: 4d 61 72 73 68 61 6c 2e 53 69 7a 65 4f 66 28 69  Marshal.SizeOf(i
9860: 6e 64 65 78 4f 72 64 65 72 42 79 54 79 70 65 29  ndexOrderByType)
9870: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
9880: 20 66 6f 72 20 28 69 6e 74 20 69 4f 72 64 65 72   for (int iOrder
9890: 42 79 20 3d 20 30 3b 20 69 4f 72 64 65 72 42 79  By = 0; iOrderBy
98a0: 20 3c 20 6e 4f 72 64 65 72 42 79 3b 20 69 4f 72   < nOrderBy; iOr
98b0: 64 65 72 42 79 2b 2b 29 0d 0a 20 20 20 20 20 20  derBy++)..      
98c0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
98d0: 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
98e0: 70 4f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65  pOffset = SQLite
98f0: 4d 61 72 73 68 61 6c 2e 49 6e 74 50 74 72 46 6f  Marshal.IntPtrFo
9900: 72 4f 66 66 73 65 74 28 0d 0a 20 20 20 20 20 20  rOffset(..      
9910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 4f                pO
9920: 72 64 65 72 42 79 2c 20 69 4f 72 64 65 72 42 79  rderBy, iOrderBy
9930: 20 2a 20 73 69 7a 65 4f 66 4f 72 64 65 72 42 79   * sizeOfOrderBy
9940: 54 79 70 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Type);....      
9950: 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
9960: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
9970: 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65  lite3_index_orde
9980: 72 62 79 20 6f 72 64 65 72 42 79 20 3d 0d 0a 20  rby orderBy =.. 
9990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
99a0: 20 20 20 28 55 6e 73 61 66 65 4e 61 74 69 76 65     (UnsafeNative
99b0: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
99c0: 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 29 0d 0a  index_orderby)..
99d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
99e0: 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e          Marshal.
99f0: 50 74 72 54 6f 53 74 72 75 63 74 75 72 65 28 70  PtrToStructure(p
9a00: 4f 66 66 73 65 74 2c 20 69 6e 64 65 78 4f 72 64  Offset, indexOrd
9a10: 65 72 42 79 54 79 70 65 29 3b 0d 0a 0d 0a 20 20  erByType);....  
9a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
9a30: 64 65 78 2e 49 6e 70 75 74 73 2e 4f 72 64 65 72  dex.Inputs.Order
9a40: 42 79 73 5b 69 4f 72 64 65 72 42 79 5d 20 3d 0d  Bys[iOrderBy] =.
9a50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9a60: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 49       new SQLiteI
9a70: 6e 64 65 78 4f 72 64 65 72 42 79 28 6f 72 64 65  ndexOrderBy(orde
9a80: 72 42 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  rBy);..         
9a90: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
9aa0: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
9ab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9af0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
9b00: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
9b10: 20 20 20 20 20 2f 2f 2f 20 50 6f 70 75 6c 61 74       /// Populat
9b20: 65 73 20 74 68 65 20 6f 75 74 70 75 74 73 20 6f  es the outputs o
9b30: 66 20 61 20 70 72 65 2d 61 6c 6c 6f 63 61 74 65  f a pre-allocate
9b40: 64 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33  d native sqlite3
9b50: 5f 69 6e 64 65 78 5f 69 6e 66 6f 0d 0a 20 20 20  _index_info..   
9b60: 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75       /// structu
9b70: 72 65 20 75 73 69 6e 67 20 61 6e 20 65 78 69 73  re using an exis
9b80: 74 69 6e 67 20 3c 73 65 65 20 63 72 65 66 3d 22  ting <see cref="
9b90: 53 51 4c 69 74 65 49 6e 64 65 78 22 20 2f 3e 20  SQLiteIndex" /> 
9ba0: 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20  object..        
9bb0: 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20  /// instance... 
9bc0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
9bd0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
9be0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
9bf0: 69 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20 20 20  index">..       
9c00: 20 2f 2f 2f 20 54 68 65 20 65 78 69 73 74 69 6e   /// The existin
9c10: 67 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  g <see cref="SQL
9c20: 69 74 65 49 6e 64 65 78 22 20 2f 3e 20 6f 62 6a  iteIndex" /> obj
9c30: 65 63 74 20 69 6e 73 74 61 6e 63 65 20 63 6f 6e  ect instance con
9c40: 74 61 69 6e 69 6e 67 0d 0a 20 20 20 20 20 20 20  taining..       
9c50: 20 2f 2f 2f 20 74 68 65 20 6f 75 74 70 75 74 20   /// the output 
9c60: 64 61 74 61 20 74 6f 20 75 73 65 2e 0d 0a 20 20  data to use...  
9c70: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
9c80: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
9c90: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 49 6e  <param name="pIn
9ca0: 64 65 78 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  dex">..        /
9cb0: 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f  // The native po
9cc0: 69 6e 74 65 72 20 74 6f 20 74 68 65 20 70 72 65  inter to the pre
9cd0: 2d 61 6c 6c 6f 63 61 74 65 64 20 6e 61 74 69 76  -allocated nativ
9ce0: 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  e sqlite3_index_
9cf0: 69 6e 66 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f  info..        //
9d00: 2f 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20  / structure...  
9d10: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
9d20: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65  m>..        inte
9d30: 72 6e 61 6c 20 73 74 61 74 69 63 20 76 6f 69 64  rnal static void
9d40: 20 54 6f 49 6e 74 50 74 72 28 0d 0a 20 20 20 20   ToIntPtr(..    
9d50: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e          SQLiteIn
9d60: 64 65 78 20 69 6e 64 65 78 2c 0d 0a 20 20 20 20  dex index,..    
9d70: 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
9d80: 49 6e 64 65 78 0d 0a 20 20 20 20 20 20 20 20 20  Index..         
9d90: 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
9da0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
9db0: 28 28 69 6e 64 65 78 20 3d 3d 20 6e 75 6c 6c 29  ((index == null)
9dc0: 20 7c 7c 20 28 69 6e 64 65 78 2e 49 6e 70 75 74   || (index.Input
9dd0: 73 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 0d 0a 20  s == null) ||.. 
9de0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
9df0: 69 6e 64 65 78 2e 49 6e 70 75 74 73 2e 43 6f 6e  index.Inputs.Con
9e00: 73 74 72 61 69 6e 74 73 20 3d 3d 20 6e 75 6c 6c  straints == null
9e10: 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20  ) ||..          
9e20: 20 20 20 20 20 20 28 69 6e 64 65 78 2e 4f 75 74        (index.Out
9e30: 70 75 74 73 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c  puts == null) ||
9e40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9e50: 20 20 28 69 6e 64 65 78 2e 4f 75 74 70 75 74 73    (index.Outputs
9e60: 2e 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  .ConstraintUsage
9e70: 73 20 3d 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20  s == null))..   
9e80: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
9e90: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
9ea0: 72 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  rn;..           
9eb0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
9ec0: 20 20 69 66 20 28 70 49 6e 64 65 78 20 3d 3d 20    if (pIndex == 
9ed0: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
9ee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
9ef0: 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  turn;....       
9f00: 20 20 20 20 20 69 6e 74 20 6f 66 66 73 65 74 20       int offset 
9f10: 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  = 0;....        
9f20: 20 20 20 20 69 6e 74 20 6e 43 6f 6e 73 74 72 61      int nConstra
9f30: 69 6e 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73  int = SQLiteMars
9f40: 68 61 6c 2e 52 65 61 64 49 6e 74 33 32 28 70 49  hal.ReadInt32(pI
9f50: 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a  ndex, offset);..
9f60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
9f70: 20 28 6e 43 6f 6e 73 74 72 61 69 6e 74 20 21 3d   (nConstraint !=
9f80: 20 69 6e 64 65 78 2e 49 6e 70 75 74 73 2e 43 6f   index.Inputs.Co
9f90: 6e 73 74 72 61 69 6e 74 73 2e 4c 65 6e 67 74 68  nstraints.Length
9fa0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
9fb0: 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20     return;....  
9fc0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 43            if (nC
9fd0: 6f 6e 73 74 72 61 69 6e 74 20 21 3d 20 69 6e 64  onstraint != ind
9fe0: 65 78 2e 4f 75 74 70 75 74 73 2e 43 6f 6e 73 74  ex.Outputs.Const
9ff0: 72 61 69 6e 74 55 73 61 67 65 73 2e 4c 65 6e 67  raintUsages.Leng
a000: 74 68 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  th)..           
a010: 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a       return;....
a020: 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
a030: 65 74 20 2b 3d 20 53 51 4c 69 74 65 4d 61 72 73  et += SQLiteMars
a040: 68 61 6c 2e 53 69 7a 65 4f 66 53 74 72 75 63 74  hal.SizeOfStruct
a050: 49 6e 74 28 29 20 2b 20 49 6e 74 50 74 72 2e 53  Int() + IntPtr.S
a060: 69 7a 65 20 2b 0d 0a 20 20 20 20 20 20 20 20 20  ize +..         
a070: 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72         SQLiteMar
a080: 73 68 61 6c 2e 53 69 7a 65 4f 66 53 74 72 75 63  shal.SizeOfStruc
a090: 74 49 6e 74 28 29 20 2b 20 49 6e 74 50 74 72 2e  tInt() + IntPtr.
a0a0: 53 69 7a 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Size;....       
a0b0: 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 6f 6e       IntPtr pCon
a0c0: 73 74 72 61 69 6e 74 55 73 61 67 65 20 3d 20 53  straintUsage = S
a0d0: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61  QLiteMarshal.Rea
a0e0: 64 49 6e 74 50 74 72 28 70 49 6e 64 65 78 2c 20  dIntPtr(pIndex, 
a0f0: 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20  offset);....    
a100: 20 20 20 20 20 20 20 20 69 6e 74 20 73 69 7a 65          int size
a110: 4f 66 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  OfConstraintUsag
a120: 65 54 79 70 65 20 3d 20 4d 61 72 73 68 61 6c 2e  eType = Marshal.
a130: 53 69 7a 65 4f 66 28 74 79 70 65 6f 66 28 0d 0a  SizeOf(typeof(..
a140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a150: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
a160: 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65  ods.sqlite3_inde
a170: 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61  x_constraint_usa
a180: 67 65 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ge));....       
a190: 20 20 20 20 20 66 6f 72 20 28 69 6e 74 20 69 43       for (int iC
a1a0: 6f 6e 73 74 72 61 69 6e 74 20 3d 20 30 3b 20 69  onstraint = 0; i
a1b0: 43 6f 6e 73 74 72 61 69 6e 74 20 3c 20 6e 43 6f  Constraint < nCo
a1c0: 6e 73 74 72 61 69 6e 74 3b 20 69 43 6f 6e 73 74  nstraint; iConst
a1d0: 72 61 69 6e 74 2b 2b 29 0d 0a 20 20 20 20 20 20  raint++)..      
a1e0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
a1f0: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
a200: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
a210: 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74  ite3_index_const
a220: 72 61 69 6e 74 5f 75 73 61 67 65 20 63 6f 6e 73  raint_usage cons
a230: 74 72 61 69 6e 74 55 73 61 67 65 20 3d 0d 0a 20  traintUsage =.. 
a240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a250: 20 20 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74     new UnsafeNat
a260: 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
a270: 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61  e3_index_constra
a280: 69 6e 74 5f 75 73 61 67 65 28 0d 0a 20 20 20 20  int_usage(..    
a290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a2a0: 20 20 20 20 69 6e 64 65 78 2e 4f 75 74 70 75 74      index.Output
a2b0: 73 2e 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  s.ConstraintUsag
a2c0: 65 73 5b 69 43 6f 6e 73 74 72 61 69 6e 74 5d 29  es[iConstraint])
a2d0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
a2e0: 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 53 74 72       Marshal.Str
a2f0: 75 63 74 75 72 65 54 6f 50 74 72 28 0d 0a 20 20  uctureToPtr(..  
a300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a310: 20 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67    constraintUsag
a320: 65 2c 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c  e, SQLiteMarshal
a330: 2e 49 6e 74 50 74 72 46 6f 72 4f 66 66 73 65 74  .IntPtrForOffset
a340: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
a350: 20 20 20 20 20 20 20 70 43 6f 6e 73 74 72 61 69         pConstrai
a360: 6e 74 55 73 61 67 65 2c 20 69 43 6f 6e 73 74 72  ntUsage, iConstr
a370: 61 69 6e 74 20 2a 20 73 69 7a 65 4f 66 43 6f 6e  aint * sizeOfCon
a380: 73 74 72 61 69 6e 74 55 73 61 67 65 54 79 70 65  straintUsageType
a390: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
a3a0: 20 20 20 20 20 20 20 20 66 61 6c 73 65 29 3b 0d          false);.
a3b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
a3c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 66  ..            of
a3d0: 66 73 65 74 20 2b 3d 20 49 6e 74 50 74 72 2e 53  fset += IntPtr.S
a3e0: 69 7a 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ize;....        
a3f0: 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61      SQLiteMarsha
a400: 6c 2e 57 72 69 74 65 49 6e 74 33 32 28 70 49 6e  l.WriteInt32(pIn
a410: 64 65 78 2c 20 6f 66 66 73 65 74 2c 0d 0a 20 20  dex, offset,..  
a420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
a430: 64 65 78 2e 4f 75 74 70 75 74 73 2e 49 6e 64 65  dex.Outputs.Inde
a440: 78 4e 75 6d 62 65 72 29 3b 0d 0a 0d 0a 20 20 20  xNumber);....   
a450: 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20           offset 
a460: 2b 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c  += SQLiteMarshal
a470: 2e 53 69 7a 65 4f 66 53 74 72 75 63 74 49 6e 74  .SizeOfStructInt
a480: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
a490: 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c     SQLiteMarshal
a4a0: 2e 57 72 69 74 65 49 6e 74 50 74 72 28 70 49 6e  .WriteIntPtr(pIn
a4b0: 64 65 78 2c 20 6f 66 66 73 65 74 2c 0d 0a 20 20  dex, offset,..  
a4c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
a4d0: 4c 69 74 65 53 74 72 69 6e 67 2e 55 74 66 38 49  LiteString.Utf8I
a4e0: 6e 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28  ntPtrFromString(
a4f0: 69 6e 64 65 78 2e 4f 75 74 70 75 74 73 2e 49 6e  index.Outputs.In
a500: 64 65 78 53 74 72 69 6e 67 29 29 3b 0d 0a 0d 0a  dexString));....
a510: 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
a520: 65 74 20 2b 3d 20 49 6e 74 50 74 72 2e 53 69 7a  et += IntPtr.Siz
a530: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
a540: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
a550: 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 65 20 6a 75    // NOTE: We ju
a560: 73 74 20 61 6c 6c 6f 63 61 74 65 64 20 74 68 65  st allocated the
a570: 20 49 6e 64 65 78 53 74 72 69 6e 67 20 66 69 65   IndexString fie
a580: 6c 64 3b 20 74 68 65 72 65 66 6f 72 65 2c 20 77  ld; therefore, w
a590: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  e..            /
a5a0: 2f 20 20 20 20 20 20 20 6e 65 65 64 20 74 6f 20  /       need to 
a5b0: 73 65 74 20 74 68 65 20 4e 65 65 64 54 6f 46 72  set the NeedToFr
a5c0: 65 65 49 6e 64 65 78 53 74 72 69 6e 67 20 66 69  eeIndexString fi
a5d0: 65 6c 64 20 74 6f 20 6e 6f 6e 2d 7a 65 72 6f 2e  eld to non-zero.
a5e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
a5f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
a600: 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74  LiteMarshal.Writ
a610: 65 49 6e 74 33 32 28 70 49 6e 64 65 78 2c 20 6f  eInt32(pIndex, o
a620: 66 66 73 65 74 2c 20 31 29 3b 0d 0a 0d 0a 20 20  ffset, 1);....  
a630: 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
a640: 20 2b 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61   += SQLiteMarsha
a650: 6c 2e 53 69 7a 65 4f 66 53 74 72 75 63 74 49 6e  l.SizeOfStructIn
a660: 74 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  t();....        
a670: 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61      SQLiteMarsha
a680: 6c 2e 57 72 69 74 65 49 6e 74 33 32 28 70 49 6e  l.WriteInt32(pIn
a690: 64 65 78 2c 20 6f 66 66 73 65 74 2c 0d 0a 20 20  dex, offset,..  
a6a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
a6b0: 64 65 78 2e 4f 75 74 70 75 74 73 2e 4f 72 64 65  dex.Outputs.Orde
a6c0: 72 42 79 43 6f 6e 73 75 6d 65 64 29 3b 0d 0a 0d  rByConsumed);...
a6d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66  .            off
a6e0: 73 65 74 20 2b 3d 20 53 51 4c 69 74 65 4d 61 72  set += SQLiteMar
a6f0: 73 68 61 6c 2e 53 69 7a 65 4f 66 53 74 72 75 63  shal.SizeOfStruc
a700: 74 49 6e 74 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  tInt();....     
a710: 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72         SQLiteMar
a720: 73 68 61 6c 2e 57 72 69 74 65 44 6f 75 62 6c 65  shal.WriteDouble
a730: 28 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 2c  (pIndex, offset,
a740: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a750: 20 20 69 6e 64 65 78 2e 4f 75 74 70 75 74 73 2e    index.Outputs.
a760: 45 73 74 69 6d 61 74 65 64 43 6f 73 74 29 3b 0d  EstimatedCost);.
a770: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
a780: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
a790: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
a7a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a7b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a7c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a7d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a7e0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
a7f0: 67 69 6f 6e 20 50 75 62 6c 69 63 20 50 72 6f 70  gion Public Prop
a800: 65 72 74 69 65 73 0d 0a 20 20 20 20 20 20 20 20  erties..        
a810: 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 49 6e  private SQLiteIn
a820: 64 65 78 49 6e 70 75 74 73 20 69 6e 70 75 74 73  dexInputs inputs
a830: 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ;..        /// <
a840: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
a850: 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
a860: 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78  ref="SQLiteIndex
a870: 49 6e 70 75 74 73 22 20 2f 3e 20 6f 62 6a 65 63  Inputs" /> objec
a880: 74 20 69 6e 73 74 61 6e 63 65 20 63 6f 6e 74 61  t instance conta
a890: 69 6e 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 2f  ining..        /
a8a0: 2f 2f 20 74 68 65 20 69 6e 70 75 74 73 20 74 6f  // the inputs to
a8b0: 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
a8c0: 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f  ISQLiteManagedMo
a8d0: 64 75 6c 65 2e 42 65 73 74 49 6e 64 65 78 22 20  dule.BestIndex" 
a8e0: 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  />..        /// 
a8f0: 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
a900: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
a910: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
a920: 53 51 4c 69 74 65 49 6e 64 65 78 49 6e 70 75 74  SQLiteIndexInput
a930: 73 20 49 6e 70 75 74 73 0d 0a 20 20 20 20 20 20  s Inputs..      
a940: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
a950: 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 69 6e   get { return in
a960: 70 75 74 73 3b 20 7d 0d 0a 20 20 20 20 20 20 20  puts; }..       
a970: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
a980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a9a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a9b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a9c0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
a9d0: 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 49   private SQLiteI
a9e0: 6e 64 65 78 4f 75 74 70 75 74 73 20 6f 75 74 70  ndexOutputs outp
a9f0: 75 74 73 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f  uts;..        //
aa00: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
aa10: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
aa20: 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e  e cref="SQLiteIn
aa30: 64 65 78 4f 75 74 70 75 74 73 22 20 2f 3e 20 6f  dexOutputs" /> o
aa40: 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 63  bject instance c
aa50: 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20 20 20 20  ontaining..     
aa60: 20 20 20 2f 2f 2f 20 74 68 65 20 6f 75 74 70 75     /// the outpu
aa70: 74 73 20 66 72 6f 6d 20 74 68 65 20 3c 73 65 65  ts from the <see
aa80: 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61   cref="ISQLiteMa
aa90: 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 42 65 73 74  nagedModule.Best
aaa0: 49 6e 64 65 78 22 20 2f 3e 0d 0a 20 20 20 20 20  Index" />..     
aab0: 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 2e 0d 0a     /// method...
aac0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
aad0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
aae0: 70 75 62 6c 69 63 20 53 51 4c 69 74 65 49 6e 64  public SQLiteInd
aaf0: 65 78 4f 75 74 70 75 74 73 20 4f 75 74 70 75 74  exOutputs Output
ab00: 73 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  s..        {..  
ab10: 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20            get { 
ab20: 72 65 74 75 72 6e 20 6f 75 74 70 75 74 73 3b 20  return outputs; 
ab30: 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  }..        }..  
ab40: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
ab50: 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e  ..    }..    #en
ab60: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
ab70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ab80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ab90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
abb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
abc0: 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65    #region SQLite
abd0: 56 69 72 74 75 61 6c 54 61 62 6c 65 20 42 61 73  VirtualTable Bas
abe0: 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f  e Class..    ///
abf0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
ac00: 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20 72  /// This class r
ac10: 65 70 72 65 73 65 6e 74 73 20 61 20 6d 61 6e 61  epresents a mana
ac20: 67 65 64 20 76 69 72 74 75 61 6c 20 74 61 62 6c  ged virtual tabl
ac30: 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e implementation
ac40: 2e 20 20 49 74 20 69 73 0d 0a 20 20 20 20 2f 2f  .  It is..    //
ac50: 2f 20 6e 6f 74 20 73 65 61 6c 65 64 20 61 6e 64  / not sealed and
ac60: 20 73 68 6f 75 6c 64 20 62 65 20 75 73 65 64 20   should be used 
ac70: 61 73 20 74 68 65 20 62 61 73 65 20 63 6c 61 73  as the base clas
ac80: 73 20 66 6f 72 20 61 6e 79 20 75 73 65 72 2d 64  s for any user-d
ac90: 65 66 69 6e 65 64 0d 0a 20 20 20 20 2f 2f 2f 20  efined..    /// 
aca0: 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 63 6c  virtual table cl
acb0: 61 73 73 65 73 20 69 6d 70 6c 65 6d 65 6e 74 65  asses implemente
acc0: 64 20 69 6e 20 6d 61 6e 61 67 65 64 20 63 6f 64  d in managed cod
acd0: 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  e...    /// </su
ace0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c  mmary>..    publ
acf0: 69 63 20 63 6c 61 73 73 20 53 51 4c 69 74 65 56  ic class SQLiteV
ad00: 69 72 74 75 61 6c 54 61 62 6c 65 20 3a 0d 0a 20  irtualTable :.. 
ad10: 20 20 20 20 20 20 20 20 20 20 20 49 53 51 4c 69             ISQLi
ad20: 74 65 4e 61 74 69 76 65 48 61 6e 64 6c 65 2c 20  teNativeHandle, 
ad30: 49 44 69 73 70 6f 73 61 62 6c 65 20 2f 2a 20 4e  IDisposable /* N
ad40: 4f 54 20 53 45 41 4c 45 44 20 2a 2f 0d 0a 20 20  OT SEALED */..  
ad50: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65    {..        #re
ad60: 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43 6f 6e  gion Private Con
ad70: 73 74 61 6e 74 73 0d 0a 20 20 20 20 20 20 20 20  stants..        
ad80: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
ad90: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 69         /// The i
ada0: 6e 64 65 78 20 77 69 74 68 69 6e 20 74 68 65 20  ndex within the 
adb0: 61 72 72 61 79 20 6f 66 20 73 74 72 69 6e 67 73  array of strings
adc0: 20 70 72 6f 76 69 64 65 64 20 74 6f 20 74 68 65   provided to the
add0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
ade0: 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
adf0: 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43 72  ManagedModule.Cr
ae00: 65 61 74 65 22 20 2f 3e 20 61 6e 64 0d 0a 20 20  eate" /> and..  
ae10: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
ae20: 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61  ref="ISQLiteMana
ae30: 67 65 64 4d 6f 64 75 6c 65 2e 43 6f 6e 6e 65 63  gedModule.Connec
ae40: 74 22 20 2f 3e 20 6d 65 74 68 6f 64 73 20 63 6f  t" /> methods co
ae50: 6e 74 61 69 6e 69 6e 67 20 74 68 65 0d 0a 20 20  ntaining the..  
ae60: 20 20 20 20 20 20 2f 2f 2f 20 6e 61 6d 65 20 6f        /// name o
ae70: 66 20 74 68 65 20 6d 6f 64 75 6c 65 20 69 6d 70  f the module imp
ae80: 6c 65 6d 65 6e 74 69 6e 67 20 74 68 69 73 20 76  lementing this v
ae90: 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20  irtual table... 
aea0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
aeb0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
aec0: 72 69 76 61 74 65 20 63 6f 6e 73 74 20 69 6e 74  rivate const int
aed0: 20 4d 6f 64 75 6c 65 4e 61 6d 65 49 6e 64 65 78   ModuleNameIndex
aee0: 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20   = 0;....       
aef0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
af00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
af10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
af20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
af30: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
af40: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
af50: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
af60: 68 65 20 69 6e 64 65 78 20 77 69 74 68 69 6e 20  he index within 
af70: 74 68 65 20 61 72 72 61 79 20 6f 66 20 73 74 72  the array of str
af80: 69 6e 67 73 20 70 72 6f 76 69 64 65 64 20 74 6f  ings provided to
af90: 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
afa0: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  / <see cref="ISQ
afb0: 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c  LiteManagedModul
afc0: 65 2e 43 72 65 61 74 65 22 20 2f 3e 20 61 6e 64  e.Create" /> and
afd0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
afe0: 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
aff0: 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43 6f  ManagedModule.Co
b000: 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64  nnect" /> method
b010: 73 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65  s containing the
b020: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 61  ..        /// na
b030: 6d 65 20 6f 66 20 74 68 65 20 64 61 74 61 62 61  me of the databa
b040: 73 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68  se containing th
b050: 69 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  is virtual table
b060: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
b070: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
b080: 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74     private const
b090: 20 69 6e 74 20 44 61 74 61 62 61 73 65 4e 61 6d   int DatabaseNam
b0a0: 65 49 6e 64 65 78 20 3d 20 31 3b 0d 0a 0d 0a 20  eIndex = 1;.... 
b0b0: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
b0c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b0d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b0e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b0f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
b100: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
b110: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
b120: 20 2f 2f 2f 20 54 68 65 20 69 6e 64 65 78 20 77   /// The index w
b130: 69 74 68 69 6e 20 74 68 65 20 61 72 72 61 79 20  ithin the array 
b140: 6f 66 20 73 74 72 69 6e 67 73 20 70 72 6f 76 69  of strings provi
b150: 64 65 64 20 74 6f 20 74 68 65 0d 0a 20 20 20 20  ded to the..    
b160: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
b170: 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65  f="ISQLiteManage
b180: 64 4d 6f 64 75 6c 65 2e 43 72 65 61 74 65 22 20  dModule.Create" 
b190: 2f 3e 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20  /> and..        
b1a0: 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
b1b0: 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64  SQLiteManagedMod
b1c0: 75 6c 65 2e 43 6f 6e 6e 65 63 74 22 20 2f 3e 20  ule.Connect" /> 
b1d0: 6d 65 74 68 6f 64 73 20 63 6f 6e 74 61 69 6e 69  methods containi
b1e0: 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  ng the..        
b1f0: 2f 2f 2f 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  /// name of the 
b200: 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a  virtual table...
b210: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
b220: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
b230: 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 69 6e  private const in
b240: 74 20 54 61 62 6c 65 4e 61 6d 65 49 6e 64 65 78  t TableNameIndex
b250: 20 3d 20 32 3b 0d 0a 20 20 20 20 20 20 20 20 23   = 2;..        #
b260: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
b270: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
b280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b2a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b2b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
b2c0: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
b2d0: 50 75 62 6c 69 63 20 43 6f 6e 73 74 72 75 63 74  Public Construct
b2e0: 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ors..        ///
b2f0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
b300: 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63      /// Construc
b310: 74 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f  ts an instance o
b320: 66 20 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20  f this class... 
b330: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
b340: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
b350: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
b360: 61 72 67 75 6d 65 6e 74 73 22 3e 0d 0a 20 20 20  arguments">..   
b370: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 72 69       /// The ori
b380: 67 69 6e 61 6c 20 61 72 72 61 79 20 6f 66 20 73  ginal array of s
b390: 74 72 69 6e 67 73 20 70 72 6f 76 69 64 65 64 20  trings provided 
b3a0: 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
b3b0: 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
b3c0: 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64  SQLiteManagedMod
b3d0: 75 6c 65 2e 43 72 65 61 74 65 22 20 2f 3e 20 61  ule.Create" /> a
b3e0: 6e 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  nd..        /// 
b3f0: 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
b400: 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e  teManagedModule.
b410: 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68  Connect" /> meth
b420: 6f 64 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ods...        //
b430: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
b440: 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
b450: 65 56 69 72 74 75 61 6c 54 61 62 6c 65 28 0d 0a  eVirtualTable(..
b460: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
b470: 6e 67 5b 5d 20 61 72 67 75 6d 65 6e 74 73 0d 0a  ng[] arguments..
b480: 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
b490: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
b4a0: 20 20 20 20 20 20 74 68 69 73 2e 61 72 67 75 6d        this.argum
b4b0: 65 6e 74 73 20 3d 20 61 72 67 75 6d 65 6e 74 73  ents = arguments
b4c0: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
b4d0: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
b4e0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
b4f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b530: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
b540: 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 50 72  region Public Pr
b550: 6f 70 65 72 74 69 65 73 0d 0a 20 20 20 20 20 20  operties..      
b560: 20 20 70 72 69 76 61 74 65 20 73 74 72 69 6e 67    private string
b570: 5b 5d 20 61 72 67 75 6d 65 6e 74 73 3b 0d 0a 20  [] arguments;.. 
b580: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
b590: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
b5a0: 2f 20 54 68 65 20 6f 72 69 67 69 6e 61 6c 20 61  / The original a
b5b0: 72 72 61 79 20 6f 66 20 73 74 72 69 6e 67 73 20  rray of strings 
b5c0: 70 72 6f 76 69 64 65 64 20 74 6f 20 74 68 65 0d  provided to the.
b5d0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
b5e0: 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d  e cref="ISQLiteM
b5f0: 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43 72 65  anagedModule.Cre
b600: 61 74 65 22 20 2f 3e 20 61 6e 64 0d 0a 20 20 20  ate" /> and..   
b610: 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
b620: 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67  ef="ISQLiteManag
b630: 65 64 4d 6f 64 75 6c 65 2e 43 6f 6e 6e 65 63 74  edModule.Connect
b640: 22 20 2f 3e 20 6d 65 74 68 6f 64 73 2e 0d 0a 20  " /> methods... 
b650: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
b660: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
b670: 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 73 74  ublic virtual st
b680: 72 69 6e 67 5b 5d 20 41 72 67 75 6d 65 6e 74 73  ring[] Arguments
b690: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
b6a0: 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 43           get { C
b6b0: 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20  heckDisposed(); 
b6c0: 72 65 74 75 72 6e 20 61 72 67 75 6d 65 6e 74 73  return arguments
b6d0: 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ; }..        }..
b6e0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
b6f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b730: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
b740: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
b750: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65      /// The name
b760: 20 6f 66 20 74 68 65 20 6d 6f 64 75 6c 65 20 69   of the module i
b770: 6d 70 6c 65 6d 65 6e 74 69 6e 67 20 74 68 69 73  mplementing this
b780: 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d   virtual table..
b790: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
b7a0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
b7b0: 20 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20   public virtual 
b7c0: 73 74 72 69 6e 67 20 4d 6f 64 75 6c 65 4e 61 6d  string ModuleNam
b7d0: 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  e..        {..  
b7e0: 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20            get.. 
b7f0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
b800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 68                Ch
b810: 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a  eckDisposed();..
b820: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b830: 20 20 73 74 72 69 6e 67 5b 5d 20 61 72 67 75 6d    string[] argum
b840: 65 6e 74 73 20 3d 20 41 72 67 75 6d 65 6e 74 73  ents = Arguments
b850: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
b860: 20 20 20 20 20 69 66 20 28 28 61 72 67 75 6d 65       if ((argume
b870: 6e 74 73 20 21 3d 20 6e 75 6c 6c 29 20 26 26 0d  nts != null) &&.
b880: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b890: 20 20 20 20 20 28 61 72 67 75 6d 65 6e 74 73 2e       (arguments.
b8a0: 4c 65 6e 67 74 68 20 3e 20 4d 6f 64 75 6c 65 4e  Length > ModuleN
b8b0: 61 6d 65 49 6e 64 65 78 29 29 0d 0a 20 20 20 20  ameIndex))..    
b8c0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
b8d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b8e0: 20 20 20 72 65 74 75 72 6e 20 61 72 67 75 6d 65     return argume
b8f0: 6e 74 73 5b 4d 6f 64 75 6c 65 4e 61 6d 65 49 6e  nts[ModuleNameIn
b900: 64 65 78 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20  dex];..         
b910: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
b920: 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a            else..
b930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b940: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
b950: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
b960: 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll;..           
b970: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
b980: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
b990: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
b9a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b9b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b9c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b9d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b9e0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
b9f0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
ba00: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
ba10: 6d 65 20 6f 66 20 74 68 65 20 64 61 74 61 62 61  me of the databa
ba20: 73 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68  se containing th
ba30: 69 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  is virtual table
ba40: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
ba50: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
ba60: 20 20 20 70 75 62 6c 69 63 20 76 69 72 74 75 61     public virtua
ba70: 6c 20 73 74 72 69 6e 67 20 44 61 74 61 62 61 73  l string Databas
ba80: 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 7b  eName..        {
ba90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
baa0: 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  t..            {
bab0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bac0: 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28    CheckDisposed(
bad0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
bae0: 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 61        string[] a
baf0: 72 67 75 6d 65 6e 74 73 20 3d 20 41 72 67 75 6d  rguments = Argum
bb00: 65 6e 74 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ents;....       
bb10: 20 20 20 20 20 20 20 20 20 69 66 20 28 28 61 72           if ((ar
bb20: 67 75 6d 65 6e 74 73 20 21 3d 20 6e 75 6c 6c 29  guments != null)
bb30: 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20   &&..           
bb40: 20 20 20 20 20 20 20 20 20 28 61 72 67 75 6d 65           (argume
bb50: 6e 74 73 2e 4c 65 6e 67 74 68 20 3e 20 44 61 74  nts.Length > Dat
bb60: 61 62 61 73 65 4e 61 6d 65 49 6e 64 65 78 29 29  abaseNameIndex))
bb70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bb80: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
bb90: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
bba0: 61 72 67 75 6d 65 6e 74 73 5b 44 61 74 61 62 61  arguments[Databa
bbb0: 73 65 4e 61 6d 65 49 6e 64 65 78 5d 3b 0d 0a 20  seNameIndex];.. 
bbc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
bbd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bbe0: 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20    else..        
bbf0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
bc00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
bc10: 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20  eturn null;..   
bc20: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
bc30: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
bc40: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
bc50: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
bc60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bc70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bc80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bc90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
bca0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
bcb0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
bcc0: 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68  / The name of th
bcd0: 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e  e virtual table.
bce0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
bcf0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
bd00: 20 20 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c    public virtual
bd10: 20 73 74 72 69 6e 67 20 54 61 62 6c 65 4e 61 6d   string TableNam
bd20: 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  e..        {..  
bd30: 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20            get.. 
bd40: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
bd50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 68                Ch
bd60: 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a  eckDisposed();..
bd70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bd80: 20 20 73 74 72 69 6e 67 5b 5d 20 61 72 67 75 6d    string[] argum
bd90: 65 6e 74 73 20 3d 20 41 72 67 75 6d 65 6e 74 73  ents = Arguments
bda0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
bdb0: 20 20 20 20 20 69 66 20 28 28 61 72 67 75 6d 65       if ((argume
bdc0: 6e 74 73 20 21 3d 20 6e 75 6c 6c 29 20 26 26 0d  nts != null) &&.
bdd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
bde0: 20 20 20 20 20 28 61 72 67 75 6d 65 6e 74 73 2e       (arguments.
bdf0: 4c 65 6e 67 74 68 20 3e 20 54 61 62 6c 65 4e 61  Length > TableNa
be00: 6d 65 49 6e 64 65 78 29 29 0d 0a 20 20 20 20 20  meIndex))..     
be10: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
be20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
be30: 20 20 72 65 74 75 72 6e 20 61 72 67 75 6d 65 6e    return argumen
be40: 74 73 5b 54 61 62 6c 65 4e 61 6d 65 49 6e 64 65  ts[TableNameInde
be50: 78 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  x];..           
be60: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
be70: 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20          else..  
be80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
be90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
bea0: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
beb0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
bec0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
bed0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
bee0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
bef0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
bf00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bf10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bf20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bf30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bf40: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
bf50: 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
bf60: 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20  Methods..       
bf70: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
bf80: 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65          /// Atte
bf90: 6d 70 74 73 20 74 6f 20 72 65 63 6f 72 64 20 74  mpts to record t
bfa0: 68 65 20 72 65 6e 61 6d 69 6e 67 20 6f 66 20 74  he renaming of t
bfb0: 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
bfc0: 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20   associated..   
bfd0: 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68       /// with th
bfe0: 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  is object instan
bff0: 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ce...        ///
c000: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
c010: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
c020: 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20  name="name">..  
c030: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65        /// The ne
c040: 77 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 76  w name for the v
c050: 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20  irtual table... 
c060: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
c070: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
c080: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
c090: 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
c0a0: 20 75 70 6f 6e 20 73 75 63 63 65 73 73 2e 0d 0a   upon success...
c0b0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
c0c0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
c0d0: 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 62  public virtual b
c0e0: 6f 6f 6c 20 52 65 6e 61 6d 65 28 0d 0a 20 20 20  ool Rename(..   
c0f0: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
c100: 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20  name..          
c110: 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
c120: 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63              Chec
c130: 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a  kDisposed();....
c140: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
c150: 28 61 72 67 75 6d 65 6e 74 73 20 21 3d 20 6e 75  (arguments != nu
c160: 6c 6c 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20  ll) &&..        
c170: 20 20 20 20 20 20 20 20 28 61 72 67 75 6d 65 6e          (argumen
c180: 74 73 2e 4c 65 6e 67 74 68 20 3e 20 54 61 62 6c  ts.Length > Tabl
c190: 65 4e 61 6d 65 49 6e 64 65 78 29 29 0d 0a 20 20  eNameIndex))..  
c1a0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
c1b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 61 72 67               arg
c1c0: 75 6d 65 6e 74 73 5b 54 61 62 6c 65 4e 61 6d 65  uments[TableName
c1d0: 49 6e 64 65 78 5d 20 3d 20 6e 61 6d 65 3b 0d 0a  Index] = name;..
c1e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c1f0: 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20  return true;..  
c200: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
c210: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
c220: 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20  n false;..      
c230: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
c240: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
c250: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
c260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
c2a0: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 53        #region IS
c2b0: 51 4c 69 74 65 4e 61 74 69 76 65 48 61 6e 64 6c  QLiteNativeHandl
c2c0: 65 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20  e Members..     
c2d0: 20 20 20 70 72 69 76 61 74 65 20 49 6e 74 50 74     private IntPt
c2e0: 72 20 6e 61 74 69 76 65 48 61 6e 64 6c 65 3b 0d  r nativeHandle;.
c2f0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
c300: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
c310: 2f 2f 2f 20 52 65 74 75 72 6e 73 20 74 68 65 20  /// Returns the 
c320: 75 6e 64 65 72 6c 79 69 6e 67 20 53 51 4c 69 74  underlying SQLit
c330: 65 20 6e 61 74 69 76 65 20 68 61 6e 64 6c 65 20  e native handle 
c340: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
c350: 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  this..        //
c360: 2f 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  / object instanc
c370: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
c380: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
c390: 20 20 20 20 70 75 62 6c 69 63 20 76 69 72 74 75      public virtu
c3a0: 61 6c 20 49 6e 74 50 74 72 20 4e 61 74 69 76 65  al IntPtr Native
c3b0: 48 61 6e 64 6c 65 0d 0a 20 20 20 20 20 20 20 20  Handle..        
c3c0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67  {..            g
c3d0: 65 74 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73  et { CheckDispos
c3e0: 65 64 28 29 3b 20 72 65 74 75 72 6e 20 6e 61 74  ed(); return nat
c3f0: 69 76 65 48 61 6e 64 6c 65 3b 20 7d 0d 0a 20 20  iveHandle; }..  
c400: 20 20 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e            intern
c410: 61 6c 20 73 65 74 20 7b 20 6e 61 74 69 76 65 48  al set { nativeH
c420: 61 6e 64 6c 65 20 3d 20 76 61 6c 75 65 3b 20 7d  andle = value; }
c430: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
c440: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
c450: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
c460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c4a0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
c4b0: 65 67 69 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c  egion IDisposabl
c4c0: 65 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20  e Members..     
c4d0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
c4e0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 69  ..        /// Di
c4f0: 73 70 6f 73 65 73 20 6f 66 20 74 68 69 73 20 6f  sposes of this o
c500: 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d  bject instance..
c510: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
c520: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
c530: 20 70 75 62 6c 69 63 20 76 6f 69 64 20 44 69 73   public void Dis
c540: 70 6f 73 65 28 29 0d 0a 20 20 20 20 20 20 20 20  pose()..        
c550: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 44  {..            D
c560: 69 73 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20  ispose(true);.. 
c570: 20 20 20 20 20 20 20 20 20 20 20 47 43 2e 53 75             GC.Su
c580: 70 70 72 65 73 73 46 69 6e 61 6c 69 7a 65 28 74  ppressFinalize(t
c590: 68 69 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  his);..        }
c5a0: 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
c5b0: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
c5c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c5d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c5e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c5f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c600: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
c610: 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73 70     #region IDisp
c620: 6f 73 61 62 6c 65 20 22 50 61 74 74 65 72 6e 22  osable "Pattern"
c630: 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20   Members..      
c640: 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 64    private bool d
c650: 69 73 70 6f 73 65 64 3b 0d 0a 20 20 20 20 20 20  isposed;..      
c660: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
c670: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 72  .        /// Thr
c680: 6f 77 73 20 61 6e 20 3c 73 65 65 20 63 72 65 66  ows an <see cref
c690: 3d 22 4f 62 6a 65 63 74 44 69 73 70 6f 73 65 64  ="ObjectDisposed
c6a0: 45 78 63 65 70 74 69 6f 6e 22 20 2f 3e 20 69 66  Exception" /> if
c6b0: 20 74 68 69 73 20 6f 62 6a 65 63 74 0d 0a 20 20   this object..  
c6c0: 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e        /// instan
c6d0: 63 65 20 68 61 73 20 62 65 65 6e 20 64 69 73 70  ce has been disp
c6e0: 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  osed...        /
c6f0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
c700: 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 76         private v
c710: 6f 69 64 20 43 68 65 63 6b 44 69 73 70 6f 73 65  oid CheckDispose
c720: 64 28 29 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  d() /* throw */.
c730: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
c740: 54 48 52 4f 57 5f 4f 4e 5f 44 49 53 50 4f 53 45  THROW_ON_DISPOSE
c750: 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  D..            i
c760: 66 20 28 64 69 73 70 6f 73 65 64 29 0d 0a 20 20  f (disposed)..  
c770: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
c780: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72               thr
c790: 6f 77 20 6e 65 77 20 4f 62 6a 65 63 74 44 69 73  ow new ObjectDis
c7a0: 70 6f 73 65 64 45 78 63 65 70 74 69 6f 6e 28 0d  posedException(.
c7b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c7c0: 20 20 20 20 20 74 79 70 65 6f 66 28 53 51 4c 69       typeof(SQLi
c7d0: 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 29 2e  teVirtualTable).
c7e0: 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  Name);..        
c7f0: 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
c800: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
c810: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
c820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
c860: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
c870: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
c880: 2f 20 44 69 73 70 6f 73 65 73 20 6f 66 20 74 68  / Disposes of th
c890: 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  is object instan
c8a0: 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ce...        ///
c8b0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
c8c0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
c8d0: 6e 61 6d 65 3d 22 64 69 73 70 6f 73 69 6e 67 22  name="disposing"
c8e0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
c8f0: 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 69 73 20  on-zero if this 
c900: 6d 65 74 68 6f 64 20 69 73 20 62 65 69 6e 67 20  method is being 
c910: 63 61 6c 6c 65 64 20 66 72 6f 6d 20 74 68 65 0d  called from the.
c920: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
c930: 65 20 63 72 65 66 3d 22 44 69 73 70 6f 73 65 28  e cref="Dispose(
c940: 29 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 20 20 5a  )" /> method.  Z
c950: 65 72 6f 20 69 66 20 74 68 69 73 20 6d 65 74 68  ero if this meth
c960: 6f 64 20 69 73 20 62 65 69 6e 67 20 63 61 6c 6c  od is being call
c970: 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
c980: 66 72 6f 6d 20 74 68 65 20 66 69 6e 61 6c 69 7a  from the finaliz
c990: 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  er...        ///
c9a0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
c9b0: 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 69 72     protected vir
c9c0: 74 75 61 6c 20 76 6f 69 64 20 44 69 73 70 6f 73  tual void Dispos
c9d0: 65 28 62 6f 6f 6c 20 64 69 73 70 6f 73 69 6e 67  e(bool disposing
c9e0: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
c9f0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 64            if (!d
ca00: 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20 20 20  isposed)..      
ca10: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
ca20: 20 20 20 20 20 20 20 20 20 2f 2f 69 66 20 28 64           //if (d
ca30: 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20  isposing)..     
ca40: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 7b 0d 0a             //{..
ca50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ca60: 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  //    //////////
ca70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ca80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
ca90: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
caa0: 20 20 2f 2f 20 64 69 73 70 6f 73 65 20 6d 61 6e    // dispose man
cab0: 61 67 65 64 20 72 65 73 6f 75 72 63 65 73 20 68  aged resources h
cac0: 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20  ere.....        
cad0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f          //    //
cae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
caf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cb00: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
cb10: 20 20 20 20 2f 2f 7d 0d 0a 0d 0a 20 20 20 20 20      //}....     
cb20: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
cb30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cb40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cb50: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
cb60: 20 20 20 2f 2f 20 72 65 6c 65 61 73 65 20 75 6e     // release un
cb70: 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72 63 65  managed resource
cb80: 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20  s here.....     
cb90: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
cba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cbb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cbc0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
cbd0: 20 20 20 20 20 64 69 73 70 6f 73 65 64 20 3d 20       disposed = 
cbe0: 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  true;..         
cbf0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
cc00: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
cc10: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
cc20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cc30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cc40: 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
cc70: 20 20 23 72 65 67 69 6f 6e 20 44 65 73 74 72 75    #region Destru
cc80: 63 74 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ctor..        //
cc90: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
cca0: 20 20 20 20 20 2f 2f 2f 20 46 69 6e 61 6c 69 7a       /// Finaliz
ccb0: 65 73 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69  es this object i
ccc0: 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20  nstance...      
ccd0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
cce0: 0d 0a 20 20 20 20 20 20 20 20 7e 53 51 4c 69 74  ..        ~SQLit
ccf0: 65 56 69 72 74 75 61 6c 54 61 62 6c 65 28 29 0d  eVirtualTable().
cd00: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
cd10: 20 20 20 20 20 20 20 20 44 69 73 70 6f 73 65 28          Dispose(
cd20: 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20 20  false);..       
cd30: 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
cd40: 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20  region..    }.. 
cd50: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
cd60: 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
cd70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cd80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cd90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cda0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cdb0: 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
cdc0: 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
cdd0: 6c 65 43 75 72 73 6f 72 20 42 61 73 65 20 43 6c  leCursor Base Cl
cde0: 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  ass..    /// <su
cdf0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
ce00: 54 68 69 73 20 63 6c 61 73 73 20 72 65 70 72 65  This class repre
ce10: 73 65 6e 74 73 20 61 20 6d 61 6e 61 67 65 64 20  sents a managed 
ce20: 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 63 75  virtual table cu
ce30: 72 73 6f 72 20 69 6d 70 6c 65 6d 65 6e 74 61 74  rsor implementat
ce40: 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 49 74  ion...    /// It
ce50: 20 69 73 20 6e 6f 74 20 73 65 61 6c 65 64 20 61   is not sealed a
ce60: 6e 64 20 73 68 6f 75 6c 64 20 62 65 20 75 73 65  nd should be use
ce70: 64 20 61 73 20 74 68 65 20 62 61 73 65 20 63 6c  d as the base cl
ce80: 61 73 73 20 66 6f 72 20 61 6e 79 0d 0a 20 20 20  ass for any..   
ce90: 20 2f 2f 2f 20 75 73 65 72 2d 64 65 66 69 6e 65   /// user-define
cea0: 64 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  d virtual table 
ceb0: 63 75 72 73 6f 72 20 63 6c 61 73 73 65 73 20 69  cursor classes i
cec0: 6d 70 6c 65 6d 65 6e 74 65 64 20 69 6e 20 6d 61  mplemented in ma
ced0: 6e 61 67 65 64 20 63 6f 64 65 2e 0d 0a 20 20 20  naged code...   
cee0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
cef0: 0a 20 20 20 20 70 75 62 6c 69 63 20 63 6c 61 73  .    public clas
cf00: 73 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  s SQLiteVirtualT
cf10: 61 62 6c 65 43 75 72 73 6f 72 20 3a 0d 0a 20 20  ableCursor :..  
cf20: 20 20 20 20 20 20 20 20 20 20 49 53 51 4c 69 74            ISQLit
cf30: 65 4e 61 74 69 76 65 48 61 6e 64 6c 65 2c 20 49  eNativeHandle, I
cf40: 44 69 73 70 6f 73 61 62 6c 65 20 2f 2a 20 4e 4f  Disposable /* NO
cf50: 54 20 53 45 41 4c 45 44 20 2a 2f 0d 0a 20 20 20  T SEALED */..   
cf60: 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67   {..        #reg
cf70: 69 6f 6e 20 50 75 62 6c 69 63 20 43 6f 6e 73 74  ion Public Const
cf80: 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20  ructors..       
cf90: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
cfa0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73          /// Cons
cfb0: 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e  tructs an instan
cfc0: 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73  ce of this class
cfd0: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
cfe0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
cff0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
d000: 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20  me="table">..   
d010: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
d020: 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69  e cref="SQLiteVi
d030: 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f  rtualTable" /> o
d040: 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61  bject instance a
d050: 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20  ssociated..     
d060: 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73     /// with this
d070: 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
d080: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
d090: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
d0a0: 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 56 69   public SQLiteVi
d0b0: 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72  rtualTableCursor
d0c0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
d0d0: 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
d0e0: 65 20 74 61 62 6c 65 0d 0a 20 20 20 20 20 20 20  e table..       
d0f0: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
d100: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  {..            t
d110: 68 69 73 2e 74 61 62 6c 65 20 3d 20 74 61 62 6c  his.table = tabl
d120: 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  e;..        }.. 
d130: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
d140: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
d150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d190: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
d1a0: 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 50  #region Public P
d1b0: 72 6f 70 65 72 74 69 65 73 0d 0a 20 20 20 20 20  roperties..     
d1c0: 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74     private SQLit
d1d0: 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61  eVirtualTable ta
d1e0: 62 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble;..        //
d1f0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
d200: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
d210: 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69  e cref="SQLiteVi
d220: 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f  rtualTable" /> o
d230: 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61  bject instance a
d240: 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20  ssociated..     
d250: 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73     /// with this
d260: 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
d270: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
d280: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
d290: 20 20 20 70 75 62 6c 69 63 20 76 69 72 74 75 61     public virtua
d2a0: 6c 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  l SQLiteVirtualT
d2b0: 61 62 6c 65 20 54 61 62 6c 65 0d 0a 20 20 20 20  able Table..    
d2c0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
d2d0: 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44 69     get { CheckDi
d2e0: 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75 72 6e  sposed(); return
d2f0: 20 74 61 62 6c 65 3b 20 7d 0d 0a 20 20 20 20 20   table; }..     
d300: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
d310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d350: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
d360: 20 20 20 70 72 69 76 61 74 65 20 69 6e 74 20 69     private int i
d370: 6e 64 65 78 4e 75 6d 62 65 72 3b 0d 0a 20 20 20  ndexNumber;..   
d380: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
d390: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
d3a0: 4e 75 6d 62 65 72 20 75 73 65 64 20 74 6f 20 68  Number used to h
d3b0: 65 6c 70 20 69 64 65 6e 74 69 66 79 20 74 68 65  elp identify the
d3c0: 20 73 65 6c 65 63 74 65 64 20 69 6e 64 65 78 2e   selected index.
d3d0: 20 20 54 68 69 73 20 76 61 6c 75 65 20 77 69 6c    This value wil
d3e0: 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 62  l..        /// b
d3f0: 65 20 73 65 74 20 76 69 61 20 74 68 65 20 3c 73  e set via the <s
d400: 65 65 20 63 72 65 66 3d 22 46 69 6c 74 65 72 22  ee cref="Filter"
d410: 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
d420: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
d430: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ry>..        pub
d440: 6c 69 63 20 76 69 72 74 75 61 6c 20 69 6e 74 20  lic virtual int 
d450: 49 6e 64 65 78 4e 75 6d 62 65 72 0d 0a 20 20 20  IndexNumber..   
d460: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
d470: 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44      get { CheckD
d480: 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75 72  isposed(); retur
d490: 6e 20 69 6e 64 65 78 4e 75 6d 62 65 72 3b 20 7d  n indexNumber; }
d4a0: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
d4b0: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
d4c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d4d0: 2f 2f 2f 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 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
d500: 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
d510: 65 20 73 74 72 69 6e 67 20 69 6e 64 65 78 53 74  e string indexSt
d520: 72 69 6e 67 3b 0d 0a 20 20 20 20 20 20 20 20 2f  ring;..        /
d530: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
d540: 20 20 20 20 20 20 2f 2f 2f 20 53 74 72 69 6e 67        /// String
d550: 20 75 73 65 64 20 74 6f 20 68 65 6c 70 20 69 64   used to help id
d560: 65 6e 74 69 66 79 20 74 68 65 20 73 65 6c 65 63  entify the selec
d570: 74 65 64 20 69 6e 64 65 78 2e 20 20 54 68 69 73  ted index.  This
d580: 20 76 61 6c 75 65 20 77 69 6c 6c 0d 0a 20 20 20   value will..   
d590: 20 20 20 20 20 2f 2f 2f 20 62 65 20 73 65 74 20       /// be set 
d5a0: 76 69 61 20 74 68 65 20 3c 73 65 65 20 63 72 65  via the <see cre
d5b0: 66 3d 22 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65  f="Filter" /> me
d5c0: 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  thod...        /
d5d0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
d5e0: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 69         public vi
d5f0: 72 74 75 61 6c 20 73 74 72 69 6e 67 20 49 6e 64  rtual string Ind
d600: 65 78 53 74 72 69 6e 67 0d 0a 20 20 20 20 20 20  exString..      
d610: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
d620: 20 67 65 74 20 7b 20 43 68 65 63 6b 44 69 73 70   get { CheckDisp
d630: 6f 73 65 64 28 29 3b 20 72 65 74 75 72 6e 20 69  osed(); return i
d640: 6e 64 65 78 53 74 72 69 6e 67 3b 20 7d 0d 0a 20  ndexString; }.. 
d650: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
d660: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
d670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d6a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
d6b0: 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53         private S
d6c0: 51 4c 69 74 65 56 61 6c 75 65 5b 5d 20 76 61 6c  QLiteValue[] val
d6d0: 75 65 73 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ues;..        //
d6e0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
d6f0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c       /// The val
d700: 75 65 73 20 75 73 65 64 20 74 6f 20 66 69 6c 74  ues used to filt
d710: 65 72 20 74 68 65 20 72 6f 77 73 20 72 65 74 75  er the rows retu
d720: 72 6e 65 64 20 76 69 61 20 74 68 69 73 20 63 75  rned via this cu
d730: 72 73 6f 72 20 6f 62 6a 65 63 74 0d 0a 20 20 20  rsor object..   
d740: 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63       /// instanc
d750: 65 2e 20 20 54 68 69 73 20 76 61 6c 75 65 20 77  e.  This value w
d760: 69 6c 6c 20 62 65 20 73 65 74 20 76 69 61 20 74  ill be set via t
d770: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 46 69  he <see cref="Fi
d780: 6c 74 65 72 22 20 2f 3e 0d 0a 20 20 20 20 20 20  lter" />..      
d790: 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 2e 0d 0a 20    /// method... 
d7a0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
d7b0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
d7c0: 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 53 51  ublic virtual SQ
d7d0: 4c 69 74 65 56 61 6c 75 65 5b 5d 20 56 61 6c 75  LiteValue[] Valu
d7e0: 65 73 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  es..        {.. 
d7f0: 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
d800: 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
d810: 3b 20 72 65 74 75 72 6e 20 76 61 6c 75 65 73 3b  ; return values;
d820: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20   }..        }.. 
d830: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
d840: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
d850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d890: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
d8a0: 23 72 65 67 69 6f 6e 20 50 72 6f 74 65 63 74 65  #region Protecte
d8b0: 64 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20  d Methods..     
d8c0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
d8d0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 74  ..        /// At
d8e0: 74 65 6d 70 74 73 20 74 6f 20 70 65 72 73 69 73  tempts to persis
d8f0: 74 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  t the specified 
d900: 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
d910: 65 56 61 6c 75 65 22 20 2f 3e 20 6f 62 6a 65 63  eValue" /> objec
d920: 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  t..        /// i
d930: 6e 73 74 61 6e 63 65 73 20 69 6e 20 6f 72 64 65  nstances in orde
d940: 72 20 74 6f 20 6d 61 6b 65 20 74 68 65 6d 20 61  r to make them a
d950: 76 61 69 6c 61 62 6c 65 20 61 66 74 65 72 20 74  vailable after t
d960: 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
d970: 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
d980: 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e  teManagedModule.
d990: 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f  Filter" /> metho
d9a0: 64 20 72 65 74 75 72 6e 73 2e 0d 0a 20 20 20 20  d returns...    
d9b0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
d9c0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
d9d0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c  <param name="val
d9e0: 75 65 73 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ues">..        /
d9f0: 2f 2f 20 54 68 65 20 61 72 72 61 79 20 6f 66 20  // The array of 
da00: 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
da10: 65 56 61 6c 75 65 22 20 2f 3e 20 6f 62 6a 65 63  eValue" /> objec
da20: 74 20 69 6e 73 74 61 6e 63 65 73 20 74 6f 20 62  t instances to b
da30: 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70  e..        /// p
da40: 65 72 73 69 73 74 65 64 2e 0d 0a 20 20 20 20 20  ersisted...     
da50: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
da60: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
da70: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
da80: 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f  /// The number o
da90: 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  f <see cref="SQL
daa0: 69 74 65 56 61 6c 75 65 22 20 2f 3e 20 6f 62 6a  iteValue" /> obj
dab0: 65 63 74 20 69 6e 73 74 61 6e 63 65 73 20 74 68  ect instances th
dac0: 61 74 20 77 65 72 65 0d 0a 20 20 20 20 20 20 20  at were..       
dad0: 20 2f 2f 2f 20 73 75 63 63 65 73 73 66 75 6c 6c   /// successfull
dae0: 79 20 70 65 72 73 69 73 74 65 64 2e 0d 0a 20 20  y persisted...  
daf0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
db00: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  rns>..        pr
db10: 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20  otected virtual 
db20: 69 6e 74 20 54 72 79 50 65 72 73 69 73 74 56 61  int TryPersistVa
db30: 6c 75 65 73 28 0d 0a 20 20 20 20 20 20 20 20 20  lues(..         
db40: 20 20 20 53 51 4c 69 74 65 56 61 6c 75 65 5b 5d     SQLiteValue[]
db50: 20 76 61 6c 75 65 73 0d 0a 20 20 20 20 20 20 20   values..       
db60: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
db70: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
db80: 6e 74 20 72 65 73 75 6c 74 20 3d 20 30 3b 0d 0a  nt result = 0;..
db90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
dba0: 20 28 76 61 6c 75 65 73 20 21 3d 20 6e 75 6c 6c   (values != null
dbb0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
dbc0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
dbd0: 20 20 66 6f 72 65 61 63 68 20 28 53 51 4c 69 74    foreach (SQLit
dbe0: 65 56 61 6c 75 65 20 76 61 6c 75 65 20 69 6e 20  eValue value in 
dbf0: 76 61 6c 75 65 73 29 0d 0a 20 20 20 20 20 20 20  values)..       
dc00: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
dc10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dc20: 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c  if (value == nul
dc30: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
dc40: 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74              cont
dc50: 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  inue;....       
dc60: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
dc70: 28 76 61 6c 75 65 2e 50 65 72 73 69 73 74 28 29  (value.Persist()
dc80: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
dc90: 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c             resul
dca0: 74 2b 2b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  t++;..          
dcb0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
dcc0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
dcd0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73        return res
dce0: 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ult;..        }.
dcf0: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
dd00: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
dd10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dd20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dd30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dd40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dd50: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
dd60: 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63    #region Public
dd70: 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
dd80: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
dd90: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
dda0: 73 20 6d 65 74 68 6f 64 20 73 68 6f 75 6c 64 20  s method should 
ddb0: 6e 6f 72 6d 61 6c 6c 79 20 62 65 20 75 73 65 64  normally be used
ddc0: 20 62 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20   by the..       
ddd0: 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
dde0: 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f  ISQLiteManagedMo
ddf0: 64 75 6c 65 2e 46 69 6c 74 65 72 22 20 2f 3e 20  dule.Filter" /> 
de00: 6d 65 74 68 6f 64 20 69 6e 20 6f 72 64 65 72 20  method in order 
de10: 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  to..        /// 
de20: 70 65 72 66 6f 72 6d 20 66 69 6c 74 65 72 69 6e  perform filterin
de30: 67 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20  g of the result 
de40: 72 6f 77 73 20 61 6e 64 2f 6f 72 20 74 6f 20 72  rows and/or to r
de50: 65 63 6f 72 64 20 74 68 65 20 66 69 6c 74 65 72  ecord the filter
de60: 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ing..        ///
de70: 20 63 72 69 74 65 72 69 61 20 70 72 6f 76 69 64   criteria provid
de80: 65 64 20 62 79 20 74 68 65 20 53 51 4c 69 74 65  ed by the SQLite
de90: 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a   core library...
dea0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
deb0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
dec0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
ded0: 22 69 6e 64 65 78 4e 75 6d 62 65 72 22 3e 0d 0a  "indexNumber">..
dee0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 75 6d 62          /// Numb
def0: 65 72 20 75 73 65 64 20 74 6f 20 68 65 6c 70 20  er used to help 
df00: 69 64 65 6e 74 69 66 79 20 74 68 65 20 73 65 6c  identify the sel
df10: 65 63 74 65 64 20 69 6e 64 65 78 2e 0d 0a 20 20  ected index...  
df20: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
df30: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
df40: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64  <param name="ind
df50: 65 78 53 74 72 69 6e 67 22 3e 0d 0a 20 20 20 20  exString">..    
df60: 20 20 20 20 2f 2f 2f 20 53 74 72 69 6e 67 20 75      /// String u
df70: 73 65 64 20 74 6f 20 68 65 6c 70 20 69 64 65 6e  sed to help iden
df80: 74 69 66 79 20 74 68 65 20 73 65 6c 65 63 74 65  tify the selecte
df90: 64 20 69 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20  d index...      
dfa0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
dfb0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
dfc0: 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 73 22  am name="values"
dfd0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
dfe0: 68 65 20 76 61 6c 75 65 73 20 63 6f 72 72 65 73  he values corres
dff0: 70 6f 6e 64 69 6e 67 20 74 6f 20 65 61 63 68 20  ponding to each 
e000: 63 6f 6c 75 6d 6e 20 69 6e 20 74 68 65 20 73 65  column in the se
e010: 6c 65 63 74 65 64 20 69 6e 64 65 78 2e 0d 0a 20  lected index... 
e020: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
e030: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  am>..        pub
e040: 6c 69 63 20 76 69 72 74 75 61 6c 20 76 6f 69 64  lic virtual void
e050: 20 46 69 6c 74 65 72 28 0d 0a 20 20 20 20 20 20   Filter(..      
e060: 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65 78 4e        int indexN
e070: 75 6d 62 65 72 2c 0d 0a 20 20 20 20 20 20 20 20  umber,..        
e080: 20 20 20 20 73 74 72 69 6e 67 20 69 6e 64 65 78      string index
e090: 53 74 72 69 6e 67 2c 0d 0a 20 20 20 20 20 20 20  String,..       
e0a0: 20 20 20 20 20 53 51 4c 69 74 65 56 61 6c 75 65       SQLiteValue
e0b0: 5b 5d 20 76 61 6c 75 65 73 0d 0a 20 20 20 20 20  [] values..     
e0c0: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
e0d0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
e0e0: 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
e0f0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
e100: 20 69 66 20 28 28 76 61 6c 75 65 73 20 21 3d 20   if ((values != 
e110: 6e 75 6c 6c 29 20 26 26 0d 0a 20 20 20 20 20 20  null) &&..      
e120: 20 20 20 20 20 20 20 20 20 20 28 54 72 79 50 65            (TryPe
e130: 72 73 69 73 74 56 61 6c 75 65 73 28 76 61 6c 75  rsistValues(valu
e140: 65 73 29 20 21 3d 20 76 61 6c 75 65 73 2e 4c 65  es) != values.Le
e150: 6e 67 74 68 29 29 0d 0a 20 20 20 20 20 20 20 20  ngth))..        
e160: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
e170: 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
e180: 20 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e   SQLiteException
e190: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
e1a0: 20 20 20 20 20 20 20 22 66 61 69 6c 65 64 20 74         "failed t
e1b0: 6f 20 70 65 72 73 69 73 74 20 6f 6e 65 20 6f 72  o persist one or
e1c0: 20 6d 6f 72 65 20 76 61 6c 75 65 73 22 29 3b 0d   more values");.
e1d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
e1e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
e1f0: 69 73 2e 69 6e 64 65 78 4e 75 6d 62 65 72 20 3d  is.indexNumber =
e200: 20 69 6e 64 65 78 4e 75 6d 62 65 72 3b 0d 0a 20   indexNumber;.. 
e210: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
e220: 69 6e 64 65 78 53 74 72 69 6e 67 20 3d 20 69 6e  indexString = in
e230: 64 65 78 53 74 72 69 6e 67 3b 0d 0a 20 20 20 20  dexString;..    
e240: 20 20 20 20 20 20 20 20 74 68 69 73 2e 76 61 6c          this.val
e250: 75 65 73 20 3d 20 76 61 6c 75 65 73 3b 0d 0a 20  ues = values;.. 
e260: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
e270: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
e280: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
e290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e2a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e2b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e2c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
e2d0: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
e2e0: 6f 6e 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65  on ISQLiteNative
e2f0: 48 61 6e 64 6c 65 20 4d 65 6d 62 65 72 73 0d 0a  Handle Members..
e300: 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
e310: 49 6e 74 50 74 72 20 6e 61 74 69 76 65 48 61 6e  IntPtr nativeHan
e320: 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f  dle;..        //
e330: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
e340: 20 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73       /// Returns
e350: 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20   the underlying 
e360: 53 51 4c 69 74 65 20 6e 61 74 69 76 65 20 68 61  SQLite native ha
e370: 6e 64 6c 65 20 61 73 73 6f 63 69 61 74 65 64 20  ndle associated 
e380: 77 69 74 68 20 74 68 69 73 0d 0a 20 20 20 20 20  with this..     
e390: 20 20 20 2f 2f 2f 20 6f 62 6a 65 63 74 20 69 6e     /// object in
e3a0: 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20  stance...       
e3b0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
e3c0: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
e3d0: 76 69 72 74 75 61 6c 20 49 6e 74 50 74 72 20 4e  virtual IntPtr N
e3e0: 61 74 69 76 65 48 61 6e 64 6c 65 0d 0a 20 20 20  ativeHandle..   
e3f0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
e400: 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44      get { CheckD
e410: 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75 72  isposed(); retur
e420: 6e 20 6e 61 74 69 76 65 48 61 6e 64 6c 65 3b 20  n nativeHandle; 
e430: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  }..            i
e440: 6e 74 65 72 6e 61 6c 20 73 65 74 20 7b 20 6e 61  nternal set { na
e450: 74 69 76 65 48 61 6e 64 6c 65 20 3d 20 76 61 6c  tiveHandle = val
e460: 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d  ue; }..        }
e470: 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
e480: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e4c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e4d0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
e4e0: 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73 70     #region IDisp
e4f0: 6f 73 61 62 6c 65 20 4d 65 6d 62 65 72 73 0d 0a  osable Members..
e500: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
e510: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
e520: 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f 66 20 74  // Disposes of t
e530: 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  his object insta
e540: 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nce...        //
e550: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
e560: 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69        public voi
e570: 64 20 44 69 73 70 6f 73 65 28 29 0d 0a 20 20 20  d Dispose()..   
e580: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
e590: 20 20 20 20 44 69 73 70 6f 73 65 28 74 72 75 65      Dispose(true
e5a0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
e5b0: 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61 6c  GC.SuppressFinal
e5c0: 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20  ize(this);..    
e5d0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
e5e0: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
e5f0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
e600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
e640: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
e650: 49 44 69 73 70 6f 73 61 62 6c 65 20 22 50 61 74  IDisposable "Pat
e660: 74 65 72 6e 22 20 4d 65 6d 62 65 72 73 0d 0a 20  tern" Members.. 
e670: 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62         private b
e680: 6f 6f 6c 20 64 69 73 70 6f 73 65 64 3b 0d 0a 20  ool disposed;.. 
e690: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
e6a0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
e6b0: 2f 20 54 68 72 6f 77 73 20 61 6e 20 3c 73 65 65  / Throws an <see
e6c0: 20 63 72 65 66 3d 22 4f 62 6a 65 63 74 44 69 73   cref="ObjectDis
e6d0: 70 6f 73 65 64 45 78 63 65 70 74 69 6f 6e 22 20  posedException" 
e6e0: 2f 3e 20 69 66 20 74 68 69 73 20 6f 62 6a 65 63  /> if this objec
e6f0: 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  t..        /// i
e700: 6e 73 74 61 6e 63 65 20 68 61 73 20 62 65 65 6e  nstance has been
e710: 20 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20 20   disposed...    
e720: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
e730: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  y>..        priv
e740: 61 74 65 20 76 6f 69 64 20 43 68 65 63 6b 44 69  ate void CheckDi
e750: 73 70 6f 73 65 64 28 29 20 2f 2a 20 74 68 72 6f  sposed() /* thro
e760: 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 7b 0d  w */..        {.
e770: 0a 23 69 66 20 54 48 52 4f 57 5f 4f 4e 5f 44 49  .#if THROW_ON_DI
e780: 53 50 4f 53 45 44 0d 0a 20 20 20 20 20 20 20 20  SPOSED..        
e790: 20 20 20 20 69 66 20 28 64 69 73 70 6f 73 65 64      if (disposed
e7a0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
e7b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e7c0: 20 20 74 68 72 6f 77 20 6e 65 77 20 4f 62 6a 65    throw new Obje
e7d0: 63 74 44 69 73 70 6f 73 65 64 45 78 63 65 70 74  ctDisposedExcept
e7e0: 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ion(..          
e7f0: 20 20 20 20 20 20 20 20 20 20 74 79 70 65 6f 66            typeof
e800: 28 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  (SQLiteVirtualTa
e810: 62 6c 65 43 75 72 73 6f 72 29 2e 4e 61 6d 65 29  bleCursor).Name)
e820: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
e830: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
e840: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
e850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e890: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
e8a0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
e8b0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 69 73  .        /// Dis
e8c0: 70 6f 73 65 73 20 6f 66 20 74 68 69 73 20 6f 62  poses of this ob
e8d0: 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a  ject instance...
e8e0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
e8f0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
e900: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
e910: 22 64 69 73 70 6f 73 69 6e 67 22 3e 0d 0a 20 20  "disposing">..  
e920: 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65        /// Non-ze
e930: 72 6f 20 69 66 20 74 68 69 73 20 6d 65 74 68 6f  ro if this metho
e940: 64 20 69 73 20 62 65 69 6e 67 20 63 61 6c 6c 65  d is being calle
e950: 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20  d from the..    
e960: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
e970: 66 3d 22 44 69 73 70 6f 73 65 28 29 22 20 2f 3e  f="Dispose()" />
e980: 20 6d 65 74 68 6f 64 2e 20 20 5a 65 72 6f 20 69   method.  Zero i
e990: 66 20 74 68 69 73 20 6d 65 74 68 6f 64 20 69 73  f this method is
e9a0: 20 62 65 69 6e 67 20 63 61 6c 6c 65 64 0d 0a 20   being called.. 
e9b0: 20 20 20 20 20 20 20 2f 2f 2f 20 66 72 6f 6d 20         /// from 
e9c0: 74 68 65 20 66 69 6e 61 6c 69 7a 65 72 2e 0d 0a  the finalizer...
e9d0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
e9e0: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  ram>..        pr
e9f0: 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20  otected virtual 
ea00: 76 6f 69 64 20 44 69 73 70 6f 73 65 28 62 6f 6f  void Dispose(boo
ea10: 6c 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20  l disposing)..  
ea20: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
ea30: 20 20 20 20 20 69 66 20 28 21 64 69 73 70 6f 73       if (!dispos
ea40: 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ed)..           
ea50: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
ea60: 20 20 20 20 2f 2f 69 66 20 28 64 69 73 70 6f 73      //if (dispos
ea70: 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ing)..          
ea80: 20 20 20 20 20 20 2f 2f 7b 0d 0a 20 20 20 20 20        //{..     
ea90: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
eaa0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
eab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eac0: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20  /////..         
ead0: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 20         //    // 
eae0: 64 69 73 70 6f 73 65 20 6d 61 6e 61 67 65 64 20  dispose managed 
eaf0: 72 65 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e  resources here..
eb00: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
eb10: 20 20 20 2f 2f 20 20 20 20 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 0d 0a 20  /////////////.. 
eb40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
eb50: 2f 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  /}....          
eb60: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
eb70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eb80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
eb90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
eba0: 20 72 65 6c 65 61 73 65 20 75 6e 6d 61 6e 61 67   release unmanag
ebb0: 65 64 20 72 65 73 6f 75 72 63 65 73 20 68 65 72  ed resources her
ebc0: 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  e.....          
ebd0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
ebe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ebf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
ec00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ec10: 64 69 73 70 6f 73 65 64 20 3d 20 74 72 75 65 3b  disposed = true;
ec20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
ec30: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
ec40: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
ec50: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
ec60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ec70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ec80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ec90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eca0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
ecb0: 67 69 6f 6e 20 44 65 73 74 72 75 63 74 6f 72 0d  gion Destructor.
ecc0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
ecd0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
ece0: 2f 2f 2f 20 46 69 6e 61 6c 69 7a 65 73 20 74 68  /// Finalizes th
ecf0: 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  is object instan
ed00: 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ce...        ///
ed10: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
ed20: 20 20 20 20 20 7e 53 51 4c 69 74 65 56 69 72 74       ~SQLiteVirt
ed30: 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 28 29  ualTableCursor()
ed40: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
ed50: 20 20 20 20 20 20 20 20 20 44 69 73 70 6f 73 65           Dispose
ed60: 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20  (false);..      
ed70: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
ed80: 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a  dregion..    }..
ed90: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
eda0: 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
edb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
edc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
edd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ede0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
edf0: 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
ee00: 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65 48 61   ISQLiteNativeHa
ee10: 6e 64 6c 65 20 49 6e 74 65 72 66 61 63 65 0d 0a  ndle Interface..
ee20: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
ee30: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  >..    /// This 
ee40: 69 6e 74 65 72 66 61 63 65 20 72 65 70 72 65 73  interface repres
ee50: 65 6e 74 73 20 61 20 6e 61 74 69 76 65 20 68 61  ents a native ha
ee60: 6e 64 6c 65 20 70 72 6f 76 69 64 65 64 20 62 79  ndle provided by
ee70: 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
ee80: 0d 0a 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72  ..    /// librar
ee90: 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  y...    /// </su
eea0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c  mmary>..    publ
eeb0: 69 63 20 69 6e 74 65 72 66 61 63 65 20 49 53 51  ic interface ISQ
eec0: 4c 69 74 65 4e 61 74 69 76 65 48 61 6e 64 6c 65  LiteNativeHandle
eed0: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
eee0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
eef0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
ef00: 6e 61 74 69 76 65 20 68 61 6e 64 6c 65 20 76 61  native handle va
ef10: 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  lue...        //
ef20: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
ef30: 20 20 20 20 20 20 49 6e 74 50 74 72 20 4e 61 74        IntPtr Nat
ef40: 69 76 65 48 61 6e 64 6c 65 20 7b 20 67 65 74 3b  iveHandle { get;
ef50: 20 7d 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23   }..    }..    #
ef60: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
ef70: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
ef80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ef90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
efa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
efb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
efc0: 20 20 20 20 23 72 65 67 69 6f 6e 20 49 53 51 4c      #region ISQL
efd0: 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20  iteNativeModule 
efe0: 49 6e 74 65 72 66 61 63 65 0d 0a 20 20 20 20 2f  Interface..    /
eff0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
f000: 20 20 2f 2f 2f 20 54 68 69 73 20 69 6e 74 65 72    /// This inter
f010: 66 61 63 65 20 72 65 70 72 65 73 65 6e 74 73 20  face represents 
f020: 61 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  a virtual table 
f030: 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 77  implementation w
f040: 72 69 74 74 65 6e 20 69 6e 0d 0a 20 20 20 20 2f  ritten in..    /
f050: 2f 2f 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d  // native code..
f060: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
f070: 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  ry>..    public 
f080: 69 6e 74 65 72 66 61 63 65 20 49 53 51 4c 69 74  interface ISQLit
f090: 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 0d 0a 20  eNativeModule.. 
f0a0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2f     {..        //
f0b0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
f0c0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
f0d0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
f0e0: 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c  s method is call
f0f0: 65 64 20 74 6f 20 63 72 65 61 74 65 20 61 20 6e  ed to create a n
f100: 65 77 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 61  ew instance of a
f110: 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 0d 0a   virtual table..
f120: 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 20 72          /// in r
f130: 65 73 70 6f 6e 73 65 20 74 6f 20 61 20 43 52 45  esponse to a CRE
f140: 41 54 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c  ATE VIRTUAL TABL
f150: 45 20 73 74 61 74 65 6d 65 6e 74 2e 20 54 68 65  E statement. The
f160: 20 64 62 20 70 61 72 61 6d 65 74 65 72 0d 0a 20   db parameter.. 
f170: 20 20 20 20 20 20 20 2f 2f 2f 20 69 73 20 61 20         /// is a 
f180: 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 53  pointer to the S
f190: 51 4c 69 74 65 20 64 61 74 61 62 61 73 65 20 63  QLite database c
f1a0: 6f 6e 6e 65 63 74 69 6f 6e 20 74 68 61 74 20 69  onnection that i
f1b0: 73 20 65 78 65 63 75 74 69 6e 67 0d 0a 20 20 20  s executing..   
f1c0: 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 43 52 45       /// the CRE
f1d0: 41 54 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c  ATE VIRTUAL TABL
f1e0: 45 20 73 74 61 74 65 6d 65 6e 74 2e 20 54 68 65  E statement. The
f1f0: 20 70 41 75 78 20 61 72 67 75 6d 65 6e 74 20 69   pAux argument i
f200: 73 20 74 68 65 20 63 6f 70 79 0d 0a 20 20 20 20  s the copy..    
f210: 20 20 20 20 2f 2f 2f 20 6f 66 20 74 68 65 20 63      /// of the c
f220: 6c 69 65 6e 74 20 64 61 74 61 20 70 6f 69 6e 74  lient data point
f230: 65 72 20 74 68 61 74 20 77 61 73 20 74 68 65 20  er that was the 
f240: 66 6f 75 72 74 68 20 61 72 67 75 6d 65 6e 74 20  fourth argument 
f250: 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
f260: 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 63 72 65 61  /// sqlite3_crea
f270: 74 65 5f 6d 6f 64 75 6c 65 28 29 20 6f 72 20 73  te_module() or s
f280: 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 6d 6f  qlite3_create_mo
f290: 64 75 6c 65 5f 76 32 28 29 20 63 61 6c 6c 20 74  dule_v2() call t
f2a0: 68 61 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  hat..        ///
f2b0: 20 72 65 67 69 73 74 65 72 65 64 20 74 68 65 20   registered the 
f2c0: 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 6d 6f  virtual table mo
f2d0: 64 75 6c 65 2e 20 54 68 65 20 61 72 67 76 20 70  dule. The argv p
f2e0: 61 72 61 6d 65 74 65 72 20 69 73 20 61 6e 0d 0a  arameter is an..
f2f0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 72 72 61          /// arra
f300: 79 20 6f 66 20 61 72 67 63 20 70 6f 69 6e 74 65  y of argc pointe
f310: 72 73 20 74 6f 20 6e 75 6c 6c 20 74 65 72 6d 69  rs to null termi
f320: 6e 61 74 65 64 20 73 74 72 69 6e 67 73 2e 20 54  nated strings. T
f330: 68 65 20 66 69 72 73 74 0d 0a 20 20 20 20 20 20  he first..      
f340: 20 20 2f 2f 2f 20 73 74 72 69 6e 67 2c 20 61 72    /// string, ar
f350: 67 76 5b 30 5d 2c 20 69 73 20 74 68 65 20 6e 61  gv[0], is the na
f360: 6d 65 20 6f 66 20 74 68 65 20 6d 6f 64 75 6c 65  me of the module
f370: 20 62 65 69 6e 67 20 69 6e 76 6f 6b 65 64 2e 20   being invoked. 
f380: 54 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  The..        ///
f390: 20 6d 6f 64 75 6c 65 20 6e 61 6d 65 20 69 73 20   module name is 
f3a0: 74 68 65 20 6e 61 6d 65 20 70 72 6f 76 69 64 65  the name provide
f3b0: 64 20 61 73 20 74 68 65 20 73 65 63 6f 6e 64 20  d as the second 
f3c0: 61 72 67 75 6d 65 6e 74 20 74 6f 0d 0a 20 20 20  argument to..   
f3d0: 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33       /// sqlite3
f3e0: 5f 63 72 65 61 74 65 5f 6d 6f 64 75 6c 65 28 29  _create_module()
f3f0: 20 61 6e 64 20 61 73 20 74 68 65 20 61 72 67 75   and as the argu
f400: 6d 65 6e 74 20 74 6f 20 74 68 65 20 55 53 49 4e  ment to the USIN
f410: 47 20 63 6c 61 75 73 65 20 6f 66 0d 0a 20 20 20  G clause of..   
f420: 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 43 52 45       /// the CRE
f430: 41 54 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c  ATE VIRTUAL TABL
f440: 45 20 73 74 61 74 65 6d 65 6e 74 20 74 68 61 74  E statement that
f450: 20 69 73 20 72 75 6e 6e 69 6e 67 2e 20 54 68 65   is running. The
f460: 20 73 65 63 6f 6e 64 2c 0d 0a 20 20 20 20 20 20   second,..      
f470: 20 20 2f 2f 2f 20 61 72 67 76 5b 31 5d 2c 20 69    /// argv[1], i
f480: 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68  s the name of th
f490: 65 20 64 61 74 61 62 61 73 65 20 69 6e 20 77 68  e database in wh
f4a0: 69 63 68 20 74 68 65 20 6e 65 77 20 76 69 72 74  ich the new virt
f4b0: 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20 20  ual table..     
f4c0: 20 20 20 2f 2f 2f 20 69 73 20 62 65 69 6e 67 20     /// is being 
f4d0: 63 72 65 61 74 65 64 2e 20 54 68 65 20 64 61 74  created. The dat
f4e0: 61 62 61 73 65 20 6e 61 6d 65 20 69 73 20 22 6d  abase name is "m
f4f0: 61 69 6e 22 20 66 6f 72 20 74 68 65 20 70 72 69  ain" for the pri
f500: 6d 61 72 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f  mary..        //
f510: 2f 20 64 61 74 61 62 61 73 65 2c 20 6f 72 20 22  / database, or "
f520: 74 65 6d 70 22 20 66 6f 72 20 54 45 4d 50 20 64  temp" for TEMP d
f530: 61 74 61 62 61 73 65 2c 20 6f 72 20 74 68 65 20  atabase, or the 
f540: 6e 61 6d 65 20 67 69 76 65 6e 20 61 74 20 74 68  name given at th
f550: 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 65  e..        /// e
f560: 6e 64 20 6f 66 20 74 68 65 20 41 54 54 41 43 48  nd of the ATTACH
f570: 20 73 74 61 74 65 6d 65 6e 74 20 66 6f 72 20 61   statement for a
f580: 74 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65  ttached database
f590: 73 2e 20 54 68 65 20 74 68 69 72 64 0d 0a 20 20  s. The third..  
f5a0: 20 20 20 20 20 20 2f 2f 2f 20 65 6c 65 6d 65 6e        /// elemen
f5b0: 74 20 6f 66 20 74 68 65 20 61 72 72 61 79 2c 20  t of the array, 
f5c0: 61 72 67 76 5b 32 5d 2c 20 69 73 20 74 68 65 20  argv[2], is the 
f5d0: 6e 61 6d 65 20 6f 66 20 74 68 65 20 6e 65 77 20  name of the new 
f5e0: 76 69 72 74 75 61 6c 0d 0a 20 20 20 20 20 20 20  virtual..       
f5f0: 20 2f 2f 2f 20 74 61 62 6c 65 2c 20 61 73 20 73   /// table, as s
f600: 70 65 63 69 66 69 65 64 20 66 6f 6c 6c 6f 77 69  pecified followi
f610: 6e 67 20 74 68 65 20 54 41 42 4c 45 20 6b 65 79  ng the TABLE key
f620: 77 6f 72 64 20 69 6e 20 74 68 65 20 43 52 45 41  word in the CREA
f630: 54 45 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  TE..        /// 
f640: 56 49 52 54 55 41 4c 20 54 41 42 4c 45 20 73 74  VIRTUAL TABLE st
f650: 61 74 65 6d 65 6e 74 2e 20 49 66 20 70 72 65 73  atement. If pres
f660: 65 6e 74 2c 20 74 68 65 20 66 6f 75 72 74 68 20  ent, the fourth 
f670: 61 6e 64 20 73 75 62 73 65 71 75 65 6e 74 0d 0a  and subsequent..
f680: 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 69          /// stri
f690: 6e 67 73 20 69 6e 20 74 68 65 20 61 72 67 76 5b  ngs in the argv[
f6a0: 5d 20 61 72 72 61 79 20 72 65 70 6f 72 74 20 74  ] array report t
f6b0: 68 65 20 61 72 67 75 6d 65 6e 74 73 20 74 6f 20  he arguments to 
f6c0: 74 68 65 20 6d 6f 64 75 6c 65 20 6e 61 6d 65 0d  the module name.
f6d0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 20  .        /// in 
f6e0: 74 68 65 20 43 52 45 41 54 45 20 56 49 52 54 55  the CREATE VIRTU
f6f0: 41 4c 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65  AL TABLE stateme
f700: 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  nt...        ///
f710: 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20   </para>..      
f720: 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20    /// <para>..  
f730: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6a 6f        /// The jo
f740: 62 20 6f 66 20 74 68 69 73 20 6d 65 74 68 6f 64  b of this method
f750: 20 69 73 20 74 6f 20 63 6f 6e 73 74 72 75 63 74   is to construct
f760: 20 74 68 65 20 6e 65 77 20 76 69 72 74 75 61 6c   the new virtual
f770: 20 74 61 62 6c 65 20 6f 62 6a 65 63 74 0d 0a 20   table object.. 
f780: 20 20 20 20 20 20 20 2f 2f 2f 20 28 61 6e 20 73         /// (an s
f790: 71 6c 69 74 65 33 5f 76 74 61 62 20 6f 62 6a 65  qlite3_vtab obje
f7a0: 63 74 29 20 61 6e 64 20 72 65 74 75 72 6e 20 61  ct) and return a
f7b0: 20 70 6f 69 6e 74 65 72 20 74 6f 20 69 74 20 69   pointer to it i
f7c0: 6e 20 2a 70 70 56 54 61 62 2e 0d 0a 20 20 20 20  n *ppVTab...    
f7d0: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d      /// </para>.
f7e0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
f7f0: 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
f800: 20 41 73 20 70 61 72 74 20 6f 66 20 74 68 65 20   As part of the 
f810: 74 61 73 6b 20 6f 66 20 63 72 65 61 74 69 6e 67  task of creating
f820: 20 61 20 6e 65 77 20 73 71 6c 69 74 65 33 5f 76   a new sqlite3_v
f830: 74 61 62 20 73 74 72 75 63 74 75 72 65 2c 20 74  tab structure, t
f840: 68 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  his..        ///
f850: 20 6d 65 74 68 6f 64 20 6d 75 73 74 20 69 6e 76   method must inv
f860: 6f 6b 65 20 73 71 6c 69 74 65 33 5f 64 65 63 6c  oke sqlite3_decl
f870: 61 72 65 5f 76 74 61 62 28 29 20 74 6f 20 74 65  are_vtab() to te
f880: 6c 6c 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  ll the SQLite co
f890: 72 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  re..        /// 
f8a0: 61 62 6f 75 74 20 74 68 65 20 63 6f 6c 75 6d 6e  about the column
f8b0: 73 20 61 6e 64 20 64 61 74 61 74 79 70 65 73 20  s and datatypes 
f8c0: 69 6e 20 74 68 65 20 76 69 72 74 75 61 6c 20 74  in the virtual t
f8d0: 61 62 6c 65 2e 20 54 68 65 0d 0a 20 20 20 20 20  able. The..     
f8e0: 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 64     /// sqlite3_d
f8f0: 65 63 6c 61 72 65 5f 76 74 61 62 28 29 20 41 50  eclare_vtab() AP
f900: 49 20 68 61 73 20 74 68 65 20 66 6f 6c 6c 6f 77  I has the follow
f910: 69 6e 67 20 70 72 6f 74 6f 74 79 70 65 3a 0d 0a  ing prototype:..
f920: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
f930: 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
f940: 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
f950: 20 2f 2f 2f 20 3c 63 6f 64 65 3e 0d 0a 20 20 20   /// <code>..   
f960: 20 20 20 20 20 2f 2f 2f 20 69 6e 74 20 73 71 6c       /// int sql
f970: 69 74 65 33 5f 64 65 63 6c 61 72 65 5f 76 74 61  ite3_declare_vta
f980: 62 28 73 71 6c 69 74 65 33 20 2a 64 62 2c 20 63  b(sqlite3 *db, c
f990: 6f 6e 73 74 20 63 68 61 72 20 2a 7a 43 72 65 61  onst char *zCrea
f9a0: 74 65 54 61 62 6c 65 29 0d 0a 20 20 20 20 20 20  teTable)..      
f9b0: 20 20 2f 2f 2f 20 3c 2f 63 6f 64 65 3e 0d 0a 20    /// </code>.. 
f9c0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
f9d0: 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
f9e0: 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
f9f0: 2f 2f 2f 20 54 68 65 20 66 69 72 73 74 20 61 72  /// The first ar
fa00: 67 75 6d 65 6e 74 20 74 6f 20 73 71 6c 69 74 65  gument to sqlite
fa10: 33 5f 64 65 63 6c 61 72 65 5f 76 74 61 62 28 29  3_declare_vtab()
fa20: 20 6d 75 73 74 20 62 65 20 74 68 65 20 73 61 6d   must be the sam
fa30: 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64  e..        /// d
fa40: 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
fa50: 6f 6e 20 70 6f 69 6e 74 65 72 20 61 73 20 74 68  on pointer as th
fa60: 65 20 66 69 72 73 74 20 70 61 72 61 6d 65 74 65  e first paramete
fa70: 72 20 74 6f 20 74 68 69 73 20 6d 65 74 68 6f 64  r to this method
fa80: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  ...        /// T
fa90: 68 65 20 73 65 63 6f 6e 64 20 61 72 67 75 6d 65  he second argume
faa0: 6e 74 20 74 6f 20 73 71 6c 69 74 65 33 5f 64 65  nt to sqlite3_de
fab0: 63 6c 61 72 65 5f 76 74 61 62 28 29 20 6d 75 73  clare_vtab() mus
fac0: 74 20 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  t a..        ///
fad0: 20 7a 65 72 6f 2d 74 65 72 6d 69 6e 61 74 65 64   zero-terminated
fae0: 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20 74 68   UTF-8 string th
faf0: 61 74 20 63 6f 6e 74 61 69 6e 73 20 61 20 77 65  at contains a we
fb00: 6c 6c 2d 66 6f 72 6d 65 64 20 43 52 45 41 54 45  ll-formed CREATE
fb10: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 41  ..        /// TA
fb20: 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 20 74 68  BLE statement th
fb30: 61 74 20 64 65 66 69 6e 65 73 20 74 68 65 20 63  at defines the c
fb40: 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20 76 69  olumns in the vi
fb50: 72 74 75 61 6c 20 74 61 62 6c 65 20 61 6e 64 0d  rtual table and.
fb60: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  .        /// the
fb70: 69 72 20 64 61 74 61 20 74 79 70 65 73 2e 20 54  ir data types. T
fb80: 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 74  he name of the t
fb90: 61 62 6c 65 20 69 6e 20 74 68 69 73 20 43 52 45  able in this CRE
fba0: 41 54 45 20 54 41 42 4c 45 0d 0a 20 20 20 20 20  ATE TABLE..     
fbb0: 20 20 20 2f 2f 2f 20 73 74 61 74 65 6d 65 6e 74     /// statement
fbc0: 20 69 73 20 69 67 6e 6f 72 65 64 2c 20 61 73 20   is ignored, as 
fbd0: 61 72 65 20 61 6c 6c 20 63 6f 6e 73 74 72 61 69  are all constrai
fbe0: 6e 74 73 2e 20 4f 6e 6c 79 20 74 68 65 20 63 6f  nts. Only the co
fbf0: 6c 75 6d 6e 20 6e 61 6d 65 73 0d 0a 20 20 20 20  lumn names..    
fc00: 20 20 20 20 2f 2f 2f 20 61 6e 64 20 64 61 74 61      /// and data
fc10: 74 79 70 65 73 20 6d 61 74 74 65 72 2e 20 54 68  types matter. Th
fc20: 65 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 73  e CREATE TABLE s
fc30: 74 61 74 65 6d 65 6e 74 20 73 74 72 69 6e 67 20  tatement string 
fc40: 6e 65 65 64 20 6e 6f 74 20 74 6f 0d 0a 20 20 20  need not to..   
fc50: 20 20 20 20 20 2f 2f 2f 20 62 65 20 68 65 6c 64       /// be held
fc60: 20 69 6e 20 70 65 72 73 69 73 74 65 6e 74 20 6d   in persistent m
fc70: 65 6d 6f 72 79 2e 20 54 68 65 20 73 74 72 69 6e  emory. The strin
fc80: 67 20 63 61 6e 20 62 65 20 64 65 61 6c 6c 6f 63  g can be dealloc
fc90: 61 74 65 64 20 61 6e 64 2f 6f 72 0d 0a 20 20 20  ated and/or..   
fca0: 20 20 20 20 20 2f 2f 2f 20 72 65 75 73 65 64 20       /// reused 
fcb0: 61 73 20 73 6f 6f 6e 20 61 73 20 74 68 65 20 73  as soon as the s
fcc0: 71 6c 69 74 65 33 5f 64 65 63 6c 61 72 65 5f 76  qlite3_declare_v
fcd0: 74 61 62 28 29 20 72 6f 75 74 69 6e 65 20 72 65  tab() routine re
fce0: 74 75 72 6e 73 2e 0d 0a 20 20 20 20 20 20 20 20  turns...        
fcf0: 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20  /// </para>..   
fd00: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
fd10: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
fd20: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 44   <param name="pD
fd30: 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  b">..        ///
fd40: 20 54 68 65 20 6e 61 74 69 76 65 20 64 61 74 61   The native data
fd50: 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  base connection 
fd60: 68 61 6e 64 6c 65 2e 0d 0a 20 20 20 20 20 20 20  handle...       
fd70: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
fd80: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
fd90: 6d 20 6e 61 6d 65 3d 22 70 41 75 78 22 3e 0d 0a  m name="pAux">..
fda0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
fdb0: 6f 72 69 67 69 6e 61 6c 20 6e 61 74 69 76 65 20  original native 
fdc0: 70 6f 69 6e 74 65 72 20 76 61 6c 75 65 20 74 68  pointer value th
fdd0: 61 74 20 77 61 73 20 70 72 6f 76 69 64 65 64 20  at was provided 
fde0: 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
fdf0: 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 63 72 65 61  /// sqlite3_crea
fe00: 74 65 5f 6d 6f 64 75 6c 65 28 29 2c 20 73 71 6c  te_module(), sql
fe10: 69 74 65 33 5f 63 72 65 61 74 65 5f 6d 6f 64 75  ite3_create_modu
fe20: 6c 65 5f 76 32 28 29 20 6f 72 0d 0a 20 20 20 20  le_v2() or..    
fe30: 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f      /// sqlite3_
fe40: 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61 62 6c  create_disposabl
fe50: 65 5f 6d 6f 64 75 6c 65 28 29 20 66 75 6e 63 74  e_module() funct
fe60: 69 6f 6e 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ions...        /
fe70: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
fe80: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
fe90: 6e 61 6d 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20  name="argc">..  
fea0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75        /// The nu
feb0: 6d 62 65 72 20 6f 66 20 61 72 67 75 6d 65 6e 74  mber of argument
fec0: 73 20 66 72 6f 6d 20 74 68 65 20 43 52 45 41 54  s from the CREAT
fed0: 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45 20  E VIRTUAL TABLE 
fee0: 73 74 61 74 65 6d 65 6e 74 2e 0d 0a 20 20 20 20  statement...    
fef0: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
ff00: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
ff10: 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 76 22  aram name="argv"
ff20: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
ff30: 68 65 20 61 72 72 61 79 20 6f 66 20 73 74 72 69  he array of stri
ff40: 6e 67 20 61 72 67 75 6d 65 6e 74 73 20 66 72 6f  ng arguments fro
ff50: 6d 20 74 68 65 20 43 52 45 41 54 45 20 56 49 52  m the CREATE VIR
ff60: 54 55 41 4c 20 54 41 42 4c 45 0d 0a 20 20 20 20  TUAL TABLE..    
ff70: 20 20 20 20 2f 2f 2f 20 73 74 61 74 65 6d 65 6e      /// statemen
ff80: 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  t...        /// 
ff90: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
ffa0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
ffb0: 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20  e="pVtab">..    
ffc0: 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63      /// Upon suc
ffd0: 63 65 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d  cess, this param
ffe0: 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64  eter must be mod
fff0: 69 66 69 65 64 20 74 6f 20 70 6f 69 6e 74 20 74  ified to point t
10000 6f 20 74 68 65 20 6e 65 77 6c 79 0d 0a 20 20 20  o the newly..   
10010 20 20 20 20 20 2f 2f 2f 20 63 72 65 61 74 65 64       /// created
10020 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f   native sqlite3_
10030 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74 72  vtab derived str
10040 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ucture...       
10050 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
10060 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
10070 6d 20 6e 61 6d 65 3d 22 70 45 72 72 6f 72 22 3e  m name="pError">
10080 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70  ..        /// Up
10090 6f 6e 20 66 61 69 6c 75 72 65 2c 20 74 68 69 73  on failure, this
100a0 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20   parameter must 
100b0 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 70  be modified to p
100c0 6f 69 6e 74 20 74 6f 20 74 68 65 20 65 72 72 6f  oint to the erro
100d0 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d  r..        /// m
100e0 65 73 73 61 67 65 2c 20 77 69 74 68 20 74 68 65  essage, with the
100f0 20 75 6e 64 65 72 6c 79 69 6e 67 20 6d 65 6d 6f   underlying memo
10100 72 79 20 68 61 76 69 6e 67 20 62 65 65 6e 20 6f  ry having been o
10110 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 74 68 65  btained from the
10120 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71  ..        /// sq
10130 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 20 66  lite3_malloc() f
10140 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  unction...      
10150 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
10160 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
10170 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
10180 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51  // A standard SQ
10190 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65  Lite return code
101a0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
101b0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
101c0 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f     SQLiteErrorCo
101d0 64 65 20 78 43 72 65 61 74 65 28 0d 0a 20 20 20  de xCreate(..   
101e0 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
101f0 70 44 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  pDb,..          
10200 20 20 49 6e 74 50 74 72 20 70 41 75 78 2c 0d 0a    IntPtr pAux,..
10210 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
10220 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 20  argc,..         
10230 20 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c 0d     IntPtr argv,.
10240 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66  .            ref
10250 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
10260 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
10270 49 6e 74 50 74 72 20 70 45 72 72 6f 72 0d 0a 20  IntPtr pError.. 
10280 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d             );...
10290 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
102a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
102b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
102c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
102d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
102e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
102f0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
10300 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20     /// <para>.. 
10310 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 78         /// The x
10320 43 6f 6e 6e 65 63 74 20 6d 65 74 68 6f 64 20 69  Connect method i
10330 73 20 76 65 72 79 20 73 69 6d 69 6c 61 72 20 74  s very similar t
10340 6f 20 78 43 72 65 61 74 65 2e 20 49 74 20 68 61  o xCreate. It ha
10350 73 20 74 68 65 20 73 61 6d 65 0d 0a 20 20 20 20  s the same..    
10360 20 20 20 20 2f 2f 2f 20 70 61 72 61 6d 65 74 65      /// paramete
10370 72 73 20 61 6e 64 20 63 6f 6e 73 74 72 75 63 74  rs and construct
10380 73 20 61 20 6e 65 77 20 73 71 6c 69 74 65 33 5f  s a new sqlite3_
10390 76 74 61 62 20 73 74 72 75 63 74 75 72 65 20 6a  vtab structure j
103a0 75 73 74 20 6c 69 6b 65 0d 0a 20 20 20 20 20 20  ust like..      
103b0 20 20 2f 2f 2f 20 78 43 72 65 61 74 65 2e 20 41    /// xCreate. A
103c0 6e 64 20 69 74 20 6d 75 73 74 20 61 6c 73 6f 20  nd it must also 
103d0 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f 64 65 63  call sqlite3_dec
103e0 6c 61 72 65 5f 76 74 61 62 28 29 20 6c 69 6b 65  lare_vtab() like
103f0 20 78 43 72 65 61 74 65 2e 0d 0a 20 20 20 20 20   xCreate...     
10400 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a     /// </para>..
10410 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
10420 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
10430 54 68 65 20 64 69 66 66 65 72 65 6e 63 65 20 69  The difference i
10440 73 20 74 68 61 74 20 78 43 6f 6e 6e 65 63 74 20  s that xConnect 
10450 69 73 20 63 61 6c 6c 65 64 20 74 6f 20 65 73 74  is called to est
10460 61 62 6c 69 73 68 20 61 20 6e 65 77 0d 0a 20 20  ablish a new..  
10470 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 6e 65 63        /// connec
10480 74 69 6f 6e 20 74 6f 20 61 6e 20 65 78 69 73 74  tion to an exist
10490 69 6e 67 20 76 69 72 74 75 61 6c 20 74 61 62 6c  ing virtual tabl
104a0 65 20 77 68 65 72 65 61 73 20 78 43 72 65 61 74  e whereas xCreat
104b0 65 20 69 73 20 63 61 6c 6c 65 64 0d 0a 20 20 20  e is called..   
104c0 20 20 20 20 20 2f 2f 2f 20 74 6f 20 63 72 65 61       /// to crea
104d0 74 65 20 61 20 6e 65 77 20 76 69 72 74 75 61 6c  te a new virtual
104e0 20 74 61 62 6c 65 20 66 72 6f 6d 20 73 63 72 61   table from scra
104f0 74 63 68 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tch...        //
10500 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20  / </para>..     
10510 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20     /// <para>.. 
10520 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 78         /// The x
10530 43 72 65 61 74 65 20 61 6e 64 20 78 43 6f 6e 6e  Create and xConn
10540 65 63 74 20 6d 65 74 68 6f 64 73 20 61 72 65 20  ect methods are 
10550 6f 6e 6c 79 20 64 69 66 66 65 72 65 6e 74 20 77  only different w
10560 68 65 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20  hen the..       
10570 20 2f 2f 2f 20 76 69 72 74 75 61 6c 20 74 61 62   /// virtual tab
10580 6c 65 20 68 61 73 20 73 6f 6d 65 20 6b 69 6e 64  le has some kind
10590 20 6f 66 20 62 61 63 6b 69 6e 67 20 73 74 6f 72   of backing stor
105a0 65 20 74 68 61 74 20 6d 75 73 74 20 62 65 0d 0a  e that must be..
105b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 69 74          /// init
105c0 69 61 6c 69 7a 65 64 20 74 68 65 20 66 69 72 73  ialized the firs
105d0 74 20 74 69 6d 65 20 74 68 65 20 76 69 72 74 75  t time the virtu
105e0 61 6c 20 74 61 62 6c 65 20 69 73 20 63 72 65 61  al table is crea
105f0 74 65 64 2e 20 54 68 65 0d 0a 20 20 20 20 20 20  ted. The..      
10600 20 20 2f 2f 2f 20 78 43 72 65 61 74 65 20 6d 65    /// xCreate me
10610 74 68 6f 64 20 63 72 65 61 74 65 73 20 61 6e 64  thod creates and
10620 20 69 6e 69 74 69 61 6c 69 7a 65 73 20 74 68 65   initializes the
10630 20 62 61 63 6b 69 6e 67 20 73 74 6f 72 65 2e 20   backing store. 
10640 54 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  The..        ///
10650 20 78 43 6f 6e 6e 65 63 74 20 6d 65 74 68 6f 64   xConnect method
10660 20 6a 75 73 74 20 63 6f 6e 6e 65 63 74 73 20 74   just connects t
10670 6f 20 61 6e 20 65 78 69 73 74 69 6e 67 20 62 61  o an existing ba
10680 63 6b 69 6e 67 20 73 74 6f 72 65 2e 0d 0a 20 20  cking store...  
10690 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
106a0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
106b0 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
106c0 2f 2f 20 41 73 20 61 6e 20 65 78 61 6d 70 6c 65  // As an example
106d0 2c 20 63 6f 6e 73 69 64 65 72 20 61 20 76 69 72  , consider a vir
106e0 74 75 61 6c 20 74 61 62 6c 65 20 69 6d 70 6c 65  tual table imple
106f0 6d 65 6e 74 61 74 69 6f 6e 20 74 68 61 74 0d 0a  mentation that..
10700 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f 76          /// prov
10710 69 64 65 73 20 72 65 61 64 2d 6f 6e 6c 79 20 61  ides read-only a
10720 63 63 65 73 73 20 74 6f 20 65 78 69 73 74 69 6e  ccess to existin
10730 67 20 63 6f 6d 6d 61 2d 73 65 70 61 72 61 74 65  g comma-separate
10740 64 2d 76 61 6c 75 65 20 28 43 53 56 29 0d 0a 20  d-value (CSV).. 
10750 20 20 20 20 20 20 20 2f 2f 2f 20 66 69 6c 65 73         /// files
10760 20 6f 6e 20 64 69 73 6b 2e 20 54 68 65 72 65 20   on disk. There 
10770 69 73 20 6e 6f 20 62 61 63 6b 69 6e 67 20 73 74  is no backing st
10780 6f 72 65 20 74 68 61 74 20 6e 65 65 64 73 20 74  ore that needs t
10790 6f 20 62 65 20 63 72 65 61 74 65 64 0d 0a 20 20  o be created..  
107a0 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20 69 6e 69        /// or ini
107b0 74 69 61 6c 69 7a 65 64 20 66 6f 72 20 73 75 63  tialized for suc
107c0 68 20 61 20 76 69 72 74 75 61 6c 20 74 61 62 6c  h a virtual tabl
107d0 65 20 28 73 69 6e 63 65 20 74 68 65 20 43 53 56  e (since the CSV
107e0 20 66 69 6c 65 73 0d 0a 20 20 20 20 20 20 20 20   files..        
107f0 2f 2f 2f 20 61 6c 72 65 61 64 79 20 65 78 69 73  /// already exis
10800 74 20 6f 6e 20 64 69 73 6b 29 20 73 6f 20 74 68  t on disk) so th
10810 65 20 78 43 72 65 61 74 65 20 61 6e 64 20 78 43  e xCreate and xC
10820 6f 6e 6e 65 63 74 20 6d 65 74 68 6f 64 73 20 77  onnect methods w
10830 69 6c 6c 20 62 65 0d 0a 20 20 20 20 20 20 20 20  ill be..        
10840 2f 2f 2f 20 69 64 65 6e 74 69 63 61 6c 20 66 6f  /// identical fo
10850 72 20 74 68 61 74 20 6d 6f 64 75 6c 65 2e 0d 0a  r that module...
10860 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
10870 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
10880 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
10890 20 2f 2f 2f 20 41 6e 6f 74 68 65 72 20 65 78 61   /// Another exa
108a0 6d 70 6c 65 20 69 73 20 61 20 76 69 72 74 75 61  mple is a virtua
108b0 6c 20 74 61 62 6c 65 20 74 68 61 74 20 69 6d 70  l table that imp
108c0 6c 65 6d 65 6e 74 73 20 61 20 66 75 6c 6c 2d 74  lements a full-t
108d0 65 78 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ext..        ///
108e0 20 69 6e 64 65 78 2e 20 54 68 65 20 78 43 72 65   index. The xCre
108f0 61 74 65 20 6d 65 74 68 6f 64 20 6d 75 73 74 20  ate method must 
10900 63 72 65 61 74 65 20 61 6e 64 20 69 6e 69 74 69  create and initi
10910 61 6c 69 7a 65 20 64 61 74 61 0d 0a 20 20 20 20  alize data..    
10920 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72      /// structur
10930 65 73 20 74 6f 20 68 6f 6c 64 20 74 68 65 20 64  es to hold the d
10940 69 63 74 69 6f 6e 61 72 79 20 61 6e 64 20 70 6f  ictionary and po
10950 73 74 69 6e 67 20 6c 69 73 74 73 20 66 6f 72 20  sting lists for 
10960 74 68 61 74 20 69 6e 64 65 78 2e 0d 0a 20 20 20  that index...   
10970 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 78 43 6f       /// The xCo
10980 6e 6e 65 63 74 20 6d 65 74 68 6f 64 2c 20 6f 6e  nnect method, on
10990 20 74 68 65 20 6f 74 68 65 72 20 68 61 6e 64 2c   the other hand,
109a0 20 6f 6e 6c 79 20 68 61 73 20 74 6f 20 6c 6f 63   only has to loc
109b0 61 74 65 20 61 6e 64 20 75 73 65 0d 0a 20 20 20  ate and use..   
109c0 20 20 20 20 20 2f 2f 2f 20 61 6e 20 65 78 69 73       /// an exis
109d0 74 69 6e 67 20 64 69 63 74 69 6f 6e 61 72 79 20  ting dictionary 
109e0 61 6e 64 20 70 6f 73 74 69 6e 67 20 6c 69 73 74  and posting list
109f0 73 20 74 68 61 74 20 77 65 72 65 20 63 72 65 61  s that were crea
10a00 74 65 64 20 62 79 20 61 0d 0a 20 20 20 20 20 20  ted by a..      
10a10 20 20 2f 2f 2f 20 70 72 69 6f 72 20 78 43 72 65    /// prior xCre
10a20 61 74 65 20 63 61 6c 6c 2e 0d 0a 20 20 20 20 20  ate call...     
10a30 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a     /// </para>..
10a40 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
10a50 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
10a60 54 68 65 20 78 43 6f 6e 6e 65 63 74 20 6d 65 74  The xConnect met
10a70 68 6f 64 20 6d 75 73 74 20 72 65 74 75 72 6e 20  hod must return 
10a80 53 51 4c 49 54 45 5f 4f 4b 20 69 66 20 69 74 20  SQLITE_OK if it 
10a90 69 73 20 73 75 63 63 65 73 73 66 75 6c 20 69 6e  is successful in
10aa0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 72  ..        /// cr
10ab0 65 61 74 69 6e 67 20 74 68 65 20 6e 65 77 20 76  eating the new v
10ac0 69 72 74 75 61 6c 20 74 61 62 6c 65 2c 20 6f 72  irtual table, or
10ad0 20 53 51 4c 49 54 45 5f 45 52 52 4f 52 20 69 66   SQLITE_ERROR if
10ae0 20 69 74 20 69 73 20 6e 6f 74 0d 0a 20 20 20 20   it is not..    
10af0 20 20 20 20 2f 2f 2f 20 73 75 63 63 65 73 73 66      /// successf
10b00 75 6c 2e 20 49 66 20 6e 6f 74 20 73 75 63 63 65  ul. If not succe
10b10 73 73 66 75 6c 2c 20 74 68 65 20 73 71 6c 69 74  ssful, the sqlit
10b20 65 33 5f 76 74 61 62 20 73 74 72 75 63 74 75 72  e3_vtab structur
10b30 65 20 6d 75 73 74 20 6e 6f 74 0d 0a 20 20 20 20  e must not..    
10b40 20 20 20 20 2f 2f 2f 20 62 65 20 61 6c 6c 6f 63      /// be alloc
10b50 61 74 65 64 2e 20 41 6e 20 65 72 72 6f 72 20 6d  ated. An error m
10b60 65 73 73 61 67 65 20 6d 61 79 20 6f 70 74 69 6f  essage may optio
10b70 6e 61 6c 6c 79 20 62 65 20 72 65 74 75 72 6e 65  nally be returne
10b80 64 20 69 6e 20 2a 70 7a 45 72 72 0d 0a 20 20 20  d in *pzErr..   
10b90 20 20 20 20 20 2f 2f 2f 20 69 66 20 75 6e 73 75       /// if unsu
10ba0 63 63 65 73 73 66 75 6c 2e 20 53 70 61 63 65 20  ccessful. Space 
10bb0 74 6f 20 68 6f 6c 64 20 74 68 65 20 65 72 72 6f  to hold the erro
10bc0 72 20 6d 65 73 73 61 67 65 20 73 74 72 69 6e 67  r message string
10bd0 20 6d 75 73 74 20 62 65 0d 0a 20 20 20 20 20 20   must be..      
10be0 20 20 2f 2f 2f 20 61 6c 6c 6f 63 61 74 65 64 20    /// allocated 
10bf0 75 73 69 6e 67 20 61 6e 20 53 51 4c 69 74 65 20  using an SQLite 
10c00 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f  memory allocatio
10c10 6e 20 66 75 6e 63 74 69 6f 6e 20 6c 69 6b 65 0d  n function like.
10c20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c  .        /// sql
10c30 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 20 6f 72  ite3_malloc() or
10c40 20 73 71 6c 69 74 65 33 5f 6d 70 72 69 6e 74 66   sqlite3_mprintf
10c50 28 29 20 61 73 20 74 68 65 20 53 51 4c 69 74 65  () as the SQLite
10c60 20 63 6f 72 65 20 77 69 6c 6c 0d 0a 20 20 20 20   core will..    
10c70 20 20 20 20 2f 2f 2f 20 61 74 74 65 6d 70 74 20      /// attempt 
10c80 74 6f 20 66 72 65 65 20 74 68 65 20 73 70 61 63  to free the spac
10c90 65 20 75 73 69 6e 67 20 73 71 6c 69 74 65 33 5f  e using sqlite3_
10ca0 66 72 65 65 28 29 20 61 66 74 65 72 20 74 68 65  free() after the
10cb0 20 65 72 72 6f 72 20 68 61 73 0d 0a 20 20 20 20   error has..    
10cc0 20 20 20 20 2f 2f 2f 20 62 65 65 6e 20 72 65 70      /// been rep
10cd0 6f 72 74 65 64 20 75 70 20 74 6f 20 74 68 65 20  orted up to the 
10ce0 61 70 70 6c 69 63 61 74 69 6f 6e 2e 0d 0a 20 20  application...  
10cf0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
10d00 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
10d10 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
10d20 2f 2f 20 54 68 65 20 78 43 6f 6e 6e 65 63 74 20  // The xConnect 
10d30 6d 65 74 68 6f 64 20 69 73 20 72 65 71 75 69 72  method is requir
10d40 65 64 20 66 6f 72 20 65 76 65 72 79 20 76 69 72  ed for every vir
10d50 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20  tual table..    
10d60 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e      /// implemen
10d70 74 61 74 69 6f 6e 2c 20 74 68 6f 75 67 68 20 74  tation, though t
10d80 68 65 20 78 43 72 65 61 74 65 20 61 6e 64 20 78  he xCreate and x
10d90 43 6f 6e 6e 65 63 74 20 70 6f 69 6e 74 65 72 73  Connect pointers
10da0 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20 20 20   of the..       
10db0 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 6d 6f 64   /// sqlite3_mod
10dc0 75 6c 65 20 6f 62 6a 65 63 74 20 6d 61 79 20 70  ule object may p
10dd0 6f 69 6e 74 20 74 6f 20 74 68 65 20 73 61 6d 65  oint to the same
10de0 20 66 75 6e 63 74 69 6f 6e 20 74 68 65 20 76 69   function the vi
10df0 72 74 75 61 6c 0d 0a 20 20 20 20 20 20 20 20 2f  rtual..        /
10e00 2f 2f 20 74 61 62 6c 65 20 64 6f 65 73 20 6e 6f  // table does no
10e10 74 20 6e 65 65 64 20 74 6f 20 69 6e 69 74 69 61  t need to initia
10e20 6c 69 7a 65 20 62 61 63 6b 69 6e 67 20 73 74 6f  lize backing sto
10e30 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
10e40 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20   </para>..      
10e50 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
10e60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
10e70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 44 62 22 3e  aram name="pDb">
10e80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
10e90 65 20 6e 61 74 69 76 65 20 64 61 74 61 62 61 73  e native databas
10ea0 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 6e  e connection han
10eb0 64 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  dle...        //
10ec0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
10ed0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
10ee0 61 6d 65 3d 22 70 41 75 78 22 3e 0d 0a 20 20 20  ame="pAux">..   
10ef0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 72 69       /// The ori
10f00 67 69 6e 61 6c 20 6e 61 74 69 76 65 20 70 6f 69  ginal native poi
10f10 6e 74 65 72 20 76 61 6c 75 65 20 74 68 61 74 20  nter value that 
10f20 77 61 73 20 70 72 6f 76 69 64 65 64 20 74 6f 20  was provided to 
10f30 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
10f40 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f   sqlite3_create_
10f50 6d 6f 64 75 6c 65 28 29 2c 20 73 71 6c 69 74 65  module(), sqlite
10f60 33 5f 63 72 65 61 74 65 5f 6d 6f 64 75 6c 65 5f  3_create_module_
10f70 76 32 28 29 20 6f 72 0d 0a 20 20 20 20 20 20 20  v2() or..       
10f80 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 63 72 65   /// sqlite3_cre
10f90 61 74 65 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d  ate_disposable_m
10fa0 6f 64 75 6c 65 28 29 20 66 75 6e 63 74 69 6f 6e  odule() function
10fb0 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s...        /// 
10fc0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
10fd0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
10fe0 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20 20 20 20  e="argc">..     
10ff0 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65     /// The numbe
11000 72 20 6f 66 20 61 72 67 75 6d 65 6e 74 73 20 66  r of arguments f
11010 72 6f 6d 20 74 68 65 20 43 52 45 41 54 45 20 56  rom the CREATE V
11020 49 52 54 55 41 4c 20 54 41 42 4c 45 20 73 74 61  IRTUAL TABLE sta
11030 74 65 6d 65 6e 74 2e 0d 0a 20 20 20 20 20 20 20  tement...       
11040 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
11050 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
11060 6d 20 6e 61 6d 65 3d 22 61 72 67 76 22 3e 0d 0a  m name="argv">..
11070 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
11080 61 72 72 61 79 20 6f 66 20 73 74 72 69 6e 67 20  array of string 
11090 61 72 67 75 6d 65 6e 74 73 20 66 72 6f 6d 20 74  arguments from t
110a0 68 65 20 43 52 45 41 54 45 20 56 49 52 54 55 41  he CREATE VIRTUA
110b0 4c 20 54 41 42 4c 45 0d 0a 20 20 20 20 20 20 20  L TABLE..       
110c0 20 2f 2f 2f 20 73 74 61 74 65 6d 65 6e 74 2e 0d   /// statement..
110d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
110e0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
110f0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
11100 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20  pVtab">..       
11110 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73   /// Upon succes
11120 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65  s, this paramete
11130 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69  r must be modifi
11140 65 64 20 74 6f 20 70 6f 69 6e 74 20 74 6f 20 74  ed to point to t
11150 68 65 20 6e 65 77 6c 79 0d 0a 20 20 20 20 20 20  he newly..      
11160 20 20 2f 2f 2f 20 63 72 65 61 74 65 64 20 6e 61    /// created na
11170 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76 74 61  tive sqlite3_vta
11180 62 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74  b derived struct
11190 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
111a0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
111b0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
111c0 61 6d 65 3d 22 70 45 72 72 6f 72 22 3e 0d 0a 20  ame="pError">.. 
111d0 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20         /// Upon 
111e0 66 61 69 6c 75 72 65 2c 20 74 68 69 73 20 70 61  failure, this pa
111f0 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20  rameter must be 
11200 6d 6f 64 69 66 69 65 64 20 74 6f 20 70 6f 69 6e  modified to poin
11210 74 20 74 6f 20 74 68 65 20 65 72 72 6f 72 0d 0a  t to the error..
11220 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 73 73          /// mess
11230 61 67 65 2c 20 77 69 74 68 20 74 68 65 20 75 6e  age, with the un
11240 64 65 72 6c 79 69 6e 67 20 6d 65 6d 6f 72 79 20  derlying memory 
11250 68 61 76 69 6e 67 20 62 65 65 6e 20 6f 62 74 61  having been obta
11260 69 6e 65 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20  ined from the.. 
11270 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74         /// sqlit
11280 65 33 5f 6d 61 6c 6c 6f 63 28 29 20 66 75 6e 63  e3_malloc() func
11290 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  tion...        /
112a0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
112b0 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
112c0 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
112d0 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74  A standard SQLit
112e0 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a  e return code...
112f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
11300 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
11310 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
11320 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20  xConnect(..     
11330 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 44         IntPtr pD
11340 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  b,..            
11350 49 6e 74 50 74 72 20 70 41 75 78 2c 0d 0a 20 20  IntPtr pAux,..  
11360 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 61 72            int ar
11370 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  gc,..           
11380 20 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a 20   IntPtr argv,.. 
11390 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 49             ref I
113a0 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
113b0 20 20 20 20 20 20 20 20 20 20 72 65 66 20 49 6e            ref In
113c0 74 50 74 72 20 70 45 72 72 6f 72 0d 0a 20 20 20  tPtr pError..   
113d0 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20           );.... 
113e0 20 20 20 20 20 20 20 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 2f  ////////////////
11400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
11430 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
11440 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
11450 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
11460 20 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20       /// SQLite 
11470 75 73 65 73 20 74 68 65 20 78 42 65 73 74 49 6e  uses the xBestIn
11480 64 65 78 20 6d 65 74 68 6f 64 20 6f 66 20 61 20  dex method of a 
11490 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 6d 6f  virtual table mo
114a0 64 75 6c 65 20 74 6f 0d 0a 20 20 20 20 20 20 20  dule to..       
114b0 20 2f 2f 2f 20 64 65 74 65 72 6d 69 6e 65 20 74   /// determine t
114c0 68 65 20 62 65 73 74 20 77 61 79 20 74 6f 20 61  he best way to a
114d0 63 63 65 73 73 20 74 68 65 20 76 69 72 74 75 61  ccess the virtua
114e0 6c 20 74 61 62 6c 65 2e 20 54 68 65 20 78 42 65  l table. The xBe
114f0 73 74 49 6e 64 65 78 0d 0a 20 20 20 20 20 20 20  stIndex..       
11500 20 2f 2f 2f 20 6d 65 74 68 6f 64 20 68 61 73 20   /// method has 
11510 61 20 70 72 6f 74 6f 74 79 70 65 20 6c 69 6b 65  a prototype like
11520 20 74 68 69 73 3a 0d 0a 20 20 20 20 20 20 20 20   this:..        
11530 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20  /// </para>..   
11540 20 20 20 20 20 2f 2f 2f 20 3c 63 6f 64 65 3e 0d       /// <code>.
11550 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74  .        /// int
11560 20 28 2a 78 42 65 73 74 49 6e 64 65 78 29 28 73   (*xBestIndex)(s
11570 71 6c 69 74 65 33 5f 76 74 61 62 20 2a 70 56 54  qlite3_vtab *pVT
11580 61 62 2c 20 73 71 6c 69 74 65 33 5f 69 6e 64 65  ab, sqlite3_inde
11590 78 5f 69 6e 66 6f 2a 29 3b 0d 0a 20 20 20 20 20  x_info*);..     
115a0 20 20 20 2f 2f 2f 20 3c 2f 63 6f 64 65 3e 0d 0a     /// </code>..
115b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
115c0 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
115d0 54 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  The SQLite core 
115e0 63 6f 6d 6d 75 6e 69 63 61 74 65 73 20 77 69 74  communicates wit
115f0 68 20 74 68 65 20 78 42 65 73 74 49 6e 64 65 78  h the xBestIndex
11600 20 6d 65 74 68 6f 64 20 62 79 20 66 69 6c 6c 69   method by filli
11610 6e 67 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ng..        /// 
11620 69 6e 20 63 65 72 74 61 69 6e 20 66 69 65 6c 64  in certain field
11630 73 20 6f 66 20 74 68 65 20 73 71 6c 69 74 65 33  s of the sqlite3
11640 5f 69 6e 64 65 78 5f 69 6e 66 6f 20 73 74 72 75  _index_info stru
11650 63 74 75 72 65 20 61 6e 64 20 70 61 73 73 69 6e  cture and passin
11660 67 20 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  g a..        ///
11670 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 61 74   pointer to that
11680 20 73 74 72 75 63 74 75 72 65 20 69 6e 74 6f 20   structure into 
11690 78 42 65 73 74 49 6e 64 65 78 20 61 73 20 74 68  xBestIndex as th
116a0 65 20 73 65 63 6f 6e 64 20 70 61 72 61 6d 65 74  e second paramet
116b0 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  er...        ///
116c0 20 54 68 65 20 78 42 65 73 74 49 6e 64 65 78 20   The xBestIndex 
116d0 6d 65 74 68 6f 64 20 66 69 6c 6c 73 20 6f 75 74  method fills out
116e0 20 6f 74 68 65 72 20 66 69 65 6c 64 73 20 6f 66   other fields of
116f0 20 74 68 69 73 20 73 74 72 75 63 74 75 72 65 0d   this structure.
11700 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 68 69  .        /// whi
11710 63 68 20 66 6f 72 6d 73 20 74 68 65 20 72 65 70  ch forms the rep
11720 6c 79 2e 20 54 68 65 20 73 71 6c 69 74 65 33 5f  ly. The sqlite3_
11730 69 6e 64 65 78 5f 69 6e 66 6f 20 73 74 72 75 63  index_info struc
11740 74 75 72 65 20 6c 6f 6f 6b 73 20 6c 69 6b 65 0d  ture looks like.
11750 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 69  .        /// thi
11760 73 3a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s:..        /// 
11770 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
11780 20 2f 2f 2f 20 3c 63 6f 64 65 3e 0d 0a 20 20 20   /// <code>..   
11790 20 20 20 20 20 2f 2f 2f 20 20 73 74 72 75 63 74       ///  struct
117a0 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69   sqlite3_index_i
117b0 6e 66 6f 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f  nfo {..        /
117c0 2f 2f 20 20 20 20 2f 2a 20 49 6e 70 75 74 73 20  //    /* Inputs 
117d0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  */..        /// 
117e0 20 20 20 63 6f 6e 73 74 20 69 6e 74 20 6e 43 6f     const int nCo
117f0 6e 73 74 72 61 69 6e 74 3b 20 20 20 2f 2a 20 4e  nstraint;   /* N
11800 75 6d 62 65 72 20 6f 66 20 65 6e 74 72 69 65 73  umber of entries
11810 20 69 6e 20 61 43 6f 6e 73 74 72 61 69 6e 74 20   in aConstraint 
11820 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  */..        /// 
11830 20 20 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20     const struct 
11840 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
11850 6e 73 74 72 61 69 6e 74 20 7b 0d 0a 20 20 20 20  nstraint {..    
11860 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 69 6e      ///       in
11870 74 20 69 43 6f 6c 75 6d 6e 3b 20 20 20 20 20 20  t iColumn;      
11880 20 20 20 20 2f 2a 20 43 6f 6c 75 6d 6e 20 6f 6e      /* Column on
11890 20 6c 65 66 74 2d 68 61 6e 64 20 73 69 64 65 20   left-hand side 
118a0 6f 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  of..        /// 
118b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
118c0 20 20 20 20 20 20 20 20 20 20 20 20 20 2a 20 63               * c
118d0 6f 6e 73 74 72 61 69 6e 74 20 2a 2f 0d 0a 20 20  onstraint */..  
118e0 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20        ///       
118f0 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 6f 70  unsigned char op
11900 3b 20 20 20 20 20 2f 2a 20 43 6f 6e 73 74 72 61  ;     /* Constra
11910 69 6e 74 20 6f 70 65 72 61 74 6f 72 20 2a 2f 0d  int operator */.
11920 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20  .        ///    
11930 20 20 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72     unsigned char
11940 20 75 73 61 62 6c 65 3b 20 2f 2a 20 54 72 75 65   usable; /* True
11950 20 69 66 20 74 68 69 73 20 63 6f 6e 73 74 72 61   if this constra
11960 69 6e 74 20 69 73 20 75 73 61 62 6c 65 20 2a 2f  int is usable */
11970 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20  ..        ///   
11980 20 20 20 20 69 6e 74 20 69 54 65 72 6d 4f 66 66      int iTermOff
11990 73 65 74 3b 20 20 20 20 20 20 2f 2a 20 55 73 65  set;      /* Use
119a0 64 20 69 6e 74 65 72 6e 61 6c 6c 79 20 2d 20 78  d internally - x
119b0 42 65 73 74 49 6e 64 65 78 20 73 68 6f 75 6c 64  BestIndex should
119c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20  ..        ///   
119d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
119e0 20 20 20 20 20 20 20 20 20 20 20 2a 20 69 67 6e             * ign
119f0 6f 72 65 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  ore */..        
11a00 2f 2f 2f 20 20 20 20 7d 20 2a 63 6f 6e 73 74 20  ///    } *const 
11a10 61 43 6f 6e 73 74 72 61 69 6e 74 3b 20 20 20 20  aConstraint;    
11a20 2f 2a 20 54 61 62 6c 65 20 6f 66 20 57 48 45 52  /* Table of WHER
11a30 45 20 63 6c 61 75 73 65 20 63 6f 6e 73 74 72 61  E clause constra
11a40 69 6e 74 73 20 2a 2f 0d 0a 20 20 20 20 20 20 20  ints */..       
11a50 20 2f 2f 2f 20 20 20 20 63 6f 6e 73 74 20 69 6e   ///    const in
11a60 74 20 6e 4f 72 64 65 72 42 79 3b 20 20 20 20 20  t nOrderBy;     
11a70 20 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20 74 65   /* Number of te
11a80 72 6d 73 20 69 6e 20 74 68 65 20 4f 52 44 45 52  rms in the ORDER
11a90 20 42 59 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   BY..        ///
11aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2a 20                * 
11ac0 63 6c 61 75 73 65 20 2a 2f 0d 0a 20 20 20 20 20  clause */..     
11ad0 20 20 20 2f 2f 2f 20 20 20 20 63 6f 6e 73 74 20     ///    const 
11ae0 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69  struct sqlite3_i
11af0 6e 64 65 78 5f 6f 72 64 65 72 62 79 20 7b 0d 0a  ndex_orderby {..
11b00 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20          ///     
11b10 20 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b 20 20    int iColumn;  
11b20 20 20 20 20 20 20 20 20 2f 2a 20 43 6f 6c 75 6d          /* Colum
11b30 6e 20 6e 75 6d 62 65 72 20 2a 2f 0d 0a 20 20 20  n number */..   
11b40 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 75       ///       u
11b50 6e 73 69 67 6e 65 64 20 63 68 61 72 20 64 65 73  nsigned char des
11b60 63 3b 20 20 20 2f 2a 20 54 72 75 65 20 66 6f 72  c;   /* True for
11b70 20 44 45 53 43 2e 20 20 46 61 6c 73 65 20 66 6f   DESC.  False fo
11b80 72 20 41 53 43 2e 20 2a 2f 0d 0a 20 20 20 20 20  r ASC. */..     
11b90 20 20 20 2f 2f 2f 20 20 20 20 7d 20 2a 63 6f 6e     ///    } *con
11ba0 73 74 20 61 4f 72 64 65 72 42 79 3b 20 20 20 20  st aOrderBy;    
11bb0 20 20 20 2f 2a 20 54 68 65 20 4f 52 44 45 52 20     /* The ORDER 
11bc0 42 59 20 63 6c 61 75 73 65 20 2a 2f 0d 0a 20 20  BY clause */..  
11bd0 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 2f 2a 20        ///    /* 
11be0 4f 75 74 70 75 74 73 20 2a 2f 0d 0a 20 20 20 20  Outputs */..    
11bf0 20 20 20 20 2f 2f 2f 20 20 20 20 73 74 72 75 63      ///    struc
11c00 74 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  t sqlite3_index_
11c10 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65  constraint_usage
11c20 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20   {..        /// 
11c30 20 20 20 20 20 69 6e 74 20 61 72 67 76 49 6e 64       int argvInd
11c40 65 78 3b 20 20 20 20 20 20 20 20 20 2f 2a 20 69  ex;         /* i
11c50 66 20 67 72 65 61 74 65 72 20 74 68 61 6e 20 7a  f greater than z
11c60 65 72 6f 2c 20 63 6f 6e 73 74 72 61 69 6e 74 20  ero, constraint 
11c70 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  is..        /// 
11c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11c90 20 20 20 20 20 20 20 20 20 20 20 20 20 2a 20 70               * p
11ca0 61 72 74 20 6f 66 20 61 72 67 76 20 74 6f 20 78  art of argv to x
11cb0 46 69 6c 74 65 72 20 2a 2f 0d 0a 20 20 20 20 20  Filter */..     
11cc0 20 20 20 2f 2f 2f 20 20 20 20 20 20 75 6e 73 69     ///      unsi
11cd0 67 6e 65 64 20 63 68 61 72 20 6f 6d 69 74 3b 20  gned char omit; 
11ce0 20 20 20 2f 2a 20 44 6f 20 6e 6f 74 20 63 6f 64     /* Do not cod
11cf0 65 20 61 20 74 65 73 74 20 66 6f 72 20 74 68 69  e a test for thi
11d00 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20  s..        ///  
11d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11d20 20 20 20 20 20 20 20 20 20 20 20 20 2a 20 63 6f              * co
11d30 6e 73 74 72 61 69 6e 74 20 2a 2f 0d 0a 20 20 20  nstraint */..   
11d40 20 20 20 20 20 2f 2f 2f 20 20 20 20 7d 20 2a 63       ///    } *c
11d50 6f 6e 73 74 20 61 43 6f 6e 73 74 72 61 69 6e 74  onst aConstraint
11d60 55 73 61 67 65 3b 0d 0a 20 20 20 20 20 20 20 20  Usage;..        
11d70 2f 2f 2f 20 20 20 20 69 6e 74 20 69 64 78 4e 75  ///    int idxNu
11d80 6d 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20  m;              
11d90 2f 2a 20 4e 75 6d 62 65 72 20 75 73 65 64 20 74  /* Number used t
11da0 6f 20 69 64 65 6e 74 69 66 79 20 74 68 65 20 69  o identify the i
11db0 6e 64 65 78 20 2a 2f 0d 0a 20 20 20 20 20 20 20  ndex */..       
11dc0 20 2f 2f 2f 20 20 20 20 63 68 61 72 20 2a 69 64   ///    char *id
11dd0 78 53 74 72 3b 20 20 20 20 20 20 20 20 20 20 20  xStr;           
11de0 20 2f 2a 20 53 74 72 69 6e 67 2c 20 70 6f 73 73   /* String, poss
11df0 69 62 6c 79 20 6f 62 74 61 69 6e 65 64 20 66 72  ibly obtained fr
11e00 6f 6d 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  om..        /// 
11e10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11e20 20 20 20 20 20 20 20 20 20 20 20 20 20 2a 20 73               * s
11e30 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 20  qlite3_malloc() 
11e40 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  */..        /// 
11e50 20 20 20 69 6e 74 20 6e 65 65 64 54 6f 46 72 65     int needToFre
11e60 65 49 64 78 53 74 72 3b 20 20 20 20 2f 2a 20 46  eIdxStr;    /* F
11e70 72 65 65 20 69 64 78 53 74 72 20 75 73 69 6e 67  ree idxStr using
11e80 20 73 71 6c 69 74 65 33 5f 66 72 65 65 28 29 20   sqlite3_free() 
11e90 69 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  if..        /// 
11ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 2a 20 74               * t
11ec0 72 75 65 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  rue */..        
11ed0 2f 2f 2f 20 20 20 20 69 6e 74 20 6f 72 64 65 72  ///    int order
11ee0 42 79 43 6f 6e 73 75 6d 65 64 3b 20 20 20 20 20  ByConsumed;     
11ef0 2f 2a 20 54 72 75 65 20 69 66 20 6f 75 74 70 75  /* True if outpu
11f00 74 20 69 73 20 61 6c 72 65 61 64 79 20 6f 72 64  t is already ord
11f10 65 72 65 64 20 2a 2f 0d 0a 20 20 20 20 20 20 20  ered */..       
11f20 20 2f 2f 2f 20 20 20 20 64 6f 75 62 6c 65 20 65   ///    double e
11f30 73 74 69 6d 61 74 65 64 43 6f 73 74 3b 20 20 20  stimatedCost;   
11f40 20 2f 2a 20 45 73 74 69 6d 61 74 65 64 20 63 6f   /* Estimated co
11f50 73 74 20 6f 66 20 75 73 69 6e 67 20 74 68 69 73  st of using this
11f60 20 69 6e 64 65 78 20 2a 2f 0d 0a 20 20 20 20 20   index */..     
11f70 20 20 20 2f 2f 2f 20 20 7d 3b 0d 0a 20 20 20 20     ///  };..    
11f80 20 20 20 20 2f 2f 2f 20 3c 2f 63 6f 64 65 3e 0d      /// </code>.
11f90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
11fa0 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
11fb0 20 49 6e 20 61 64 64 69 74 69 6f 6e 2c 20 74 68   In addition, th
11fc0 65 72 65 20 61 72 65 20 73 6f 6d 65 20 64 65 66  ere are some def
11fd0 69 6e 65 64 20 63 6f 6e 73 74 61 6e 74 73 3a 0d  ined constants:.
11fe0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
11ff0 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
12000 2f 20 3c 63 6f 64 65 3e 0d 0a 20 20 20 20 20 20  / <code>..      
12010 20 20 2f 2f 2f 20 20 23 64 65 66 69 6e 65 20 53    ///  #define S
12020 51 4c 49 54 45 5f 49 4e 44 45 58 5f 43 4f 4e 53  QLITE_INDEX_CONS
12030 54 52 41 49 4e 54 5f 45 51 20 20 20 20 32 0d 0a  TRAINT_EQ    2..
12040 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 23 64 65          ///  #de
12050 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4e 44 45  fine SQLITE_INDE
12060 58 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 47 54 20  X_CONSTRAINT_GT 
12070 20 20 20 34 0d 0a 20 20 20 20 20 20 20 20 2f 2f     4..        //
12080 2f 20 20 23 64 65 66 69 6e 65 20 53 51 4c 49 54  /  #define SQLIT
12090 45 5f 49 4e 44 45 58 5f 43 4f 4e 53 54 52 41 49  E_INDEX_CONSTRAI
120a0 4e 54 5f 4c 45 20 20 20 20 38 0d 0a 20 20 20 20  NT_LE    8..    
120b0 20 20 20 20 2f 2f 2f 20 20 23 64 65 66 69 6e 65      ///  #define
120c0 20 53 51 4c 49 54 45 5f 49 4e 44 45 58 5f 43 4f   SQLITE_INDEX_CO
120d0 4e 53 54 52 41 49 4e 54 5f 4c 54 20 20 20 20 31  NSTRAINT_LT    1
120e0 36 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20  6..        ///  
120f0 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
12100 4e 44 45 58 5f 43 4f 4e 53 54 52 41 49 4e 54 5f  NDEX_CONSTRAINT_
12110 47 45 20 20 20 20 33 32 0d 0a 20 20 20 20 20 20  GE    32..      
12120 20 20 2f 2f 2f 20 20 23 64 65 66 69 6e 65 20 53    ///  #define S
12130 51 4c 49 54 45 5f 49 4e 44 45 58 5f 43 4f 4e 53  QLITE_INDEX_CONS
12140 54 52 41 49 4e 54 5f 4d 41 54 43 48 20 36 34 0d  TRAINT_MATCH 64.
12150 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 63  .        /// </c
12160 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode>..        //
12170 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
12180 20 20 2f 2f 2f 20 54 68 65 20 53 51 4c 69 74 65    /// The SQLite
12190 20 63 6f 72 65 20 63 61 6c 6c 73 20 74 68 65 20   core calls the 
121a0 78 42 65 73 74 49 6e 64 65 78 20 6d 65 74 68 6f  xBestIndex metho
121b0 64 20 77 68 65 6e 20 69 74 20 69 73 20 63 6f 6d  d when it is com
121c0 70 69 6c 69 6e 67 20 61 0d 0a 20 20 20 20 20 20  piling a..      
121d0 20 20 2f 2f 2f 20 71 75 65 72 79 20 74 68 61 74    /// query that
121e0 20 69 6e 76 6f 6c 76 65 73 20 61 20 76 69 72 74   involves a virt
121f0 75 61 6c 20 74 61 62 6c 65 2e 20 49 6e 20 6f 74  ual table. In ot
12200 68 65 72 20 77 6f 72 64 73 2c 20 53 51 4c 69 74  her words, SQLit
12210 65 20 63 61 6c 6c 73 0d 0a 20 20 20 20 20 20 20  e calls..       
12220 20 2f 2f 2f 20 74 68 69 73 20 6d 65 74 68 6f 64   /// this method
12230 20 77 68 65 6e 20 69 74 20 69 73 20 72 75 6e 6e   when it is runn
12240 69 6e 67 20 73 71 6c 69 74 65 33 5f 70 72 65 70  ing sqlite3_prep
12250 61 72 65 28 29 20 6f 72 20 74 68 65 20 65 71 75  are() or the equ
12260 69 76 61 6c 65 6e 74 2e 0d 0a 20 20 20 20 20 20  ivalent...      
12270 20 20 2f 2f 2f 20 42 79 20 63 61 6c 6c 69 6e 67    /// By calling
12280 20 74 68 69 73 20 6d 65 74 68 6f 64 2c 20 74 68   this method, th
12290 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 69 73  e SQLite core is
122a0 20 73 61 79 69 6e 67 20 74 6f 20 74 68 65 20 76   saying to the v
122b0 69 72 74 75 61 6c 0d 0a 20 20 20 20 20 20 20 20  irtual..        
122c0 2f 2f 2f 20 74 61 62 6c 65 20 74 68 61 74 20 69  /// table that i
122d0 74 20 6e 65 65 64 73 20 74 6f 20 61 63 63 65 73  t needs to acces
122e0 73 20 73 6f 6d 65 20 73 75 62 73 65 74 20 6f 66  s some subset of
122f0 20 74 68 65 20 72 6f 77 73 20 69 6e 20 74 68 65   the rows in the
12300 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 69  ..        /// vi
12310 72 74 75 61 6c 20 74 61 62 6c 65 20 61 6e 64 20  rtual table and 
12320 69 74 20 77 61 6e 74 73 20 74 6f 20 6b 6e 6f 77  it wants to know
12330 20 74 68 65 20 6d 6f 73 74 20 65 66 66 69 63 69   the most effici
12340 65 6e 74 20 77 61 79 20 74 6f 20 64 6f 0d 0a 20  ent way to do.. 
12350 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 61 74 20         /// that 
12360 61 63 63 65 73 73 2e 20 54 68 65 20 78 42 65 73  access. The xBes
12370 74 49 6e 64 65 78 20 6d 65 74 68 6f 64 20 72 65  tIndex method re
12380 70 6c 69 65 73 20 77 69 74 68 20 69 6e 66 6f 72  plies with infor
12390 6d 61 74 69 6f 6e 20 74 68 61 74 0d 0a 20 20 20  mation that..   
123a0 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 53 51 4c       /// the SQL
123b0 69 74 65 20 63 6f 72 65 20 63 61 6e 20 74 68 65  ite core can the
123c0 6e 20 75 73 65 20 74 6f 20 63 6f 6e 64 75 63 74  n use to conduct
123d0 20 61 6e 20 65 66 66 69 63 69 65 6e 74 20 73 65   an efficient se
123e0 61 72 63 68 20 6f 66 20 74 68 65 0d 0a 20 20 20  arch of the..   
123f0 20 20 20 20 20 2f 2f 2f 20 76 69 72 74 75 61 6c       /// virtual
12400 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20   table...       
12410 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
12420 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
12430 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 57 68  ..        /// Wh
12440 69 6c 65 20 63 6f 6d 70 69 6c 69 6e 67 20 61 20  ile compiling a 
12450 73 69 6e 67 6c 65 20 53 51 4c 20 71 75 65 72 79  single SQL query
12460 2c 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  , the SQLite cor
12470 65 20 6d 69 67 68 74 20 63 61 6c 6c 0d 0a 20 20  e might call..  
12480 20 20 20 20 20 20 2f 2f 2f 20 78 42 65 73 74 49        /// xBestI
12490 6e 64 65 78 20 6d 75 6c 74 69 70 6c 65 20 74 69  ndex multiple ti
124a0 6d 65 73 20 77 69 74 68 20 64 69 66 66 65 72 65  mes with differe
124b0 6e 74 20 73 65 74 74 69 6e 67 73 20 69 6e 0d 0a  nt settings in..
124c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69          /// sqli
124d0 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 2e 20  te3_index_info. 
124e0 54 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  The SQLite core 
124f0 77 69 6c 6c 20 74 68 65 6e 20 73 65 6c 65 63 74  will then select
12500 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
12510 2f 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 20 74 68  / combination th
12520 61 74 20 61 70 70 65 61 72 73 20 74 6f 20 67 69  at appears to gi
12530 76 65 20 74 68 65 20 62 65 73 74 20 70 65 72 66  ve the best perf
12540 6f 72 6d 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20  ormance...      
12550 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
12560 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
12570 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 42  >..        /// B
12580 65 66 6f 72 65 20 63 61 6c 6c 69 6e 67 20 74 68  efore calling th
12590 69 73 20 6d 65 74 68 6f 64 2c 20 74 68 65 20 53  is method, the S
125a0 51 4c 69 74 65 20 63 6f 72 65 20 69 6e 69 74 69  QLite core initi
125b0 61 6c 69 7a 65 73 20 61 6e 20 69 6e 73 74 61 6e  alizes an instan
125c0 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ce..        /// 
125d0 6f 66 20 74 68 65 20 73 71 6c 69 74 65 33 5f 69  of the sqlite3_i
125e0 6e 64 65 78 5f 69 6e 66 6f 20 73 74 72 75 63 74  ndex_info struct
125f0 75 72 65 20 77 69 74 68 20 69 6e 66 6f 72 6d 61  ure with informa
12600 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 65 0d 0a  tion about the..
12610 20 20 20 20 20 20 20 20 2f 2f 2f 20 71 75 65 72          /// quer
12620 79 20 74 68 61 74 20 69 74 20 69 73 20 63 75 72  y that it is cur
12630 72 65 6e 74 6c 79 20 74 72 79 69 6e 67 20 74 6f  rently trying to
12640 20 70 72 6f 63 65 73 73 2e 20 54 68 69 73 20 69   process. This i
12650 6e 66 6f 72 6d 61 74 69 6f 6e 0d 0a 20 20 20 20  nformation..    
12660 20 20 20 20 2f 2f 2f 20 64 65 72 69 76 65 73 20      /// derives 
12670 6d 61 69 6e 6c 79 20 66 72 6f 6d 20 74 68 65 20  mainly from the 
12680 57 48 45 52 45 20 63 6c 61 75 73 65 20 61 6e 64  WHERE clause and
12690 20 4f 52 44 45 52 20 42 59 20 6f 72 20 47 52 4f   ORDER BY or GRO
126a0 55 50 20 42 59 0d 0a 20 20 20 20 20 20 20 20 2f  UP BY..        /
126b0 2f 2f 20 63 6c 61 75 73 65 73 20 6f 66 20 74 68  // clauses of th
126c0 65 20 71 75 65 72 79 2c 20 62 75 74 20 61 6c 73  e query, but als
126d0 6f 20 66 72 6f 6d 20 61 6e 79 20 4f 4e 20 6f 72  o from any ON or
126e0 20 55 53 49 4e 47 20 63 6c 61 75 73 65 73 20 69   USING clauses i
126f0 66 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  f the..        /
12700 2f 2f 20 71 75 65 72 79 20 69 73 20 61 20 6a 6f  // query is a jo
12710 69 6e 2e 20 54 68 65 20 69 6e 66 6f 72 6d 61 74  in. The informat
12720 69 6f 6e 20 74 68 61 74 20 74 68 65 20 53 51 4c  ion that the SQL
12730 69 74 65 20 63 6f 72 65 20 70 72 6f 76 69 64 65  ite core provide
12740 73 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f  s to..        //
12750 2f 20 74 68 65 20 78 42 65 73 74 49 6e 64 65 78  / the xBestIndex
12760 20 6d 65 74 68 6f 64 20 69 73 20 68 65 6c 64 20   method is held 
12770 69 6e 20 74 68 65 20 70 61 72 74 20 6f 66 20 74  in the part of t
12780 68 65 20 73 74 72 75 63 74 75 72 65 20 74 68 61  he structure tha
12790 74 20 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  t is..        //
127a0 2f 20 6d 61 72 6b 65 64 20 61 73 20 22 49 6e 70  / marked as "Inp
127b0 75 74 73 22 2e 20 54 68 65 20 22 4f 75 74 70 75  uts". The "Outpu
127c0 74 73 22 20 73 65 63 74 69 6f 6e 20 69 73 20 69  ts" section is i
127d0 6e 69 74 69 61 6c 69 7a 65 64 20 74 6f 20 7a 65  nitialized to ze
127e0 72 6f 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ro...        ///
127f0 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20   </para>..      
12800 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20    /// <para>..  
12810 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e        /// The in
12820 66 6f 72 6d 61 74 69 6f 6e 20 69 6e 20 74 68 65  formation in the
12830 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69   sqlite3_index_i
12840 6e 66 6f 20 73 74 72 75 63 74 75 72 65 20 69 73  nfo structure is
12850 20 65 70 68 65 6d 65 72 61 6c 0d 0a 20 20 20 20   ephemeral..    
12860 20 20 20 20 2f 2f 2f 20 61 6e 64 20 6d 61 79 20      /// and may 
12870 62 65 20 6f 76 65 72 77 72 69 74 74 65 6e 20 6f  be overwritten o
12880 72 20 64 65 61 6c 6c 6f 63 61 74 65 64 20 61 73  r deallocated as
12890 20 73 6f 6f 6e 20 61 73 20 74 68 65 20 78 42 65   soon as the xBe
128a0 73 74 49 6e 64 65 78 0d 0a 20 20 20 20 20 20 20  stIndex..       
128b0 20 2f 2f 2f 20 6d 65 74 68 6f 64 20 72 65 74 75   /// method retu
128c0 72 6e 73 2e 20 49 66 20 74 68 65 20 78 42 65 73  rns. If the xBes
128d0 74 49 6e 64 65 78 20 6d 65 74 68 6f 64 20 6e 65  tIndex method ne
128e0 65 64 73 20 74 6f 20 72 65 6d 65 6d 62 65 72 20  eds to remember 
128f0 61 6e 79 20 70 61 72 74 0d 0a 20 20 20 20 20 20  any part..      
12900 20 20 2f 2f 2f 20 6f 66 20 74 68 65 20 73 71 6c    /// of the sql
12910 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 20  ite3_index_info 
12920 73 74 72 75 63 74 75 72 65 2c 20 69 74 20 73 68  structure, it sh
12930 6f 75 6c 64 20 6d 61 6b 65 20 61 20 63 6f 70 79  ould make a copy
12940 2e 20 43 61 72 65 0d 0a 20 20 20 20 20 20 20 20  . Care..        
12950 2f 2f 2f 20 6d 75 73 74 20 62 65 20 74 61 6b 65  /// must be take
12960 20 74 6f 20 73 74 6f 72 65 20 74 68 65 20 63 6f   to store the co
12970 70 79 20 69 6e 20 61 20 70 6c 61 63 65 20 77 68  py in a place wh
12980 65 72 65 20 69 74 20 77 69 6c 6c 20 62 65 0d 0a  ere it will be..
12990 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 65 61 6c          /// deal
129a0 6c 6f 63 61 74 65 64 2c 20 73 75 63 68 20 61 73  located, such as
129b0 20 69 6e 20 74 68 65 20 69 64 78 53 74 72 20 66   in the idxStr f
129c0 69 65 6c 64 20 77 69 74 68 20 6e 65 65 64 54 6f  ield with needTo
129d0 46 72 65 65 49 64 78 53 74 72 20 73 65 74 0d 0a  FreeIdxStr set..
129e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20 31          /// to 1
129f0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
12a00 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
12a10 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
12a20 20 20 20 20 2f 2f 2f 20 4e 6f 74 65 20 74 68 61      /// Note tha
12a30 74 20 78 42 65 73 74 49 6e 64 65 78 20 77 69 6c  t xBestIndex wil
12a40 6c 20 61 6c 77 61 79 73 20 62 65 20 63 61 6c 6c  l always be call
12a50 65 64 20 62 65 66 6f 72 65 20 78 46 69 6c 74 65  ed before xFilte
12a60 72 2c 20 73 69 6e 63 65 0d 0a 20 20 20 20 20 20  r, since..      
12a70 20 20 2f 2f 2f 20 74 68 65 20 69 64 78 4e 75 6d    /// the idxNum
12a80 20 61 6e 64 20 69 64 78 53 74 72 20 6f 75 74 70   and idxStr outp
12a90 75 74 73 20 66 72 6f 6d 20 78 42 65 73 74 49 6e  uts from xBestIn
12aa0 64 65 78 20 61 72 65 20 72 65 71 75 69 72 65 64  dex are required
12ab0 20 69 6e 70 75 74 73 0d 0a 20 20 20 20 20 20 20   inputs..       
12ac0 20 2f 2f 2f 20 74 6f 20 78 46 69 6c 74 65 72 2e   /// to xFilter.
12ad0 20 48 6f 77 65 76 65 72 2c 20 74 68 65 72 65 20   However, there 
12ae0 69 73 20 6e 6f 20 67 75 61 72 61 6e 74 65 65 20  is no guarantee 
12af0 74 68 61 74 20 78 46 69 6c 74 65 72 20 77 69 6c  that xFilter wil
12b00 6c 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  l be..        //
12b10 2f 20 63 61 6c 6c 65 64 20 66 6f 6c 6c 6f 77 69  / called followi
12b20 6e 67 20 61 20 73 75 63 63 65 73 73 66 75 6c 20  ng a successful 
12b30 78 42 65 73 74 49 6e 64 65 78 2e 0d 0a 20 20 20  xBestIndex...   
12b40 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
12b50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
12b60 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
12b70 2f 20 54 68 65 20 78 42 65 73 74 49 6e 64 65 78  / The xBestIndex
12b80 20 6d 65 74 68 6f 64 20 69 73 20 72 65 71 75 69   method is requi
12b90 72 65 64 20 66 6f 72 20 65 76 65 72 79 20 76 69  red for every vi
12ba0 72 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20  rtual table..   
12bb0 20 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65       /// impleme
12bc0 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ntation...      
12bd0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
12be0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
12bf0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 32  >..        /// 2
12c00 2e 33 2e 31 20 49 6e 70 75 74 73 0d 0a 20 20 20  .3.1 Inputs..   
12c10 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
12c20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
12c30 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
12c40 2f 20 54 68 65 20 6d 61 69 6e 20 74 68 69 6e 67  / The main thing
12c50 20 74 68 61 74 20 74 68 65 20 53 51 4c 69 74 65   that the SQLite
12c60 20 63 6f 72 65 20 69 73 20 74 72 79 69 6e 67 20   core is trying 
12c70 74 6f 20 63 6f 6d 6d 75 6e 69 63 61 74 65 20 74  to communicate t
12c80 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  o the..        /
12c90 2f 2f 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  // virtual table
12ca0 20 69 73 20 74 68 65 20 63 6f 6e 73 74 72 61 69   is the constrai
12cb0 6e 74 73 20 74 68 61 74 20 61 72 65 20 61 76 61  nts that are ava
12cc0 69 6c 61 62 6c 65 20 74 6f 20 6c 69 6d 69 74 20  ilable to limit 
12cd0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
12ce0 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77 73 20   number of rows 
12cf0 74 68 61 74 20 6e 65 65 64 20 74 6f 20 62 65 20  that need to be 
12d00 73 65 61 72 63 68 65 64 2e 20 54 68 65 20 61 43  searched. The aC
12d10 6f 6e 73 74 72 61 69 6e 74 5b 5d 20 61 72 72 61  onstraint[] arra
12d20 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  y..        /// c
12d30 6f 6e 74 61 69 6e 73 20 6f 6e 65 20 65 6e 74 72  ontains one entr
12d40 79 20 66 6f 72 20 65 61 63 68 20 63 6f 6e 73 74  y for each const
12d50 72 61 69 6e 74 2e 20 54 68 65 72 65 20 77 69 6c  raint. There wil
12d60 6c 20 62 65 20 65 78 61 63 74 6c 79 0d 0a 20 20  l be exactly..  
12d70 20 20 20 20 20 20 2f 2f 2f 20 6e 43 6f 6e 73 74        /// nConst
12d80 72 61 69 6e 74 20 65 6e 74 72 69 65 73 20 69 6e  raint entries in
12d90 20 74 68 61 74 20 61 72 72 61 79 2e 0d 0a 20 20   that array...  
12da0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
12db0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
12dc0 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
12dd0 2f 2f 20 45 61 63 68 20 63 6f 6e 73 74 72 61 69  // Each constrai
12de0 6e 74 20 77 69 6c 6c 20 63 6f 72 72 65 73 70 6f  nt will correspo
12df0 6e 64 20 74 6f 20 61 20 74 65 72 6d 20 69 6e 20  nd to a term in 
12e00 74 68 65 20 57 48 45 52 45 20 63 6c 61 75 73 65  the WHERE clause
12e10 20 6f 72 20 69 6e 0d 0a 20 20 20 20 20 20 20 20   or in..        
12e20 2f 2f 2f 20 61 20 55 53 49 4e 47 20 6f 72 20 4f  /// a USING or O
12e30 4e 20 63 6c 61 75 73 65 20 74 68 61 74 20 69 73  N clause that is
12e40 20 6f 66 20 74 68 65 20 66 6f 72 6d 0d 0a 20 20   of the form..  
12e50 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
12e60 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
12e70 63 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f  code>..        /
12e80 2f 2f 20 20 20 20 20 63 6f 6c 75 6d 6e 20 4f 50  //     column OP
12e90 20 45 58 50 52 0d 0a 20 20 20 20 20 20 20 20 2f   EXPR..        /
12ea0 2f 2f 20 3c 2f 63 6f 64 65 3e 0d 0a 20 20 20 20  // </code>..    
12eb0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a      /// <para>..
12ec0 20 20 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 72          /// Wher
12ed0 65 20 22 63 6f 6c 75 6d 6e 22 20 69 73 20 61 20  e "column" is a 
12ee0 63 6f 6c 75 6d 6e 20 69 6e 20 74 68 65 20 76 69  column in the vi
12ef0 72 74 75 61 6c 20 74 61 62 6c 65 2c 20 4f 50 20  rtual table, OP 
12f00 69 73 20 61 6e 20 6f 70 65 72 61 74 6f 72 0d 0a  is an operator..
12f10 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 69 6b 65          /// like
12f20 20 22 3d 22 20 6f 72 20 22 26 6c 74 3b 22 2c 20   "=" or "&lt;", 
12f30 61 6e 64 20 45 58 50 52 20 69 73 20 61 6e 20 61  and EXPR is an a
12f40 72 62 69 74 72 61 72 79 20 65 78 70 72 65 73 73  rbitrary express
12f50 69 6f 6e 2e 20 53 6f 2c 20 66 6f 72 0d 0a 20 20  ion. So, for..  
12f60 20 20 20 20 20 20 2f 2f 2f 20 65 78 61 6d 70 6c        /// exampl
12f70 65 2c 20 69 66 20 74 68 65 20 57 48 45 52 45 20  e, if the WHERE 
12f80 63 6c 61 75 73 65 20 63 6f 6e 74 61 69 6e 65 64  clause contained
12f90 20 61 20 74 65 72 6d 20 6c 69 6b 65 20 74 68 69   a term like thi
12fa0 73 3a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s:..        /// 
12fb0 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
12fc0 20 2f 2f 2f 20 3c 63 6f 64 65 3e 0d 0a 20 20 20   /// <code>..   
12fd0 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20       ///        
12fe0 20 20 61 20 3d 20 35 0d 0a 20 20 20 20 20 20 20    a = 5..       
12ff0 20 2f 2f 2f 20 3c 2f 63 6f 64 65 3e 0d 0a 20 20   /// </code>..  
13000 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
13010 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
13020 65 6e 20 6f 6e 65 20 6f 66 20 74 68 65 20 63 6f  en one of the co
13030 6e 73 74 72 61 69 6e 74 73 20 77 6f 75 6c 64 20  nstraints would 
13040 62 65 20 6f 6e 20 74 68 65 20 22 61 22 20 63 6f  be on the "a" co
13050 6c 75 6d 6e 20 77 69 74 68 0d 0a 20 20 20 20 20  lumn with..     
13060 20 20 20 2f 2f 2f 20 6f 70 65 72 61 74 6f 72 20     /// operator 
13070 22 3d 22 20 61 6e 64 20 61 6e 20 65 78 70 72 65  "=" and an expre
13080 73 73 69 6f 6e 20 6f 66 20 22 35 22 2e 20 43 6f  ssion of "5". Co
13090 6e 73 74 72 61 69 6e 74 73 20 6e 65 65 64 20 6e  nstraints need n
130a0 6f 74 20 68 61 76 65 20 61 0d 0a 20 20 20 20 20  ot have a..     
130b0 20 20 20 2f 2f 2f 20 6c 69 74 65 72 61 6c 20 72     /// literal r
130c0 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66  epresentation of
130d0 20 74 68 65 20 57 48 45 52 45 20 63 6c 61 75 73   the WHERE claus
130e0 65 2e 20 54 68 65 20 71 75 65 72 79 20 6f 70 74  e. The query opt
130f0 69 6d 69 7a 65 72 0d 0a 20 20 20 20 20 20 20 20  imizer..        
13100 2f 2f 2f 20 6d 69 67 68 74 20 6d 61 6b 65 20 74  /// might make t
13110 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 73 20 74  ransformations t
13120 6f 20 74 68 65 20 57 48 45 52 45 20 63 6c 61 75  o the WHERE clau
13130 73 65 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 65  se in order to e
13140 78 74 72 61 63 74 0d 0a 20 20 20 20 20 20 20 20  xtract..        
13150 2f 2f 2f 20 61 73 20 6d 61 6e 79 20 63 6f 6e 73  /// as many cons
13160 74 72 61 69 6e 74 73 20 61 73 20 69 74 20 63 61  traints as it ca
13170 6e 2e 20 53 6f 2c 20 66 6f 72 20 65 78 61 6d 70  n. So, for examp
13180 6c 65 2c 20 69 66 20 74 68 65 20 57 48 45 52 45  le, if the WHERE
13190 20 63 6c 61 75 73 65 0d 0a 20 20 20 20 20 20 20   clause..       
131a0 20 2f 2f 2f 20 63 6f 6e 74 61 69 6e 65 64 20 73   /// contained s
131b0 6f 6d 65 74 68 69 6e 67 20 6c 69 6b 65 20 74 68  omething like th
131c0 69 73 3a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  is:..        ///
131d0 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20   </para>..      
131e0 20 20 2f 2f 2f 20 3c 63 6f 64 65 3e 0d 0a 20 20    /// <code>..  
131f0 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20        ///       
13200 20 20 20 78 20 42 45 54 57 45 45 4e 20 31 30 20     x BETWEEN 10 
13210 41 4e 44 20 31 30 30 20 41 4e 44 20 39 39 39 26  AND 100 AND 999&
13220 67 74 3b 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f  gt;y..        //
13230 2f 20 3c 2f 63 6f 64 65 3e 0d 0a 20 20 20 20 20  / </code>..     
13240 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20     /// <para>.. 
13250 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 71         /// The q
13260 75 65 72 79 20 6f 70 74 69 6d 69 7a 65 72 20 6d  uery optimizer m
13270 69 67 68 74 20 74 72 61 6e 73 6c 61 74 65 20 74  ight translate t
13280 68 69 73 20 69 6e 74 6f 20 74 68 72 65 65 20 73  his into three s
13290 65 70 61 72 61 74 65 0d 0a 20 20 20 20 20 20 20  eparate..       
132a0 20 2f 2f 2f 20 63 6f 6e 73 74 72 61 69 6e 74 73   /// constraints
132b0 3a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  :..        /// <
132c0 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
132d0 2f 2f 2f 20 3c 63 6f 64 65 3e 0d 0a 20 20 20 20  /// <code>..    
132e0 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20      ///         
132f0 20 78 20 26 67 74 3b 3d 20 31 30 0d 0a 20 20 20   x &gt;= 10..   
13300 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20       ///        
13310 20 20 78 20 26 6c 74 3b 3d 20 31 30 30 0d 0a 20    x &lt;= 100.. 
13320 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20         ///      
13330 20 20 20 20 79 20 26 6c 74 3b 20 39 39 39 0d 0a      y &lt; 999..
13340 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 63 6f          /// </co
13350 64 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de>..        ///
13360 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
13370 20 2f 2f 2f 20 46 6f 72 20 65 61 63 68 20 63 6f   /// For each co
13380 6e 73 74 72 61 69 6e 74 2c 20 74 68 65 20 61 43  nstraint, the aC
13390 6f 6e 73 74 72 61 69 6e 74 5b 5d 2e 69 43 6f 6c  onstraint[].iCol
133a0 75 6d 6e 20 66 69 65 6c 64 20 69 6e 64 69 63 61  umn field indica
133b0 74 65 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  tes..        ///
133c0 20 77 68 69 63 68 20 63 6f 6c 75 6d 6e 20 61 70   which column ap
133d0 70 65 61 72 73 20 6f 6e 20 74 68 65 20 6c 65 66  pears on the lef
133e0 74 2d 68 61 6e 64 20 73 69 64 65 20 6f 66 20 74  t-hand side of t
133f0 68 65 20 63 6f 6e 73 74 72 61 69 6e 74 2e 20 54  he constraint. T
13400 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
13410 66 69 72 73 74 20 63 6f 6c 75 6d 6e 20 6f 66 20  first column of 
13420 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c  the virtual tabl
13430 65 20 69 73 20 63 6f 6c 75 6d 6e 20 30 2e 20 54  e is column 0. T
13440 68 65 20 72 6f 77 69 64 20 6f 66 20 74 68 65 0d  he rowid of the.
13450 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 69 72  .        /// vir
13460 74 75 61 6c 20 74 61 62 6c 65 20 69 73 20 63 6f  tual table is co
13470 6c 75 6d 6e 20 2d 31 2e 20 54 68 65 20 61 43 6f  lumn -1. The aCo
13480 6e 73 74 72 61 69 6e 74 5b 5d 2e 6f 70 20 66 69  nstraint[].op fi
13490 65 6c 64 20 69 6e 64 69 63 61 74 65 73 0d 0a 20  eld indicates.. 
134a0 20 20 20 20 20 20 20 2f 2f 2f 20 77 68 69 63 68         /// which
134b0 20 6f 70 65 72 61 74 6f 72 20 69 73 20 75 73 65   operator is use
134c0 64 2e 20 54 68 65 20 53 51 4c 49 54 45 5f 49 4e  d. The SQLITE_IN
134d0 44 45 58 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 2a  DEX_CONSTRAINT_*
134e0 20 63 6f 6e 73 74 61 6e 74 73 20 6d 61 70 0d 0a   constants map..
134f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65          /// inte
13500 67 65 72 20 63 6f 6e 73 74 61 6e 74 73 20 69 6e  ger constants in
13510 74 6f 20 6f 70 65 72 61 74 6f 72 20 76 61 6c 75  to operator valu
13520 65 73 2e 20 43 6f 6c 75 6d 6e 73 20 6f 63 63 75  es. Columns occu
13530 72 20 69 6e 20 74 68 65 20 6f 72 64 65 72 0d 0a  r in the order..
13540 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 79          /// they
13550 20 77 65 72 65 20 64 65 66 69 6e 65 64 20 62 79   were defined by
13560 20 74 68 65 20 63 61 6c 6c 20 74 6f 20 73 71 6c   the call to sql
13570 69 74 65 33 5f 64 65 63 6c 61 72 65 5f 76 74 61  ite3_declare_vta
13580 62 28 29 20 69 6e 20 74 68 65 0d 0a 20 20 20 20  b() in the..    
13590 20 20 20 20 2f 2f 2f 20 78 43 72 65 61 74 65 20      /// xCreate 
135a0 6f 72 20 78 43 6f 6e 6e 65 63 74 20 6d 65 74 68  or xConnect meth
135b0 6f 64 2e 20 48 69 64 64 65 6e 20 63 6f 6c 75 6d  od. Hidden colum
135c0 6e 73 20 61 72 65 20 63 6f 75 6e 74 65 64 20 77  ns are counted w
135d0 68 65 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  hen..        ///
135e0 20 64 65 74 65 72 6d 69 6e 69 6e 67 20 74 68 65   determining the
135f0 20 63 6f 6c 75 6d 6e 20 69 6e 64 65 78 2e 0d 0a   column index...
13600 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
13610 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
13620 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
13630 20 2f 2f 2f 20 54 68 65 20 61 43 6f 6e 73 74 72   /// The aConstr
13640 61 69 6e 74 5b 5d 20 61 72 72 61 79 20 63 6f 6e  aint[] array con
13650 74 61 69 6e 73 20 69 6e 66 6f 72 6d 61 74 69 6f  tains informatio
13660 6e 20 61 62 6f 75 74 20 61 6c 6c 20 63 6f 6e 73  n about all cons
13670 74 72 61 69 6e 74 73 0d 0a 20 20 20 20 20 20 20  traints..       
13680 20 2f 2f 2f 20 74 68 61 74 20 61 70 70 6c 79 20   /// that apply 
13690 74 6f 20 74 68 65 20 76 69 72 74 75 61 6c 20 74  to the virtual t
136a0 61 62 6c 65 2e 20 42 75 74 20 73 6f 6d 65 20 6f  able. But some o
136b0 66 20 74 68 65 20 63 6f 6e 73 74 72 61 69 6e 74  f the constraint
136c0 73 20 6d 69 67 68 74 0d 0a 20 20 20 20 20 20 20  s might..       
136d0 20 2f 2f 2f 20 6e 6f 74 20 62 65 20 75 73 61 62   /// not be usab
136e0 6c 65 20 62 65 63 61 75 73 65 20 6f 66 20 74 68  le because of th
136f0 65 20 77 61 79 20 74 61 62 6c 65 73 20 61 72 65  e way tables are
13700 20 6f 72 64 65 72 65 64 20 69 6e 20 61 20 6a 6f   ordered in a jo
13710 69 6e 2e 20 54 68 65 0d 0a 20 20 20 20 20 20 20  in. The..       
13720 20 2f 2f 2f 20 78 42 65 73 74 49 6e 64 65 78 20   /// xBestIndex 
13730 6d 65 74 68 6f 64 20 6d 75 73 74 20 74 68 65 72  method must ther
13740 65 66 6f 72 65 20 6f 6e 6c 79 20 63 6f 6e 73 69  efore only consi
13750 64 65 72 20 63 6f 6e 73 74 72 61 69 6e 74 73 20  der constraints 
13760 74 68 61 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f  that..        //
13770 2f 20 68 61 76 65 20 61 6e 20 61 43 6f 6e 73 74  / have an aConst
13780 72 61 69 6e 74 5b 5d 2e 75 73 61 62 6c 65 20 66  raint[].usable f
13790 6c 61 67 20 77 68 69 63 68 20 69 73 20 74 72 75  lag which is tru
137a0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
137b0 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
137c0 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
137d0 20 20 20 20 20 2f 2f 2f 20 49 6e 20 61 64 64 69       /// In addi
137e0 74 69 6f 6e 20 74 6f 20 57 48 45 52 45 20 63 6c  tion to WHERE cl
137f0 61 75 73 65 20 63 6f 6e 73 74 72 61 69 6e 74 73  ause constraints
13800 2c 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  , the SQLite cor
13810 65 20 61 6c 73 6f 20 74 65 6c 6c 73 0d 0a 20 20  e also tells..  
13820 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 78 42        /// the xB
13830 65 73 74 49 6e 64 65 78 20 6d 65 74 68 6f 64 20  estIndex method 
13840 61 62 6f 75 74 20 74 68 65 20 4f 52 44 45 52 20  about the ORDER 
13850 42 59 20 63 6c 61 75 73 65 2e 20 28 49 6e 20 61  BY clause. (In a
13860 6e 20 61 67 67 72 65 67 61 74 65 0d 0a 20 20 20  n aggregate..   
13870 20 20 20 20 20 2f 2f 2f 20 71 75 65 72 79 2c 20       /// query, 
13880 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
13890 6d 69 67 68 74 20 70 75 74 20 69 6e 20 47 52 4f  might put in GRO
138a0 55 50 20 42 59 20 63 6c 61 75 73 65 20 69 6e 66  UP BY clause inf
138b0 6f 72 6d 61 74 69 6f 6e 20 69 6e 0d 0a 20 20 20  ormation in..   
138c0 20 20 20 20 20 2f 2f 2f 20 70 6c 61 63 65 20 6f       /// place o
138d0 66 20 74 68 65 20 4f 52 44 45 52 20 42 59 20 63  f the ORDER BY c
138e0 6c 61 75 73 65 20 69 6e 66 6f 72 6d 61 74 69 6f  lause informatio
138f0 6e 2c 20 62 75 74 20 74 68 69 73 20 66 61 63 74  n, but this fact
13900 20 73 68 6f 75 6c 64 20 6e 6f 74 0d 0a 20 20 20   should not..   
13910 20 20 20 20 20 2f 2f 2f 20 6d 61 6b 65 20 61 6e       /// make an
13920 79 20 64 69 66 66 65 72 65 6e 63 65 20 74 6f 20  y difference to 
13930 74 68 65 20 78 42 65 73 74 49 6e 64 65 78 20 6d  the xBestIndex m
13940 65 74 68 6f 64 2e 29 20 49 66 20 61 6c 6c 20 74  ethod.) If all t
13950 65 72 6d 73 20 6f 66 20 74 68 65 0d 0a 20 20 20  erms of the..   
13960 20 20 20 20 20 2f 2f 2f 20 4f 52 44 45 52 20 42       /// ORDER B
13970 59 20 63 6c 61 75 73 65 20 61 72 65 20 63 6f 6c  Y clause are col
13980 75 6d 6e 73 20 69 6e 20 74 68 65 20 76 69 72 74  umns in the virt
13990 75 61 6c 20 74 61 62 6c 65 2c 20 74 68 65 6e 20  ual table, then 
139a0 6e 4f 72 64 65 72 42 79 0d 0a 20 20 20 20 20 20  nOrderBy..      
139b0 20 20 2f 2f 2f 20 77 69 6c 6c 20 62 65 20 74 68    /// will be th
139c0 65 20 6e 75 6d 62 65 72 20 6f 66 20 74 65 72 6d  e number of term
139d0 73 20 69 6e 20 74 68 65 20 4f 52 44 45 52 20 42  s in the ORDER B
139e0 59 20 63 6c 61 75 73 65 20 61 6e 64 20 74 68 65  Y clause and the
139f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 4f  ..        /// aO
13a00 72 64 65 72 42 79 5b 5d 20 61 72 72 61 79 20 77  rderBy[] array w
13a10 69 6c 6c 20 69 64 65 6e 74 69 66 79 20 74 68 65  ill identify the
13a20 20 63 6f 6c 75 6d 6e 20 66 6f 72 20 65 61 63 68   column for each
13a30 20 74 65 72 6d 20 69 6e 20 74 68 65 0d 0a 20 20   term in the..  
13a40 20 20 20 20 20 20 2f 2f 2f 20 6f 72 64 65 72 20        /// order 
13a50 62 79 20 63 6c 61 75 73 65 20 61 6e 64 20 77 68  by clause and wh
13a60 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 61  ether or not tha
13a70 74 20 63 6f 6c 75 6d 6e 20 69 73 20 41 53 43 20  t column is ASC 
13a80 6f 72 20 44 45 53 43 2e 0d 0a 20 20 20 20 20 20  or DESC...      
13a90 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
13aa0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
13ab0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 32  >..        /// 2
13ac0 2e 33 2e 32 20 4f 75 74 70 75 74 73 0d 0a 20 20  .3.2 Outputs..  
13ad0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
13ae0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
13af0 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
13b00 2f 2f 20 47 69 76 65 6e 20 61 6c 6c 20 6f 66 20  // Given all of 
13b10 74 68 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  the information 
13b20 61 62 6f 76 65 2c 20 74 68 65 20 6a 6f 62 20 6f  above, the job o
13b30 66 20 74 68 65 20 78 42 65 73 74 49 6e 64 65 78  f the xBestIndex
13b40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65  ..        /// me
13b50 74 68 6f 64 20 69 74 20 74 6f 20 66 69 67 75 72  thod it to figur
13b60 65 20 6f 75 74 20 74 68 65 20 62 65 73 74 20 77  e out the best w
13b70 61 79 20 74 6f 20 73 65 61 72 63 68 20 74 68 65  ay to search the
13b80 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d   virtual table..
13b90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
13ba0 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
13bb0 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
13bc0 20 20 2f 2f 2f 20 54 68 65 20 78 42 65 73 74 49    /// The xBestI
13bd0 6e 64 65 78 20 6d 65 74 68 6f 64 20 66 69 6c 6c  ndex method fill
13be0 73 20 74 68 65 20 69 64 78 4e 75 6d 20 61 6e 64  s the idxNum and
13bf0 20 69 64 78 53 74 72 20 66 69 65 6c 64 73 20 77   idxStr fields w
13c00 69 74 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ith..        ///
13c10 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 74 68 61   information tha
13c20 74 20 63 6f 6d 6d 75 6e 69 63 61 74 65 73 20 61  t communicates a
13c30 6e 20 69 6e 64 65 78 69 6e 67 20 73 74 72 61 74  n indexing strat
13c40 65 67 79 20 74 6f 20 74 68 65 20 78 46 69 6c 74  egy to the xFilt
13c50 65 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  er..        /// 
13c60 6d 65 74 68 6f 64 2e 20 54 68 65 20 69 6e 66 6f  method. The info
13c70 72 6d 61 74 69 6f 6e 20 69 6e 20 69 64 78 4e 75  rmation in idxNu
13c80 6d 20 61 6e 64 20 69 64 78 53 74 72 20 69 73 20  m and idxStr is 
13c90 61 72 62 69 74 72 61 72 79 20 61 73 20 66 61 72  arbitrary as far
13ca0 20 61 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   as..        ///
13cb0 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
13cc0 20 69 73 20 63 6f 6e 63 65 72 6e 65 64 2e 20 54   is concerned. T
13cd0 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6a  he SQLite core j
13ce0 75 73 74 20 63 6f 70 69 65 73 20 74 68 65 0d 0a  ust copies the..
13cf0 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 66 6f          /// info
13d00 72 6d 61 74 69 6f 6e 20 74 68 72 6f 75 67 68 20  rmation through 
13d10 74 6f 20 74 68 65 20 78 46 69 6c 74 65 72 20 6d  to the xFilter m
13d20 65 74 68 6f 64 2e 20 41 6e 79 20 64 65 73 69 72  ethod. Any desir
13d30 65 64 20 6d 65 61 6e 69 6e 67 20 63 61 6e 0d 0a  ed meaning can..
13d40 20 20 20 20 20 20 20 20 2f 2f 2f 20 62 65 20 61          /// be a
13d50 73 73 69 67 6e 65 64 20 74 6f 20 69 64 78 4e 75  ssigned to idxNu
13d60 6d 20 61 6e 64 20 69 64 78 53 74 72 20 61 73 20  m and idxStr as 
13d70 6c 6f 6e 67 20 61 73 20 78 42 65 73 74 49 6e 64  long as xBestInd
13d80 65 78 20 61 6e 64 20 78 46 69 6c 74 65 72 0d 0a  ex and xFilter..
13d90 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 67 72 65          /// agre
13da0 65 20 6f 6e 20 77 68 61 74 20 74 68 61 74 20 6d  e on what that m
13db0 65 61 6e 69 6e 67 20 69 73 2e 0d 0a 20 20 20 20  eaning is...    
13dc0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d      /// </para>.
13dd0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
13de0 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
13df0 20 54 68 65 20 69 64 78 53 74 72 20 76 61 6c 75   The idxStr valu
13e00 65 20 6d 61 79 20 62 65 20 61 20 73 74 72 69 6e  e may be a strin
13e10 67 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20  g obtained from 
13e20 61 6e 20 53 51 4c 69 74 65 20 6d 65 6d 6f 72 79  an SQLite memory
13e30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 6c  ..        /// al
13e40 6c 6f 63 61 74 69 6f 6e 20 66 75 6e 63 74 69 6f  location functio
13e50 6e 20 73 75 63 68 20 61 73 20 73 71 6c 69 74 65  n such as sqlite
13e60 33 5f 6d 70 72 69 6e 74 66 28 29 2e 20 49 66 20  3_mprintf(). If 
13e70 74 68 69 73 20 69 73 20 74 68 65 20 63 61 73 65  this is the case
13e80 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  ,..        /// t
13e90 68 65 6e 20 74 68 65 20 6e 65 65 64 54 6f 46 72  hen the needToFr
13ea0 65 65 49 64 78 53 74 72 20 66 6c 61 67 20 6d 75  eeIdxStr flag mu
13eb0 73 74 20 62 65 20 73 65 74 20 74 6f 20 74 72 75  st be set to tru
13ec0 65 20 73 6f 20 74 68 61 74 20 74 68 65 0d 0a 20  e so that the.. 
13ed0 20 20 20 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74         /// SQLit
13ee0 65 20 63 6f 72 65 20 77 69 6c 6c 20 6b 6e 6f 77  e core will know
13ef0 20 74 6f 20 63 61 6c 6c 20 73 71 6c 69 74 65 33   to call sqlite3
13f00 5f 66 72 65 65 28 29 20 6f 6e 20 74 68 61 74 20  _free() on that 
13f10 73 74 72 69 6e 67 20 77 68 65 6e 20 69 74 0d 0a  string when it..
13f20 20 20 20 20 20 20 20 20 2f 2f 2f 20 68 61 73 20          /// has 
13f30 66 69 6e 69 73 68 65 64 20 77 69 74 68 20 69 74  finished with it
13f40 2c 20 61 6e 64 20 74 68 75 73 20 61 76 6f 69 64  , and thus avoid
13f50 20 61 20 6d 65 6d 6f 72 79 20 6c 65 61 6b 2e 0d   a memory leak..
13f60 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
13f70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
13f80 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
13f90 20 20 2f 2f 2f 20 49 66 20 74 68 65 20 76 69 72    /// If the vir
13fa0 74 75 61 6c 20 74 61 62 6c 65 20 77 69 6c 6c 20  tual table will 
13fb0 6f 75 74 70 75 74 20 72 6f 77 73 20 69 6e 20 74  output rows in t
13fc0 68 65 20 6f 72 64 65 72 20 73 70 65 63 69 66 69  he order specifi
13fd0 65 64 20 62 79 20 74 68 65 0d 0a 20 20 20 20 20  ed by the..     
13fe0 20 20 20 2f 2f 2f 20 4f 52 44 45 52 20 42 59 20     /// ORDER BY 
13ff0 63 6c 61 75 73 65 2c 20 74 68 65 6e 20 74 68 65  clause, then the
14000 20 6f 72 64 65 72 42 79 43 6f 6e 73 75 6d 65 64   orderByConsumed
14010 20 66 6c 61 67 20 6d 61 79 20 62 65 20 73 65 74   flag may be set
14020 20 74 6f 20 74 72 75 65 2e 0d 0a 20 20 20 20 20   to true...     
14030 20 20 20 2f 2f 2f 20 49 66 20 74 68 65 20 6f 75     /// If the ou
14040 74 70 75 74 20 69 73 20 6e 6f 74 20 61 75 74 6f  tput is not auto
14050 6d 61 74 69 63 61 6c 6c 79 20 69 6e 20 74 68 65  matically in the
14060 20 63 6f 72 72 65 63 74 20 6f 72 64 65 72 20 74   correct order t
14070 68 65 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  hen..        ///
14080 20 6f 72 64 65 72 42 79 43 6f 6e 73 75 6d 65 64   orderByConsumed
14090 20 6d 75 73 74 20 62 65 20 6c 65 66 74 20 69 6e   must be left in
140a0 20 69 74 73 20 64 65 66 61 75 6c 74 20 66 61 6c   its default fal
140b0 73 65 20 73 65 74 74 69 6e 67 2e 20 54 68 69 73  se setting. This
140c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69  ..        /// wi
140d0 6c 6c 20 69 6e 64 69 63 61 74 65 20 74 6f 20 74  ll indicate to t
140e0 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 74  he SQLite core t
140f0 68 61 74 20 69 74 20 77 69 6c 6c 20 6e 65 65 64  hat it will need
14100 20 74 6f 20 64 6f 20 61 20 73 65 70 61 72 61 74   to do a separat
14110 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  e..        /// s
14120 6f 72 74 69 6e 67 20 70 61 73 73 20 6f 76 65 72  orting pass over
14130 20 74 68 65 20 64 61 74 61 20 61 66 74 65 72 20   the data after 
14140 69 74 20 63 6f 6d 65 73 20 6f 75 74 20 6f 66 20  it comes out of 
14150 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c  the virtual tabl
14160 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
14170 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
14180 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
14190 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 65 73 74       /// The est
141a0 69 6d 61 74 65 64 43 6f 73 74 20 66 69 65 6c 64  imatedCost field
141b0 20 73 68 6f 75 6c 64 20 62 65 20 73 65 74 20 74   should be set t
141c0 6f 20 74 68 65 20 65 73 74 69 6d 61 74 65 64 20  o the estimated 
141d0 6e 75 6d 62 65 72 20 6f 66 0d 0a 20 20 20 20 20  number of..     
141e0 20 20 20 2f 2f 2f 20 64 69 73 6b 20 61 63 63 65     /// disk acce
141f0 73 73 20 6f 70 65 72 61 74 69 6f 6e 73 20 72 65  ss operations re
14200 71 75 69 72 65 64 20 74 6f 20 65 78 65 63 75 74  quired to execut
14210 65 20 74 68 69 73 20 71 75 65 72 79 20 61 67 61  e this query aga
14220 69 6e 73 74 20 74 68 65 0d 0a 20 20 20 20 20 20  inst the..      
14230 20 20 2f 2f 2f 20 76 69 72 74 75 61 6c 20 74 61    /// virtual ta
14240 62 6c 65 2e 20 54 68 65 20 53 51 4c 69 74 65 20  ble. The SQLite 
14250 63 6f 72 65 20 77 69 6c 6c 20 6f 66 74 65 6e 20  core will often 
14260 63 61 6c 6c 20 78 42 65 73 74 49 6e 64 65 78 20  call xBestIndex 
14270 6d 75 6c 74 69 70 6c 65 0d 0a 20 20 20 20 20 20  multiple..      
14280 20 20 2f 2f 2f 20 74 69 6d 65 73 20 77 69 74 68    /// times with
14290 20 64 69 66 66 65 72 65 6e 74 20 63 6f 6e 73 74   different const
142a0 72 61 69 6e 74 73 2c 20 6f 62 74 61 69 6e 20 6d  raints, obtain m
142b0 75 6c 74 69 70 6c 65 20 63 6f 73 74 20 65 73 74  ultiple cost est
142c0 69 6d 61 74 65 73 2c 0d 0a 20 20 20 20 20 20 20  imates,..       
142d0 20 2f 2f 2f 20 74 68 65 6e 20 63 68 6f 6f 73 65   /// then choose
142e0 20 74 68 65 20 71 75 65 72 79 20 70 6c 61 6e 20   the query plan 
142f0 74 68 61 74 20 67 69 76 65 73 20 74 68 65 20 6c  that gives the l
14300 6f 77 65 73 74 20 65 73 74 69 6d 61 74 65 2e 0d  owest estimate..
14310 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
14320 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
14330 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
14340 20 20 2f 2f 2f 20 54 68 65 20 61 43 6f 6e 73 74    /// The aConst
14350 72 61 69 6e 74 55 73 61 67 65 5b 5d 20 61 72 72  raintUsage[] arr
14360 61 79 20 63 6f 6e 74 61 69 6e 73 20 6f 6e 65 20  ay contains one 
14370 65 6c 65 6d 65 6e 74 20 66 6f 72 20 65 61 63 68  element for each
14380 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20 20 20   of the..       
14390 20 2f 2f 2f 20 6e 43 6f 6e 73 74 72 61 69 6e 74   /// nConstraint
143a0 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 69 6e 20   constraints in 
143b0 74 68 65 20 69 6e 70 75 74 73 20 73 65 63 74 69  the inputs secti
143c0 6f 6e 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20  on of the..     
143d0 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 69     /// sqlite3_i
143e0 6e 64 65 78 5f 69 6e 66 6f 20 73 74 72 75 63 74  ndex_info struct
143f0 75 72 65 2e 20 54 68 65 20 61 43 6f 6e 73 74 72  ure. The aConstr
14400 61 69 6e 74 55 73 61 67 65 5b 5d 20 61 72 72 61  aintUsage[] arra
14410 79 20 69 73 20 75 73 65 64 0d 0a 20 20 20 20 20  y is used..     
14420 20 20 20 2f 2f 2f 20 62 79 20 78 42 65 73 74 49     /// by xBestI
14430 6e 64 65 78 20 74 6f 20 74 65 6c 6c 20 74 68 65  ndex to tell the
14440 20 63 6f 72 65 20 68 6f 77 20 69 74 20 69 73 20   core how it is 
14450 75 73 69 6e 67 20 74 68 65 20 63 6f 6e 73 74 72  using the constr
14460 61 69 6e 74 73 2e 0d 0a 20 20 20 20 20 20 20 20  aints...        
14470 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20  /// </para>..   
14480 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
14490 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
144a0 20 78 42 65 73 74 49 6e 64 65 78 20 6d 65 74 68   xBestIndex meth
144b0 6f 64 20 6d 61 79 20 73 65 74 20 61 43 6f 6e 73  od may set aCons
144c0 74 72 61 69 6e 74 55 73 61 67 65 5b 5d 2e 61 72  traintUsage[].ar
144d0 67 76 49 6e 64 65 78 20 65 6e 74 72 69 65 73 0d  gvIndex entries.
144e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20  .        /// to 
144f0 76 61 6c 75 65 73 20 67 72 65 61 74 65 72 20 74  values greater t
14500 68 61 6e 20 6f 6e 65 2e 20 45 78 61 63 74 6c 79  han one. Exactly
14510 20 6f 6e 65 20 65 6e 74 72 79 20 73 68 6f 75 6c   one entry shoul
14520 64 20 62 65 20 73 65 74 20 74 6f 20 31 2c 0d 0a  d be set to 1,..
14530 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 6e 6f 74          /// anot
14540 68 65 72 20 74 6f 20 32 2c 20 61 6e 6f 74 68 65  her to 2, anothe
14550 72 20 74 6f 20 33 2c 20 61 6e 64 20 73 6f 20 66  r to 3, and so f
14560 6f 72 74 68 20 75 70 20 74 6f 20 61 73 20 6d 61  orth up to as ma
14570 6e 79 20 6f 72 20 61 73 20 66 65 77 20 61 73 0d  ny or as few as.
14580 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  .        /// the
14590 20 78 42 65 73 74 49 6e 64 65 78 20 6d 65 74 68   xBestIndex meth
145a0 6f 64 20 77 61 6e 74 73 2e 20 54 68 65 20 45 58  od wants. The EX
145b0 50 52 20 6f 66 20 74 68 65 20 63 6f 72 72 65 73  PR of the corres
145c0 70 6f 6e 64 69 6e 67 0d 0a 20 20 20 20 20 20 20  ponding..       
145d0 20 2f 2f 2f 20 63 6f 6e 73 74 72 61 69 6e 74 73   /// constraints
145e0 20 77 69 6c 6c 20 74 68 65 6e 20 62 65 20 70 61   will then be pa
145f0 73 73 65 64 20 69 6e 20 61 73 20 74 68 65 20 61  ssed in as the a
14600 72 67 76 5b 5d 20 70 61 72 61 6d 65 74 65 72 73  rgv[] parameters
14610 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   to..        ///
14620 20 78 46 69 6c 74 65 72 2e 0d 0a 20 20 20 20 20   xFilter...     
14630 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a     /// </para>..
14640 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
14650 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
14660 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 69 66 20  For example, if 
14670 74 68 65 20 61 43 6f 6e 73 74 72 61 69 6e 74 5b  the aConstraint[
14680 33 5d 2e 61 72 67 76 49 6e 64 65 78 20 69 73 20  3].argvIndex is 
14690 73 65 74 20 74 6f 20 31 2c 20 74 68 65 6e 20 77  set to 1, then w
146a0 68 65 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  hen..        ///
146b0 20 78 46 69 6c 74 65 72 20 69 73 20 63 61 6c 6c   xFilter is call
146c0 65 64 2c 20 74 68 65 20 61 72 67 76 5b 30 5d 20  ed, the argv[0] 
146d0 70 61 73 73 65 64 20 74 6f 20 78 46 69 6c 74 65  passed to xFilte
146e0 72 20 77 69 6c 6c 20 68 61 76 65 20 74 68 65 20  r will have the 
146f0 45 58 50 52 0d 0a 20 20 20 20 20 20 20 20 2f 2f  EXPR..        //
14700 2f 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 61  / value of the a
14710 43 6f 6e 73 74 72 61 69 6e 74 5b 33 5d 20 63 6f  Constraint[3] co
14720 6e 73 74 72 61 69 6e 74 2e 0d 0a 20 20 20 20 20  nstraint...     
14730 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a     /// </para>..
14740 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
14750 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
14760 42 79 20 64 65 66 61 75 6c 74 2c 20 74 68 65 20  By default, the 
14770 53 51 4c 69 74 65 20 63 6f 72 65 20 64 6f 75 62  SQLite core doub
14780 6c 65 20 63 68 65 63 6b 73 20 61 6c 6c 20 63 6f  le checks all co
14790 6e 73 74 72 61 69 6e 74 73 20 6f 6e 20 65 61 63  nstraints on eac
147a0 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 72  h..        /// r
147b0 6f 77 20 6f 66 20 74 68 65 20 76 69 72 74 75 61  ow of the virtua
147c0 6c 20 74 61 62 6c 65 20 74 68 61 74 20 69 74 20  l table that it 
147d0 72 65 63 65 69 76 65 73 2e 20 49 66 20 73 75 63  receives. If suc
147e0 68 20 61 20 63 68 65 63 6b 20 69 73 0d 0a 20 20  h a check is..  
147f0 20 20 20 20 20 20 2f 2f 2f 20 72 65 64 75 6e 64        /// redund
14800 61 6e 74 2c 20 74 68 65 20 78 42 65 73 74 46 69  ant, the xBestFi
14810 6c 74 65 72 20 6d 65 74 68 6f 64 20 63 61 6e 20  lter method can 
14820 73 75 70 70 72 65 73 73 20 74 68 61 74 20 64 6f  suppress that do
14830 75 62 6c 65 2d 63 68 65 63 6b 20 62 79 0d 0a 20  uble-check by.. 
14840 20 20 20 20 20 20 20 2f 2f 2f 20 73 65 74 74 69         /// setti
14850 6e 67 20 61 43 6f 6e 73 74 72 61 69 6e 74 55 73  ng aConstraintUs
14860 61 67 65 5b 5d 2e 6f 6d 69 74 2e 0d 0a 20 20 20  age[].omit...   
14870 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
14880 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
14890 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
148a0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
148b0 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20  e="pVtab">..    
148c0 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
148d0 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
148e0 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64  e sqlite3_vtab d
148f0 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65  erived structure
14900 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
14910 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
14920 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
14930 3d 22 70 49 6e 64 65 78 22 3e 0d 0a 20 20 20 20  ="pIndex">..    
14940 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
14950 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
14960 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  e sqlite3_index_
14970 69 6e 66 6f 20 73 74 72 75 63 74 75 72 65 2e 0d  info structure..
14980 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
14990 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
149a0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
149b0 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e        /// A stan
149c0 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75  dard SQLite retu
149d0 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  rn code...      
149e0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
149f0 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65  ..        SQLite
14a00 45 72 72 6f 72 43 6f 64 65 20 78 42 65 73 74 49  ErrorCode xBestI
14a10 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20 20 20  ndex(..         
14a20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c     IntPtr pVtab,
14a30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
14a40 74 50 74 72 20 70 49 6e 64 65 78 0d 0a 20 20 20  tPtr pIndex..   
14a50 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20           );.... 
14a60 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
14a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
14ab0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
14ac0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
14ad0 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
14ae0 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65       /// This me
14af0 74 68 6f 64 20 72 65 6c 65 61 73 65 73 20 61 20  thod releases a 
14b00 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20 61 20  connection to a 
14b10 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 20 4f  virtual table. O
14b20 6e 6c 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20  nly the..       
14b30 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 76 74 61   /// sqlite3_vta
14b40 62 20 6f 62 6a 65 63 74 20 69 73 20 64 65 73 74  b object is dest
14b50 72 6f 79 65 64 2e 20 54 68 65 20 76 69 72 74 75  royed. The virtu
14b60 61 6c 20 74 61 62 6c 65 20 69 73 20 6e 6f 74 0d  al table is not.
14b70 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 65 73  .        /// des
14b80 74 72 6f 79 65 64 20 61 6e 64 20 61 6e 79 20 62  troyed and any b
14b90 61 63 6b 69 6e 67 20 73 74 6f 72 65 20 61 73 73  acking store ass
14ba0 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65  ociated with the
14bb0 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 0d 0a   virtual table..
14bc0 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 65 72 73          /// pers
14bd0 69 73 74 73 2e 20 54 68 69 73 20 6d 65 74 68 6f  ists. This metho
14be0 64 20 75 6e 64 6f 65 73 20 74 68 65 20 77 6f 72  d undoes the wor
14bf0 6b 20 6f 66 20 78 43 6f 6e 6e 65 63 74 2e 0d 0a  k of xConnect...
14c00 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
14c10 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
14c20 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
14c30 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64   /// This method
14c40 20 69 73 20 61 20 64 65 73 74 72 75 63 74 6f 72   is a destructor
14c50 20 66 6f 72 20 61 20 63 6f 6e 6e 65 63 74 69 6f   for a connectio
14c60 6e 20 74 6f 20 74 68 65 20 76 69 72 74 75 61 6c  n to the virtual
14c70 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20   table...       
14c80 20 2f 2f 2f 20 43 6f 6e 74 72 61 73 74 20 74 68   /// Contrast th
14c90 69 73 20 6d 65 74 68 6f 64 20 77 69 74 68 20 78  is method with x
14ca0 44 65 73 74 72 6f 79 2e 20 54 68 65 20 78 44 65  Destroy. The xDe
14cb0 73 74 72 6f 79 20 69 73 20 61 20 64 65 73 74 72  stroy is a destr
14cc0 75 63 74 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f  uctor..        /
14cd0 2f 2f 20 66 6f 72 20 74 68 65 20 65 6e 74 69 72  // for the entir
14ce0 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e  e virtual table.
14cf0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
14d00 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
14d10 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20  // <para>..     
14d20 20 20 20 2f 2f 2f 20 54 68 65 20 78 44 69 73 63     /// The xDisc
14d30 6f 6e 6e 65 63 74 20 6d 65 74 68 6f 64 20 69 73  onnect method is
14d40 20 72 65 71 75 69 72 65 64 20 66 6f 72 20 65 76   required for ev
14d50 65 72 79 20 76 69 72 74 75 61 6c 20 74 61 62 6c  ery virtual tabl
14d60 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  e..        /// i
14d70 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2c 20 74  mplementation, t
14d80 68 6f 75 67 68 20 69 74 20 69 73 20 61 63 63 65  hough it is acce
14d90 70 74 61 62 6c 65 20 66 6f 72 20 74 68 65 20 78  ptable for the x
14da0 44 69 73 63 6f 6e 6e 65 63 74 20 61 6e 64 0d 0a  Disconnect and..
14db0 20 20 20 20 20 20 20 20 2f 2f 2f 20 78 44 65 73          /// xDes
14dc0 74 72 6f 79 20 6d 65 74 68 6f 64 73 20 74 6f 20  troy methods to 
14dd0 62 65 20 74 68 65 20 73 61 6d 65 20 66 75 6e 63  be the same func
14de0 74 69 6f 6e 20 69 66 20 74 68 61 74 20 6d 61 6b  tion if that mak
14df0 65 73 20 73 65 6e 73 65 20 66 6f 72 0d 0a 20 20  es sense for..  
14e00 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 70 61        /// the pa
14e10 72 74 69 63 75 6c 61 72 20 76 69 72 74 75 61 6c  rticular virtual
14e20 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20   table...       
14e30 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
14e40 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
14e50 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
14e60 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
14e70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
14e80 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70  /// The native p
14e90 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71  ointer to the sq
14ea0 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76  lite3_vtab deriv
14eb0 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  ed structure... 
14ec0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
14ed0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
14ee0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
14ef0 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61      /// A standa
14f00 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e  rd SQLite return
14f10 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
14f20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
14f30 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72          SQLiteEr
14f40 72 6f 72 43 6f 64 65 20 78 44 69 73 63 6f 6e 6e  rorCode xDisconn
14f50 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ect(..          
14f60 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a    IntPtr pVtab..
14f70 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a              );..
14f80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
14f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14fd0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
14fe0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
14ff0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a      /// <para>..
15000 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
15010 20 6d 65 74 68 6f 64 20 72 65 6c 65 61 73 65 73   method releases
15020 20 61 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f   a connection to
15030 20 61 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65   a virtual table
15040 2c 20 6a 75 73 74 20 6c 69 6b 65 20 74 68 65 0d  , just like the.
15050 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 78 44 69  .        /// xDi
15060 73 63 6f 6e 6e 65 63 74 20 6d 65 74 68 6f 64 2c  sconnect method,
15070 20 61 6e 64 20 69 74 20 61 6c 73 6f 20 64 65 73   and it also des
15080 74 72 6f 79 73 20 74 68 65 20 75 6e 64 65 72 6c  troys the underl
15090 79 69 6e 67 20 74 61 62 6c 65 0d 0a 20 20 20 20  ying table..    
150a0 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e      /// implemen
150b0 74 61 74 69 6f 6e 2e 20 54 68 69 73 20 6d 65 74  tation. This met
150c0 68 6f 64 20 75 6e 64 6f 65 73 20 74 68 65 20 77  hod undoes the w
150d0 6f 72 6b 20 6f 66 20 78 43 72 65 61 74 65 2e 0d  ork of xCreate..
150e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
150f0 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
15100 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
15110 20 20 2f 2f 2f 20 54 68 65 20 78 44 69 73 63 6f    /// The xDisco
15120 6e 6e 65 63 74 20 6d 65 74 68 6f 64 20 69 73 20  nnect method is 
15130 63 61 6c 6c 65 64 20 77 68 65 6e 65 76 65 72 20  called whenever 
15140 61 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  a database conne
15150 63 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 2f  ction..        /
15160 2f 2f 20 74 68 61 74 20 75 73 65 73 20 61 20 76  // that uses a v
15170 69 72 74 75 61 6c 20 74 61 62 6c 65 20 69 73 20  irtual table is 
15180 63 6c 6f 73 65 64 2e 20 54 68 65 20 78 44 65 73  closed. The xDes
15190 74 72 6f 79 20 6d 65 74 68 6f 64 20 69 73 20 6f  troy method is o
151a0 6e 6c 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  nly..        ///
151b0 20 63 61 6c 6c 65 64 20 77 68 65 6e 20 61 20 44   called when a D
151c0 52 4f 50 20 54 41 42 4c 45 20 73 74 61 74 65 6d  ROP TABLE statem
151d0 65 6e 74 20 69 73 20 65 78 65 63 75 74 65 64 20  ent is executed 
151e0 61 67 61 69 6e 73 74 20 74 68 65 20 76 69 72 74  against the virt
151f0 75 61 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ual..        ///
15200 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20   table...       
15210 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
15220 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
15230 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
15240 65 20 78 44 65 73 74 72 6f 79 20 6d 65 74 68 6f  e xDestroy metho
15250 64 20 69 73 20 72 65 71 75 69 72 65 64 20 66 6f  d is required fo
15260 72 20 65 76 65 72 79 20 76 69 72 74 75 61 6c 20  r every virtual 
15270 74 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f  table..        /
15280 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  // implementatio
15290 6e 2c 20 74 68 6f 75 67 68 20 69 74 20 69 73 20  n, though it is 
152a0 61 63 63 65 70 74 61 62 6c 65 20 66 6f 72 20 74  acceptable for t
152b0 68 65 20 78 44 69 73 63 6f 6e 6e 65 63 74 20 61  he xDisconnect a
152c0 6e 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  nd..        /// 
152d0 78 44 65 73 74 72 6f 79 20 6d 65 74 68 6f 64 73  xDestroy methods
152e0 20 74 6f 20 62 65 20 74 68 65 20 73 61 6d 65 20   to be the same 
152f0 66 75 6e 63 74 69 6f 6e 20 69 66 20 74 68 61 74  function if that
15300 20 6d 61 6b 65 73 20 73 65 6e 73 65 20 66 6f 72   makes sense for
15310 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68  ..        /// th
15320 65 20 70 61 72 74 69 63 75 6c 61 72 20 76 69 72  e particular vir
15330 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20  tual table...   
15340 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
15350 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
15360 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
15370 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
15380 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20  e="pVtab">..    
15390 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
153a0 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
153b0 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64  e sqlite3_vtab d
153c0 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65  erived structure
153d0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
153e0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
153f0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
15400 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74          /// A st
15410 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65  andard SQLite re
15420 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20  turn code...    
15430 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
15440 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69  s>..        SQLi
15450 74 65 45 72 72 6f 72 43 6f 64 65 20 78 44 65 73  teErrorCode xDes
15460 74 72 6f 79 28 0d 0a 20 20 20 20 20 20 20 20 20  troy(..         
15470 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d     IntPtr pVtab.
15480 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d  .            );.
15490 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
154a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
154b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
154c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
154d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
154e0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
154f0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
15500 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
15510 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
15520 20 78 4f 70 65 6e 20 6d 65 74 68 6f 64 20 63 72   xOpen method cr
15530 65 61 74 65 73 20 61 20 6e 65 77 20 63 75 72 73  eates a new curs
15540 6f 72 20 75 73 65 64 20 66 6f 72 20 61 63 63 65  or used for acce
15550 73 73 69 6e 67 20 28 72 65 61 64 0d 0a 20 20 20  ssing (read..   
15560 20 20 20 20 20 2f 2f 2f 20 61 6e 64 2f 6f 72 20       /// and/or 
15570 77 72 69 74 69 6e 67 29 20 61 20 76 69 72 74 75  writing) a virtu
15580 61 6c 20 74 61 62 6c 65 2e 20 41 20 73 75 63 63  al table. A succ
15590 65 73 73 66 75 6c 20 69 6e 76 6f 63 61 74 69 6f  essful invocatio
155a0 6e 20 6f 66 20 74 68 69 73 0d 0a 20 20 20 20 20  n of this..     
155b0 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 20 77 69     /// method wi
155c0 6c 6c 20 61 6c 6c 6f 63 61 74 65 20 74 68 65 20  ll allocate the 
155d0 6d 65 6d 6f 72 79 20 66 6f 72 20 74 68 65 20 73  memory for the s
155e0 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73  qlite3_vtab_curs
155f0 6f 72 20 28 6f 72 20 61 0d 0a 20 20 20 20 20 20  or (or a..      
15600 20 20 2f 2f 2f 20 73 75 62 63 6c 61 73 73 29 2c    /// subclass),
15610 20 69 6e 69 74 69 61 6c 69 7a 65 20 74 68 65 20   initialize the 
15620 6e 65 77 20 6f 62 6a 65 63 74 2c 20 61 6e 64 20  new object, and 
15630 6d 61 6b 65 20 2a 70 70 43 75 72 73 6f 72 20 70  make *ppCursor p
15640 6f 69 6e 74 20 74 6f 0d 0a 20 20 20 20 20 20 20  oint to..       
15650 20 2f 2f 2f 20 74 68 65 20 6e 65 77 20 6f 62 6a   /// the new obj
15660 65 63 74 2e 20 54 68 65 20 73 75 63 63 65 73 73  ect. The success
15670 66 75 6c 20 63 61 6c 6c 20 74 68 65 6e 20 72 65  ful call then re
15680 74 75 72 6e 73 20 53 51 4c 49 54 45 5f 4f 4b 2e  turns SQLITE_OK.
15690 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
156a0 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
156b0 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20  // <para>..     
156c0 20 20 20 2f 2f 2f 20 46 6f 72 20 65 76 65 72 79     /// For every
156d0 20 73 75 63 63 65 73 73 66 75 6c 20 63 61 6c 6c   successful call
156e0 20 74 6f 20 74 68 69 73 20 6d 65 74 68 6f 64 2c   to this method,
156f0 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
15700 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f   will..        /
15710 2f 2f 20 6c 61 74 65 72 20 69 6e 76 6f 6b 65 20  // later invoke 
15720 74 68 65 20 78 43 6c 6f 73 65 20 6d 65 74 68 6f  the xClose metho
15730 64 20 74 6f 20 64 65 73 74 72 6f 79 20 74 68 65  d to destroy the
15740 20 61 6c 6c 6f 63 61 74 65 64 20 63 75 72 73 6f   allocated curso
15750 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
15760 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
15770 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
15780 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 78 4f 70       /// The xOp
15790 65 6e 20 6d 65 74 68 6f 64 20 6e 65 65 64 20 6e  en method need n
157a0 6f 74 20 69 6e 69 74 69 61 6c 69 7a 65 20 74 68  ot initialize th
157b0 65 20 70 56 74 61 62 20 66 69 65 6c 64 20 6f 66  e pVtab field of
157c0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
157d0 2f 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63  / sqlite3_vtab_c
157e0 75 72 73 6f 72 20 73 74 72 75 63 74 75 72 65 2e  ursor structure.
157f0 20 54 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   The SQLite core
15800 20 77 69 6c 6c 20 74 61 6b 65 20 63 61 72 65 20   will take care 
15810 6f 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  of..        /// 
15820 74 68 61 74 20 63 68 6f 72 65 20 61 75 74 6f 6d  that chore autom
15830 61 74 69 63 61 6c 6c 79 2e 0d 0a 20 20 20 20 20  atically...     
15840 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a     /// </para>..
15850 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
15860 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
15870 41 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  A virtual table 
15880 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6d  implementation m
15890 75 73 74 20 62 65 20 61 62 6c 65 20 74 6f 20 73  ust be able to s
158a0 75 70 70 6f 72 74 20 61 6e 20 61 72 62 69 74 72  upport an arbitr
158b0 61 72 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ary..        ///
158c0 20 6e 75 6d 62 65 72 20 6f 66 20 73 69 6d 75 6c   number of simul
158d0 74 61 6e 65 6f 75 73 6c 79 20 6f 70 65 6e 20 63  taneously open c
158e0 75 72 73 6f 72 73 2e 0d 0a 20 20 20 20 20 20 20  ursors...       
158f0 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
15900 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
15910 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 57 68  ..        /// Wh
15920 65 6e 20 69 6e 69 74 69 61 6c 6c 79 20 6f 70 65  en initially ope
15930 6e 65 64 2c 20 74 68 65 20 63 75 72 73 6f 72 20  ned, the cursor 
15940 69 73 20 69 6e 20 61 6e 20 75 6e 64 65 66 69 6e  is in an undefin
15950 65 64 20 73 74 61 74 65 2e 20 54 68 65 0d 0a 20  ed state. The.. 
15960 20 20 20 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74         /// SQLit
15970 65 20 63 6f 72 65 20 77 69 6c 6c 20 69 6e 76 6f  e core will invo
15980 6b 65 20 74 68 65 20 78 46 69 6c 74 65 72 20 6d  ke the xFilter m
15990 65 74 68 6f 64 20 6f 6e 20 74 68 65 20 63 75 72  ethod on the cur
159a0 73 6f 72 20 70 72 69 6f 72 20 74 6f 0d 0a 20 20  sor prior to..  
159b0 20 20 20 20 20 20 2f 2f 2f 20 61 6e 79 20 61 74        /// any at
159c0 74 65 6d 70 74 20 74 6f 20 70 6f 73 69 74 69 6f  tempt to positio
159d0 6e 20 6f 72 20 72 65 61 64 20 66 72 6f 6d 20 74  n or read from t
159e0 68 65 20 63 75 72 73 6f 72 2e 0d 0a 20 20 20 20  he cursor...    
159f0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d      /// </para>.
15a00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
15a10 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
15a20 20 54 68 65 20 78 4f 70 65 6e 20 6d 65 74 68 6f   The xOpen metho
15a30 64 20 69 73 20 72 65 71 75 69 72 65 64 20 66 6f  d is required fo
15a40 72 20 65 76 65 72 79 20 76 69 72 74 75 61 6c 20  r every virtual 
15a50 74 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f  table..        /
15a60 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  // implementatio
15a70 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  n...        /// 
15a80 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
15a90 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
15aa0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
15ab0 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22  ram name="pVtab"
15ac0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
15ad0 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
15ae0 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33  r to the sqlite3
15af0 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74  _vtab derived st
15b00 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  ructure...      
15b10 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
15b20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
15b30 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72  am name="pCursor
15b40 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
15b50 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68  Upon success, th
15b60 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73  is parameter mus
15b70 74 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f  t be modified to
15b80 20 70 6f 69 6e 74 20 74 6f 20 74 68 65 20 6e 65   point to the ne
15b90 77 6c 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  wly..        ///
15ba0 20 63 72 65 61 74 65 64 20 6e 61 74 69 76 65 20   created native 
15bb0 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72  sqlite3_vtab_cur
15bc0 73 6f 72 20 64 65 72 69 76 65 64 20 73 74 72 75  sor derived stru
15bd0 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  cture...        
15be0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
15bf0 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
15c00 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
15c10 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69   A standard SQLi
15c20 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d  te return code..
15c30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
15c40 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
15c50 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
15c60 20 78 4f 70 65 6e 28 0d 0a 20 20 20 20 20 20 20   xOpen(..       
15c70 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
15c80 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  b,..            
15c90 72 65 66 20 49 6e 74 50 74 72 20 70 43 75 72 73  ref IntPtr pCurs
15ca0 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  or..            
15cb0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  );....        //
15cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15d00 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
15d10 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
15d20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
15d30 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
15d40 54 68 65 20 78 43 6c 6f 73 65 20 6d 65 74 68 6f  The xClose metho
15d50 64 20 63 6c 6f 73 65 73 20 61 20 63 75 72 73 6f  d closes a curso
15d60 72 20 70 72 65 76 69 6f 75 73 6c 79 20 6f 70 65  r previously ope
15d70 6e 65 64 20 62 79 20 78 4f 70 65 6e 2e 20 54 68  ned by xOpen. Th
15d80 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53  e..        /// S
15d90 51 4c 69 74 65 20 63 6f 72 65 20 77 69 6c 6c 20  QLite core will 
15da0 61 6c 77 61 79 73 20 63 61 6c 6c 20 78 43 6c 6f  always call xClo
15db0 73 65 20 6f 6e 63 65 20 66 6f 72 20 65 61 63 68  se once for each
15dc0 20 63 75 72 73 6f 72 20 6f 70 65 6e 65 64 0d 0a   cursor opened..
15dd0 20 20 20 20 20 20 20 20 2f 2f 2f 20 75 73 69 6e          /// usin
15de0 67 20 78 4f 70 65 6e 2e 0d 0a 20 20 20 20 20 20  g xOpen...      
15df0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
15e00 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
15e10 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
15e20 68 69 73 20 6d 65 74 68 6f 64 20 6d 75 73 74 20  his method must 
15e30 72 65 6c 65 61 73 65 20 61 6c 6c 20 72 65 73 6f  release all reso
15e40 75 72 63 65 73 20 61 6c 6c 6f 63 61 74 65 64 20  urces allocated 
15e50 62 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  by the..        
15e60 2f 2f 2f 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e  /// correspondin
15e70 67 20 78 4f 70 65 6e 20 63 61 6c 6c 2e 20 54 68  g xOpen call. Th
15e80 65 20 72 6f 75 74 69 6e 65 20 77 69 6c 6c 20 6e  e routine will n
15e90 6f 74 20 62 65 20 63 61 6c 6c 65 64 20 61 67 61  ot be called aga
15ea0 69 6e 20 65 76 65 6e 0d 0a 20 20 20 20 20 20 20  in even..       
15eb0 20 2f 2f 2f 20 69 66 20 69 74 20 72 65 74 75 72   /// if it retur
15ec0 6e 73 20 61 6e 20 65 72 72 6f 72 2e 20 54 68 65  ns an error. The
15ed0 20 53 51 4c 69 74 65 20 63 6f 72 65 20 77 69 6c   SQLite core wil
15ee0 6c 20 6e 6f 74 20 75 73 65 20 74 68 65 0d 0a 20  l not use the.. 
15ef0 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74         /// sqlit
15f00 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 61  e3_vtab_cursor a
15f10 67 61 69 6e 20 61 66 74 65 72 20 69 74 20 68 61  gain after it ha
15f20 73 20 62 65 65 6e 20 63 6c 6f 73 65 64 2e 0d 0a  s been closed...
15f30 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
15f40 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
15f50 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
15f60 20 2f 2f 2f 20 54 68 65 20 78 43 6c 6f 73 65 20   /// The xClose 
15f70 6d 65 74 68 6f 64 20 69 73 20 72 65 71 75 69 72  method is requir
15f80 65 64 20 66 6f 72 20 65 76 65 72 79 20 76 69 72  ed for every vir
15f90 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20  tual table..    
15fa0 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e      /// implemen
15fb0 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  tation...       
15fc0 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
15fd0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
15fe0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
15ff0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
16000 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20  Cursor">..      
16010 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
16020 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
16030 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72  sqlite3_vtab_cur
16040 73 6f 72 20 64 65 72 69 76 65 64 20 73 74 72 75  sor derived stru
16050 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  cture...        
16060 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
16070 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
16080 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
16090 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69   A standard SQLi
160a0 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d  te return code..
160b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
160c0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
160d0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
160e0 20 78 43 6c 6f 73 65 28 0d 0a 20 20 20 20 20 20   xClose(..      
160f0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75        IntPtr pCu
16100 72 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20  rsor..          
16110 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    );....        
16120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16160 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
16170 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
16180 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
16190 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
161a0 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 62 65  / This method be
161b0 67 69 6e 73 20 61 20 73 65 61 72 63 68 20 6f 66  gins a search of
161c0 20 61 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65   a virtual table
161d0 2e 20 54 68 65 20 66 69 72 73 74 20 61 72 67 75  . The first argu
161e0 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ment..        //
161f0 2f 20 69 73 20 61 20 63 75 72 73 6f 72 20 6f 70  / is a cursor op
16200 65 6e 65 64 20 62 79 20 78 4f 70 65 6e 2e 20 54  ened by xOpen. T
16210 68 65 20 6e 65 78 74 20 74 77 6f 20 61 72 67 75  he next two argu
16220 6d 65 6e 74 20 64 65 66 69 6e 65 20 61 0d 0a 20  ment define a.. 
16230 20 20 20 20 20 20 20 2f 2f 2f 20 70 61 72 74 69         /// parti
16240 63 75 6c 61 72 20 73 65 61 72 63 68 20 69 6e 64  cular search ind
16250 65 78 20 70 72 65 76 69 6f 75 73 6c 79 20 63 68  ex previously ch
16260 6f 73 65 6e 20 62 79 20 78 42 65 73 74 49 6e 64  osen by xBestInd
16270 65 78 2e 20 54 68 65 0d 0a 20 20 20 20 20 20 20  ex. The..       
16280 20 2f 2f 2f 20 73 70 65 63 69 66 69 63 20 6d 65   /// specific me
16290 61 6e 69 6e 67 73 20 6f 66 20 69 64 78 4e 75 6d  anings of idxNum
162a0 20 61 6e 64 20 69 64 78 53 74 72 20 61 72 65 20   and idxStr are 
162b0 75 6e 69 6d 70 6f 72 74 61 6e 74 20 61 73 20 6c  unimportant as l
162c0 6f 6e 67 20 61 73 0d 0a 20 20 20 20 20 20 20 20  ong as..        
162d0 2f 2f 2f 20 78 46 69 6c 74 65 72 20 61 6e 64 20  /// xFilter and 
162e0 78 42 65 73 74 49 6e 64 65 78 20 61 67 72 65 65  xBestIndex agree
162f0 20 6f 6e 20 77 68 61 74 20 74 68 61 74 20 6d 65   on what that me
16300 61 6e 69 6e 67 20 69 73 2e 0d 0a 20 20 20 20 20  aning is...     
16310 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a     /// </para>..
16320 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
16330 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
16340 54 68 65 20 78 42 65 73 74 49 6e 64 65 78 20 66  The xBestIndex f
16350 75 6e 63 74 69 6f 6e 20 6d 61 79 20 68 61 76 65  unction may have
16360 20 72 65 71 75 65 73 74 65 64 20 74 68 65 20 76   requested the v
16370 61 6c 75 65 73 20 6f 66 20 63 65 72 74 61 69 6e  alues of certain
16380 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 65 78  ..        /// ex
16390 70 72 65 73 73 69 6f 6e 73 20 75 73 69 6e 67 20  pressions using 
163a0 74 68 65 20 61 43 6f 6e 73 74 72 61 69 6e 74 55  the aConstraintU
163b0 73 61 67 65 5b 5d 2e 61 72 67 76 49 6e 64 65 78  sage[].argvIndex
163c0 20 76 61 6c 75 65 73 20 6f 66 20 74 68 65 0d 0a   values of the..
163d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69          /// sqli
163e0 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 20 73  te3_index_info s
163f0 74 72 75 63 74 75 72 65 2e 20 54 68 6f 73 65 20  tructure. Those 
16400 76 61 6c 75 65 73 20 61 72 65 20 70 61 73 73 65  values are passe
16410 64 20 74 6f 20 78 46 69 6c 74 65 72 0d 0a 20 20  d to xFilter..  
16420 20 20 20 20 20 20 2f 2f 2f 20 75 73 69 6e 67 20        /// using 
16430 74 68 65 20 61 72 67 63 20 61 6e 64 20 61 72 67  the argc and arg
16440 76 20 70 61 72 61 6d 65 74 65 72 73 2e 0d 0a 20  v parameters... 
16450 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
16460 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
16470 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
16480 2f 2f 2f 20 49 66 20 74 68 65 20 76 69 72 74 75  /// If the virtu
16490 61 6c 20 74 61 62 6c 65 20 63 6f 6e 74 61 69 6e  al table contain
164a0 73 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 72 6f  s one or more ro
164b0 77 73 20 74 68 61 74 20 6d 61 74 63 68 20 74 68  ws that match th
164c0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  e..        /// s
164d0 65 61 72 63 68 20 63 72 69 74 65 72 69 61 2c 20  earch criteria, 
164e0 74 68 65 6e 20 74 68 65 20 63 75 72 73 6f 72 20  then the cursor 
164f0 6d 75 73 74 20 62 65 20 6c 65 66 74 20 70 6f 69  must be left poi
16500 6e 74 20 61 74 20 74 68 65 20 66 69 72 73 74 0d  nt at the first.
16510 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 72 6f 77  .        /// row
16520 2e 20 53 75 62 73 65 71 75 65 6e 74 20 63 61 6c  . Subsequent cal
16530 6c 73 20 74 6f 20 78 45 6f 66 20 6d 75 73 74 20  ls to xEof must 
16540 72 65 74 75 72 6e 20 66 61 6c 73 65 20 28 7a 65  return false (ze
16550 72 6f 29 2e 20 49 66 20 74 68 65 72 65 0d 0a 20  ro). If there.. 
16560 20 20 20 20 20 20 20 2f 2f 2f 20 61 72 65 20 6e         /// are n
16570 6f 20 72 6f 77 73 20 6d 61 74 63 68 2c 20 74 68  o rows match, th
16580 65 6e 20 74 68 65 20 63 75 72 73 6f 72 20 6d 75  en the cursor mu
16590 73 74 20 62 65 20 6c 65 66 74 20 69 6e 20 61 20  st be left in a 
165a0 73 74 61 74 65 20 74 68 61 74 0d 0a 20 20 20 20  state that..    
165b0 20 20 20 20 2f 2f 2f 20 77 69 6c 6c 20 63 61 75      /// will cau
165c0 73 65 20 74 68 65 20 78 45 6f 66 20 74 6f 20 72  se the xEof to r
165d0 65 74 75 72 6e 20 74 72 75 65 20 28 6e 6f 6e 2d  eturn true (non-
165e0 7a 65 72 6f 29 2e 20 54 68 65 20 53 51 4c 69 74  zero). The SQLit
165f0 65 20 65 6e 67 69 6e 65 0d 0a 20 20 20 20 20 20  e engine..      
16600 20 20 2f 2f 2f 20 77 69 6c 6c 20 75 73 65 20 74    /// will use t
16610 68 65 20 78 43 6f 6c 75 6d 6e 20 61 6e 64 20 78  he xColumn and x
16620 52 6f 77 69 64 20 6d 65 74 68 6f 64 73 20 74 6f  Rowid methods to
16630 20 61 63 63 65 73 73 20 74 68 61 74 20 72 6f 77   access that row
16640 20 63 6f 6e 74 65 6e 74 2e 0d 0a 20 20 20 20 20   content...     
16650 20 20 20 2f 2f 2f 20 54 68 65 20 78 4e 65 78 74     /// The xNext
16660 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20 62 65 20   method will be 
16670 75 73 65 64 20 74 6f 20 61 64 76 61 6e 63 65 20  used to advance 
16680 74 6f 20 74 68 65 20 6e 65 78 74 20 72 6f 77 2e  to the next row.
16690 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
166a0 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
166b0 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20  // <para>..     
166c0 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68     /// This meth
166d0 6f 64 20 6d 75 73 74 20 72 65 74 75 72 6e 20 53  od must return S
166e0 51 4c 49 54 45 5f 4f 4b 20 69 66 20 73 75 63 63  QLITE_OK if succ
166f0 65 73 73 66 75 6c 2c 20 6f 72 20 61 6e 20 73 71  essful, or an sq
16700 6c 69 74 65 20 65 72 72 6f 72 0d 0a 20 20 20 20  lite error..    
16710 20 20 20 20 2f 2f 2f 20 63 6f 64 65 20 69 66 20      /// code if 
16720 61 6e 20 65 72 72 6f 72 20 6f 63 63 75 72 73 2e  an error occurs.
16730 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
16740 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
16750 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20  // <para>..     
16760 20 20 20 2f 2f 2f 20 54 68 65 20 78 46 69 6c 74     /// The xFilt
16770 65 72 20 6d 65 74 68 6f 64 20 69 73 20 72 65 71  er method is req
16780 75 69 72 65 64 20 66 6f 72 20 65 76 65 72 79 20  uired for every 
16790 76 69 72 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20  virtual table.. 
167a0 20 20 20 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65         /// imple
167b0 6d 65 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20  mentation...    
167c0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d      /// </para>.
167d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
167e0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
167f0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
16800 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20  ="pCursor">..   
16810 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
16820 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  ive pointer to t
16830 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f  he sqlite3_vtab_
16840 63 75 72 73 6f 72 20 64 65 72 69 76 65 64 20 73  cursor derived s
16850 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20  tructure...     
16860 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
16870 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
16880 72 61 6d 20 6e 61 6d 65 3d 22 69 64 78 4e 75 6d  ram name="idxNum
16890 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
168a0 4e 75 6d 62 65 72 20 75 73 65 64 20 74 6f 20 68  Number used to h
168b0 65 6c 70 20 69 64 65 6e 74 69 66 79 20 74 68 65  elp identify the
168c0 20 73 65 6c 65 63 74 65 64 20 69 6e 64 65 78 2e   selected index.
168d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
168e0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
168f0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
16900 22 69 64 78 53 74 72 22 3e 0d 0a 20 20 20 20 20  "idxStr">..     
16910 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
16920 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
16930 20 55 54 46 2d 38 20 65 6e 63 6f 64 65 64 20 73   UTF-8 encoded s
16940 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67  tring containing
16950 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
16960 2f 20 73 74 72 69 6e 67 20 75 73 65 64 20 74 6f  / string used to
16970 20 68 65 6c 70 20 69 64 65 6e 74 69 66 79 20 74   help identify t
16980 68 65 20 73 65 6c 65 63 74 65 64 20 69 6e 64 65  he selected inde
16990 78 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  x...        /// 
169a0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
169b0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
169c0 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20 20 20 20  e="argc">..     
169d0 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65     /// The numbe
169e0 72 20 6f 66 20 6e 61 74 69 76 65 20 70 6f 69 6e  r of native poin
169f0 74 65 72 73 20 74 6f 20 73 71 6c 69 74 65 33 5f  ters to sqlite3_
16a00 76 61 6c 75 65 20 73 74 72 75 63 74 75 72 65 73  value structures
16a10 20 73 70 65 63 69 66 69 65 64 0d 0a 20 20 20 20   specified..    
16a20 20 20 20 20 2f 2f 2f 20 69 6e 20 3c 70 61 72 61      /// in <para
16a30 6d 72 65 66 20 6e 61 6d 65 3d 22 61 72 67 76 22  mref name="argv"
16a40 20 2f 3e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f   />...        //
16a50 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
16a60 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
16a70 61 6d 65 3d 22 61 72 67 76 22 3e 0d 0a 20 20 20  ame="argv">..   
16a80 20 20 20 20 20 2f 2f 2f 20 41 6e 20 61 72 72 61       /// An arra
16a90 79 20 6f 66 20 6e 61 74 69 76 65 20 70 6f 69 6e  y of native poin
16aa0 74 65 72 73 20 74 6f 20 73 71 6c 69 74 65 33 5f  ters to sqlite3_
16ab0 76 61 6c 75 65 20 73 74 72 75 63 74 75 72 65 73  value structures
16ac0 20 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20 20   containing..   
16ad0 20 20 20 20 20 2f 2f 2f 20 66 69 6c 74 65 72 69       /// filteri
16ae0 6e 67 20 63 72 69 74 65 72 69 61 20 66 6f 72 20  ng criteria for 
16af0 74 68 65 20 73 65 6c 65 63 74 65 64 20 69 6e 64  the selected ind
16b00 65 78 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ex...        ///
16b10 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
16b20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
16b30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20  ..        /// A 
16b40 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20  standard SQLite 
16b50 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20  return code...  
16b60 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
16b70 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51  rns>..        SQ
16b80 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 46  LiteErrorCode xF
16b90 69 6c 74 65 72 28 0d 0a 20 20 20 20 20 20 20 20  ilter(..        
16ba0 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73      IntPtr pCurs
16bb0 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  or,..           
16bc0 20 69 6e 74 20 69 64 78 4e 75 6d 2c 0d 0a 20 20   int idxNum,..  
16bd0 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
16be0 20 69 64 78 53 74 72 2c 0d 0a 20 20 20 20 20 20   idxStr,..      
16bf0 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d        int argc,.
16c00 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
16c10 50 74 72 20 61 72 67 76 0d 0a 20 20 20 20 20 20  Ptr argv..      
16c20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20        );....    
16c30 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
16c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
16c80 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
16c90 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
16ca0 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
16cb0 20 20 2f 2f 2f 20 54 68 65 20 78 4e 65 78 74 20    /// The xNext 
16cc0 6d 65 74 68 6f 64 20 61 64 76 61 6e 63 65 73 20  method advances 
16cd0 61 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  a virtual table 
16ce0 63 75 72 73 6f 72 20 74 6f 20 74 68 65 20 6e 65  cursor to the ne
16cf0 78 74 20 72 6f 77 20 6f 66 0d 0a 20 20 20 20 20  xt row of..     
16d00 20 20 20 2f 2f 2f 20 61 20 72 65 73 75 6c 74 20     /// a result 
16d10 73 65 74 20 69 6e 69 74 69 61 74 65 64 20 62 79  set initiated by
16d20 20 78 46 69 6c 74 65 72 2e 20 49 66 20 74 68 65   xFilter. If the
16d30 20 63 75 72 73 6f 72 20 69 73 20 61 6c 72 65 61   cursor is alrea
16d40 64 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  dy..        /// 
16d50 70 6f 69 6e 74 69 6e 67 20 61 74 20 74 68 65 20  pointing at the 
16d60 6c 61 73 74 20 72 6f 77 20 77 68 65 6e 20 74 68  last row when th
16d70 69 73 20 72 6f 75 74 69 6e 65 20 69 73 20 63 61  is routine is ca
16d80 6c 6c 65 64 2c 20 74 68 65 6e 20 74 68 65 0d 0a  lled, then the..
16d90 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 75 72 73          /// curs
16da0 6f 72 20 6e 6f 20 6c 6f 6e 67 65 72 20 70 6f 69  or no longer poi
16db0 6e 74 73 20 74 6f 20 76 61 6c 69 64 20 64 61 74  nts to valid dat
16dc0 61 20 61 6e 64 20 61 20 73 75 62 73 65 71 75 65  a and a subseque
16dd0 6e 74 20 63 61 6c 6c 20 74 6f 20 74 68 65 0d 0a  nt call to the..
16de0 20 20 20 20 20 20 20 20 2f 2f 2f 20 78 45 6f 66          /// xEof
16df0 20 6d 65 74 68 6f 64 20 6d 75 73 74 20 72 65 74   method must ret
16e00 75 72 6e 20 74 72 75 65 20 28 6e 6f 6e 2d 7a 65  urn true (non-ze
16e10 72 6f 29 2e 20 49 66 20 74 68 65 20 63 75 72 73  ro). If the curs
16e20 6f 72 20 69 73 0d 0a 20 20 20 20 20 20 20 20 2f  or is..        /
16e30 2f 2f 20 73 75 63 63 65 73 73 66 75 6c 6c 79 20  // successfully 
16e40 61 64 76 61 6e 63 65 64 20 74 6f 20 61 6e 6f 74  advanced to anot
16e50 68 65 72 20 72 6f 77 20 6f 66 20 63 6f 6e 74 65  her row of conte
16e60 6e 74 2c 20 74 68 65 6e 20 73 75 62 73 65 71 75  nt, then subsequ
16e70 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ent..        ///
16e80 20 63 61 6c 6c 73 20 74 6f 20 78 45 6f 66 20 6d   calls to xEof m
16e90 75 73 74 20 72 65 74 75 72 6e 20 66 61 6c 73 65  ust return false
16ea0 20 28 7a 65 72 6f 29 2e 0d 0a 20 20 20 20 20 20   (zero)...      
16eb0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
16ec0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
16ed0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
16ee0 68 69 73 20 6d 65 74 68 6f 64 20 6d 75 73 74 20  his method must 
16ef0 72 65 74 75 72 6e 20 53 51 4c 49 54 45 5f 4f 4b  return SQLITE_OK
16f00 20 69 66 20 73 75 63 63 65 73 73 66 75 6c 2c 20   if successful, 
16f10 6f 72 20 61 6e 20 73 71 6c 69 74 65 20 65 72 72  or an sqlite err
16f20 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  or..        /// 
16f30 63 6f 64 65 20 69 66 20 61 6e 20 65 72 72 6f 72  code if an error
16f40 20 6f 63 63 75 72 73 2e 0d 0a 20 20 20 20 20 20   occurs...      
16f50 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
16f60 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
16f70 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
16f80 68 65 20 78 4e 65 78 74 20 6d 65 74 68 6f 64 20  he xNext method 
16f90 69 73 20 72 65 71 75 69 72 65 64 20 66 6f 72 20  is required for 
16fa0 65 76 65 72 79 20 76 69 72 74 75 61 6c 20 74 61  every virtual ta
16fb0 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ble..        ///
16fc0 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e   implementation.
16fd0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
16fe0 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
16ff0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
17000 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
17010 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22  m name="pCursor"
17020 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
17030 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
17040 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33  r to the sqlite3
17050 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72  _vtab_cursor der
17060 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d  ived structure..
17070 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
17080 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
17090 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
170a0 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e        /// A stan
170b0 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75  dard SQLite retu
170c0 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  rn code...      
170d0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
170e0 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65  ..        SQLite
170f0 45 72 72 6f 72 43 6f 64 65 20 78 4e 65 78 74 28  ErrorCode xNext(
17100 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
17110 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20  tPtr pCursor..  
17120 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a            );....
17130 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
17140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
17180 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
17190 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
171a0 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20    /// <para>..  
171b0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 78 45        /// The xE
171c0 6f 66 20 6d 65 74 68 6f 64 20 6d 75 73 74 20 72  of method must r
171d0 65 74 75 72 6e 20 66 61 6c 73 65 20 28 7a 65 72  eturn false (zer
171e0 6f 29 20 69 66 20 74 68 65 20 73 70 65 63 69 66  o) if the specif
171f0 69 65 64 20 63 75 72 73 6f 72 0d 0a 20 20 20 20  ied cursor..    
17200 20 20 20 20 2f 2f 2f 20 63 75 72 72 65 6e 74 6c      /// currentl
17210 79 20 70 6f 69 6e 74 73 20 74 6f 20 61 20 76 61  y points to a va
17220 6c 69 64 20 72 6f 77 20 6f 66 20 64 61 74 61 2c  lid row of data,
17230 20 6f 72 20 74 72 75 65 20 28 6e 6f 6e 2d 7a 65   or true (non-ze
17240 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ro)..        ///
17250 20 6f 74 68 65 72 77 69 73 65 2e 20 54 68 69 73   otherwise. This
17260 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65   method is calle
17270 64 20 62 79 20 74 68 65 20 53 51 4c 20 65 6e 67  d by the SQL eng
17280 69 6e 65 20 69 6d 6d 65 64 69 61 74 65 6c 79 0d  ine immediately.
17290 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 66 74  .        /// aft
172a0 65 72 20 65 61 63 68 20 78 46 69 6c 74 65 72 20  er each xFilter 
172b0 61 6e 64 20 78 4e 65 78 74 20 69 6e 76 6f 63 61  and xNext invoca
172c0 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  tion...        /
172d0 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20  // </para>..    
172e0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a      /// <para>..
172f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
17300 78 45 6f 66 20 6d 65 74 68 6f 64 20 69 73 20 72  xEof method is r
17310 65 71 75 69 72 65 64 20 66 6f 72 20 65 76 65 72  equired for ever
17320 79 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  y virtual table 
17330 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d  implementation..
17340 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
17350 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
17360 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
17370 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
17380 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e   name="pCursor">
17390 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
173a0 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
173b0 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
173c0 76 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69  vtab_cursor deri
173d0 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  ved structure...
173e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
173f0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
17400 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
17410 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
17420 6f 20 69 66 20 6e 6f 20 6d 6f 72 65 20 72 6f 77  o if no more row
17430 73 20 61 72 65 20 61 76 61 69 6c 61 62 6c 65 3b  s are available;
17440 20 7a 65 72 6f 20 6f 74 68 65 72 77 69 73 65 2e   zero otherwise.
17450 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
17460 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
17470 20 20 69 6e 74 20 78 45 6f 66 28 0d 0a 20 20 20    int xEof(..   
17480 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
17490 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20  pCursor..       
174a0 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20       );....     
174b0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
174c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
174d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
174e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
174f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
17500 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
17510 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
17520 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
17530 20 2f 2f 2f 20 54 68 65 20 53 51 4c 69 74 65 20   /// The SQLite 
17540 63 6f 72 65 20 69 6e 76 6f 6b 65 73 20 74 68 69  core invokes thi
17550 73 20 6d 65 74 68 6f 64 20 69 6e 20 6f 72 64 65  s method in orde
17560 72 20 74 6f 20 66 69 6e 64 20 74 68 65 20 76 61  r to find the va
17570 6c 75 65 20 66 6f 72 0d 0a 20 20 20 20 20 20 20  lue for..       
17580 20 2f 2f 2f 20 74 68 65 20 4e 2d 74 68 20 63 6f   /// the N-th co
17590 6c 75 6d 6e 20 6f 66 20 74 68 65 20 63 75 72 72  lumn of the curr
175a0 65 6e 74 20 72 6f 77 2e 20 4e 20 69 73 20 7a 65  ent row. N is ze
175b0 72 6f 2d 62 61 73 65 64 20 73 6f 20 74 68 65 20  ro-based so the 
175c0 66 69 72 73 74 0d 0a 20 20 20 20 20 20 20 20 2f  first..        /
175d0 2f 2f 20 63 6f 6c 75 6d 6e 20 69 73 20 6e 75 6d  // column is num
175e0 62 65 72 65 64 20 30 2e 20 54 68 65 20 78 43 6f  bered 0. The xCo
175f0 6c 75 6d 6e 20 6d 65 74 68 6f 64 20 6d 61 79 20  lumn method may 
17600 72 65 74 75 72 6e 20 69 74 73 20 72 65 73 75 6c  return its resul
17610 74 20 62 61 63 6b 0d 0a 20 20 20 20 20 20 20 20  t back..        
17620 2f 2f 2f 20 74 6f 20 53 51 4c 69 74 65 20 75 73  /// to SQLite us
17630 69 6e 67 20 6f 6e 65 20 6f 66 20 74 68 65 20 66  ing one of the f
17640 6f 6c 6c 6f 77 69 6e 67 20 69 6e 74 65 72 66 61  ollowing interfa
17650 63 65 3a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ce:..        ///
17660 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20   </para>..      
17670 20 20 2f 2f 2f 20 3c 63 6f 64 65 3e 0d 0a 20 20    /// <code>..  
17680 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 73 71        ///     sq
17690 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 62 6c 6f  lite3_result_blo
176a0 62 28 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  b()..        ///
176b0 20 20 20 20 20 73 71 6c 69 74 65 33 5f 72 65 73       sqlite3_res
176c0 75 6c 74 5f 64 6f 75 62 6c 65 28 29 0d 0a 20 20  ult_double()..  
176d0 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 73 71        ///     sq
176e0 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74  lite3_result_int
176f0 28 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ()..        /// 
17700 20 20 20 20 73 71 6c 69 74 65 33 5f 72 65 73 75      sqlite3_resu
17710 6c 74 5f 69 6e 74 36 34 28 29 0d 0a 20 20 20 20  lt_int64()..    
17720 20 20 20 20 2f 2f 2f 20 20 20 20 20 73 71 6c 69      ///     sqli
17730 74 65 33 5f 72 65 73 75 6c 74 5f 6e 75 6c 6c 28  te3_result_null(
17740 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20  )..        ///  
17750 20 20 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c     sqlite3_resul
17760 74 5f 74 65 78 74 28 29 0d 0a 20 20 20 20 20 20  t_text()..      
17770 20 20 2f 2f 2f 20 20 20 20 20 73 71 6c 69 74 65    ///     sqlite
17780 33 5f 72 65 73 75 6c 74 5f 74 65 78 74 31 36 28  3_result_text16(
17790 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20  )..        ///  
177a0 20 20 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c     sqlite3_resul
177b0 74 5f 74 65 78 74 31 36 6c 65 28 29 0d 0a 20 20  t_text16le()..  
177c0 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 73 71        ///     sq
177d0 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 74 65 78  lite3_result_tex
177e0 74 31 36 62 65 28 29 0d 0a 20 20 20 20 20 20 20  t16be()..       
177f0 20 2f 2f 2f 20 20 20 20 20 73 71 6c 69 74 65 33   ///     sqlite3
17800 5f 72 65 73 75 6c 74 5f 7a 65 72 6f 62 6c 6f 62  _result_zeroblob
17810 28 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ()..        /// 
17820 3c 2f 63 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20  </code>..       
17830 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
17840 20 20 20 20 20 2f 2f 2f 20 49 66 20 74 68 65 20       /// If the 
17850 78 43 6f 6c 75 6d 6e 20 6d 65 74 68 6f 64 20 69  xColumn method i
17860 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 63 61  mplementation ca
17870 6c 6c 73 20 6e 6f 6e 65 20 6f 66 20 74 68 65 20  lls none of the 
17880 66 75 6e 63 74 69 6f 6e 73 0d 0a 20 20 20 20 20  functions..     
17890 20 20 20 2f 2f 2f 20 61 62 6f 76 65 2c 20 74 68     /// above, th
178a0 65 6e 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20  en the value of 
178b0 74 68 65 20 63 6f 6c 75 6d 6e 20 64 65 66 61 75  the column defau
178c0 6c 74 73 20 74 6f 20 61 6e 20 53 51 4c 20 4e 55  lts to an SQL NU
178d0 4c 4c 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  LL...        ///
178e0 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20   </para>..      
178f0 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20    /// <para>..  
17900 20 20 20 20 20 20 2f 2f 2f 20 54 6f 20 72 61 69        /// To rai
17910 73 65 20 61 6e 20 65 72 72 6f 72 2c 20 74 68 65  se an error, the
17920 20 78 43 6f 6c 75 6d 6e 20 6d 65 74 68 6f 64 20   xColumn method 
17930 73 68 6f 75 6c 64 20 75 73 65 20 6f 6e 65 20 6f  should use one o
17940 66 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  f the..        /
17950 2f 2f 20 72 65 73 75 6c 74 5f 74 65 78 74 28 29  // result_text()
17960 20 6d 65 74 68 6f 64 73 20 74 6f 20 73 65 74 20   methods to set 
17970 74 68 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67  the error messag
17980 65 20 74 65 78 74 2c 20 74 68 65 6e 20 72 65 74  e text, then ret
17990 75 72 6e 20 61 6e 0d 0a 20 20 20 20 20 20 20 20  urn an..        
179a0 2f 2f 2f 20 61 70 70 72 6f 70 72 69 61 74 65 20  /// appropriate 
179b0 65 72 72 6f 72 20 63 6f 64 65 2e 20 54 68 65 20  error code. The 
179c0 78 43 6f 6c 75 6d 6e 20 6d 65 74 68 6f 64 20 6d  xColumn method m
179d0 75 73 74 20 72 65 74 75 72 6e 20 53 51 4c 49 54  ust return SQLIT
179e0 45 5f 4f 4b 20 6f 6e 0d 0a 20 20 20 20 20 20 20  E_OK on..       
179f0 20 2f 2f 2f 20 73 75 63 63 65 73 73 2e 0d 0a 20   /// success... 
17a00 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
17a10 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
17a20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
17a30 2f 2f 2f 20 54 68 65 20 78 43 6f 6c 75 6d 6e 20  /// The xColumn 
17a40 6d 65 74 68 6f 64 20 69 73 20 72 65 71 75 69 72  method is requir
17a50 65 64 20 66 6f 72 20 65 76 65 72 79 20 76 69 72  ed for every vir
17a60 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20  tual table..    
17a70 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e      /// implemen
17a80 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  tation...       
17a90 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
17aa0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
17ab0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
17ac0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
17ad0 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20  Cursor">..      
17ae0 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
17af0 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
17b00 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72  sqlite3_vtab_cur
17b10 73 6f 72 20 64 65 72 69 76 65 64 20 73 74 72 75  sor derived stru
17b20 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  cture...        
17b30 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
17b40 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
17b50 20 6e 61 6d 65 3d 22 70 43 6f 6e 74 65 78 74 22   name="pContext"
17b60 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
17b70 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
17b80 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33  r to the sqlite3
17b90 5f 63 6f 6e 74 65 78 74 20 73 74 72 75 63 74 75  _context structu
17ba0 72 65 20 74 6f 20 62 65 20 75 73 65 64 0d 0a 20  re to be used.. 
17bb0 20 20 20 20 20 20 20 2f 2f 2f 20 66 6f 72 20 72         /// for r
17bc0 65 74 75 72 6e 69 6e 67 20 74 68 65 20 73 70 65  eturning the spe
17bd0 63 69 66 69 65 64 20 63 6f 6c 75 6d 6e 20 76 61  cified column va
17be0 6c 75 65 20 74 6f 20 74 68 65 20 53 51 4c 69 74  lue to the SQLit
17bf0 65 20 63 6f 72 65 0d 0a 20 20 20 20 20 20 20 20  e core..        
17c00 2f 2f 2f 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  /// library...  
17c10 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
17c20 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
17c30 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64  <param name="ind
17c40 65 78 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ex">..        //
17c50 2f 20 54 68 65 20 7a 65 72 6f 2d 62 61 73 65 64  / The zero-based
17c60 20 69 6e 64 65 78 20 63 6f 72 72 65 73 70 6f 6e   index correspon
17c70 64 69 6e 67 20 74 6f 20 74 68 65 20 63 6f 6c 75  ding to the colu
17c80 6d 6e 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68  mn containing th
17c90 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76  e..        /// v
17ca0 61 6c 75 65 20 74 6f 20 62 65 20 72 65 74 75 72  alue to be retur
17cb0 6e 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ned...        //
17cc0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
17cd0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
17ce0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
17cf0 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
17d00 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
17d10 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
17d20 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53  urns>..        S
17d30 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
17d40 43 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20 20 20 20  Column(..       
17d50 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72       IntPtr pCur
17d60 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  sor,..          
17d70 20 20 49 6e 74 50 74 72 20 70 43 6f 6e 74 65 78    IntPtr pContex
17d80 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
17d90 69 6e 74 20 69 6e 64 65 78 0d 0a 20 20 20 20 20  int index..     
17da0 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20         );....   
17db0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
17dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
17e00 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
17e10 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
17e20 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20  // <para>..     
17e30 20 20 20 2f 2f 2f 20 41 20 73 75 63 63 65 73 73     /// A success
17e40 66 75 6c 20 69 6e 76 6f 63 61 74 69 6f 6e 20 6f  ful invocation o
17e50 66 20 74 68 69 73 20 6d 65 74 68 6f 64 20 77 69  f this method wi
17e60 6c 6c 20 63 61 75 73 65 20 2a 70 52 6f 77 69 64  ll cause *pRowid
17e70 20 74 6f 20 62 65 0d 0a 20 20 20 20 20 20 20 20   to be..        
17e80 2f 2f 2f 20 66 69 6c 6c 65 64 20 77 69 74 68 20  /// filled with 
17e90 74 68 65 20 72 6f 77 69 64 20 6f 66 20 72 6f 77  the rowid of row
17ea0 20 74 68 61 74 20 74 68 65 20 76 69 72 74 75 61   that the virtua
17eb0 6c 20 74 61 62 6c 65 20 63 75 72 73 6f 72 20 70  l table cursor p
17ec0 43 75 72 20 69 73 0d 0a 20 20 20 20 20 20 20 20  Cur is..        
17ed0 2f 2f 2f 20 63 75 72 72 65 6e 74 6c 79 20 70 6f  /// currently po
17ee0 69 6e 74 69 6e 67 20 61 74 2e 20 54 68 69 73 20  inting at. This 
17ef0 6d 65 74 68 6f 64 20 72 65 74 75 72 6e 73 20 53  method returns S
17f00 51 4c 49 54 45 5f 4f 4b 20 6f 6e 20 73 75 63 63  QLITE_OK on succ
17f10 65 73 73 2e 20 49 74 0d 0a 20 20 20 20 20 20 20  ess. It..       
17f20 20 2f 2f 2f 20 72 65 74 75 72 6e 73 20 61 6e 20   /// returns an 
17f30 61 70 70 72 6f 70 72 69 61 74 65 20 65 72 72 6f  appropriate erro
17f40 72 20 63 6f 64 65 20 6f 6e 20 66 61 69 6c 75 72  r code on failur
17f50 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
17f60 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
17f70 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
17f80 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 78 52 6f       /// The xRo
17f90 77 69 64 20 6d 65 74 68 6f 64 20 69 73 20 72 65  wid method is re
17fa0 71 75 69 72 65 64 20 66 6f 72 20 65 76 65 72 79  quired for every
17fb0 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 0d 0a   virtual table..
17fc0 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6d 70 6c          /// impl
17fd0 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20 20  ementation...   
17fe0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
17ff0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
18000 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
18010 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
18020 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20  e="pCursor">..  
18030 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
18040 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
18050 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62  the sqlite3_vtab
18060 5f 63 75 72 73 6f 72 20 64 65 72 69 76 65 64 20  _cursor derived 
18070 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20  structure...    
18080 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
18090 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
180a0 61 72 61 6d 20 6e 61 6d 65 3d 22 72 6f 77 49 64  aram name="rowId
180b0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
180c0 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68  Upon success, th
180d0 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73  is parameter mus
180e0 74 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f  t be modified to
180f0 20 63 6f 6e 74 61 69 6e 20 74 68 65 20 75 6e 69   contain the uni
18100 71 75 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  que..        ///
18110 20 69 6e 74 65 67 65 72 20 72 6f 77 20 69 64 65   integer row ide
18120 6e 74 69 66 69 65 72 20 66 6f 72 20 74 68 65 20  ntifier for the 
18130 63 75 72 72 65 6e 74 20 72 6f 77 20 66 6f 72 20  current row for 
18140 74 68 65 20 73 70 65 63 69 66 69 65 64 20 63 75  the specified cu
18150 72 73 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f  rsor...        /
18160 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
18170 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
18180 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
18190 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74  A standard SQLit
181a0 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a  e return code...
181b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
181c0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
181d0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
181e0 78 52 6f 77 49 64 28 0d 0a 20 20 20 20 20 20 20  xRowId(..       
181f0 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72       IntPtr pCur
18200 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  sor,..          
18210 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64    ref long rowId
18220 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b  ..            );
18230 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
18240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18250 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
18290 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
182a0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
182b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 6c  ..        /// Al
182c0 6c 20 63 68 61 6e 67 65 73 20 74 6f 20 61 20 76  l changes to a v
182d0 69 72 74 75 61 6c 20 74 61 62 6c 65 20 61 72 65  irtual table are
182e0 20 6d 61 64 65 20 75 73 69 6e 67 20 74 68 65 20   made using the 
182f0 78 55 70 64 61 74 65 20 6d 65 74 68 6f 64 2e 0d  xUpdate method..
18300 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
18310 73 20 6f 6e 65 20 6d 65 74 68 6f 64 20 63 61 6e  s one method can
18320 20 62 65 20 75 73 65 64 20 74 6f 20 69 6e 73 65   be used to inse
18330 72 74 2c 20 64 65 6c 65 74 65 2c 20 6f 72 20 75  rt, delete, or u
18340 70 64 61 74 65 2e 0d 0a 20 20 20 20 20 20 20 20  pdate...        
18350 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20  /// </para>..   
18360 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
18370 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
18380 20 61 72 67 63 20 70 61 72 61 6d 65 74 65 72 20   argc parameter 
18390 73 70 65 63 69 66 69 65 73 20 74 68 65 20 6e 75  specifies the nu
183a0 6d 62 65 72 20 6f 66 20 65 6e 74 72 69 65 73 20  mber of entries 
183b0 69 6e 20 74 68 65 20 61 72 67 76 0d 0a 20 20 20  in the argv..   
183c0 20 20 20 20 20 2f 2f 2f 20 61 72 72 61 79 2e 20       /// array. 
183d0 54 68 65 20 76 61 6c 75 65 20 6f 66 20 61 72 67  The value of arg
183e0 63 20 77 69 6c 6c 20 62 65 20 31 20 66 6f 72 20  c will be 1 for 
183f0 61 20 70 75 72 65 20 64 65 6c 65 74 65 20 6f 70  a pure delete op
18400 65 72 61 74 69 6f 6e 20 6f 72 0d 0a 20 20 20 20  eration or..    
18410 20 20 20 20 2f 2f 2f 20 4e 2b 32 20 66 6f 72 20      /// N+2 for 
18420 61 6e 20 69 6e 73 65 72 74 20 6f 72 20 72 65 70  an insert or rep
18430 6c 61 63 65 20 6f 72 20 75 70 64 61 74 65 20 77  lace or update w
18440 68 65 72 65 20 4e 20 69 73 20 74 68 65 20 6e 75  here N is the nu
18450 6d 62 65 72 20 6f 66 0d 0a 20 20 20 20 20 20 20  mber of..       
18460 20 2f 2f 2f 20 63 6f 6c 75 6d 6e 73 20 69 6e 20   /// columns in 
18470 74 68 65 20 74 61 62 6c 65 2e 20 49 6e 20 74 68  the table. In th
18480 65 20 70 72 65 76 69 6f 75 73 20 73 65 6e 74 65  e previous sente
18490 6e 63 65 2c 20 4e 20 69 6e 63 6c 75 64 65 73 20  nce, N includes 
184a0 61 6e 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  any..        ///
184b0 20 68 69 64 64 65 6e 20 63 6f 6c 75 6d 6e 73 2e   hidden columns.
184c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
184d0 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
184e0 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20  // <para>..     
184f0 20 20 20 2f 2f 2f 20 45 76 65 72 79 20 61 72 67     /// Every arg
18500 76 20 65 6e 74 72 79 20 77 69 6c 6c 20 68 61 76  v entry will hav
18510 65 20 61 20 6e 6f 6e 2d 4e 55 4c 4c 20 76 61 6c  e a non-NULL val
18520 75 65 20 69 6e 20 43 20 62 75 74 20 6d 61 79 20  ue in C but may 
18530 63 6f 6e 74 61 69 6e 0d 0a 20 20 20 20 20 20 20  contain..       
18540 20 2f 2f 2f 20 74 68 65 20 53 51 4c 20 76 61 6c   /// the SQL val
18550 75 65 20 4e 55 4c 4c 2e 20 49 6e 20 6f 74 68 65  ue NULL. In othe
18560 72 20 77 6f 72 64 73 2c 20 69 74 20 69 73 20 61  r words, it is a
18570 6c 77 61 79 73 20 74 72 75 65 20 74 68 61 74 0d  lways true that.
18580 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 72 67  .        /// arg
18590 76 5b 69 5d 21 3d 30 20 66 6f 72 20 69 20 62 65  v[i]!=0 for i be
185a0 74 77 65 65 6e 20 30 20 61 6e 64 20 61 72 67 63  tween 0 and argc
185b0 2d 31 2e 20 48 6f 77 65 76 65 72 2c 20 69 74 20  -1. However, it 
185c0 6d 69 67 68 74 20 62 65 20 74 68 65 0d 0a 20 20  might be the..  
185d0 20 20 20 20 20 20 2f 2f 2f 20 63 61 73 65 20 74        /// case t
185e0 68 61 74 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  hat sqlite3_valu
185f0 65 5f 74 79 70 65 28 61 72 67 76 5b 69 5d 29 3d  e_type(argv[i])=
18600 3d 53 51 4c 49 54 45 5f 4e 55 4c 4c 2e 0d 0a 20  =SQLITE_NULL... 
18610 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
18620 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
18630 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
18640 2f 2f 2f 20 54 68 65 20 61 72 67 76 5b 30 5d 20  /// The argv[0] 
18650 70 61 72 61 6d 65 74 65 72 20 69 73 20 74 68 65  parameter is the
18660 20 72 6f 77 69 64 20 6f 66 20 61 20 72 6f 77 20   rowid of a row 
18670 69 6e 20 74 68 65 20 76 69 72 74 75 61 6c 20 74  in the virtual t
18680 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  able..        //
18690 2f 20 74 6f 20 62 65 20 64 65 6c 65 74 65 64 2e  / to be deleted.
186a0 20 49 66 20 61 72 67 76 5b 30 5d 20 69 73 20 61   If argv[0] is a
186b0 6e 20 53 51 4c 20 4e 55 4c 4c 2c 20 74 68 65 6e  n SQL NULL, then
186c0 20 6e 6f 20 64 65 6c 65 74 69 6f 6e 20 6f 63 63   no deletion occ
186d0 75 72 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  urs...        //
186e0 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20  / </para>..     
186f0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20     /// <para>.. 
18700 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61         /// The a
18710 72 67 76 5b 31 5d 20 70 61 72 61 6d 65 74 65 72  rgv[1] parameter
18720 20 69 73 20 74 68 65 20 72 6f 77 69 64 20 6f 66   is the rowid of
18730 20 61 20 6e 65 77 20 72 6f 77 20 74 6f 20 62 65   a new row to be
18740 20 69 6e 73 65 72 74 65 64 20 69 6e 74 6f 0d 0a   inserted into..
18750 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20          /// the 
18760 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 20 49  virtual table. I
18770 66 20 61 72 67 76 5b 31 5d 20 69 73 20 61 6e 20  f argv[1] is an 
18780 53 51 4c 20 4e 55 4c 4c 2c 20 74 68 65 6e 20 74  SQL NULL, then t
18790 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
187a0 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6d  implementation m
187b0 75 73 74 20 63 68 6f 6f 73 65 20 61 20 72 6f 77  ust choose a row
187c0 69 64 20 66 6f 72 20 74 68 65 20 6e 65 77 6c 79  id for the newly
187d0 20 69 6e 73 65 72 74 65 64 20 72 6f 77 2e 0d 0a   inserted row...
187e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 75 62 73          /// Subs
187f0 65 71 75 65 6e 74 20 61 72 67 76 5b 5d 20 65 6e  equent argv[] en
18800 74 72 69 65 73 20 63 6f 6e 74 61 69 6e 20 76 61  tries contain va
18810 6c 75 65 73 20 6f 66 20 74 68 65 20 63 6f 6c 75  lues of the colu
18820 6d 6e 73 20 6f 66 20 74 68 65 0d 0a 20 20 20 20  mns of the..    
18830 20 20 20 20 2f 2f 2f 20 76 69 72 74 75 61 6c 20      /// virtual 
18840 74 61 62 6c 65 2c 20 69 6e 20 74 68 65 20 6f 72  table, in the or
18850 64 65 72 20 74 68 61 74 20 74 68 65 20 63 6f 6c  der that the col
18860 75 6d 6e 73 20 77 65 72 65 20 64 65 63 6c 61 72  umns were declar
18870 65 64 2e 20 54 68 65 0d 0a 20 20 20 20 20 20 20  ed. The..       
18880 20 2f 2f 2f 20 6e 75 6d 62 65 72 20 6f 66 20 63   /// number of c
18890 6f 6c 75 6d 6e 73 20 77 69 6c 6c 20 6d 61 74 63  olumns will matc
188a0 68 20 74 68 65 20 74 61 62 6c 65 20 64 65 63 6c  h the table decl
188b0 61 72 61 74 69 6f 6e 20 74 68 61 74 20 74 68 65  aration that the
188c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 78 43  ..        /// xC
188d0 6f 6e 6e 65 63 74 20 6f 72 20 78 43 72 65 61 74  onnect or xCreat
188e0 65 20 6d 65 74 68 6f 64 20 6d 61 64 65 20 75 73  e method made us
188f0 69 6e 67 20 74 68 65 20 73 71 6c 69 74 65 33 5f  ing the sqlite3_
18900 64 65 63 6c 61 72 65 5f 76 74 61 62 28 29 0d 0a  declare_vtab()..
18910 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 61 6c 6c          /// call
18920 2e 20 41 6c 6c 20 68 69 64 64 65 6e 20 63 6f 6c  . All hidden col
18930 75 6d 6e 73 20 61 72 65 20 69 6e 63 6c 75 64 65  umns are include
18940 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
18950 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
18960 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
18970 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 64 6f       /// When do
18980 69 6e 67 20 61 6e 20 69 6e 73 65 72 74 20 77 69  ing an insert wi
18990 74 68 6f 75 74 20 61 20 72 6f 77 69 64 20 28 61  thout a rowid (a
189a0 72 67 63 3e 31 2c 20 61 72 67 76 5b 31 5d 20 69  rgc>1, argv[1] i
189b0 73 20 61 6e 20 53 51 4c 0d 0a 20 20 20 20 20 20  s an SQL..      
189c0 20 20 2f 2f 2f 20 4e 55 4c 4c 29 2c 20 74 68 65    /// NULL), the
189d0 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20   implementation 
189e0 6d 75 73 74 20 73 65 74 20 2a 70 52 6f 77 69 64  must set *pRowid
189f0 20 74 6f 20 74 68 65 20 72 6f 77 69 64 20 6f 66   to the rowid of
18a00 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
18a10 2f 20 6e 65 77 6c 79 20 69 6e 73 65 72 74 65 64  / newly inserted
18a20 20 72 6f 77 3b 20 74 68 69 73 20 77 69 6c 6c 20   row; this will 
18a30 62 65 63 6f 6d 65 20 74 68 65 20 76 61 6c 75 65  become the value
18a40 20 72 65 74 75 72 6e 65 64 20 62 79 20 74 68 65   returned by the
18a50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71  ..        /// sq
18a60 6c 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72  lite3_last_inser
18a70 74 5f 72 6f 77 69 64 28 29 20 66 75 6e 63 74 69  t_rowid() functi
18a80 6f 6e 2e 20 53 65 74 74 69 6e 67 20 74 68 69 73  on. Setting this
18a90 20 76 61 6c 75 65 20 69 6e 20 61 6c 6c 20 74 68   value in all th
18aa0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f  e..        /// o
18ab0 74 68 65 72 20 63 61 73 65 73 20 69 73 20 61 20  ther cases is a 
18ac0 68 61 72 6d 6c 65 73 73 20 6e 6f 2d 6f 70 3b 20  harmless no-op; 
18ad0 74 68 65 20 53 51 4c 69 74 65 20 65 6e 67 69 6e  the SQLite engin
18ae0 65 20 69 67 6e 6f 72 65 73 20 74 68 65 0d 0a 20  e ignores the.. 
18af0 20 20 20 20 20 20 20 2f 2f 2f 20 2a 70 52 6f 77         /// *pRow
18b00 69 64 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20  id return value 
18b10 69 66 20 61 72 67 63 3d 3d 31 20 6f 72 20 61 72  if argc==1 or ar
18b20 67 76 5b 31 5d 20 69 73 20 6e 6f 74 20 61 6e 20  gv[1] is not an 
18b30 53 51 4c 20 4e 55 4c 4c 2e 0d 0a 20 20 20 20 20  SQL NULL...     
18b40 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a     /// </para>..
18b50 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
18b60 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
18b70 45 61 63 68 20 63 61 6c 6c 20 74 6f 20 78 55 70  Each call to xUp
18b80 64 61 74 65 20 77 69 6c 6c 20 66 61 6c 6c 20 69  date will fall i
18b90 6e 74 6f 20 6f 6e 65 20 6f 66 20 63 61 73 65 73  nto one of cases
18ba0 20 73 68 6f 77 6e 20 62 65 6c 6f 77 2e 20 4e 6f   shown below. No
18bb0 74 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  te..        /// 
18bc0 74 68 61 74 20 72 65 66 65 72 65 6e 63 65 73 20  that references 
18bd0 74 6f 20 61 72 67 76 5b 69 5d 20 6d 65 61 6e 20  to argv[i] mean 
18be0 74 68 65 20 53 51 4c 20 76 61 6c 75 65 20 68 65  the SQL value he
18bf0 6c 64 20 77 69 74 68 69 6e 20 74 68 65 0d 0a 20  ld within the.. 
18c00 20 20 20 20 20 20 20 2f 2f 2f 20 61 72 67 76 5b         /// argv[
18c10 69 5d 20 6f 62 6a 65 63 74 2c 20 6e 6f 74 20 74  i] object, not t
18c20 68 65 20 61 72 67 76 5b 69 5d 20 6f 62 6a 65 63  he argv[i] objec
18c30 74 20 69 74 73 65 6c 66 2e 0d 0a 20 20 20 20 20  t itself...     
18c40 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a     /// </para>..
18c50 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 63 6f 64          /// <cod
18c60 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e>..        /// 
18c70 20 20 20 20 61 72 67 63 20 3d 20 31 0d 0a 20 20      argc = 1..  
18c80 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 63 6f 64 65        /// </code
18c90 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
18ca0 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
18cb0 2f 2f 20 20 20 20 20 20 20 20 20 54 68 65 20 73  //         The s
18cc0 69 6e 67 6c 65 20 72 6f 77 20 77 69 74 68 20 72  ingle row with r
18cd0 6f 77 69 64 20 65 71 75 61 6c 20 74 6f 20 61 72  owid equal to ar
18ce0 67 76 5b 30 5d 20 69 73 20 64 65 6c 65 74 65 64  gv[0] is deleted
18cf0 2e 20 4e 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f  . No..        //
18d00 2f 20 20 20 20 20 20 20 20 20 69 6e 73 65 72 74  /         insert
18d10 20 6f 63 63 75 72 73 2e 0d 0a 20 20 20 20 20 20   occurs...      
18d20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
18d30 20 20 20 20 20 20 20 2f 2f 2f 20 3c 63 6f 64 65         /// <code
18d40 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20  >..        ///  
18d50 20 20 20 61 72 67 63 20 3e 20 31 0d 0a 20 20 20     argc > 1..   
18d60 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 61 72 67       ///     arg
18d70 76 5b 30 5d 20 3d 20 4e 55 4c 4c 0d 0a 20 20 20  v[0] = NULL..   
18d80 20 20 20 20 20 2f 2f 2f 20 3c 2f 63 6f 64 65 3e       /// </code>
18d90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
18da0 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
18db0 2f 20 20 20 20 20 20 20 20 20 41 20 6e 65 77 20  /         A new 
18dc0 72 6f 77 20 69 73 20 69 6e 73 65 72 74 65 64 20  row is inserted 
18dd0 77 69 74 68 20 61 20 72 6f 77 69 64 20 61 72 67  with a rowid arg
18de0 76 5b 31 5d 20 61 6e 64 20 63 6f 6c 75 6d 6e 0d  v[1] and column.
18df0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20  .        ///    
18e00 20 20 20 20 20 76 61 6c 75 65 73 20 69 6e 20 61       values in a
18e10 72 67 76 5b 32 5d 20 61 6e 64 20 66 6f 6c 6c 6f  rgv[2] and follo
18e20 77 69 6e 67 2e 20 49 66 20 61 72 67 76 5b 31 5d  wing. If argv[1]
18e30 20 69 73 20 61 6e 20 53 51 4c 20 4e 55 4c 4c 2c   is an SQL NULL,
18e40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20  ..        ///   
18e50 20 20 20 20 20 20 74 68 65 20 61 20 6e 65 77 20        the a new 
18e60 75 6e 69 71 75 65 20 72 6f 77 69 64 20 69 73 20  unique rowid is 
18e70 67 65 6e 65 72 61 74 65 64 20 61 75 74 6f 6d 61  generated automa
18e80 74 69 63 61 6c 6c 79 2e 0d 0a 20 20 20 20 20 20  tically...      
18e90 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
18ea0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 63 6f 64 65         /// <code
18eb0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20  >..        ///  
18ec0 20 20 20 61 72 67 63 20 3e 20 31 0d 0a 20 20 20     argc > 1..   
18ed0 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 61 72 67       ///     arg
18ee0 76 5b 30 5d 20 3f 20 4e 55 4c 4c 0d 0a 20 20 20  v[0] ? NULL..   
18ef0 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 61 72 67       ///     arg
18f00 76 5b 30 5d 20 3d 20 61 72 67 76 5b 31 5d 0d 0a  v[0] = argv[1]..
18f10 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 63 6f          /// </co
18f20 64 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de>..        ///
18f30 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
18f40 20 2f 2f 2f 20 20 20 20 20 20 20 20 20 54 68 65   ///         The
18f50 20 72 6f 77 20 77 69 74 68 20 72 6f 77 69 64 20   row with rowid 
18f60 61 72 67 76 5b 30 5d 20 69 73 20 75 70 64 61 74  argv[0] is updat
18f70 65 64 20 77 69 74 68 20 6e 65 77 20 76 61 6c 75  ed with new valu
18f80 65 73 20 69 6e 0d 0a 20 20 20 20 20 20 20 20 2f  es in..        /
18f90 2f 2f 20 20 20 20 20 20 20 20 20 61 72 67 76 5b  //         argv[
18fa0 32 5d 20 61 6e 64 20 66 6f 6c 6c 6f 77 69 6e 67  2] and following
18fb0 20 70 61 72 61 6d 65 74 65 72 73 2e 0d 0a 20 20   parameters...  
18fc0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
18fd0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
18fe0 63 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f  code>..        /
18ff0 2f 2f 20 20 20 20 20 61 72 67 63 20 3e 20 31 0d  //     argc > 1.
19000 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20  .        ///    
19010 20 61 72 67 76 5b 30 5d 20 3f 20 4e 55 4c 4c 0d   argv[0] ? NULL.
19020 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20  .        ///    
19030 20 61 72 67 76 5b 30 5d 20 3f 20 61 72 67 76 5b   argv[0] ? argv[
19040 31 5d 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  1]..        /// 
19050 3c 2f 63 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20  </code>..       
19060 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
19070 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20       ///        
19080 20 54 68 65 20 72 6f 77 20 77 69 74 68 20 72 6f   The row with ro
19090 77 69 64 20 61 72 67 76 5b 30 5d 20 69 73 20 75  wid argv[0] is u
190a0 70 64 61 74 65 64 20 77 69 74 68 20 72 6f 77 69  pdated with rowi
190b0 64 20 61 72 67 76 5b 31 5d 0d 0a 20 20 20 20 20  d argv[1]..     
190c0 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20 61     ///         a
190d0 6e 64 20 6e 65 77 20 76 61 6c 75 65 73 20 69 6e  nd new values in
190e0 20 61 72 67 76 5b 32 5d 20 61 6e 64 20 66 6f 6c   argv[2] and fol
190f0 6c 6f 77 69 6e 67 20 70 61 72 61 6d 65 74 65 72  lowing parameter
19100 73 2e 20 54 68 69 73 0d 0a 20 20 20 20 20 20 20  s. This..       
19110 20 2f 2f 2f 20 20 20 20 20 20 20 20 20 77 69 6c   ///         wil
19120 6c 20 6f 63 63 75 72 20 77 68 65 6e 20 61 6e 20  l occur when an 
19130 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 75 70  SQL statement up
19140 64 61 74 65 73 20 61 20 72 6f 77 69 64 2c 20 61  dates a rowid, a
19150 73 20 69 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  s in..        //
19160 2f 20 20 20 20 20 20 20 20 20 74 68 65 20 73 74  /         the st
19170 61 74 65 6d 65 6e 74 3a 0d 0a 20 20 20 20 20 20  atement:..      
19180 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
19190 20 20 20 20 20 20 20 2f 2f 2f 20 3c 63 6f 64 65         /// <code
191a0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20  >..        ///  
191b0 20 20 20 20 20 20 20 20 20 20 20 55 50 44 41 54             UPDAT
191c0 45 20 74 61 62 6c 65 20 53 45 54 20 72 6f 77 69  E table SET rowi
191d0 64 3d 72 6f 77 69 64 2b 31 20 57 48 45 52 45 20  d=rowid+1 WHERE 
191e0 2e 2e 2e 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ...;..        //
191f0 2f 20 3c 2f 63 6f 64 65 3e 0d 0a 20 20 20 20 20  / </code>..     
19200 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20     /// <para>.. 
19210 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 78         /// The x
19220 55 70 64 61 74 65 20 6d 65 74 68 6f 64 20 6d 75  Update method mu
19230 73 74 20 72 65 74 75 72 6e 20 53 51 4c 49 54 45  st return SQLITE
19240 5f 4f 4b 20 69 66 20 61 6e 64 20 6f 6e 6c 79 20  _OK if and only 
19250 69 66 20 69 74 20 69 73 0d 0a 20 20 20 20 20 20  if it is..      
19260 20 20 2f 2f 2f 20 73 75 63 63 65 73 73 66 75 6c    /// successful
19270 2e 20 49 66 20 61 20 66 61 69 6c 75 72 65 20 6f  . If a failure o
19280 63 63 75 72 73 2c 20 74 68 65 20 78 55 70 64 61  ccurs, the xUpda
19290 74 65 20 6d 75 73 74 20 72 65 74 75 72 6e 20 61  te must return a
192a0 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61  n..        /// a
192b0 70 70 72 6f 70 72 69 61 74 65 20 65 72 72 6f 72  ppropriate error
192c0 20 63 6f 64 65 2e 20 4f 6e 20 61 20 66 61 69 6c   code. On a fail
192d0 75 72 65 2c 20 74 68 65 20 70 56 54 61 62 2d 3e  ure, the pVTab->
192e0 7a 45 72 72 4d 73 67 20 65 6c 65 6d 65 6e 74 0d  zErrMsg element.
192f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 61 79  .        /// may
19300 20 6f 70 74 69 6f 6e 61 6c 6c 79 20 62 65 20 72   optionally be r
19310 65 70 6c 61 63 65 64 20 77 69 74 68 20 65 72 72  eplaced with err
19320 6f 72 20 6d 65 73 73 61 67 65 20 74 65 78 74 20  or message text 
19330 73 74 6f 72 65 64 20 69 6e 20 6d 65 6d 6f 72 79  stored in memory
19340 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 6c  ..        /// al
19350 6c 6f 63 61 74 65 64 20 66 72 6f 6d 20 53 51 4c  located from SQL
19360 69 74 65 20 75 73 69 6e 67 20 66 75 6e 63 74 69  ite using functi
19370 6f 6e 73 20 73 75 63 68 20 61 73 20 73 71 6c 69  ons such as sqli
19380 74 65 33 5f 6d 70 72 69 6e 74 66 28 29 20 6f 72  te3_mprintf() or
19390 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71  ..        /// sq
193a0 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 2e 0d  lite3_malloc()..
193b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
193c0 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
193d0 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
193e0 20 20 2f 2f 2f 20 49 66 20 74 68 65 20 78 55 70    /// If the xUp
193f0 64 61 74 65 20 6d 65 74 68 6f 64 20 76 69 6f 6c  date method viol
19400 61 74 65 73 20 73 6f 6d 65 20 63 6f 6e 73 74 72  ates some constr
19410 61 69 6e 74 20 6f 66 20 74 68 65 20 76 69 72 74  aint of the virt
19420 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20 20  ual table..     
19430 20 20 20 2f 2f 2f 20 28 69 6e 63 6c 75 64 69 6e     /// (includin
19440 67 2c 20 62 75 74 20 6e 6f 74 20 6c 69 6d 69 74  g, but not limit
19450 65 64 20 74 6f 2c 20 61 74 74 65 6d 70 74 69 6e  ed to, attemptin
19460 67 20 74 6f 20 73 74 6f 72 65 20 61 20 76 61 6c  g to store a val
19470 75 65 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20  ue of the..     
19480 20 20 20 2f 2f 2f 20 77 72 6f 6e 67 20 64 61 74     /// wrong dat
19490 61 74 79 70 65 2c 20 61 74 74 65 6d 70 74 69 6e  atype, attemptin
194a0 67 20 74 6f 20 73 74 6f 72 65 20 61 20 76 61 6c  g to store a val
194b0 75 65 20 74 68 61 74 20 69 73 20 74 6f 6f 20 6c  ue that is too l
194c0 61 72 67 65 20 6f 72 0d 0a 20 20 20 20 20 20 20  arge or..       
194d0 20 2f 2f 2f 20 74 6f 6f 20 73 6d 61 6c 6c 2c 20   /// too small, 
194e0 6f 72 20 61 74 74 65 6d 70 74 69 6e 67 20 74 6f  or attempting to
194f0 20 63 68 61 6e 67 65 20 61 20 72 65 61 64 2d 6f   change a read-o
19500 6e 6c 79 20 76 61 6c 75 65 29 20 74 68 65 6e 20  nly value) then 
19510 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
19520 20 78 55 70 64 61 74 65 20 6d 75 73 74 20 66 61   xUpdate must fa
19530 69 6c 20 77 69 74 68 20 61 6e 20 61 70 70 72 6f  il with an appro
19540 70 72 69 61 74 65 20 65 72 72 6f 72 20 63 6f 64  priate error cod
19550 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
19560 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
19570 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
19580 20 20 20 20 20 2f 2f 2f 20 54 68 65 72 65 20 6d       /// There m
19590 69 67 68 74 20 62 65 20 6f 6e 65 20 6f 72 20 6d  ight be one or m
195a0 6f 72 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62  ore sqlite3_vtab
195b0 5f 63 75 72 73 6f 72 20 6f 62 6a 65 63 74 73 20  _cursor objects 
195c0 6f 70 65 6e 20 61 6e 64 20 69 6e 0d 0a 20 20 20  open and in..   
195d0 20 20 20 20 20 2f 2f 2f 20 75 73 65 20 6f 6e 20       /// use on 
195e0 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c  the virtual tabl
195f0 65 20 69 6e 73 74 61 6e 63 65 20 61 6e 64 20 70  e instance and p
19600 65 72 68 61 70 73 20 65 76 65 6e 20 6f 6e 20 74  erhaps even on t
19610 68 65 20 72 6f 77 20 6f 66 0d 0a 20 20 20 20 20  he row of..     
19620 20 20 20 2f 2f 2f 20 74 68 65 20 76 69 72 74 75     /// the virtu
19630 61 6c 20 74 61 62 6c 65 20 77 68 65 6e 20 74 68  al table when th
19640 65 20 78 55 70 64 61 74 65 20 6d 65 74 68 6f 64  e xUpdate method
19650 20 69 73 20 69 6e 76 6f 6b 65 64 2e 20 54 68 65   is invoked. The
19660 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6d  ..        /// im
19670 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20  plementation of 
19680 78 55 70 64 61 74 65 20 6d 75 73 74 20 62 65 20  xUpdate must be 
19690 70 72 65 70 61 72 65 64 20 66 6f 72 20 61 74 74  prepared for att
196a0 65 6d 70 74 73 20 74 6f 20 64 65 6c 65 74 65 0d  empts to delete.
196b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20  .        /// or 
196c0 6d 6f 64 69 66 79 20 72 6f 77 73 20 6f 66 20 74  modify rows of t
196d0 68 65 20 74 61 62 6c 65 20 6f 75 74 20 66 72 6f  he table out fro
196e0 6d 20 6f 74 68 65 72 20 65 78 69 73 74 69 6e 67  m other existing
196f0 20 63 75 72 73 6f 72 73 2e 20 49 66 20 74 68 65   cursors. If the
19700 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 69  ..        /// vi
19710 72 74 75 61 6c 20 74 61 62 6c 65 20 63 61 6e 6e  rtual table cann
19720 6f 74 20 61 63 63 6f 6d 6d 6f 64 61 74 65 20 73  ot accommodate s
19730 75 63 68 20 63 68 61 6e 67 65 73 2c 20 74 68 65  uch changes, the
19740 20 78 55 70 64 61 74 65 20 6d 65 74 68 6f 64 0d   xUpdate method.
19750 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 75 73  .        /// mus
19760 74 20 72 65 74 75 72 6e 20 61 6e 20 65 72 72 6f  t return an erro
19770 72 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  r code...       
19780 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
19790 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
197a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
197b0 65 20 78 55 70 64 61 74 65 20 6d 65 74 68 6f 64  e xUpdate method
197c0 20 69 73 20 6f 70 74 69 6f 6e 61 6c 2e 20 49 66   is optional. If
197d0 20 74 68 65 20 78 55 70 64 61 74 65 20 70 6f 69   the xUpdate poi
197e0 6e 74 65 72 20 69 6e 20 74 68 65 0d 0a 20 20 20  nter in the..   
197f0 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33       /// sqlite3
19800 5f 6d 6f 64 75 6c 65 20 66 6f 72 20 61 20 76 69  _module for a vi
19810 72 74 75 61 6c 20 74 61 62 6c 65 20 69 73 20 61  rtual table is a
19820 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 2c 20 74   NULL pointer, t
19830 68 65 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20  hen the..       
19840 20 2f 2f 2f 20 76 69 72 74 75 61 6c 20 74 61 62   /// virtual tab
19850 6c 65 20 69 73 20 72 65 61 64 2d 6f 6e 6c 79 2e  le is read-only.
19860 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
19870 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
19880 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
19890 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
198a0 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d  m name="pVtab">.
198b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
198c0 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
198d0 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76  to the sqlite3_v
198e0 74 61 62 20 64 65 72 69 76 65 64 20 73 74 72 75  tab derived stru
198f0 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  cture...        
19900 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
19910 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
19920 20 6e 61 6d 65 3d 22 61 72 67 63 22 3e 0d 0a 20   name="argc">.. 
19930 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
19940 75 6d 62 65 72 20 6f 66 20 6e 65 77 20 6f 72 20  umber of new or 
19950 6d 6f 64 69 66 69 65 64 20 63 6f 6c 75 6d 6e 20  modified column 
19960 76 61 6c 75 65 73 20 63 6f 6e 74 61 69 6e 65 64  values contained
19970 20 69 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   in..        ///
19980 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d   <paramref name=
19990 22 61 72 67 76 22 20 2f 3e 2e 0d 0a 20 20 20 20  "argv" />...    
199a0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
199b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
199c0 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 76 22  aram name="argv"
199d0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
199e0 68 65 20 61 72 72 61 79 20 6f 66 20 6e 61 74 69  he array of nati
199f0 76 65 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 73  ve pointers to s
19a00 71 6c 69 74 65 33 5f 76 61 6c 75 65 20 73 74 72  qlite3_value str
19a10 75 63 74 75 72 65 73 20 63 6f 6e 74 61 69 6e 69  uctures containi
19a20 6e 67 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ng..        /// 
19a30 74 68 65 20 6e 65 77 20 6f 72 20 6d 6f 64 69 66  the new or modif
19a40 69 65 64 20 63 6f 6c 75 6d 6e 20 76 61 6c 75 65  ied column value
19a50 73 2c 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20  s, if any...    
19a60 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
19a70 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
19a80 61 72 61 6d 20 6e 61 6d 65 3d 22 72 6f 77 49 64  aram name="rowId
19a90 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
19aa0 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68  Upon success, th
19ab0 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73  is parameter mus
19ac0 74 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f  t be modified to
19ad0 20 63 6f 6e 74 61 69 6e 20 74 68 65 20 75 6e 69   contain the uni
19ae0 71 75 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  que..        ///
19af0 20 69 6e 74 65 67 65 72 20 72 6f 77 20 69 64 65   integer row ide
19b00 6e 74 69 66 69 65 72 20 66 6f 72 20 74 68 65 20  ntifier for the 
19b10 72 6f 77 20 74 68 61 74 20 77 61 73 20 69 6e 73  row that was ins
19b20 65 72 74 65 64 2c 20 69 66 20 61 6e 79 2e 0d 0a  erted, if any...
19b30 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
19b40 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
19b50 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
19b60 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64       /// A stand
19b70 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72  ard SQLite retur
19b80 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  n code...       
19b90 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
19ba0 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45  .        SQLiteE
19bb0 72 72 6f 72 43 6f 64 65 20 78 55 70 64 61 74 65  rrorCode xUpdate
19bc0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  (..            I
19bd0 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
19be0 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 61 72            int ar
19bf0 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  gc,..           
19c00 20 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a 20   IntPtr argv,.. 
19c10 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 6c             ref l
19c20 6f 6e 67 20 72 6f 77 49 64 0d 0a 20 20 20 20 20  ong rowId..     
19c30 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20         );....   
19c40 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
19c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
19c90 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
19ca0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
19cb0 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20  // <para>..     
19cc0 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68     /// This meth
19cd0 6f 64 20 62 65 67 69 6e 73 20 61 20 74 72 61 6e  od begins a tran
19ce0 73 61 63 74 69 6f 6e 20 6f 6e 20 61 20 76 69 72  saction on a vir
19cf0 74 75 61 6c 20 74 61 62 6c 65 2e 20 54 68 69 73  tual table. This
19d00 20 69 73 20 6d 65 74 68 6f 64 0d 0a 20 20 20 20   is method..    
19d10 20 20 20 20 2f 2f 2f 20 69 73 20 6f 70 74 69 6f      /// is optio
19d20 6e 61 6c 2e 20 54 68 65 20 78 42 65 67 69 6e 20  nal. The xBegin 
19d30 70 6f 69 6e 74 65 72 20 6f 66 20 73 71 6c 69 74  pointer of sqlit
19d40 65 33 5f 6d 6f 64 75 6c 65 20 6d 61 79 20 62 65  e3_module may be
19d50 20 4e 55 4c 4c 2e 0d 0a 20 20 20 20 20 20 20 20   NULL...        
19d60 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20  /// </para>..   
19d70 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
19d80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
19d90 73 20 6d 65 74 68 6f 64 20 69 73 20 61 6c 77 61  s method is alwa
19da0 79 73 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 6f  ys followed by o
19db0 6e 65 20 63 61 6c 6c 20 74 6f 20 65 69 74 68 65  ne call to eithe
19dc0 72 20 74 68 65 20 78 43 6f 6d 6d 69 74 20 6f 72  r the xCommit or
19dd0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 78 52  ..        /// xR
19de0 6f 6c 6c 62 61 63 6b 20 6d 65 74 68 6f 64 2e 20  ollback method. 
19df0 56 69 72 74 75 61 6c 20 74 61 62 6c 65 20 74 72  Virtual table tr
19e00 61 6e 73 61 63 74 69 6f 6e 73 20 64 6f 20 6e 6f  ansactions do no
19e10 74 20 6e 65 73 74 2c 20 73 6f 20 74 68 65 0d 0a  t nest, so the..
19e20 20 20 20 20 20 20 20 20 2f 2f 2f 20 78 42 65 67          /// xBeg
19e30 69 6e 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20 6e  in method will n
19e40 6f 74 20 62 65 20 69 6e 76 6f 6b 65 64 20 6d 6f  ot be invoked mo
19e50 72 65 20 74 68 61 6e 20 6f 6e 63 65 20 6f 6e 20  re than once on 
19e60 61 20 73 69 6e 67 6c 65 0d 0a 20 20 20 20 20 20  a single..      
19e70 20 20 2f 2f 2f 20 76 69 72 74 75 61 6c 20 74 61    /// virtual ta
19e80 62 6c 65 20 77 69 74 68 6f 75 74 20 61 6e 20 69  ble without an i
19e90 6e 74 65 72 76 65 6e 69 6e 67 20 63 61 6c 6c 20  ntervening call 
19ea0 74 6f 20 65 69 74 68 65 72 20 78 43 6f 6d 6d 69  to either xCommi
19eb0 74 20 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f  t or..        //
19ec0 2f 20 78 52 6f 6c 6c 62 61 63 6b 2e 20 4d 75 6c  / xRollback. Mul
19ed0 74 69 70 6c 65 20 63 61 6c 6c 73 20 74 6f 20 6f  tiple calls to o
19ee0 74 68 65 72 20 6d 65 74 68 6f 64 73 20 63 61 6e  ther methods can
19ef0 20 61 6e 64 20 6c 69 6b 65 6c 79 20 77 69 6c 6c   and likely will
19f00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 63  ..        /// oc
19f10 63 75 72 20 69 6e 20 62 65 74 77 65 65 6e 20 74  cur in between t
19f20 68 65 20 78 42 65 67 69 6e 20 61 6e 64 20 74 68  he xBegin and th
19f30 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20  e corresponding 
19f40 78 43 6f 6d 6d 69 74 20 6f 72 0d 0a 20 20 20 20  xCommit or..    
19f50 20 20 20 20 2f 2f 2f 20 78 52 6f 6c 6c 62 61 63      /// xRollbac
19f60 6b 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  k...        /// 
19f70 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
19f80 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
19f90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
19fa0 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22  ram name="pVtab"
19fb0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
19fc0 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
19fd0 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33  r to the sqlite3
19fe0 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74  _vtab derived st
19ff0 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  ructure...      
1a000 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
1a010 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
1a020 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
1a030 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51  // A standard SQ
1a040 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65  Lite return code
1a050 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1a060 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
1a070 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f     SQLiteErrorCo
1a080 64 65 20 78 42 65 67 69 6e 28 0d 0a 20 20 20 20  de xBegin(..    
1a090 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
1a0a0 56 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20  Vtab..          
1a0b0 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    );....        
1a0c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a0d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a0e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a0f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a100 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1a110 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1a120 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1a130 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
1a140 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 73 69  / This method si
1a150 67 6e 61 6c 73 20 74 68 65 20 73 74 61 72 74 20  gnals the start 
1a160 6f 66 20 61 20 74 77 6f 2d 70 68 61 73 65 20 63  of a two-phase c
1a170 6f 6d 6d 69 74 20 6f 6e 20 61 20 76 69 72 74 75  ommit on a virtu
1a180 61 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  al..        /// 
1a190 74 61 62 6c 65 2e 20 54 68 69 73 20 69 73 20 6d  table. This is m
1a1a0 65 74 68 6f 64 20 69 73 20 6f 70 74 69 6f 6e 61  ethod is optiona
1a1b0 6c 2e 20 54 68 65 20 78 53 79 6e 63 20 70 6f 69  l. The xSync poi
1a1c0 6e 74 65 72 20 6f 66 0d 0a 20 20 20 20 20 20 20  nter of..       
1a1d0 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 6d 6f 64   /// sqlite3_mod
1a1e0 75 6c 65 20 6d 61 79 20 62 65 20 4e 55 4c 4c 2e  ule may be NULL.
1a1f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1a200 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
1a210 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20  // <para>..     
1a220 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68     /// This meth
1a230 6f 64 20 69 73 20 6f 6e 6c 79 20 69 6e 76 6f 6b  od is only invok
1a240 65 64 20 61 66 74 65 72 20 63 61 6c 6c 20 74 6f  ed after call to
1a250 20 74 68 65 20 78 42 65 67 69 6e 20 6d 65 74 68   the xBegin meth
1a260 6f 64 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20  od and..        
1a270 2f 2f 2f 20 70 72 69 6f 72 20 74 6f 20 61 6e 20  /// prior to an 
1a280 78 43 6f 6d 6d 69 74 20 6f 72 20 78 52 6f 6c 6c  xCommit or xRoll
1a290 62 61 63 6b 2e 20 49 6e 20 6f 72 64 65 72 20 74  back. In order t
1a2a0 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 74 77 6f 2d  o implement two-
1a2b0 70 68 61 73 65 0d 0a 20 20 20 20 20 20 20 20 2f  phase..        /
1a2c0 2f 2f 20 63 6f 6d 6d 69 74 2c 20 74 68 65 20 78  // commit, the x
1a2d0 53 79 6e 63 20 6d 65 74 68 6f 64 20 6f 6e 20 61  Sync method on a
1a2e0 6c 6c 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  ll virtual table
1a2f0 73 20 69 73 20 69 6e 76 6f 6b 65 64 20 70 72 69  s is invoked pri
1a300 6f 72 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f  or to..        /
1a310 2f 2f 20 69 6e 76 6f 6b 69 6e 67 20 74 68 65 20  // invoking the 
1a320 78 43 6f 6d 6d 69 74 20 6d 65 74 68 6f 64 20 6f  xCommit method o
1a330 6e 20 61 6e 79 20 76 69 72 74 75 61 6c 20 74 61  n any virtual ta
1a340 62 6c 65 2e 20 49 66 20 61 6e 79 20 6f 66 20 74  ble. If any of t
1a350 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
1a360 78 53 79 6e 63 20 6d 65 74 68 6f 64 73 20 66 61  xSync methods fa
1a370 69 6c 2c 20 74 68 65 20 65 6e 74 69 72 65 20 74  il, the entire t
1a380 72 61 6e 73 61 63 74 69 6f 6e 20 69 73 20 72 6f  ransaction is ro
1a390 6c 6c 65 64 20 62 61 63 6b 2e 0d 0a 20 20 20 20  lled back...    
1a3a0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d      /// </para>.
1a3b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
1a3c0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1a3d0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1a3e0 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20  ="pVtab">..     
1a3f0 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
1a400 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
1a410 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65   sqlite3_vtab de
1a420 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2e  rived structure.
1a430 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1a440 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1a450 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
1a460 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61         /// A sta
1a470 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74  ndard SQLite ret
1a480 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  urn code...     
1a490 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
1a4a0 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  >..        SQLit
1a4b0 65 45 72 72 6f 72 43 6f 64 65 20 78 53 79 6e 63  eErrorCode xSync
1a4c0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  (..            I
1a4d0 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20  ntPtr pVtab..   
1a4e0 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20           );.... 
1a4f0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1a500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1a540 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1a550 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1a560 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
1a570 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65       /// This me
1a580 74 68 6f 64 20 63 61 75 73 65 73 20 61 20 76 69  thod causes a vi
1a590 72 74 75 61 6c 20 74 61 62 6c 65 20 74 72 61 6e  rtual table tran
1a5a0 73 61 63 74 69 6f 6e 20 74 6f 20 63 6f 6d 6d 69  saction to commi
1a5b0 74 2e 20 54 68 69 73 20 69 73 0d 0a 20 20 20 20  t. This is..    
1a5c0 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 20 69      /// method i
1a5d0 73 20 6f 70 74 69 6f 6e 61 6c 2e 20 54 68 65 20  s optional. The 
1a5e0 78 43 6f 6d 6d 69 74 20 70 6f 69 6e 74 65 72 20  xCommit pointer 
1a5f0 6f 66 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c  of sqlite3_modul
1a600 65 20 6d 61 79 20 62 65 0d 0a 20 20 20 20 20 20  e may be..      
1a610 20 20 2f 2f 2f 20 4e 55 4c 4c 2e 0d 0a 20 20 20    /// NULL...   
1a620 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
1a630 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1a640 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
1a650 2f 20 41 20 63 61 6c 6c 20 74 6f 20 74 68 69 73  / A call to this
1a660 20 6d 65 74 68 6f 64 20 61 6c 77 61 79 73 20 66   method always f
1a670 6f 6c 6c 6f 77 73 20 61 20 70 72 69 6f 72 20 63  ollows a prior c
1a680 61 6c 6c 20 74 6f 20 78 42 65 67 69 6e 20 61 6e  all to xBegin an
1a690 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 78  d..        /// x
1a6a0 53 79 6e 63 2e 0d 0a 20 20 20 20 20 20 20 20 2f  Sync...        /
1a6b0 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20  // </para>..    
1a6c0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1a6d0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1a6e0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74  <param name="pVt
1a6f0 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ab">..        //
1a700 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69  / The native poi
1a710 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69  nter to the sqli
1a720 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64  te3_vtab derived
1a730 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
1a740 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
1a750 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1a760 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1a770 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64    /// A standard
1a780 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63   SQLite return c
1a790 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode...        //
1a7a0 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
1a7b0 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f        SQLiteErro
1a7c0 72 43 6f 64 65 20 78 43 6f 6d 6d 69 74 28 0d 0a  rCode xCommit(..
1a7d0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
1a7e0 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 20 20  tr pVtab..      
1a7f0 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20        );....    
1a800 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1a810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1a850 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
1a860 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1a870 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
1a880 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
1a890 64 20 63 61 75 73 65 73 20 61 20 76 69 72 74 75  d causes a virtu
1a8a0 61 6c 20 74 61 62 6c 65 20 74 72 61 6e 73 61 63  al table transac
1a8b0 74 69 6f 6e 20 74 6f 20 72 6f 6c 6c 62 61 63 6b  tion to rollback
1a8c0 2e 20 54 68 69 73 20 69 73 0d 0a 20 20 20 20 20  . This is..     
1a8d0 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 20 69 73     /// method is
1a8e0 20 6f 70 74 69 6f 6e 61 6c 2e 20 54 68 65 20 78   optional. The x
1a8f0 52 6f 6c 6c 62 61 63 6b 20 70 6f 69 6e 74 65 72  Rollback pointer
1a900 20 6f 66 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75   of sqlite3_modu
1a910 6c 65 20 6d 61 79 20 62 65 0d 0a 20 20 20 20 20  le may be..     
1a920 20 20 20 2f 2f 2f 20 4e 55 4c 4c 2e 0d 0a 20 20     /// NULL...  
1a930 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1a940 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1a950 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
1a960 2f 2f 20 41 20 63 61 6c 6c 20 74 6f 20 74 68 69  // A call to thi
1a970 73 20 6d 65 74 68 6f 64 20 61 6c 77 61 79 73 20  s method always 
1a980 66 6f 6c 6c 6f 77 73 20 61 20 70 72 69 6f 72 20  follows a prior 
1a990 63 61 6c 6c 20 74 6f 20 78 42 65 67 69 6e 2e 0d  call to xBegin..
1a9a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1a9b0 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
1a9c0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1a9d0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1a9e0 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a   name="pVtab">..
1a9f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1aa00 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
1aa10 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74  o the sqlite3_vt
1aa20 61 62 20 64 65 72 69 76 65 64 20 73 74 72 75 63  ab derived struc
1aa30 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ture...        /
1aa40 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1aa50 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
1aa60 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
1aa70 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74  A standard SQLit
1aa80 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a  e return code...
1aa90 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
1aaa0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
1aab0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1aac0 78 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20  xRollback(..    
1aad0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
1aae0 56 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20  Vtab..          
1aaf0 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    );....        
1ab00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ab10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ab20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ab30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ab40 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1ab50 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1ab60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1ab70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
1ab80 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 70 72  / This method pr
1ab90 6f 76 69 64 65 73 20 6e 6f 74 69 66 69 63 61 74  ovides notificat
1aba0 69 6f 6e 20 74 68 61 74 20 74 68 65 20 76 69 72  ion that the vir
1abb0 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20  tual table..    
1abc0 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e      /// implemen
1abd0 74 61 74 69 6f 6e 20 74 68 61 74 20 74 68 65 20  tation that the 
1abe0 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 77 69  virtual table wi
1abf0 6c 6c 20 62 65 20 67 69 76 65 6e 20 61 20 6e 65  ll be given a ne
1ac00 77 20 6e 61 6d 65 2e 20 49 66 0d 0a 20 20 20 20  w name. If..    
1ac10 20 20 20 20 2f 2f 2f 20 74 68 69 73 20 6d 65 74      /// this met
1ac20 68 6f 64 20 72 65 74 75 72 6e 73 20 53 51 4c 49  hod returns SQLI
1ac30 54 45 5f 4f 4b 20 74 68 65 6e 20 53 51 4c 69 74  TE_OK then SQLit
1ac40 65 20 72 65 6e 61 6d 65 73 20 74 68 65 20 74 61  e renames the ta
1ac50 62 6c 65 2e 20 49 66 0d 0a 20 20 20 20 20 20 20  ble. If..       
1ac60 20 2f 2f 2f 20 74 68 69 73 20 6d 65 74 68 6f 64   /// this method
1ac70 20 72 65 74 75 72 6e 73 20 61 6e 20 65 72 72 6f   returns an erro
1ac80 72 20 63 6f 64 65 20 74 68 65 6e 20 74 68 65 20  r code then the 
1ac90 72 65 6e 61 6d 69 6e 67 20 69 73 20 70 72 65 76  renaming is prev
1aca0 65 6e 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20  ented...        
1acb0 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20  /// </para>..   
1acc0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
1acd0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1ace0 20 78 52 65 6e 61 6d 65 20 6d 65 74 68 6f 64 20   xRename method 
1acf0 69 73 20 72 65 71 75 69 72 65 64 20 66 6f 72 20  is required for 
1ad00 65 76 65 72 79 20 76 69 72 74 75 61 6c 20 74 61  every virtual ta
1ad10 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ble..        ///
1ad20 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e   implementation.
1ad30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1ad40 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
1ad50 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1ad60 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1ad70 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d  m name="pVtab">.
1ad80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1ad90 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
1ada0 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76  to the sqlite3_v
1adb0 74 61 62 20 64 65 72 69 76 65 64 20 73 74 72 75  tab derived stru
1adc0 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  cture...        
1add0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1ade0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1adf0 20 6e 61 6d 65 3d 22 6e 41 72 67 22 3e 0d 0a 20   name="nArg">.. 
1ae00 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
1ae10 75 6d 62 65 72 20 6f 66 20 61 72 67 75 6d 65 6e  umber of argumen
1ae20 74 73 20 74 6f 20 74 68 65 20 66 75 6e 63 74 69  ts to the functi
1ae30 6f 6e 20 62 65 69 6e 67 20 73 6f 75 67 68 74 2e  on being sought.
1ae40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1ae50 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1ae60 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1ae70 22 7a 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20  "zName">..      
1ae80 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f    /// The name o
1ae90 66 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 62  f the function b
1aea0 65 69 6e 67 20 73 6f 75 67 68 74 2e 0d 0a 20 20  eing sought...  
1aeb0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1aec0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
1aed0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 61 6c  <param name="cal
1aee0 6c 62 61 63 6b 22 3e 0d 0a 20 20 20 20 20 20 20  lback">..       
1aef0 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73   /// Upon succes
1af00 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65  s, this paramete
1af10 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69  r must be modifi
1af20 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68  ed to contain th
1af30 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64  e..        /// d
1af40 65 6c 65 67 61 74 65 20 72 65 73 70 6f 6e 73 69  elegate responsi
1af50 62 6c 65 20 66 6f 72 20 69 6d 70 6c 65 6d 65 6e  ble for implemen
1af60 74 69 6e 67 20 74 68 65 20 73 70 65 63 69 66 69  ting the specifi
1af70 65 64 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20  ed function...  
1af80 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1af90 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
1afa0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 6c  <param name="pCl
1afb0 69 65 6e 74 44 61 74 61 22 3e 0d 0a 20 20 20 20  ientData">..    
1afc0 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63      /// Upon suc
1afd0 63 65 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d  cess, this param
1afe0 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64  eter must be mod
1aff0 69 66 69 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e  ified to contain
1b000 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
1b010 2f 20 6e 61 74 69 76 65 20 75 73 65 72 2d 64 61  / native user-da
1b020 74 61 20 70 6f 69 6e 74 65 72 20 61 73 73 6f 63  ta pointer assoc
1b030 69 61 74 65 64 20 77 69 74 68 0d 0a 20 20 20 20  iated with..    
1b040 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 72 65      /// <paramre
1b050 66 20 6e 61 6d 65 3d 22 63 61 6c 6c 62 61 63 6b  f name="callback
1b060 22 20 2f 3e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  " />...        /
1b070 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1b080 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
1b090 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
1b0a0 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20  Non-zero if the 
1b0b0 73 70 65 63 69 66 69 65 64 20 66 75 6e 63 74 69  specified functi
1b0c0 6f 6e 20 77 61 73 20 66 6f 75 6e 64 3b 20 7a 65  on was found; ze
1b0d0 72 6f 20 6f 74 68 65 72 77 69 73 65 2e 0d 0a 20  ro otherwise... 
1b0e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
1b0f0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 69  urns>..        i
1b100 6e 74 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e  nt xFindFunction
1b110 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  (..            I
1b120 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
1b130 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6e 41            int nA
1b140 72 67 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  rg,..           
1b150 20 49 6e 74 50 74 72 20 7a 4e 61 6d 65 2c 0d 0a   IntPtr zName,..
1b160 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
1b170 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 63  SQLiteCallback c
1b180 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20  allback,..      
1b190 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72        ref IntPtr
1b1a0 20 70 43 6c 69 65 6e 74 44 61 74 61 0d 0a 20 20   pClientData..  
1b1b0 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a            );....
1b1c0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1b1d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d  ///////////////.
1b210 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1b220 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1b230 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20    /// <para>..  
1b240 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d        /// This m
1b250 65 74 68 6f 64 20 70 72 6f 76 69 64 65 73 20 6e  ethod provides n
1b260 6f 74 69 66 69 63 61 74 69 6f 6e 20 74 68 61 74  otification that
1b270 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
1b280 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  le..        /// 
1b290 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 74  implementation t
1b2a0 68 61 74 20 74 68 65 20 76 69 72 74 75 61 6c 20  hat the virtual 
1b2b0 74 61 62 6c 65 20 77 69 6c 6c 20 62 65 20 67 69  table will be gi
1b2c0 76 65 6e 20 61 20 6e 65 77 20 6e 61 6d 65 2e 20  ven a new name. 
1b2d0 49 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  If..        /// 
1b2e0 74 68 69 73 20 6d 65 74 68 6f 64 20 72 65 74 75  this method retu
1b2f0 72 6e 73 20 53 51 4c 49 54 45 5f 4f 4b 20 74 68  rns SQLITE_OK th
1b300 65 6e 20 53 51 4c 69 74 65 20 72 65 6e 61 6d 65  en SQLite rename
1b310 73 20 74 68 65 20 74 61 62 6c 65 2e 20 49 66 0d  s the table. If.
1b320 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 69  .        /// thi
1b330 73 20 6d 65 74 68 6f 64 20 72 65 74 75 72 6e 73  s method returns
1b340 20 61 6e 20 65 72 72 6f 72 20 63 6f 64 65 20 74   an error code t
1b350 68 65 6e 20 74 68 65 20 72 65 6e 61 6d 69 6e 67  hen the renaming
1b360 20 69 73 20 70 72 65 76 65 6e 74 65 64 2e 0d 0a   is prevented...
1b370 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1b380 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
1b390 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
1b3a0 20 2f 2f 2f 20 54 68 65 20 78 52 65 6e 61 6d 65   /// The xRename
1b3b0 20 6d 65 74 68 6f 64 20 69 73 20 72 65 71 75 69   method is requi
1b3c0 72 65 64 20 66 6f 72 20 65 76 65 72 79 20 76 69  red for every vi
1b3d0 72 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20  rtual table..   
1b3e0 20 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65       /// impleme
1b3f0 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ntation...      
1b400 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
1b410 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
1b420 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1b430 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1b440 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20  pVtab">..       
1b450 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
1b460 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73  pointer to the s
1b470 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69  qlite3_vtab deri
1b480 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  ved structure...
1b490 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1b4a0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
1b4b0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 7a  / <param name="z
1b4c0 4e 65 77 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  New">..        /
1b4d0 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f  // The native po
1b4e0 69 6e 74 65 72 20 74 6f 20 74 68 65 20 55 54 46  inter to the UTF
1b4f0 2d 38 20 65 6e 63 6f 64 65 64 20 73 74 72 69 6e  -8 encoded strin
1b500 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65  g containing the
1b510 20 6e 65 77 0d 0a 20 20 20 20 20 20 20 20 2f 2f   new..        //
1b520 2f 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 76  / name for the v
1b530 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20  irtual table... 
1b540 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1b550 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1b560 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
1b570 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61      /// A standa
1b580 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e  rd SQLite return
1b590 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
1b5a0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
1b5b0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72          SQLiteEr
1b5c0 72 6f 72 43 6f 64 65 20 78 52 65 6e 61 6d 65 28  rorCode xRename(
1b5d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
1b5e0 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
1b5f0 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
1b600 7a 4e 65 77 0d 0a 20 20 20 20 20 20 20 20 20 20  zNew..          
1b610 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    );....        
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 2f 2f 2f  ////////////////
1b660 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1b670 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1b680 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1b690 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
1b6a0 2f 20 54 68 65 73 65 20 6d 65 74 68 6f 64 73 20  / These methods 
1b6b0 70 72 6f 76 69 64 65 20 74 68 65 20 76 69 72 74  provide the virt
1b6c0 75 61 6c 20 74 61 62 6c 65 20 69 6d 70 6c 65 6d  ual table implem
1b6d0 65 6e 74 61 74 69 6f 6e 20 61 6e 0d 0a 20 20 20  entation an..   
1b6e0 20 20 20 20 20 2f 2f 2f 20 6f 70 70 6f 72 74 75       /// opportu
1b6f0 6e 69 74 79 20 74 6f 20 69 6d 70 6c 65 6d 65 6e  nity to implemen
1b700 74 20 6e 65 73 74 65 64 20 74 72 61 6e 73 61 63  t nested transac
1b710 74 69 6f 6e 73 2e 20 54 68 65 79 20 61 72 65 20  tions. They are 
1b720 61 6c 77 61 79 73 0d 0a 20 20 20 20 20 20 20 20  always..        
1b730 2f 2f 2f 20 6f 70 74 69 6f 6e 61 6c 20 61 6e 64  /// optional and
1b740 20 77 69 6c 6c 20 6f 6e 6c 79 20 62 65 20 63 61   will only be ca
1b750 6c 6c 65 64 20 69 6e 20 53 51 4c 69 74 65 20 76  lled in SQLite v
1b760 65 72 73 69 6f 6e 20 33 2e 37 2e 37 20 61 6e 64  ersion 3.7.7 and
1b770 20 6c 61 74 65 72 2e 0d 0a 20 20 20 20 20 20 20   later...       
1b780 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
1b790 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
1b7a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 57 68  ..        /// Wh
1b7b0 65 6e 20 78 53 61 76 65 70 6f 69 6e 74 28 58 2c  en xSavepoint(X,
1b7c0 4e 29 20 69 73 20 69 6e 76 6f 6b 65 64 2c 20 74  N) is invoked, t
1b7d0 68 61 74 20 69 73 20 61 20 73 69 67 6e 61 6c 20  hat is a signal 
1b7e0 74 6f 20 74 68 65 20 76 69 72 74 75 61 6c 0d 0a  to the virtual..
1b7f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 61 62 6c          /// tabl
1b800 65 20 58 20 74 68 61 74 20 69 74 20 73 68 6f 75  e X that it shou
1b810 6c 64 20 73 61 76 65 20 69 74 73 20 63 75 72 72  ld save its curr
1b820 65 6e 74 20 73 74 61 74 65 20 61 73 20 73 61 76  ent state as sav
1b830 65 70 6f 69 6e 74 20 4e 2e 20 41 0d 0a 20 20 20  epoint N. A..   
1b840 20 20 20 20 20 2f 2f 2f 20 73 75 62 73 65 71 75       /// subsequ
1b850 65 6e 74 20 63 61 6c 6c 20 74 6f 20 78 52 6f 6c  ent call to xRol
1b860 6c 62 61 63 6b 54 6f 28 58 2c 52 29 20 6d 65 61  lbackTo(X,R) mea
1b870 6e 73 20 74 68 61 74 20 74 68 65 20 73 74 61 74  ns that the stat
1b880 65 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20 20  e of the..      
1b890 20 20 2f 2f 2f 20 76 69 72 74 75 61 6c 20 74 61    /// virtual ta
1b8a0 62 6c 65 20 73 68 6f 75 6c 64 20 72 65 74 75 72  ble should retur
1b8b0 6e 20 74 6f 20 77 68 61 74 20 69 74 20 77 61 73  n to what it was
1b8c0 20 77 68 65 6e 20 78 53 61 76 65 70 6f 69 6e 74   when xSavepoint
1b8d0 28 58 2c 52 29 20 77 61 73 0d 0a 20 20 20 20 20  (X,R) was..     
1b8e0 20 20 20 2f 2f 2f 20 6c 61 73 74 20 63 61 6c 6c     /// last call
1b8f0 65 64 2e 20 54 68 65 20 63 61 6c 6c 20 74 6f 20  ed. The call to 
1b900 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 58 2c 52 29  xRollbackTo(X,R)
1b910 20 77 69 6c 6c 20 69 6e 76 61 6c 69 64 61 74 65   will invalidate
1b920 20 61 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f   all..        //
1b930 2f 20 73 61 76 65 70 6f 69 6e 74 73 20 77 69 74  / savepoints wit
1b940 68 20 4e 3e 52 3b 20 6e 6f 6e 65 20 6f 66 20 74  h N>R; none of t
1b950 68 65 20 69 6e 76 61 6c 69 64 65 64 20 73 61 76  he invalided sav
1b960 65 70 6f 69 6e 74 73 20 77 69 6c 6c 20 62 65 0d  epoints will be.
1b970 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 72 6f 6c  .        /// rol
1b980 6c 65 64 20 62 61 63 6b 20 6f 72 20 72 65 6c 65  led back or rele
1b990 61 73 65 64 20 77 69 74 68 6f 75 74 20 66 69 72  ased without fir
1b9a0 73 74 20 62 65 69 6e 67 20 72 65 69 6e 69 74 69  st being reiniti
1b9b0 61 6c 69 7a 65 64 20 62 79 20 61 20 63 61 6c 6c  alized by a call
1b9c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 6f  ..        /// to
1b9d0 20 78 53 61 76 65 70 6f 69 6e 74 28 29 2e 20 41   xSavepoint(). A
1b9e0 20 63 61 6c 6c 20 74 6f 20 78 52 65 6c 65 61 73   call to xReleas
1b9f0 65 28 58 2c 4d 29 20 69 6e 76 61 6c 69 64 61 74  e(X,M) invalidat
1ba00 65 73 20 61 6c 6c 20 73 61 76 65 70 6f 69 6e 74  es all savepoint
1ba10 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77  s..        /// w
1ba20 68 65 72 65 20 4e 3e 3d 4d 2e 0d 0a 20 20 20 20  here N>=M...    
1ba30 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d      /// </para>.
1ba40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1ba50 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
1ba60 20 4e 6f 6e 65 20 6f 66 20 74 68 65 20 78 53 61   None of the xSa
1ba70 76 65 70 6f 69 6e 74 28 29 2c 20 78 52 65 6c 65  vepoint(), xRele
1ba80 61 73 65 28 29 2c 20 6f 72 20 78 52 6f 6c 6c 62  ase(), or xRollb
1ba90 61 63 6b 54 6f 28 29 20 6d 65 74 68 6f 64 73 20  ackTo() methods 
1baa0 77 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f  will..        //
1bab0 2f 20 65 76 65 72 20 62 65 20 63 61 6c 6c 65 64  / ever be called
1bac0 20 65 78 63 65 70 74 20 69 6e 20 62 65 74 77 65   except in betwe
1bad0 65 6e 20 63 61 6c 6c 73 20 74 6f 20 78 42 65 67  en calls to xBeg
1bae0 69 6e 28 29 20 61 6e 64 20 65 69 74 68 65 72 0d  in() and either.
1baf0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 78 43 6f  .        /// xCo
1bb00 6d 6d 69 74 28 29 20 6f 72 20 78 52 6f 6c 6c 62  mmit() or xRollb
1bb10 61 63 6b 28 29 2e 0d 0a 20 20 20 20 20 20 20 20  ack()...        
1bb20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20  /// </para>..   
1bb30 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1bb40 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1bb50 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
1bb60 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  tab">..        /
1bb70 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f  // The native po
1bb80 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c  inter to the sql
1bb90 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65  ite3_vtab derive
1bba0 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20  d structure...  
1bbb0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1bbc0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
1bbd0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 53 61  <param name="iSa
1bbe0 76 65 70 6f 69 6e 74 22 3e 0d 0a 20 20 20 20 20  vepoint">..     
1bbf0 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 61     /// This is a
1bc00 6e 20 69 6e 74 65 67 65 72 20 69 64 65 6e 74 69  n integer identi
1bc10 66 69 65 72 20 75 6e 64 65 72 20 77 68 69 63 68  fier under which
1bc20 20 74 68 65 20 74 68 65 20 63 75 72 72 65 6e 74   the the current
1bc30 20 73 74 61 74 65 20 6f 66 0d 0a 20 20 20 20 20   state of..     
1bc40 20 20 20 2f 2f 2f 20 74 68 65 20 76 69 72 74 75     /// the virtu
1bc50 61 6c 20 74 61 62 6c 65 20 73 68 6f 75 6c 64 20  al table should 
1bc60 62 65 20 73 61 76 65 64 2e 0d 0a 20 20 20 20 20  be saved...     
1bc70 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1bc80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
1bc90 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
1bca0 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53  /// A standard S
1bcb0 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64  QLite return cod
1bcc0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
1bcd0 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
1bce0 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43      SQLiteErrorC
1bcf0 6f 64 65 20 78 53 61 76 65 70 6f 69 6e 74 28 0d  ode xSavepoint(.
1bd00 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
1bd10 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
1bd20 20 20 20 20 20 20 20 20 69 6e 74 20 69 53 61 76          int iSav
1bd30 65 70 6f 69 6e 74 0d 0a 20 20 20 20 20 20 20 20  epoint..        
1bd40 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20      );....      
1bd50 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1bd60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bd70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bd80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bd90 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1bda0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
1bdb0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1bdc0 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
1bdd0 2f 2f 2f 20 54 68 65 73 65 20 6d 65 74 68 6f 64  /// These method
1bde0 73 20 70 72 6f 76 69 64 65 20 74 68 65 20 76 69  s provide the vi
1bdf0 72 74 75 61 6c 20 74 61 62 6c 65 20 69 6d 70 6c  rtual table impl
1be00 65 6d 65 6e 74 61 74 69 6f 6e 20 61 6e 0d 0a 20  ementation an.. 
1be10 20 20 20 20 20 20 20 2f 2f 2f 20 6f 70 70 6f 72         /// oppor
1be20 74 75 6e 69 74 79 20 74 6f 20 69 6d 70 6c 65 6d  tunity to implem
1be30 65 6e 74 20 6e 65 73 74 65 64 20 74 72 61 6e 73  ent nested trans
1be40 61 63 74 69 6f 6e 73 2e 20 54 68 65 79 20 61 72  actions. They ar
1be50 65 20 61 6c 77 61 79 73 0d 0a 20 20 20 20 20 20  e always..      
1be60 20 20 2f 2f 2f 20 6f 70 74 69 6f 6e 61 6c 20 61    /// optional a
1be70 6e 64 20 77 69 6c 6c 20 6f 6e 6c 79 20 62 65 20  nd will only be 
1be80 63 61 6c 6c 65 64 20 69 6e 20 53 51 4c 69 74 65  called in SQLite
1be90 20 76 65 72 73 69 6f 6e 20 33 2e 37 2e 37 20 61   version 3.7.7 a
1bea0 6e 64 20 6c 61 74 65 72 2e 0d 0a 20 20 20 20 20  nd later...     
1beb0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a     /// </para>..
1bec0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1bed0 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
1bee0 57 68 65 6e 20 78 53 61 76 65 70 6f 69 6e 74 28  When xSavepoint(
1bef0 58 2c 4e 29 20 69 73 20 69 6e 76 6f 6b 65 64 2c  X,N) is invoked,
1bf00 20 74 68 61 74 20 69 73 20 61 20 73 69 67 6e 61   that is a signa
1bf10 6c 20 74 6f 20 74 68 65 20 76 69 72 74 75 61 6c  l to the virtual
1bf20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 61  ..        /// ta
1bf30 62 6c 65 20 58 20 74 68 61 74 20 69 74 20 73 68  ble X that it sh
1bf40 6f 75 6c 64 20 73 61 76 65 20 69 74 73 20 63 75  ould save its cu
1bf50 72 72 65 6e 74 20 73 74 61 74 65 20 61 73 20 73  rrent state as s
1bf60 61 76 65 70 6f 69 6e 74 20 4e 2e 20 41 0d 0a 20  avepoint N. A.. 
1bf70 20 20 20 20 20 20 20 2f 2f 2f 20 73 75 62 73 65         /// subse
1bf80 71 75 65 6e 74 20 63 61 6c 6c 20 74 6f 20 78 52  quent call to xR
1bf90 6f 6c 6c 62 61 63 6b 54 6f 28 58 2c 52 29 20 6d  ollbackTo(X,R) m
1bfa0 65 61 6e 73 20 74 68 61 74 20 74 68 65 20 73 74  eans that the st
1bfb0 61 74 65 20 6f 66 20 74 68 65 0d 0a 20 20 20 20  ate of the..    
1bfc0 20 20 20 20 2f 2f 2f 20 76 69 72 74 75 61 6c 20      /// virtual 
1bfd0 74 61 62 6c 65 20 73 68 6f 75 6c 64 20 72 65 74  table should ret
1bfe0 75 72 6e 20 74 6f 20 77 68 61 74 20 69 74 20 77  urn to what it w
1bff0 61 73 20 77 68 65 6e 20 78 53 61 76 65 70 6f 69  as when xSavepoi
1c000 6e 74 28 58 2c 52 29 20 77 61 73 0d 0a 20 20 20  nt(X,R) was..   
1c010 20 20 20 20 20 2f 2f 2f 20 6c 61 73 74 20 63 61       /// last ca
1c020 6c 6c 65 64 2e 20 54 68 65 20 63 61 6c 6c 20 74  lled. The call t
1c030 6f 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 58 2c  o xRollbackTo(X,
1c040 52 29 20 77 69 6c 6c 20 69 6e 76 61 6c 69 64 61  R) will invalida
1c050 74 65 20 61 6c 6c 0d 0a 20 20 20 20 20 20 20 20  te all..        
1c060 2f 2f 2f 20 73 61 76 65 70 6f 69 6e 74 73 20 77  /// savepoints w
1c070 69 74 68 20 4e 3e 52 3b 20 6e 6f 6e 65 20 6f 66  ith N>R; none of
1c080 20 74 68 65 20 69 6e 76 61 6c 69 64 65 64 20 73   the invalided s
1c090 61 76 65 70 6f 69 6e 74 73 20 77 69 6c 6c 20 62  avepoints will b
1c0a0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 72  e..        /// r
1c0b0 6f 6c 6c 65 64 20 62 61 63 6b 20 6f 72 20 72 65  olled back or re
1c0c0 6c 65 61 73 65 64 20 77 69 74 68 6f 75 74 20 66  leased without f
1c0d0 69 72 73 74 20 62 65 69 6e 67 20 72 65 69 6e 69  irst being reini
1c0e0 74 69 61 6c 69 7a 65 64 20 62 79 20 61 20 63 61  tialized by a ca
1c0f0 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ll..        /// 
1c100 74 6f 20 78 53 61 76 65 70 6f 69 6e 74 28 29 2e  to xSavepoint().
1c110 20 41 20 63 61 6c 6c 20 74 6f 20 78 52 65 6c 65   A call to xRele
1c120 61 73 65 28 58 2c 4d 29 20 69 6e 76 61 6c 69 64  ase(X,M) invalid
1c130 61 74 65 73 20 61 6c 6c 20 73 61 76 65 70 6f 69  ates all savepoi
1c140 6e 74 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  nts..        ///
1c150 20 77 68 65 72 65 20 4e 3e 3d 4d 2e 0d 0a 20 20   where N>=M...  
1c160 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1c170 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1c180 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
1c190 2f 2f 20 4e 6f 6e 65 20 6f 66 20 74 68 65 20 78  // None of the x
1c1a0 53 61 76 65 70 6f 69 6e 74 28 29 2c 20 78 52 65  Savepoint(), xRe
1c1b0 6c 65 61 73 65 28 29 2c 20 6f 72 20 78 52 6f 6c  lease(), or xRol
1c1c0 6c 62 61 63 6b 54 6f 28 29 20 6d 65 74 68 6f 64  lbackTo() method
1c1d0 73 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20  s will..        
1c1e0 2f 2f 2f 20 65 76 65 72 20 62 65 20 63 61 6c 6c  /// ever be call
1c1f0 65 64 20 65 78 63 65 70 74 20 69 6e 20 62 65 74  ed except in bet
1c200 77 65 65 6e 20 63 61 6c 6c 73 20 74 6f 20 78 42  ween calls to xB
1c210 65 67 69 6e 28 29 20 61 6e 64 20 65 69 74 68 65  egin() and eithe
1c220 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 78  r..        /// x
1c230 43 6f 6d 6d 69 74 28 29 20 6f 72 20 78 52 6f 6c  Commit() or xRol
1c240 6c 62 61 63 6b 28 29 2e 0d 0a 20 20 20 20 20 20  lback()...      
1c250 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
1c260 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
1c270 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1c280 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1c290 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20  pVtab">..       
1c2a0 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
1c2b0 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73  pointer to the s
1c2c0 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69  qlite3_vtab deri
1c2d0 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  ved structure...
1c2e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1c2f0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
1c300 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69  / <param name="i
1c310 53 61 76 65 70 6f 69 6e 74 22 3e 0d 0a 20 20 20  Savepoint">..   
1c320 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73       /// This is
1c330 20 61 6e 20 69 6e 74 65 67 65 72 20 75 73 65 64   an integer used
1c340 20 74 6f 20 69 6e 64 69 63 61 74 65 20 74 68 61   to indicate tha
1c350 74 20 61 6e 79 20 73 61 76 65 64 20 73 74 61 74  t any saved stat
1c360 65 73 20 77 69 74 68 20 61 6e 0d 0a 20 20 20 20  es with an..    
1c370 20 20 20 20 2f 2f 2f 20 69 64 65 6e 74 69 66 69      /// identifi
1c380 65 72 20 67 72 65 61 74 65 72 20 74 68 61 6e 20  er greater than 
1c390 6f 72 20 65 71 75 61 6c 20 74 6f 20 74 68 69 73  or equal to this
1c3a0 20 73 68 6f 75 6c 64 20 62 65 20 64 65 6c 65 74   should be delet
1c3b0 65 64 20 62 79 20 74 68 65 0d 0a 20 20 20 20 20  ed by the..     
1c3c0 20 20 20 2f 2f 2f 20 76 69 72 74 75 61 6c 20 74     /// virtual t
1c3d0 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  able...        /
1c3e0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1c3f0 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
1c400 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
1c410 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74  A standard SQLit
1c420 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a  e return code...
1c430 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
1c440 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
1c450 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1c460 78 52 65 6c 65 61 73 65 28 0d 0a 20 20 20 20 20  xRelease(..     
1c470 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
1c480 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  tab,..          
1c490 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69 6e 74    int iSavepoint
1c4a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b  ..            );
1c4b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1c4c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c4d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c4e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c4f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c500 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
1c510 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
1c520 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
1c530 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1c540 65 73 65 20 6d 65 74 68 6f 64 73 20 70 72 6f 76  ese methods prov
1c550 69 64 65 20 74 68 65 20 76 69 72 74 75 61 6c 20  ide the virtual 
1c560 74 61 62 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61  table implementa
1c570 74 69 6f 6e 20 61 6e 0d 0a 20 20 20 20 20 20 20  tion an..       
1c580 20 2f 2f 2f 20 6f 70 70 6f 72 74 75 6e 69 74 79   /// opportunity
1c590 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 6e 65   to implement ne
1c5a0 73 74 65 64 20 74 72 61 6e 73 61 63 74 69 6f 6e  sted transaction
1c5b0 73 2e 20 54 68 65 79 20 61 72 65 20 61 6c 77 61  s. They are alwa
1c5c0 79 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ys..        /// 
1c5d0 6f 70 74 69 6f 6e 61 6c 20 61 6e 64 20 77 69 6c  optional and wil
1c5e0 6c 20 6f 6e 6c 79 20 62 65 20 63 61 6c 6c 65 64  l only be called
1c5f0 20 69 6e 20 53 51 4c 69 74 65 20 76 65 72 73 69   in SQLite versi
1c600 6f 6e 20 33 2e 37 2e 37 20 61 6e 64 20 6c 61 74  on 3.7.7 and lat
1c610 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  er...        ///
1c620 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20   </para>..      
1c630 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20    /// <para>..  
1c640 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 78        /// When x
1c650 53 61 76 65 70 6f 69 6e 74 28 58 2c 4e 29 20 69  Savepoint(X,N) i
1c660 73 20 69 6e 76 6f 6b 65 64 2c 20 74 68 61 74 20  s invoked, that 
1c670 69 73 20 61 20 73 69 67 6e 61 6c 20 74 6f 20 74  is a signal to t
1c680 68 65 20 76 69 72 74 75 61 6c 0d 0a 20 20 20 20  he virtual..    
1c690 20 20 20 20 2f 2f 2f 20 74 61 62 6c 65 20 58 20      /// table X 
1c6a0 74 68 61 74 20 69 74 20 73 68 6f 75 6c 64 20 73  that it should s
1c6b0 61 76 65 20 69 74 73 20 63 75 72 72 65 6e 74 20  ave its current 
1c6c0 73 74 61 74 65 20 61 73 20 73 61 76 65 70 6f 69  state as savepoi
1c6d0 6e 74 20 4e 2e 20 41 0d 0a 20 20 20 20 20 20 20  nt N. A..       
1c6e0 20 2f 2f 2f 20 73 75 62 73 65 71 75 65 6e 74 20   /// subsequent 
1c6f0 63 61 6c 6c 20 74 6f 20 78 52 6f 6c 6c 62 61 63  call to xRollbac
1c700 6b 54 6f 28 58 2c 52 29 20 6d 65 61 6e 73 20 74  kTo(X,R) means t
1c710 68 61 74 20 74 68 65 20 73 74 61 74 65 20 6f 66  hat the state of
1c720 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
1c730 2f 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  / virtual table 
1c740 73 68 6f 75 6c 64 20 72 65 74 75 72 6e 20 74 6f  should return to
1c750 20 77 68 61 74 20 69 74 20 77 61 73 20 77 68 65   what it was whe
1c760 6e 20 78 53 61 76 65 70 6f 69 6e 74 28 58 2c 52  n xSavepoint(X,R
1c770 29 20 77 61 73 0d 0a 20 20 20 20 20 20 20 20 2f  ) was..        /
1c780 2f 2f 20 6c 61 73 74 20 63 61 6c 6c 65 64 2e 20  // last called. 
1c790 54 68 65 20 63 61 6c 6c 20 74 6f 20 78 52 6f 6c  The call to xRol
1c7a0 6c 62 61 63 6b 54 6f 28 58 2c 52 29 20 77 69 6c  lbackTo(X,R) wil
1c7b0 6c 20 69 6e 76 61 6c 69 64 61 74 65 20 61 6c 6c  l invalidate all
1c7c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 61  ..        /// sa
1c7d0 76 65 70 6f 69 6e 74 73 20 77 69 74 68 20 4e 3e  vepoints with N>
1c7e0 52 3b 20 6e 6f 6e 65 20 6f 66 20 74 68 65 20 69  R; none of the i
1c7f0 6e 76 61 6c 69 64 65 64 20 73 61 76 65 70 6f 69  nvalided savepoi
1c800 6e 74 73 20 77 69 6c 6c 20 62 65 0d 0a 20 20 20  nts will be..   
1c810 20 20 20 20 20 2f 2f 2f 20 72 6f 6c 6c 65 64 20       /// rolled 
1c820 62 61 63 6b 20 6f 72 20 72 65 6c 65 61 73 65 64  back or released
1c830 20 77 69 74 68 6f 75 74 20 66 69 72 73 74 20 62   without first b
1c840 65 69 6e 67 20 72 65 69 6e 69 74 69 61 6c 69 7a  eing reinitializ
1c850 65 64 20 62 79 20 61 20 63 61 6c 6c 0d 0a 20 20  ed by a call..  
1c860 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20 78 53 61        /// to xSa
1c870 76 65 70 6f 69 6e 74 28 29 2e 20 41 20 63 61 6c  vepoint(). A cal
1c880 6c 20 74 6f 20 78 52 65 6c 65 61 73 65 28 58 2c  l to xRelease(X,
1c890 4d 29 20 69 6e 76 61 6c 69 64 61 74 65 73 20 61  M) invalidates a
1c8a0 6c 6c 20 73 61 76 65 70 6f 69 6e 74 73 0d 0a 20  ll savepoints.. 
1c8b0 20 20 20 20 20 20 20 2f 2f 2f 20 77 68 65 72 65         /// where
1c8c0 20 4e 3e 3d 4d 2e 0d 0a 20 20 20 20 20 20 20 20   N>=M...        
1c8d0 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20  /// </para>..   
1c8e0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
1c8f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  .        /// Non
1c900 65 20 6f 66 20 74 68 65 20 78 53 61 76 65 70 6f  e of the xSavepo
1c910 69 6e 74 28 29 2c 20 78 52 65 6c 65 61 73 65 28  int(), xRelease(
1c920 29 2c 20 6f 72 20 78 52 6f 6c 6c 62 61 63 6b 54  ), or xRollbackT
1c930 6f 28 29 20 6d 65 74 68 6f 64 73 20 77 69 6c 6c  o() methods will
1c940 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 65 76  ..        /// ev
1c950 65 72 20 62 65 20 63 61 6c 6c 65 64 20 65 78 63  er be called exc
1c960 65 70 74 20 69 6e 20 62 65 74 77 65 65 6e 20 63  ept in between c
1c970 61 6c 6c 73 20 74 6f 20 78 42 65 67 69 6e 28 29  alls to xBegin()
1c980 20 61 6e 64 20 65 69 74 68 65 72 0d 0a 20 20 20   and either..   
1c990 20 20 20 20 20 2f 2f 2f 20 78 43 6f 6d 6d 69 74       /// xCommit
1c9a0 28 29 20 6f 72 20 78 52 6f 6c 6c 62 61 63 6b 28  () or xRollback(
1c9b0 29 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  )...        /// 
1c9c0 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
1c9d0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1c9e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1c9f0 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22  ram name="pVtab"
1ca00 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1ca10 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
1ca20 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33  r to the sqlite3
1ca30 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74  _vtab derived st
1ca40 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  ructure...      
1ca50 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
1ca60 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1ca70 61 6d 20 6e 61 6d 65 3d 22 69 53 61 76 65 70 6f  am name="iSavepo
1ca80 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  int">..        /
1ca90 2f 2f 20 54 68 69 73 20 69 73 20 61 6e 20 69 6e  // This is an in
1caa0 74 65 67 65 72 20 69 64 65 6e 74 69 66 69 65 72  teger identifier
1cab0 20 75 73 65 64 20 74 6f 20 73 70 65 63 69 66 79   used to specify
1cac0 20 61 20 73 70 65 63 69 66 69 63 20 73 61 76 65   a specific save
1cad0 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  d..        /// s
1cae0 74 61 74 65 20 66 6f 72 20 74 68 65 20 76 69 72  tate for the vir
1caf0 74 75 61 6c 20 74 61 62 6c 65 20 66 6f 72 20 69  tual table for i
1cb00 74 20 74 6f 20 72 65 73 74 6f 72 65 20 69 74 73  t to restore its
1cb10 65 6c 66 20 62 61 63 6b 20 74 6f 2c 20 77 68 69  elf back to, whi
1cb20 63 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ch..        /// 
1cb30 73 68 6f 75 6c 64 20 61 6c 73 6f 20 68 61 76 65  should also have
1cb40 20 74 68 65 20 65 66 66 65 63 74 20 6f 66 20 64   the effect of d
1cb50 65 6c 65 74 69 6e 67 20 61 6c 6c 20 73 61 76 65  eleting all save
1cb60 64 20 73 74 61 74 65 73 20 77 69 74 68 20 61 6e  d states with an
1cb70 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e  ..        /// in
1cb80 74 65 67 65 72 20 69 64 65 6e 74 69 66 69 65 72  teger identifier
1cb90 20 67 72 65 61 74 65 72 20 74 68 61 6e 20 74 68   greater than th
1cba0 69 73 20 6f 6e 65 2e 0d 0a 20 20 20 20 20 20 20  is one...       
1cbb0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1cbc0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
1cbd0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
1cbe0 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c  / A standard SQL
1cbf0 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e  ite return code.
1cc00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1cc10 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1cc20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64    SQLiteErrorCod
1cc30 65 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a  e xRollbackTo(..
1cc40 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
1cc50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
1cc60 20 20 20 20 20 20 20 69 6e 74 20 69 53 61 76 65         int iSave
1cc70 70 6f 69 6e 74 0d 0a 20 20 20 20 20 20 20 20 20  point..         
1cc80 20 20 20 29 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20     );..    }..  
1cc90 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
1cca0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1ccb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ccc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ccd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1ccf0 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 49  ...    #region I
1cd00 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64  SQLiteManagedMod
1cd10 75 6c 65 20 49 6e 74 65 72 66 61 63 65 0d 0a 20  ule Interface.. 
1cd20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1cd30 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69  ..    /// This i
1cd40 6e 74 65 72 66 61 63 65 20 72 65 70 72 65 73 65  nterface represe
1cd50 6e 74 73 20 61 20 76 69 72 74 75 61 6c 20 74 61  nts a virtual ta
1cd60 62 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  ble implementati
1cd70 6f 6e 20 77 72 69 74 74 65 6e 20 69 6e 0d 0a 20  on written in.. 
1cd80 20 20 20 2f 2f 2f 20 6d 61 6e 61 67 65 64 20 63     /// managed c
1cd90 6f 64 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ode...    /// </
1cda0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75  summary>..    pu
1cdb0 62 6c 69 63 20 69 6e 74 65 72 66 61 63 65 20 49  blic interface I
1cdc0 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64  SQLiteManagedMod
1cdd0 75 6c 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  ule..    {..    
1cde0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1cdf0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52  >..        /// R
1ce00 65 74 75 72 6e 73 20 6e 6f 6e 2d 7a 65 72 6f 20  eturns non-zero 
1ce10 69 66 20 74 68 65 20 73 63 68 65 6d 61 20 66 6f  if the schema fo
1ce20 72 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  r the virtual ta
1ce30 62 6c 65 20 68 61 73 20 62 65 65 6e 0d 0a 20 20  ble has been..  
1ce40 20 20 20 20 20 20 2f 2f 2f 20 64 65 63 6c 61 72        /// declar
1ce50 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
1ce60 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1ce70 20 20 20 20 20 62 6f 6f 6c 20 44 65 63 6c 61 72       bool Declar
1ce80 65 64 20 7b 20 67 65 74 3b 20 7d 0d 0a 0d 0a 20  ed { get; }.... 
1ce90 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ced0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1cee0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1cef0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1cf00 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 74 68 65   /// Returns the
1cf10 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6d 6f 64   name of the mod
1cf20 75 6c 65 20 61 73 20 69 74 20 77 61 73 20 72 65  ule as it was re
1cf30 67 69 73 74 65 72 65 64 20 77 69 74 68 20 74 68  gistered with th
1cf40 65 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20  e SQLite..      
1cf50 20 20 2f 2f 2f 20 63 6f 72 65 20 6c 69 62 72 61    /// core libra
1cf60 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry...        ///
1cf70 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1cf80 20 20 20 20 20 73 74 72 69 6e 67 20 4e 61 6d 65       string Name
1cf90 20 7b 20 67 65 74 3b 20 7d 0d 0a 0d 0a 20 20 20   { get; }....   
1cfa0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1cfb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cfc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cfd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cfe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1cff0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
1d000 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1d010 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69  // This method i
1d020 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70  s called in resp
1d030 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20  onse to the..   
1d040 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
1d050 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
1d060 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 22  eModule.xCreate"
1d070 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
1d080 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1d090 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1d0a0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f   <param name="co
1d0b0 6e 6e 65 63 74 69 6f 6e 22 3e 0d 0a 20 20 20 20  nnection">..    
1d0c0 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
1d0d0 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e   cref="SQLiteCon
1d0e0 6e 65 63 74 69 6f 6e 22 20 2f 3e 20 6f 62 6a 65  nection" /> obje
1d0f0 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f  ct instance asso
1d100 63 69 61 74 65 64 20 77 69 74 68 0d 0a 20 20 20  ciated with..   
1d110 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 76 69 72       /// the vir
1d120 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20  tual table...   
1d130 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
1d140 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1d150 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 6c 69  param name="pCli
1d160 65 6e 74 44 61 74 61 22 3e 0d 0a 20 20 20 20 20  entData">..     
1d170 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
1d180 65 20 75 73 65 72 2d 64 61 74 61 20 70 6f 69 6e  e user-data poin
1d190 74 65 72 20 61 73 73 6f 63 69 61 74 65 64 20 77  ter associated w
1d1a0 69 74 68 20 74 68 69 73 20 6d 6f 64 75 6c 65 2c  ith this module,
1d1b0 20 61 73 20 69 74 20 77 61 73 0d 0a 20 20 20 20   as it was..    
1d1c0 20 20 20 20 2f 2f 2f 20 70 72 6f 76 69 64 65 64      /// provided
1d1d0 20 74 6f 20 74 68 65 20 53 51 4c 69 74 65 20 63   to the SQLite c
1d1e0 6f 72 65 20 6c 69 62 72 61 72 79 20 77 68 65 6e  ore library when
1d1f0 20 74 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75   the native modu
1d200 6c 65 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20  le instance..   
1d210 20 20 20 20 20 2f 2f 2f 20 77 61 73 20 63 72 65       /// was cre
1d220 61 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ated...        /
1d230 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1d240 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1d250 6e 61 6d 65 3d 22 61 72 67 75 6d 65 6e 74 73 22  name="arguments"
1d260 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1d270 68 65 20 6d 6f 64 75 6c 65 20 6e 61 6d 65 2c 20  he module name, 
1d280 64 61 74 61 62 61 73 65 20 6e 61 6d 65 2c 20 76  database name, v
1d290 69 72 74 75 61 6c 20 74 61 62 6c 65 20 6e 61 6d  irtual table nam
1d2a0 65 2c 20 61 6e 64 20 61 6c 6c 20 6f 74 68 65 72  e, and all other
1d2b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 72  ..        /// ar
1d2c0 67 75 6d 65 6e 74 73 20 70 61 73 73 65 64 20 74  guments passed t
1d2d0 6f 20 74 68 65 20 43 52 45 41 54 45 20 56 49 52  o the CREATE VIR
1d2e0 54 55 41 4c 20 54 41 42 4c 45 20 73 74 61 74 65  TUAL TABLE state
1d2f0 6d 65 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ment...        /
1d300 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1d310 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1d320 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20  name="table">.. 
1d330 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20         /// Upon 
1d340 73 75 63 63 65 73 73 2c 20 74 68 69 73 20 70 61  success, this pa
1d350 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20  rameter must be 
1d360 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74  modified to cont
1d370 61 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ain the..       
1d380 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
1d390 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
1d3a0 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  le" /> object in
1d3b0 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65  stance associate
1d3c0 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20 20 20  d with..        
1d3d0 2f 2f 2f 20 74 68 65 20 76 69 72 74 75 61 6c 20  /// the virtual 
1d3e0 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20  table...        
1d3f0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1d400 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1d410 20 6e 61 6d 65 3d 22 65 72 72 6f 72 22 3e 0d 0a   name="error">..
1d420 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e          /// Upon
1d430 20 66 61 69 6c 75 72 65 2c 20 74 68 69 73 20 70   failure, this p
1d440 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65  arameter must be
1d450 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e   modified to con
1d460 74 61 69 6e 20 61 6e 20 65 72 72 6f 72 0d 0a 20  tain an error.. 
1d470 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 73 73 61         /// messa
1d480 67 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ge...        ///
1d490 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1d4a0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
1d4b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20  ..        /// A 
1d4c0 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20  standard SQLite 
1d4d0 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20  return code...  
1d4e0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
1d4f0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51  rns>..        SQ
1d500 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 43 72  LiteErrorCode Cr
1d510 65 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20  eate(..         
1d520 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74     SQLiteConnect
1d530 69 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20  ion connection, 
1d540 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
1d550 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
1d560 6c 69 65 6e 74 44 61 74 61 2c 20 20 20 20 20 20  lientData,      
1d570 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20       /* in */.. 
1d580 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
1d590 67 5b 5d 20 61 72 67 75 6d 65 6e 74 73 2c 20 20  g[] arguments,  
1d5a0 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a           /* in *
1d5b0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  /..            r
1d5c0 65 66 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c  ef SQLiteVirtual
1d5d0 54 61 62 6c 65 20 74 61 62 6c 65 2c 20 2f 2a 20  Table table, /* 
1d5e0 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  out */..        
1d5f0 20 20 20 20 72 65 66 20 73 74 72 69 6e 67 20 65      ref string e
1d600 72 72 6f 72 20 20 20 20 20 20 20 20 20 20 20 20  rror            
1d610 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20    /* out */..   
1d620 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20           );.... 
1d630 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1d640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1d680 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1d690 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1d6a0 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64   /// This method
1d6b0 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65   is called in re
1d6c0 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20  sponse to the.. 
1d6d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
1d6e0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
1d6f0 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65  iveModule.xConne
1d700 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  ct" /> method...
1d710 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
1d720 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1d730 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1d740 22 63 6f 6e 6e 65 63 74 69 6f 6e 22 3e 0d 0a 20  "connection">.. 
1d750 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
1d760 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
1d770 43 6f 6e 6e 65 63 74 69 6f 6e 22 20 2f 3e 20 6f  Connection" /> o
1d780 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61  bject instance a
1d790 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 0d 0a  ssociated with..
1d7a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20          /// the 
1d7b0 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a  virtual table...
1d7c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1d7d0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
1d7e0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
1d7f0 43 6c 69 65 6e 74 44 61 74 61 22 3e 0d 0a 20 20  ClientData">..  
1d800 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
1d810 74 69 76 65 20 75 73 65 72 2d 64 61 74 61 20 70  tive user-data p
1d820 6f 69 6e 74 65 72 20 61 73 73 6f 63 69 61 74 65  ointer associate
1d830 64 20 77 69 74 68 20 74 68 69 73 20 6d 6f 64 75  d with this modu
1d840 6c 65 2c 20 61 73 20 69 74 20 77 61 73 0d 0a 20  le, as it was.. 
1d850 20 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f 76 69         /// provi
1d860 64 65 64 20 74 6f 20 74 68 65 20 53 51 4c 69 74  ded to the SQLit
1d870 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 77  e core library w
1d880 68 65 6e 20 74 68 65 20 6e 61 74 69 76 65 20 6d  hen the native m
1d890 6f 64 75 6c 65 20 69 6e 73 74 61 6e 63 65 0d 0a  odule instance..
1d8a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 61 73 20          /// was 
1d8b0 63 72 65 61 74 65 64 2e 0d 0a 20 20 20 20 20 20  created...      
1d8c0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
1d8d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1d8e0 61 6d 20 6e 61 6d 65 3d 22 61 72 67 75 6d 65 6e  am name="argumen
1d8f0 74 73 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ts">..        //
1d900 2f 20 54 68 65 20 6d 6f 64 75 6c 65 20 6e 61 6d  / The module nam
1d910 65 2c 20 64 61 74 61 62 61 73 65 20 6e 61 6d 65  e, database name
1d920 2c 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  , virtual table 
1d930 6e 61 6d 65 2c 20 61 6e 64 20 61 6c 6c 20 6f 74  name, and all ot
1d940 68 65 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  her..        ///
1d950 20 61 72 67 75 6d 65 6e 74 73 20 70 61 73 73 65   arguments passe
1d960 64 20 74 6f 20 74 68 65 20 43 52 45 41 54 45 20  d to the CREATE 
1d970 56 49 52 54 55 41 4c 20 54 41 42 4c 45 20 73 74  VIRTUAL TABLE st
1d980 61 74 65 6d 65 6e 74 2e 0d 0a 20 20 20 20 20 20  atement...      
1d990 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
1d9a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1d9b0 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e  am name="table">
1d9c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70  ..        /// Up
1d9d0 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69 73  on success, this
1d9e0 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20   parameter must 
1d9f0 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 63  be modified to c
1da00 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20 20 20  ontain the..    
1da10 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
1da20 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c  f="SQLiteVirtual
1da30 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74  Table" /> object
1da40 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69   instance associ
1da50 61 74 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20  ated with..     
1da60 20 20 20 2f 2f 2f 20 74 68 65 20 76 69 72 74 75     /// the virtu
1da70 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20  al table...     
1da80 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1da90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1daa0 72 61 6d 20 6e 61 6d 65 3d 22 65 72 72 6f 72 22  ram name="error"
1dab0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55  >..        /// U
1dac0 70 6f 6e 20 66 61 69 6c 75 72 65 2c 20 74 68 69  pon failure, thi
1dad0 73 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74  s parameter must
1dae0 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20   be modified to 
1daf0 63 6f 6e 74 61 69 6e 20 61 6e 20 65 72 72 6f 72  contain an error
1db00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65  ..        /// me
1db10 73 73 61 67 65 2e 0d 0a 20 20 20 20 20 20 20 20  ssage...        
1db20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1db30 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
1db40 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
1db50 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69   A standard SQLi
1db60 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d  te return code..
1db70 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
1db80 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1db90 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1dba0 20 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20   Connect(..     
1dbb0 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e         SQLiteCon
1dbc0 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e 65 63 74 69  nection connecti
1dbd0 6f 6e 2c 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  on,  /* in */.. 
1dbe0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
1dbf0 72 20 70 43 6c 69 65 6e 74 44 61 74 61 2c 20 20  r pClientData,  
1dc00 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a           /* in *
1dc10 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  /..            s
1dc20 74 72 69 6e 67 5b 5d 20 61 72 67 75 6d 65 6e 74  tring[] argument
1dc30 73 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20  s,           /* 
1dc40 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
1dc50 20 20 20 72 65 66 20 53 51 4c 69 74 65 56 69 72     ref SQLiteVir
1dc60 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c  tualTable table,
1dc70 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20   /* out */..    
1dc80 20 20 20 20 20 20 20 20 72 65 66 20 73 74 72 69          ref stri
1dc90 6e 67 20 65 72 72 6f 72 20 20 20 20 20 20 20 20  ng error        
1dca0 20 20 20 20 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d        /* out */.
1dcb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d  .            );.
1dcc0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1dcd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dcf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dd00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dd10 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
1dd20 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1dd30 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65       /// This me
1dd40 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69  thod is called i
1dd50 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68  n response to th
1dd60 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
1dd70 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
1dd80 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42  eNativeModule.xB
1dd90 65 73 74 49 6e 64 65 78 22 20 2f 3e 20 6d 65 74  estIndex" /> met
1dda0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
1ddb0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1ddc0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1ddd0 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a   name="table">..
1dde0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1ddf0 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
1de00 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f  eVirtualTable" /
1de10 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
1de20 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20  e associated..  
1de30 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74        /// with t
1de40 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c  his virtual tabl
1de50 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
1de60 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
1de70 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1de80 65 3d 22 69 6e 64 65 78 22 3e 0d 0a 20 20 20 20  e="index">..    
1de90 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
1dea0 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64   cref="SQLiteInd
1deb0 65 78 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  ex" /> object in
1dec0 73 74 61 6e 63 65 20 63 6f 6e 74 61 69 6e 69 6e  stance containin
1ded0 67 20 61 6c 6c 20 74 68 65 0d 0a 20 20 20 20 20  g all the..     
1dee0 20 20 20 2f 2f 2f 20 64 61 74 61 20 66 6f 72 20     /// data for 
1def0 74 68 65 20 69 6e 70 75 74 73 20 61 6e 64 20 6f  the inputs and o
1df00 75 74 70 75 74 73 20 72 65 6c 61 74 69 6e 67 20  utputs relating 
1df10 74 6f 20 69 6e 64 65 78 20 73 65 6c 65 63 74 69  to index selecti
1df20 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  on...        ///
1df30 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1df40 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
1df50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20  ..        /// A 
1df60 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20  standard SQLite 
1df70 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20  return code...  
1df80 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
1df90 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51  rns>..        SQ
1dfa0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 42 65  LiteErrorCode Be
1dfb0 73 74 49 6e 64 65 78 28 0d 0a 20 20 20 20 20 20  stIndex(..      
1dfc0 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74        SQLiteVirt
1dfd0 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c 20  ualTable table, 
1dfe0 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
1dff0 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65        SQLiteInde
1e000 78 20 69 6e 64 65 78 20 20 20 20 20 20 20 20 20  x index         
1e010 2f 2a 20 69 6e 2c 20 6f 75 74 20 2a 2f 0d 0a 20  /* in, out */.. 
1e020 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d             );...
1e030 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1e040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e080 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
1e090 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1e0a0 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68     /// This meth
1e0b0 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20  od is called in 
1e0c0 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d  response to the.
1e0d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
1e0e0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
1e0f0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 69 73  ativeModule.xDis
1e100 63 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68  connect" /> meth
1e110 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  od...        ///
1e120 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1e130 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1e140 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20  name="table">.. 
1e150 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
1e160 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
1e170 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e  VirtualTable" />
1e180 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
1e190 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20   associated..   
1e1a0 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68       /// with th
1e1b0 69 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  is virtual table
1e1c0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1e1d0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1e1e0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
1e1f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74          /// A st
1e200 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65  andard SQLite re
1e210 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20  turn code...    
1e220 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
1e230 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69  s>..        SQLi
1e240 74 65 45 72 72 6f 72 43 6f 64 65 20 44 69 73 63  teErrorCode Disc
1e250 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20  onnect(..       
1e260 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75       SQLiteVirtu
1e270 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 20 2f 2a  alTable table /*
1e280 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
1e290 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20      );....      
1e2a0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1e2b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e2c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e2d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e2e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1e2f0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
1e300 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1e310 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63  This method is c
1e320 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73  alled in respons
1e330 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  e to the..      
1e340 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
1e350 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
1e360 64 75 6c 65 2e 78 44 65 73 74 72 6f 79 22 20 2f  dule.xDestroy" /
1e370 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
1e380 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1e390 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1e3a0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c  param name="tabl
1e3b0 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
1e3c0 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
1e3d0 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
1e3e0 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  le" /> object in
1e3f0 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65  stance associate
1e400 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77  d..        /// w
1e410 69 74 68 20 74 68 69 73 20 76 69 72 74 75 61 6c  ith this virtual
1e420 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20   table...       
1e430 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1e440 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
1e450 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
1e460 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c  / A standard SQL
1e470 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e  ite return code.
1e480 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1e490 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1e4a0 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64    SQLiteErrorCod
1e4b0 65 20 44 65 73 74 72 6f 79 28 0d 0a 20 20 20 20  e Destroy(..    
1e4c0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69          SQLiteVi
1e4d0 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65  rtualTable table
1e4e0 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
1e4f0 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20         );....   
1e500 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1e510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1e550 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
1e560 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1e570 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69  // This method i
1e580 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70  s called in resp
1e590 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20  onse to the..   
1e5a0 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
1e5b0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
1e5c0 65 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e 22 20 2f  eModule.xOpen" /
1e5d0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
1e5e0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1e5f0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1e600 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c  param name="tabl
1e610 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
1e620 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
1e630 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
1e640 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  le" /> object in
1e650 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65  stance associate
1e660 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77  d..        /// w
1e670 69 74 68 20 74 68 69 73 20 76 69 72 74 75 61 6c  ith this virtual
1e680 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20   table...       
1e690 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1e6a0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1e6b0 6d 20 6e 61 6d 65 3d 22 63 75 72 73 6f 72 22 3e  m name="cursor">
1e6c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70  ..        /// Up
1e6d0 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69 73  on success, this
1e6e0 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20   parameter must 
1e6f0 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 63  be modified to c
1e700 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20 20 20  ontain the..    
1e710 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
1e720 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c  f="SQLiteVirtual
1e730 54 61 62 6c 65 43 75 72 73 6f 72 22 20 2f 3e 20  TableCursor" /> 
1e740 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
1e750 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20  associated..    
1e760 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 65      /// with the
1e770 20 6e 65 77 6c 79 20 6f 70 65 6e 65 64 20 76 69   newly opened vi
1e780 72 74 75 61 6c 20 74 61 62 6c 65 20 63 75 72 73  rtual table curs
1e790 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  or...        ///
1e7a0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1e7b0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
1e7c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20  ..        /// A 
1e7d0 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20  standard SQLite 
1e7e0 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20  return code...  
1e7f0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
1e800 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51  rns>..        SQ
1e810 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 4f 70  LiteErrorCode Op
1e820 65 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  en(..           
1e830 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
1e840 62 6c 65 20 74 61 62 6c 65 2c 20 20 20 20 20 20  ble table,      
1e850 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20       /* in */.. 
1e860 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 53             ref S
1e870 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
1e880 65 43 75 72 73 6f 72 20 63 75 72 73 6f 72 20 2f  eCursor cursor /
1e890 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20  * out */..      
1e8a0 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20        );....    
1e8b0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1e8c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e8d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e8e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e8f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1e900 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
1e910 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1e920 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73  / This method is
1e930 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f   called in respo
1e940 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20  nse to the..    
1e950 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
1e960 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
1e970 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 22 20 2f  Module.xClose" /
1e980 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
1e990 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1e9a0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1e9b0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 75 72 73  param name="curs
1e9c0 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  or">..        //
1e9d0 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
1e9e0 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  "SQLiteVirtualTa
1e9f0 62 6c 65 43 75 72 73 6f 72 22 20 2f 3e 20 6f 62  bleCursor" /> ob
1ea00 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 0d 0a 20  ject instance.. 
1ea10 20 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63         /// assoc
1ea20 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20 70  iated with the p
1ea30 72 65 76 69 6f 75 73 6c 79 20 6f 70 65 6e 65 64  reviously opened
1ea40 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 63   virtual table c
1ea50 75 72 73 6f 72 20 74 6f 20 62 65 0d 0a 20 20 20  ursor to be..   
1ea60 20 20 20 20 20 2f 2f 2f 20 75 73 65 64 2e 0d 0a       /// used...
1ea70 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1ea80 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
1ea90 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
1eaa0 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64       /// A stand
1eab0 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72  ard SQLite retur
1eac0 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  n code...       
1ead0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
1eae0 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45  .        SQLiteE
1eaf0 72 72 6f 72 43 6f 64 65 20 43 6c 6f 73 65 28 0d  rrorCode Close(.
1eb00 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
1eb10 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43  iteVirtualTableC
1eb20 75 72 73 6f 72 20 63 75 72 73 6f 72 20 2f 2a 20  ursor cursor /* 
1eb30 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
1eb40 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20     );....       
1eb50 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1eb60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eb70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eb80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eb90 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1eba0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1ebb0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1ebc0 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61  his method is ca
1ebd0 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65  lled in response
1ebe0 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20   to the..       
1ebf0 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
1ec00 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
1ec10 75 6c 65 2e 78 46 69 6c 74 65 72 22 20 2f 3e 20  ule.xFilter" /> 
1ec20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
1ec30 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1ec40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1ec50 72 61 6d 20 6e 61 6d 65 3d 22 63 75 72 73 6f 72  ram name="cursor
1ec60 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
1ec70 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
1ec80 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
1ec90 65 43 75 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65  eCursor" /> obje
1eca0 63 74 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20  ct instance..   
1ecb0 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61       /// associa
1ecc0 74 65 64 20 77 69 74 68 20 74 68 65 20 70 72 65  ted with the pre
1ecd0 76 69 6f 75 73 6c 79 20 6f 70 65 6e 65 64 20 76  viously opened v
1ece0 69 72 74 75 61 6c 20 74 61 62 6c 65 20 63 75 72  irtual table cur
1ecf0 73 6f 72 20 74 6f 20 62 65 0d 0a 20 20 20 20 20  sor to be..     
1ed00 20 20 20 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20 20     /// used...  
1ed10 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1ed20 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
1ed30 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64  <param name="ind
1ed40 65 78 4e 75 6d 62 65 72 22 3e 0d 0a 20 20 20 20  exNumber">..    
1ed50 20 20 20 20 2f 2f 2f 20 4e 75 6d 62 65 72 20 75      /// Number u
1ed60 73 65 64 20 74 6f 20 68 65 6c 70 20 69 64 65 6e  sed to help iden
1ed70 74 69 66 79 20 74 68 65 20 73 65 6c 65 63 74 65  tify the selecte
1ed80 64 20 69 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20  d index...      
1ed90 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
1eda0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1edb0 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78 53 74  am name="indexSt
1edc0 72 69 6e 67 22 3e 0d 0a 20 20 20 20 20 20 20 20  ring">..        
1edd0 2f 2f 2f 20 53 74 72 69 6e 67 20 75 73 65 64 20  /// String used 
1ede0 74 6f 20 68 65 6c 70 20 69 64 65 6e 74 69 66 79  to help identify
1edf0 20 74 68 65 20 73 65 6c 65 63 74 65 64 20 69 6e   the selected in
1ee00 64 65 78 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  dex...        //
1ee10 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1ee20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1ee30 61 6d 65 3d 22 76 61 6c 75 65 73 22 3e 0d 0a 20  ame="values">.. 
1ee40 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76         /// The v
1ee50 61 6c 75 65 73 20 63 6f 72 72 65 73 70 6f 6e 64  alues correspond
1ee60 69 6e 67 20 74 6f 20 65 61 63 68 20 63 6f 6c 75  ing to each colu
1ee70 6d 6e 20 69 6e 20 74 68 65 20 73 65 6c 65 63 74  mn in the select
1ee80 65 64 20 69 6e 64 65 78 2e 0d 0a 20 20 20 20 20  ed index...     
1ee90 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1eea0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
1eeb0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
1eec0 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53  /// A standard S
1eed0 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64  QLite return cod
1eee0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
1eef0 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
1ef00 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43      SQLiteErrorC
1ef10 6f 64 65 20 46 69 6c 74 65 72 28 0d 0a 20 20 20  ode Filter(..   
1ef20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56           SQLiteV
1ef30 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f  irtualTableCurso
1ef40 72 20 63 75 72 73 6f 72 2c 20 2f 2a 20 69 6e 20  r cursor, /* in 
1ef50 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
1ef60 69 6e 74 20 69 6e 64 65 78 4e 75 6d 62 65 72 2c  int indexNumber,
1ef70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ef80 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
1ef90 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 69 6e         string in
1efa0 64 65 78 53 74 72 69 6e 67 2c 20 20 20 20 20 20  dexString,      
1efb0 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f          /* in */
1efc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
1efd0 4c 69 74 65 56 61 6c 75 65 5b 5d 20 76 61 6c 75  LiteValue[] valu
1efe0 65 73 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  es             /
1eff0 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
1f000 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20       );....     
1f010 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1f020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1f060 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
1f070 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1f080 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20   This method is 
1f090 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e  called in respon
1f0a0 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20  se to the..     
1f0b0 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
1f0c0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
1f0d0 6f 64 75 6c 65 2e 78 4e 65 78 74 22 20 2f 3e 20  odule.xNext" /> 
1f0e0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
1f0f0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1f100 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1f110 72 61 6d 20 6e 61 6d 65 3d 22 63 75 72 73 6f 72  ram name="cursor
1f120 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
1f130 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
1f140 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
1f150 65 43 75 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65  eCursor" /> obje
1f160 63 74 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20  ct instance..   
1f170 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61       /// associa
1f180 74 65 64 20 77 69 74 68 20 74 68 65 20 70 72 65  ted with the pre
1f190 76 69 6f 75 73 6c 79 20 6f 70 65 6e 65 64 20 76  viously opened v
1f1a0 69 72 74 75 61 6c 20 74 61 62 6c 65 20 63 75 72  irtual table cur
1f1b0 73 6f 72 20 74 6f 20 62 65 0d 0a 20 20 20 20 20  sor to be..     
1f1c0 20 20 20 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20 20     /// used...  
1f1d0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1f1e0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
1f1f0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
1f200 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72     /// A standar
1f210 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20  d SQLite return 
1f220 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  code...        /
1f230 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
1f240 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72         SQLiteErr
1f250 6f 72 43 6f 64 65 20 4e 65 78 74 28 0d 0a 20 20  orCode Next(..  
1f260 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
1f270 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73  VirtualTableCurs
1f280 6f 72 20 63 75 72 73 6f 72 20 2f 2a 20 69 6e 20  or cursor /* in 
1f290 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
1f2a0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  );....        //
1f2b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f2c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f2d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f2e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f2f0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1f300 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1f310 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
1f320 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65   method is calle
1f330 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f  d in response to
1f340 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
1f350 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  / <see cref="ISQ
1f360 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
1f370 2e 78 45 6f 66 22 20 2f 3e 20 6d 65 74 68 6f 64  .xEof" /> method
1f380 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1f390 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1f3a0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1f3b0 6d 65 3d 22 63 75 72 73 6f 72 22 3e 0d 0a 20 20  me="cursor">..  
1f3c0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
1f3d0 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56  ee cref="SQLiteV
1f3e0 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f  irtualTableCurso
1f3f0 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  r" /> object ins
1f400 74 61 6e 63 65 0d 0a 20 20 20 20 20 20 20 20 2f  tance..        /
1f410 2f 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  // associated wi
1f420 74 68 20 74 68 65 20 70 72 65 76 69 6f 75 73 6c  th the previousl
1f430 79 20 6f 70 65 6e 65 64 20 76 69 72 74 75 61 6c  y opened virtual
1f440 20 74 61 62 6c 65 20 63 75 72 73 6f 72 20 74 6f   table cursor to
1f450 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   be..        ///
1f460 20 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20   used...        
1f470 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1f480 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
1f490 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
1f4a0 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 6e 6f 20   Non-zero if no 
1f4b0 6d 6f 72 65 20 72 6f 77 73 20 61 72 65 20 61 76  more rows are av
1f4c0 61 69 6c 61 62 6c 65 3b 20 7a 65 72 6f 20 6f 74  ailable; zero ot
1f4d0 68 65 72 77 69 73 65 2e 0d 0a 20 20 20 20 20 20  herwise...      
1f4e0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
1f4f0 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 45  ..        bool E
1f500 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  of(..           
1f510 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
1f520 62 6c 65 43 75 72 73 6f 72 20 63 75 72 73 6f 72  bleCursor cursor
1f530 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
1f540 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20         );....   
1f550 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1f560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1f5a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
1f5b0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1f5c0 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69  // This method i
1f5d0 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70  s called in resp
1f5e0 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20  onse to the..   
1f5f0 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
1f600 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
1f610 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 22  eModule.xColumn"
1f620 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
1f630 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1f640 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1f650 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 75   <param name="cu
1f660 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20  rsor">..        
1f670 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
1f680 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c  f="SQLiteVirtual
1f690 54 61 62 6c 65 43 75 72 73 6f 72 22 20 2f 3e 20  TableCursor" /> 
1f6a0 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 0d  object instance.
1f6b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 73 73  .        /// ass
1f6c0 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65  ociated with the
1f6d0 20 70 72 65 76 69 6f 75 73 6c 79 20 6f 70 65 6e   previously open
1f6e0 65 64 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  ed virtual table
1f6f0 20 63 75 72 73 6f 72 20 74 6f 20 62 65 0d 0a 20   cursor to be.. 
1f700 20 20 20 20 20 20 20 2f 2f 2f 20 75 73 65 64 2e         /// used.
1f710 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1f720 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1f730 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1f740 22 63 6f 6e 74 65 78 74 22 3e 0d 0a 20 20 20 20  "context">..    
1f750 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
1f760 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e   cref="SQLiteCon
1f770 74 65 78 74 22 20 2f 3e 20 6f 62 6a 65 63 74 20  text" /> object 
1f780 69 6e 73 74 61 6e 63 65 20 74 6f 20 62 65 20 75  instance to be u
1f790 73 65 64 20 66 6f 72 0d 0a 20 20 20 20 20 20 20  sed for..       
1f7a0 20 2f 2f 2f 20 72 65 74 75 72 6e 69 6e 67 20 74   /// returning t
1f7b0 68 65 20 73 70 65 63 69 66 69 65 64 20 63 6f 6c  he specified col
1f7c0 75 6d 6e 20 76 61 6c 75 65 20 74 6f 20 74 68 65  umn value to the
1f7d0 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62   SQLite core lib
1f7e0 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f  rary...        /
1f7f0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1f800 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1f810 6e 61 6d 65 3d 22 69 6e 64 65 78 22 3e 0d 0a 20  name="index">.. 
1f820 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 7a         /// The z
1f830 65 72 6f 2d 62 61 73 65 64 20 69 6e 64 65 78 20  ero-based index 
1f840 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f  corresponding to
1f850 20 74 68 65 20 63 6f 6c 75 6d 6e 20 63 6f 6e 74   the column cont
1f860 61 69 6e 69 6e 67 20 74 68 65 0d 0a 20 20 20 20  aining the..    
1f870 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 20 74 6f      /// value to
1f880 20 62 65 20 72 65 74 75 72 6e 65 64 2e 0d 0a 20   be returned... 
1f890 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1f8a0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1f8b0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
1f8c0 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61      /// A standa
1f8d0 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e  rd SQLite return
1f8e0 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
1f8f0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
1f900 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72          SQLiteEr
1f910 72 6f 72 43 6f 64 65 20 43 6f 6c 75 6d 6e 28 0d  rorCode Column(.
1f920 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
1f930 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43  iteVirtualTableC
1f940 75 72 73 6f 72 20 63 75 72 73 6f 72 2c 20 2f 2a  ursor cursor, /*
1f950 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
1f960 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 74 65 78      SQLiteContex
1f970 74 20 63 6f 6e 74 65 78 74 2c 20 20 20 20 20 20  t context,      
1f980 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20       /* in */.. 
1f990 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69             int i
1f9a0 6e 64 65 78 20 20 20 20 20 20 20 20 20 20 20 20  ndex            
1f9b0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69              /* i
1f9c0 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
1f9d0 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    );....        
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 2f 2f 2f 2f 2f 2f  ////////////////
1fa20 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1fa30 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1fa40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1fa50 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c  is method is cal
1fa60 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20  led in response 
1fa70 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
1fa80 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
1fa90 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
1faa0 6c 65 2e 78 52 6f 77 49 64 22 20 2f 3e 20 6d 65  le.xRowId" /> me
1fab0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  thod...        /
1fac0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1fad0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1fae0 6d 20 6e 61 6d 65 3d 22 63 75 72 73 6f 72 22 3e  m name="cursor">
1faf0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1fb00 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
1fb10 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43  iteVirtualTableC
1fb20 75 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65 63 74  ursor" /> object
1fb30 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20 20   instance..     
1fb40 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65     /// associate
1fb50 64 20 77 69 74 68 20 74 68 65 20 70 72 65 76 69  d with the previ
1fb60 6f 75 73 6c 79 20 6f 70 65 6e 65 64 20 76 69 72  ously opened vir
1fb70 74 75 61 6c 20 74 61 62 6c 65 20 63 75 72 73 6f  tual table curso
1fb80 72 20 74 6f 20 62 65 0d 0a 20 20 20 20 20 20 20  r to be..       
1fb90 20 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20 20 20 20   /// used...    
1fba0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1fbb0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1fbc0 61 72 61 6d 20 6e 61 6d 65 3d 22 72 6f 77 49 64  aram name="rowId
1fbd0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
1fbe0 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68  Upon success, th
1fbf0 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73  is parameter mus
1fc00 74 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f  t be modified to
1fc10 20 63 6f 6e 74 61 69 6e 20 74 68 65 20 75 6e 69   contain the uni
1fc20 71 75 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  que..        ///
1fc30 20 69 6e 74 65 67 65 72 20 72 6f 77 20 69 64 65   integer row ide
1fc40 6e 74 69 66 69 65 72 20 66 6f 72 20 74 68 65 20  ntifier for the 
1fc50 63 75 72 72 65 6e 74 20 72 6f 77 20 66 6f 72 20  current row for 
1fc60 74 68 65 20 73 70 65 63 69 66 69 65 64 20 63 75  the specified cu
1fc70 72 73 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f  rsor...        /
1fc80 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1fc90 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
1fca0 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
1fcb0 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74  A standard SQLit
1fcc0 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a  e return code...
1fcd0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
1fce0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
1fcf0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1fd00 52 6f 77 49 64 28 0d 0a 20 20 20 20 20 20 20 20  RowId(..        
1fd10 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61      SQLiteVirtua
1fd20 6c 54 61 62 6c 65 43 75 72 73 6f 72 20 63 75 72  lTableCursor cur
1fd30 73 6f 72 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  sor, /* in */.. 
1fd40 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 6c             ref l
1fd50 6f 6e 67 20 72 6f 77 49 64 20 20 20 20 20 20 20  ong rowId       
1fd60 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 6f              /* o
1fd70 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ut */..         
1fd80 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20     );....       
1fd90 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1fda0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fdb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fdc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fdd0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1fde0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1fdf0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1fe00 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61  his method is ca
1fe10 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65  lled in response
1fe20 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20   to the..       
1fe30 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
1fe40 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
1fe50 75 6c 65 2e 78 55 70 64 61 74 65 22 20 2f 3e 20  ule.xUpdate" /> 
1fe60 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
1fe70 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1fe80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1fe90 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22  ram name="table"
1fea0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1feb0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
1fec0 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
1fed0 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
1fee0 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d  ance associated.
1fef0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74  .        /// wit
1ff00 68 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74  h this virtual t
1ff10 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  able...        /
1ff20 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1ff30 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1ff40 6e 61 6d 65 3d 22 76 61 6c 75 65 73 22 3e 0d 0a  name="values">..
1ff50 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1ff60 61 72 72 61 79 20 6f 66 20 3c 73 65 65 20 63 72  array of <see cr
1ff70 65 66 3d 22 53 51 4c 69 74 65 56 61 6c 75 65 22  ef="SQLiteValue"
1ff80 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
1ff90 6e 63 65 73 20 63 6f 6e 74 61 69 6e 69 6e 67 0d  nces containing.
1ffa0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  .        /// the
1ffb0 20 6e 65 77 20 6f 72 20 6d 6f 64 69 66 69 65 64   new or modified
1ffc0 20 63 6f 6c 75 6d 6e 20 76 61 6c 75 65 73 2c 20   column values, 
1ffd0 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20 20 20 20  if any...       
1ffe0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1fff0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
20000 6d 20 6e 61 6d 65 3d 22 72 6f 77 49 64 22 3e 0d  m name="rowId">.
20010 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f  .        /// Upo
20020 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69 73 20  n success, this 
20030 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62  parameter must b
20040 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f  e modified to co
20050 6e 74 61 69 6e 20 74 68 65 20 75 6e 69 71 75 65  ntain the unique
20060 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e  ..        /// in
20070 74 65 67 65 72 20 72 6f 77 20 69 64 65 6e 74 69  teger row identi
20080 66 69 65 72 20 66 6f 72 20 74 68 65 20 72 6f 77  fier for the row
20090 20 74 68 61 74 20 77 61 73 20 69 6e 73 65 72 74   that was insert
200a0 65 64 2c 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20  ed, if any...   
200b0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
200c0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
200d0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
200e0 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64    /// A standard
200f0 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63   SQLite return c
20100 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode...        //
20110 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
20120 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f        SQLiteErro
20130 72 43 6f 64 65 20 55 70 64 61 74 65 28 0d 0a 20  rCode Update(.. 
20140 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
20150 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61  eVirtualTable ta
20160 62 6c 65 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  ble, /* in */.. 
20170 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
20180 65 56 61 6c 75 65 5b 5d 20 76 61 6c 75 65 73 2c  eValue[] values,
20190 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20       /* in */.. 
201a0 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 6c             ref l
201b0 6f 6e 67 20 72 6f 77 49 64 20 20 20 20 20 20 20  ong rowId       
201c0 20 20 20 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a       /* out */..
201d0 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a              );..
201e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
201f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20230 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
20240 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
20250 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74      /// This met
20260 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e  hod is called in
20270 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65   response to the
20280 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
20290 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
202a0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65  NativeModule.xBe
202b0 67 69 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  gin" /> method..
202c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
202d0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
202e0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
202f0 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20  ="table">..     
20300 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
20310 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74  cref="SQLiteVirt
20320 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a  ualTable" /> obj
20330 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73  ect instance ass
20340 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20  ociated..       
20350 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20 76   /// with this v
20360 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20  irtual table... 
20370 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
20380 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
20390 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
203a0 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61      /// A standa
203b0 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e  rd SQLite return
203c0 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
203d0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
203e0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72          SQLiteEr
203f0 72 6f 72 43 6f 64 65 20 42 65 67 69 6e 28 0d 0a  rorCode Begin(..
20400 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
20410 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74  teVirtualTable t
20420 61 62 6c 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  able /* in */.. 
20430 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d             );...
20440 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
20450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20490 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
204a0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
204b0 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68     /// This meth
204c0 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20  od is called in 
204d0 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d  response to the.
204e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
204f0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
20500 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53 79 6e  ativeModule.xSyn
20510 63 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  c" /> method... 
20520 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
20530 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
20540 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
20550 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20  table">..       
20560 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
20570 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61  ef="SQLiteVirtua
20580 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63  lTable" /> objec
20590 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63  t instance assoc
205a0 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f  iated..        /
205b0 2f 2f 20 77 69 74 68 20 74 68 69 73 20 76 69 72  // with this vir
205c0 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20  tual table...   
205d0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
205e0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
205f0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
20600 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64    /// A standard
20610 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63   SQLite return c
20620 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode...        //
20630 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
20640 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f        SQLiteErro
20650 72 43 6f 64 65 20 53 79 6e 63 28 0d 0a 20 20 20  rCode Sync(..   
20660 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56           SQLiteV
20670 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c  irtualTable tabl
20680 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20  e /* in */..    
20690 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20          );....  
206a0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
206b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
206c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
206d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
206e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
206f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
20700 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
20710 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20  /// This method 
20720 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73  is called in res
20730 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20  ponse to the..  
20740 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
20750 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
20760 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74  veModule.xCommit
20770 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
20780 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
20790 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
207a0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74  / <param name="t
207b0 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  able">..        
207c0 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
207d0 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c  f="SQLiteVirtual
207e0 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74  Table" /> object
207f0 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69   instance associ
20800 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ated..        //
20810 2f 20 77 69 74 68 20 74 68 69 73 20 76 69 72 74  / with this virt
20820 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
20830 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
20840 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
20850 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
20860 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20   /// A standard 
20870 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f  SQLite return co
20880 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de...        ///
20890 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
208a0 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72       SQLiteError
208b0 43 6f 64 65 20 43 6f 6d 6d 69 74 28 0d 0a 20 20  Code Commit(..  
208c0 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
208d0 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62  VirtualTable tab
208e0 6c 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20  le /* in */..   
208f0 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20           );.... 
20900 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
20910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
20950 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
20960 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
20970 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64   /// This method
20980 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65   is called in re
20990 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20  sponse to the.. 
209a0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
209b0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
209c0 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62  iveModule.xRollb
209d0 61 63 6b 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ack" /> method..
209e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
209f0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
20a00 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
20a10 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20  ="table">..     
20a20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
20a30 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74  cref="SQLiteVirt
20a40 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a  ualTable" /> obj
20a50 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73  ect instance ass
20a60 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20  ociated..       
20a70 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20 76   /// with this v
20a80 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20  irtual table... 
20a90 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
20aa0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
20ab0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
20ac0 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61      /// A standa
20ad0 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e  rd SQLite return
20ae0 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
20af0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
20b00 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72          SQLiteEr
20b10 72 6f 72 43 6f 64 65 20 52 6f 6c 6c 62 61 63 6b  rorCode Rollback
20b20 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
20b30 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
20b40 65 20 74 61 62 6c 65 20 2f 2a 20 69 6e 20 2a 2f  e table /* in */
20b50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b  ..            );
20b60 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
20b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20bb0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
20bc0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
20bd0 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d        /// This m
20be0 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20  ethod is called 
20bf0 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74  in response to t
20c00 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
20c10 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
20c20 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
20c30 46 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e  FindFunction" />
20c40 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
20c50 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
20c60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
20c70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65  aram name="table
20c80 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
20c90 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
20ca0 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
20cb0 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  e" /> object ins
20cc0 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64  tance associated
20cd0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69  ..        /// wi
20ce0 74 68 20 74 68 69 73 20 76 69 72 74 75 61 6c 20  th this virtual 
20cf0 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20  table...        
20d00 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
20d10 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
20d20 20 6e 61 6d 65 3d 22 61 72 67 75 6d 65 6e 74 43   name="argumentC
20d30 6f 75 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20  ount">..        
20d40 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f  /// The number o
20d50 66 20 61 72 67 75 6d 65 6e 74 73 20 74 6f 20 74  f arguments to t
20d60 68 65 20 66 75 6e 63 74 69 6f 6e 20 62 65 69 6e  he function bein
20d70 67 20 73 6f 75 67 68 74 2e 0d 0a 20 20 20 20 20  g sought...     
20d80 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
20d90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
20da0 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e  ram name="name">
20db0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
20dc0 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 66 75  e name of the fu
20dd0 6e 63 74 69 6f 6e 20 62 65 69 6e 67 20 73 6f 75  nction being sou
20de0 67 68 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ght...        //
20df0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
20e00 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
20e10 61 6d 65 3d 22 66 75 6e 63 74 69 6f 6e 22 3e 0d  ame="function">.
20e20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f  .        /// Upo
20e30 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69 73 20  n success, this 
20e40 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62  parameter must b
20e50 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f  e modified to co
20e60 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20 20 20 20  ntain the..     
20e70 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
20e80 3d 22 53 51 4c 69 74 65 46 75 6e 63 74 69 6f 6e  ="SQLiteFunction
20e90 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
20ea0 61 6e 63 65 20 72 65 73 70 6f 6e 73 69 62 6c 65  ance responsible
20eb0 20 66 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f   for..        //
20ec0 2f 20 69 6d 70 6c 65 6d 65 6e 74 69 6e 67 20 74  / implementing t
20ed0 68 65 20 73 70 65 63 69 66 69 65 64 20 66 75 6e  he specified fun
20ee0 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ction...        
20ef0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
20f00 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
20f10 20 6e 61 6d 65 3d 22 70 43 6c 69 65 6e 74 44 61   name="pClientDa
20f20 74 61 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ta">..        //
20f30 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20  / Upon success, 
20f40 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d  this parameter m
20f50 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64 20  ust be modified 
20f60 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a  to contain the..
20f70 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 61 74 69          /// nati
20f80 76 65 20 75 73 65 72 2d 64 61 74 61 20 70 6f 69  ve user-data poi
20f90 6e 74 65 72 20 61 73 73 6f 63 69 61 74 65 64 20  nter associated 
20fa0 77 69 74 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f  with..        //
20fb0 2f 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65  / <paramref name
20fc0 3d 22 66 75 6e 63 74 69 6f 6e 22 20 2f 3e 2e 0d  ="function" />..
20fd0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
20fe0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
20ff0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
21000 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65        /// Non-ze
21010 72 6f 20 69 66 20 74 68 65 20 73 70 65 63 69 66  ro if the specif
21020 69 65 64 20 66 75 6e 63 74 69 6f 6e 20 77 61 73  ied function was
21030 20 66 6f 75 6e 64 3b 20 7a 65 72 6f 20 6f 74 68   found; zero oth
21040 65 72 77 69 73 65 2e 0d 0a 20 20 20 20 20 20 20  erwise...       
21050 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
21060 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 46 69  .        bool Fi
21070 6e 64 46 75 6e 63 74 69 6f 6e 28 0d 0a 20 20 20  ndFunction(..   
21080 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56           SQLiteV
21090 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c  irtualTable tabl
210a0 65 2c 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a  e,    /* in */..
210b0 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
210c0 61 72 67 75 6d 65 6e 74 43 6f 75 6e 74 2c 20 20  argumentCount,  
210d0 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a           /* in *
210e0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  /..            s
210f0 74 72 69 6e 67 20 6e 61 6d 65 2c 20 20 20 20 20  tring name,     
21100 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69              /* i
21110 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
21120 20 20 72 65 66 20 53 51 4c 69 74 65 46 75 6e 63    ref SQLiteFunc
21130 74 69 6f 6e 20 66 75 6e 63 74 69 6f 6e 2c 20 2f  tion function, /
21140 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20  * out */..      
21150 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72        ref IntPtr
21160 20 70 43 6c 69 65 6e 74 44 61 74 61 20 20 20 20   pClientData    
21170 20 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20     /* out */..  
21180 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a            );....
21190 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
211a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
211b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
211c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
211d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
211e0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
211f0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
21200 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
21210 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72  d is called in r
21220 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a  esponse to the..
21230 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
21240 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
21250 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6e 61  tiveModule.xRena
21260 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  me" /> method...
21270 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
21280 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
21290 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
212a0 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20  "table">..      
212b0 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
212c0 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75  ref="SQLiteVirtu
212d0 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65  alTable" /> obje
212e0 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f  ct instance asso
212f0 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20  ciated..        
21300 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20 76 69  /// with this vi
21310 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20  rtual table...  
21320 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
21330 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
21340 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 65 77  <param name="new
21350 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  Name">..        
21360 2f 2f 2f 20 54 68 65 20 6e 65 77 20 6e 61 6d 65  /// The new name
21370 20 66 6f 72 20 74 68 65 20 76 69 72 74 75 61 6c   for the virtual
21380 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20   table...       
21390 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
213a0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
213b0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
213c0 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c  / A standard SQL
213d0 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e  ite return code.
213e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
213f0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
21400 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64    SQLiteErrorCod
21410 65 20 52 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20  e Rename(..     
21420 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72         SQLiteVir
21430 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c  tualTable table,
21440 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
21450 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e 65         string ne
21460 77 4e 61 6d 65 20 20 20 20 20 20 20 20 20 20 20  wName           
21470 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
21480 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20         );....   
21490 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
214a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
214b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
214c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
214d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
214e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
214f0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
21500 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69  // This method i
21510 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70  s called in resp
21520 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20  onse to the..   
21530 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
21540 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
21550 65 4d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69  eModule.xSavepoi
21560 6e 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  nt" /> method...
21570 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
21580 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
21590 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
215a0 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20  "table">..      
215b0 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
215c0 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75  ref="SQLiteVirtu
215d0 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65  alTable" /> obje
215e0 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f  ct instance asso
215f0 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20  ciated..        
21600 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20 76 69  /// with this vi
21610 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20  rtual table...  
21620 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
21630 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
21640 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 61 76  <param name="sav
21650 65 70 6f 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20  epoint">..      
21660 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 61 6e    /// This is an
21670 20 69 6e 74 65 67 65 72 20 69 64 65 6e 74 69 66   integer identif
21680 69 65 72 20 75 6e 64 65 72 20 77 68 69 63 68 20  ier under which 
21690 74 68 65 20 74 68 65 20 63 75 72 72 65 6e 74 20  the the current 
216a0 73 74 61 74 65 20 6f 66 0d 0a 20 20 20 20 20 20  state of..      
216b0 20 20 2f 2f 2f 20 74 68 65 20 76 69 72 74 75 61    /// the virtua
216c0 6c 20 74 61 62 6c 65 20 73 68 6f 75 6c 64 20 62  l table should b
216d0 65 20 73 61 76 65 64 2e 0d 0a 20 20 20 20 20 20  e saved...      
216e0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
216f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
21700 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
21710 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51  // A standard SQ
21720 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65  Lite return code
21730 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
21740 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
21750 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f     SQLiteErrorCo
21760 64 65 20 53 61 76 65 70 6f 69 6e 74 28 0d 0a 20  de Savepoint(.. 
21770 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
21780 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61  eVirtualTable ta
21790 62 6c 65 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  ble, /* in */.. 
217a0 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 73             int s
217b0 61 76 65 70 6f 69 6e 74 20 20 20 20 20 20 20 20  avepoint        
217c0 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20       /* in */.. 
217d0 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d             );...
217e0 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f  ////////////////
21810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21830 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
21840 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
21850 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68     /// This meth
21860 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20  od is called in 
21870 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d  response to the.
21880 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
21890 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
218a0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6c  ativeModule.xRel
218b0 65 61 73 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  ease" /> method.
218c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
218d0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
218e0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
218f0 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20  e="table">..    
21900 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
21910 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72   cref="SQLiteVir
21920 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62  tualTable" /> ob
21930 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73  ject instance as
21940 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20  sociated..      
21950 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20    /// with this 
21960 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a  virtual table...
21970 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
21980 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
21990 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73  / <param name="s
219a0 61 76 65 70 6f 69 6e 74 22 3e 0d 0a 20 20 20 20  avepoint">..    
219b0 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20      /// This is 
219c0 61 6e 20 69 6e 74 65 67 65 72 20 75 73 65 64 20  an integer used 
219d0 74 6f 20 69 6e 64 69 63 61 74 65 20 74 68 61 74  to indicate that
219e0 20 61 6e 79 20 73 61 76 65 64 20 73 74 61 74 65   any saved state
219f0 73 20 77 69 74 68 20 61 6e 0d 0a 20 20 20 20 20  s with an..     
21a00 20 20 20 2f 2f 2f 20 69 64 65 6e 74 69 66 69 65     /// identifie
21a10 72 20 67 72 65 61 74 65 72 20 74 68 61 6e 20 6f  r greater than o
21a20 72 20 65 71 75 61 6c 20 74 6f 20 74 68 69 73 20  r equal to this 
21a30 73 68 6f 75 6c 64 20 62 65 20 64 65 6c 65 74 65  should be delete
21a40 64 20 62 79 20 74 68 65 0d 0a 20 20 20 20 20 20  d by the..      
21a50 20 20 2f 2f 2f 20 76 69 72 74 75 61 6c 20 74 61    /// virtual ta
21a60 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
21a70 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
21a80 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
21a90 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
21aa0 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
21ab0 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
21ac0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
21ad0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53  urns>..        S
21ae0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 52  QLiteErrorCode R
21af0 65 6c 65 61 73 65 28 0d 0a 20 20 20 20 20 20 20  elease(..       
21b00 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75       SQLiteVirtu
21b10 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c 20 2f  alTable table, /
21b20 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
21b30 20 20 20 20 20 69 6e 74 20 73 61 76 65 70 6f 69       int savepoi
21b40 6e 74 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  nt             /
21b50 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
21b60 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20       );....     
21b70 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
21b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
21bc0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
21bd0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
21be0 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20   This method is 
21bf0 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e  called in respon
21c00 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20  se to the..     
21c10 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
21c20 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
21c30 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54  odule.xRollbackT
21c40 6f 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  o" /> method... 
21c50 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
21c60 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
21c70 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
21c80 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20  table">..       
21c90 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
21ca0 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61  ef="SQLiteVirtua
21cb0 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63  lTable" /> objec
21cc0 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63  t instance assoc
21cd0 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f  iated..        /
21ce0 2f 2f 20 77 69 74 68 20 74 68 69 73 20 76 69 72  // with this vir
21cf0 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20  tual table...   
21d00 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
21d10 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
21d20 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 61 76 65  param name="save
21d30 70 6f 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20  point">..       
21d40 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 61 6e 20   /// This is an 
21d50 69 6e 74 65 67 65 72 20 69 64 65 6e 74 69 66 69  integer identifi
21d60 65 72 20 75 73 65 64 20 74 6f 20 73 70 65 63 69  er used to speci
21d70 66 79 20 61 20 73 70 65 63 69 66 69 63 20 73 61  fy a specific sa
21d80 76 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ved..        ///
21d90 20 73 74 61 74 65 20 66 6f 72 20 74 68 65 20 76   state for the v
21da0 69 72 74 75 61 6c 20 74 61 62 6c 65 20 66 6f 72  irtual table for
21db0 20 69 74 20 74 6f 20 72 65 73 74 6f 72 65 20 69   it to restore i
21dc0 74 73 65 6c 66 20 62 61 63 6b 20 74 6f 2c 20 77  tself back to, w
21dd0 68 69 63 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hich..        //
21de0 2f 20 73 68 6f 75 6c 64 20 61 6c 73 6f 20 68 61  / should also ha
21df0 76 65 20 74 68 65 20 65 66 66 65 63 74 20 6f 66  ve the effect of
21e00 20 64 65 6c 65 74 69 6e 67 20 61 6c 6c 20 73 61   deleting all sa
21e10 76 65 64 20 73 74 61 74 65 73 20 77 69 74 68 20  ved states with 
21e20 61 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  an..        /// 
21e30 69 6e 74 65 67 65 72 20 69 64 65 6e 74 69 66 69  integer identifi
21e40 65 72 20 67 72 65 61 74 65 72 20 74 68 61 6e 20  er greater than 
21e50 74 68 69 73 20 6f 6e 65 2e 0d 0a 20 20 20 20 20  this one...     
21e60 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
21e70 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
21e80 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
21e90 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53  /// A standard S
21ea0 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64  QLite return cod
21eb0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
21ec0 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
21ed0 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43      SQLiteErrorC
21ee0 6f 64 65 20 52 6f 6c 6c 62 61 63 6b 54 6f 28 0d  ode RollbackTo(.
21ef0 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
21f00 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20  iteVirtualTable 
21f10 74 61 62 6c 65 2c 20 2f 2a 20 69 6e 20 2a 2f 0d  table, /* in */.
21f20 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
21f30 20 73 61 76 65 70 6f 69 6e 74 20 20 20 20 20 20   savepoint      
21f40 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d         /* in */.
21f50 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d  .            );.
21f60 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64  .    }..    #end
21f70 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
21f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
21fd0 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 4d   #region SQLiteM
21fe0 65 6d 6f 72 79 20 53 74 61 74 69 63 20 43 6c 61  emory Static Cla
21ff0 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ss..    /// <sum
22000 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  mary>..    /// T
22010 68 69 73 20 63 6c 61 73 73 20 63 6f 6e 74 61 69  his class contai
22020 6e 73 20 73 74 61 74 69 63 20 6d 65 74 68 6f 64  ns static method
22030 73 20 74 68 61 74 20 61 72 65 20 75 73 65 64 20  s that are used 
22040 74 6f 20 61 6c 6c 6f 63 61 74 65 2c 0d 0a 20 20  to allocate,..  
22050 20 20 2f 2f 2f 20 6d 61 6e 69 70 75 6c 61 74 65    /// manipulate
22060 2c 20 61 6e 64 20 66 72 65 65 20 6e 61 74 69 76  , and free nativ
22070 65 20 6d 65 6d 6f 72 79 20 70 72 6f 76 69 64 65  e memory provide
22080 64 20 62 79 20 74 68 65 20 53 51 4c 69 74 65 20  d by the SQLite 
22090 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20  core library... 
220a0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
220b0 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  >..    internal 
220c0 73 74 61 74 69 63 20 63 6c 61 73 73 20 53 51 4c  static class SQL
220d0 69 74 65 4d 65 6d 6f 72 79 0d 0a 20 20 20 20 7b  iteMemory..    {
220e0 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
220f0 6e 20 50 72 69 76 61 74 65 20 44 61 74 61 0d 0a  n Private Data..
22100 23 69 66 20 54 52 41 43 4b 5f 4d 45 4d 4f 52 59  #if TRACK_MEMORY
22110 5f 42 59 54 45 53 0d 0a 20 20 20 20 20 20 20 20  _BYTES..        
22120 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
22130 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
22140 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
22150 69 73 20 75 73 65 64 20 74 6f 20 73 79 6e 63 68  is used to synch
22160 72 6f 6e 69 7a 65 20 61 63 63 65 73 73 20 74 6f  ronize access to
22170 20 74 68 65 20 6f 74 68 65 72 0d 0a 20 20 20 20   the other..    
22180 20 20 20 20 2f 2f 2f 20 73 74 61 74 69 63 20 66      /// static f
22190 69 65 6c 64 73 20 6f 66 20 74 68 69 73 20 63 6c  ields of this cl
221a0 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ass...        //
221b0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
221c0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
221d0 61 74 69 63 20 6f 62 6a 65 63 74 20 73 79 6e 63  atic object sync
221e0 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63  Root = new objec
221f0 74 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  t();....        
22200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22240 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
22250 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
22260 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
22270 65 20 74 6f 74 61 6c 20 6e 75 6d 62 65 72 20 6f  e total number o
22280 66 20 6f 75 74 73 74 61 6e 64 69 6e 67 20 6d 65  f outstanding me
22290 6d 6f 72 79 20 62 79 74 65 73 20 61 6c 6c 6f 63  mory bytes alloc
222a0 61 74 65 64 20 62 79 20 74 68 69 73 0d 0a 20 20  ated by this..  
222b0 20 20 20 20 20 20 2f 2f 2f 20 63 6c 61 73 73 20        /// class 
222c0 75 73 69 6e 67 20 74 68 65 20 53 51 4c 69 74 65  using the SQLite
222d0 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a   core library...
222e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
222f0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
22300 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 69  private static i
22310 6e 74 20 62 79 74 65 73 41 6c 6c 6f 63 61 74 65  nt bytesAllocate
22320 64 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  d;....        //
22330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22370 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
22380 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
22390 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
223a0 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f  maximum number o
223b0 66 20 6f 75 74 73 74 61 6e 64 69 6e 67 20 6d 65  f outstanding me
223c0 6d 6f 72 79 20 62 79 74 65 73 20 65 76 65 72 20  mory bytes ever 
223d0 61 6c 6c 6f 63 61 74 65 64 20 62 79 0d 0a 20 20  allocated by..  
223e0 20 20 20 20 20 20 2f 2f 2f 20 74 68 69 73 20 63        /// this c
223f0 6c 61 73 73 20 75 73 69 6e 67 20 74 68 65 20 53  lass using the S
22400 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
22410 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry...        ///
22420 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
22430 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
22440 74 69 63 20 69 6e 74 20 6d 61 78 69 6d 75 6d 42  tic int maximumB
22450 79 74 65 73 41 6c 6c 6f 63 61 74 65 64 3b 0d 0a  ytesAllocated;..
22460 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
22470 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
22480 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
22490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
224a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
224b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
224c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
224d0 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
224e0 20 4d 65 6d 6f 72 79 20 41 6c 6c 6f 63 61 74 69   Memory Allocati
224f0 6f 6e 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64  on Helper Method
22500 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
22510 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
22520 20 20 2f 2f 2f 20 41 6c 6c 6f 63 61 74 65 73 20    /// Allocates 
22530 61 74 20 6c 65 61 73 74 20 74 68 65 20 73 70 65  at least the spe
22540 63 69 66 69 65 64 20 6e 75 6d 62 65 72 20 6f 66  cified number of
22550 20 62 79 74 65 73 20 6f 66 20 6e 61 74 69 76 65   bytes of native
22560 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20 20   memory..       
22570 20 2f 2f 2f 20 76 69 61 20 74 68 65 20 53 51 4c   /// via the SQL
22580 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
22590 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28   sqlite3_malloc(
225a0 29 20 66 75 6e 63 74 69 6f 6e 20 61 6e 64 20 72  ) function and r
225b0 65 74 75 72 6e 73 0d 0a 20 20 20 20 20 20 20 20  eturns..        
225c0 2f 2f 2f 20 74 68 65 20 72 65 73 75 6c 74 69 6e  /// the resultin
225d0 67 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  g native pointer
225e0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
225f0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
22600 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
22610 6d 65 3d 22 73 69 7a 65 22 3e 0d 0a 20 20 20 20  me="size">..    
22620 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62      /// The numb
22630 65 72 20 6f 66 20 62 79 74 65 73 20 74 6f 20 61  er of bytes to a
22640 6c 6c 6f 63 61 74 65 2e 0d 0a 20 20 20 20 20 20  llocate...      
22650 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
22660 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
22670 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
22680 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f  // The native po
22690 69 6e 74 65 72 20 74 68 61 74 20 70 6f 69 6e 74  inter that point
226a0 73 20 74 6f 20 61 20 62 6c 6f 63 6b 20 6f 66 20  s to a block of 
226b0 6d 65 6d 6f 72 79 20 6f 66 20 61 74 20 6c 65 61  memory of at lea
226c0 73 74 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  st the..        
226d0 2f 2f 2f 20 73 70 65 63 69 66 69 65 64 20 73 69  /// specified si
226e0 7a 65 20 2d 4f 52 2d 20 3c 73 65 65 20 63 72 65  ze -OR- <see cre
226f0 66 3d 22 49 6e 74 50 74 72 2e 5a 65 72 6f 22 20  f="IntPtr.Zero" 
22700 2f 3e 20 69 66 20 74 68 65 20 6d 65 6d 6f 72 79  /> if the memory
22710 20 63 6f 75 6c 64 0d 0a 20 20 20 20 20 20 20 20   could..        
22720 2f 2f 2f 20 6e 6f 74 20 62 65 20 61 6c 6c 6f 63  /// not be alloc
22730 61 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ated...        /
22740 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
22750 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
22760 61 74 69 63 20 49 6e 74 50 74 72 20 41 6c 6c 6f  atic IntPtr Allo
22770 63 61 74 65 28 69 6e 74 20 73 69 7a 65 29 0d 0a  cate(int size)..
22780 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
22790 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 4d         IntPtr pM
227a0 65 6d 6f 72 79 20 3d 20 55 6e 73 61 66 65 4e 61  emory = UnsafeNa
227b0 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
227c0 74 65 33 5f 6d 61 6c 6c 6f 63 28 73 69 7a 65 29  te3_malloc(size)
227d0 3b 0d 0a 0d 0a 23 69 66 20 54 52 41 43 4b 5f 4d  ;....#if TRACK_M
227e0 45 4d 4f 52 59 5f 42 59 54 45 53 0d 0a 20 20 20  EMORY_BYTES..   
227f0 20 20 20 20 20 20 20 20 20 69 66 20 28 70 4d 65           if (pMe
22800 6d 6f 72 79 20 21 3d 20 49 6e 74 50 74 72 2e 5a  mory != IntPtr.Z
22810 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
22820 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
22830 20 20 20 20 20 69 6e 74 20 62 6c 6f 63 6b 53 69       int blockSi
22840 7a 65 20 3d 20 53 69 7a 65 28 70 4d 65 6d 6f 72  ze = Size(pMemor
22850 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
22860 20 20 20 20 20 20 20 69 66 20 28 62 6c 6f 63 6b         if (block
22870 53 69 7a 65 20 3e 20 30 29 0d 0a 20 20 20 20 20  Size > 0)..     
22880 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
22890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
228a0 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
228b0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
228c0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
228d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
228e0 20 20 62 79 74 65 73 41 6c 6c 6f 63 61 74 65 64    bytesAllocated
228f0 20 2b 3d 20 62 6c 6f 63 6b 53 69 7a 65 3b 0d 0a   += blockSize;..
22900 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22910 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 79            if (by
22920 74 65 73 41 6c 6c 6f 63 61 74 65 64 20 3e 20 6d  tesAllocated > m
22930 61 78 69 6d 75 6d 42 79 74 65 73 41 6c 6c 6f 63  aximumBytesAlloc
22940 61 74 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20  ated)..         
22950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22960 20 20 20 6d 61 78 69 6d 75 6d 42 79 74 65 73 41     maximumBytesA
22970 6c 6c 6f 63 61 74 65 64 20 3d 20 62 79 74 65 73  llocated = bytes
22980 41 6c 6c 6f 63 61 74 65 64 3b 0d 0a 20 20 20 20  Allocated;..    
22990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
229a0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
229b0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
229c0 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20    }..#endif.... 
229d0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
229e0 6e 20 70 4d 65 6d 6f 72 79 3b 0d 0a 20 20 20 20  n pMemory;..    
229f0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
22a00 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
22a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22a40 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
22a50 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
22a60 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 47  >..        /// G
22a70 65 74 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20  ets and returns 
22a80 74 68 65 20 61 63 74 75 61 6c 20 73 69 7a 65 20  the actual size 
22a90 6f 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64  of the specified
22aa0 20 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b 20 74 68   memory block th
22ab0 61 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  at..        /// 
22ac0 77 61 73 20 70 72 65 76 69 6f 75 73 6c 79 20 6f  was previously o
22ad0 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 74 68 65  btained from the
22ae0 20 3c 73 65 65 20 63 72 65 66 3d 22 41 6c 6c 6f   <see cref="Allo
22af0 63 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  cate" /> method.
22b00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
22b10 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
22b20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
22b30 65 3d 22 70 4d 65 6d 6f 72 79 22 3e 0d 0a 20 20  e="pMemory">..  
22b40 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
22b50 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
22b60 74 68 65 20 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b  the memory block
22b70 20 70 72 65 76 69 6f 75 73 6c 79 20 6f 62 74 61   previously obta
22b80 69 6e 65 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20  ined from the.. 
22b90 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
22ba0 63 72 65 66 3d 22 41 6c 6c 6f 63 61 74 65 22 20  cref="Allocate" 
22bb0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
22bc0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
22bd0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
22be0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
22bf0 20 2f 2f 2f 20 54 68 65 20 61 63 74 75 61 6c 20   /// The actual 
22c00 73 69 7a 65 2c 20 69 6e 20 62 79 74 65 73 2c 20  size, in bytes, 
22c10 6f 66 20 74 68 65 20 6d 65 6d 6f 72 79 20 62 6c  of the memory bl
22c20 6f 63 6b 20 73 70 65 63 69 66 69 65 64 20 76 69  ock specified vi
22c30 61 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  a the..        /
22c40 2f 2f 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  // native pointe
22c50 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
22c60 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
22c70 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
22c80 63 20 69 6e 74 20 53 69 7a 65 28 49 6e 74 50 74  c int Size(IntPt
22c90 72 20 70 4d 65 6d 6f 72 79 29 0d 0a 20 20 20 20  r pMemory)..    
22ca0 20 20 20 20 7b 0d 0a 23 69 66 20 21 53 51 4c 49      {..#if !SQLI
22cb0 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20  TE_STANDARD..   
22cc0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
22cd0 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
22ce0 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 61 6c 6c  ods.sqlite3_mall
22cf0 6f 63 5f 73 69 7a 65 5f 69 6e 74 65 72 6f 70 28  oc_size_interop(
22d00 70 4d 65 6d 6f 72 79 29 3b 0d 0a 23 65 6c 69 66  pMemory);..#elif
22d10 20 54 52 41 43 4b 5f 4d 45 4d 4f 52 59 5f 42 59   TRACK_MEMORY_BY
22d20 54 45 53 0d 0a 20 20 20 20 20 20 20 20 20 20 20  TES..           
22d30 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
22d40 20 2f 2f 20 48 41 43 4b 3a 20 4f 6b 2c 20 77 65   // HACK: Ok, we
22d50 20 63 61 6e 6e 6f 74 20 64 65 74 65 72 6d 69 6e   cannot determin
22d60 65 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68  e the size of th
22d70 65 20 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b 3b 0d  e memory block;.
22d80 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  .            // 
22d90 20 20 20 20 20 20 74 68 65 72 65 66 6f 72 65 2c        therefore,
22da0 20 6a 75 73 74 20 74 72 61 63 6b 20 6e 75 6d 62   just track numb
22db0 65 72 20 6f 66 20 61 6c 6c 6f 63 61 74 69 6f 6e  er of allocation
22dc0 73 20 69 6e 73 74 65 61 64 2e 0d 0a 20 20 20 20  s instead...    
22dd0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
22de0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
22df0 70 4d 65 6d 6f 72 79 20 21 3d 20 49 6e 74 50 74  pMemory != IntPt
22e00 72 2e 5a 65 72 6f 29 20 3f 20 31 20 3a 20 30 3b  r.Zero) ? 1 : 0;
22e10 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
22e20 20 20 20 20 20 72 65 74 75 72 6e 20 30 3b 0d 0a       return 0;..
22e30 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
22e40 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
22e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22e90 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
22ea0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
22eb0 20 20 20 20 20 20 20 2f 2f 2f 20 46 72 65 65 73         /// Frees
22ec0 20 61 20 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b 20   a memory block 
22ed0 70 72 65 76 69 6f 75 73 6c 79 20 6f 62 74 61 69  previously obtai
22ee0 6e 65 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20  ned from the..  
22ef0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
22f00 72 65 66 3d 22 41 6c 6c 6f 63 61 74 65 22 20 2f  ref="Allocate" /
22f10 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
22f20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
22f30 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
22f40 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 4d 65 6d  param name="pMem
22f50 6f 72 79 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ory">..        /
22f60 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f  // The native po
22f70 69 6e 74 65 72 20 74 6f 20 74 68 65 20 6d 65 6d  inter to the mem
22f80 6f 72 79 20 62 6c 6f 63 6b 20 70 72 65 76 69 6f  ory block previo
22f90 75 73 6c 79 20 6f 62 74 61 69 6e 65 64 20 66 72  usly obtained fr
22fa0 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  om the..        
22fb0 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 41  /// <see cref="A
22fc0 6c 6c 6f 63 61 74 65 22 20 2f 3e 20 6d 65 74 68  llocate" /> meth
22fd0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  od...        ///
22fe0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
22ff0 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
23000 20 76 6f 69 64 20 46 72 65 65 28 49 6e 74 50 74   void Free(IntPt
23010 72 20 70 4d 65 6d 6f 72 79 29 0d 0a 20 20 20 20  r pMemory)..    
23020 20 20 20 20 7b 0d 0a 23 69 66 20 54 52 41 43 4b      {..#if TRACK
23030 5f 4d 45 4d 4f 52 59 5f 42 59 54 45 53 0d 0a 20  _MEMORY_BYTES.. 
23040 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
23050 4d 65 6d 6f 72 79 20 21 3d 20 49 6e 74 50 74 72  Memory != IntPtr
23060 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
23070 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
23080 20 20 20 20 20 20 20 69 6e 74 20 62 6c 6f 63 6b         int block
23090 53 69 7a 65 20 3d 20 53 69 7a 65 28 70 4d 65 6d  Size = Size(pMem
230a0 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
230b0 20 20 20 20 20 20 20 20 20 69 66 20 28 62 6c 6f           if (blo
230c0 63 6b 53 69 7a 65 20 3e 20 30 29 0d 0a 20 20 20  ckSize > 0)..   
230d0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
230e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
230f0 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
23100 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ot)..           
23110 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
23120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23130 20 20 20 20 62 79 74 65 73 41 6c 6c 6f 63 61 74      bytesAllocat
23140 65 64 20 2d 3d 20 62 6c 6f 63 6b 53 69 7a 65 3b  ed -= blockSize;
23150 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23160 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
23170 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
23180 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
23190 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  f....           
231a0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
231b0 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 66 72 65  hods.sqlite3_fre
231c0 65 28 70 4d 65 6d 6f 72 79 29 3b 0d 0a 20 20 20  e(pMemory);..   
231d0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
231e0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20  #endregion..    
231f0 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  }..    #endregio
23200 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  n....    ///////
23210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23250 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
23260 69 6f 6e 20 53 51 4c 69 74 65 53 74 72 69 6e 67  ion SQLiteString
23270 20 53 74 61 74 69 63 20 43 6c 61 73 73 0d 0a 20   Static Class.. 
23280 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
23290 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63  ..    /// This c
232a0 6c 61 73 73 20 63 6f 6e 74 61 69 6e 73 20 73 74  lass contains st
232b0 61 74 69 63 20 6d 65 74 68 6f 64 73 20 74 68 61  atic methods tha
232c0 74 20 61 72 65 20 75 73 65 64 20 74 6f 20 64 65  t are used to de
232d0 61 6c 20 77 69 74 68 20 6e 61 74 69 76 65 0d 0a  al with native..
232e0 20 20 20 20 2f 2f 2f 20 55 54 46 2d 38 20 73 74      /// UTF-8 st
232f0 72 69 6e 67 20 70 6f 69 6e 74 65 72 73 20 74 6f  ring pointers to
23300 20 62 65 20 75 73 65 64 20 77 69 74 68 20 74 68   be used with th
23310 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69  e SQLite core li
23320 62 72 61 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20  brary...    /// 
23330 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
23340 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
23350 63 6c 61 73 73 20 53 51 4c 69 74 65 53 74 72 69  class SQLiteStri
23360 6e 67 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ng..    {..     
23370 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
23380 74 65 20 43 6f 6e 73 74 61 6e 74 73 0d 0a 20 20  te Constants..  
23390 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
233a0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
233b0 20 54 68 69 73 20 69 73 20 74 68 65 20 6d 61 78   This is the max
233c0 69 6d 75 6d 20 70 6f 73 73 69 62 6c 65 20 6c 65  imum possible le
233d0 6e 67 74 68 20 66 6f 72 20 74 68 65 20 6e 61 74  ngth for the nat
233e0 69 76 65 20 55 54 46 2d 38 20 65 6e 63 6f 64 65  ive UTF-8 encode
233f0 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  d..        /// s
23400 74 72 69 6e 67 73 20 75 73 65 64 20 77 69 74 68  trings used with
23410 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
23420 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20   library...     
23430 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
23440 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
23450 74 65 20 73 74 61 74 69 63 20 69 6e 74 20 54 68  te static int Th
23460 69 72 74 79 42 69 74 73 20 3d 20 30 78 33 66 66  irtyBits = 0x3ff
23470 66 66 66 66 66 3b 0d 0a 0d 0a 20 20 20 20 20 20  fffff;....      
23480 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
23490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
234a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
234b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
234c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
234d0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
234e0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
234f0 54 68 69 73 20 69 73 20 74 68 65 20 3c 73 65 65  This is the <see
23500 20 63 72 65 66 3d 22 45 6e 63 6f 64 69 6e 67 22   cref="Encoding"
23510 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
23520 6e 63 65 20 75 73 65 64 20 74 6f 20 68 61 6e 64  nce used to hand
23530 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  le..        /// 
23540 63 6f 6e 76 65 72 73 69 6f 6e 73 20 66 72 6f 6d  conversions from
23550 2f 74 6f 20 55 54 46 2d 38 2e 0d 0a 20 20 20 20  /to UTF-8...    
23560 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
23570 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  y>..        priv
23580 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f  ate static reado
23590 6e 6c 79 20 45 6e 63 6f 64 69 6e 67 20 55 74 66  nly Encoding Utf
235a0 38 45 6e 63 6f 64 69 6e 67 20 3d 20 45 6e 63 6f  8Encoding = Enco
235b0 64 69 6e 67 2e 55 54 46 38 3b 0d 0a 20 20 20 20  ding.UTF8;..    
235c0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
235d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
235e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
235f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23620 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
23630 67 69 6f 6e 20 55 54 46 2d 38 20 45 6e 63 6f 64  gion UTF-8 Encod
23640 69 6e 67 20 48 65 6c 70 65 72 20 4d 65 74 68 6f  ing Helper Metho
23650 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
23660 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
23670 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20     /// Converts 
23680 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6d 61  the specified ma
23690 6e 61 67 65 64 20 73 74 72 69 6e 67 20 69 6e 74  naged string int
236a0 6f 20 74 68 65 20 55 54 46 2d 38 20 65 6e 63 6f  o the UTF-8 enco
236b0 64 69 6e 67 20 61 6e 64 0d 0a 20 20 20 20 20 20  ding and..      
236c0 20 20 2f 2f 2f 20 72 65 74 75 72 6e 73 20 74 68    /// returns th
236d0 65 20 61 72 72 61 79 20 6f 66 20 62 79 74 65 73  e array of bytes
236e0 20 63 6f 6e 74 61 69 6e 69 6e 67 20 69 74 73 20   containing its 
236f0 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 69  representation i
23700 6e 20 74 68 61 74 0d 0a 20 20 20 20 20 20 20 20  n that..        
23710 2f 2f 2f 20 65 6e 63 6f 64 69 6e 67 2e 0d 0a 20  /// encoding... 
23720 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
23730 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
23740 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
23750 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20  value">..       
23760 20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64   /// The managed
23770 20 73 74 72 69 6e 67 20 74 6f 20 63 6f 6e 76 65   string to conve
23780 72 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  rt...        ///
23790 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
237a0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
237b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
237c0 65 20 61 72 72 61 79 20 6f 66 20 62 79 74 65 73  e array of bytes
237d0 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20   containing the 
237e0 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f  representation o
237f0 66 20 74 68 65 20 6d 61 6e 61 67 65 64 0d 0a 20  f the managed.. 
23800 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 69 6e         /// strin
23810 67 20 69 6e 20 74 68 65 20 55 54 46 2d 38 20 65  g in the UTF-8 e
23820 6e 63 6f 64 69 6e 67 20 6f 72 20 6e 75 6c 6c 20  ncoding or null 
23830 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20  upon failure... 
23840 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
23850 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
23860 75 62 6c 69 63 20 73 74 61 74 69 63 20 62 79 74  ublic static byt
23870 65 5b 5d 20 47 65 74 55 74 66 38 42 79 74 65 73  e[] GetUtf8Bytes
23880 46 72 6f 6d 53 74 72 69 6e 67 28 0d 0a 20 20 20  FromString(..   
23890 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
238a0 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20  value..         
238b0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
238c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
238d0 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d  (value == null).
238e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
238f0 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d   return null;...
23900 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
23910 75 72 6e 20 55 74 66 38 45 6e 63 6f 64 69 6e 67  urn Utf8Encoding
23920 2e 47 65 74 42 79 74 65 73 28 76 61 6c 75 65 29  .GetBytes(value)
23930 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
23940 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
23950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
23990 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
239a0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
239b0 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 74    /// Converts t
239c0 68 65 20 73 70 65 63 69 66 69 65 64 20 61 72 72  he specified arr
239d0 61 79 20 6f 66 20 62 79 74 65 73 20 72 65 70 72  ay of bytes repr
239e0 65 73 65 6e 74 69 6e 67 20 61 20 73 74 72 69 6e  esenting a strin
239f0 67 20 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20  g in the..      
23a00 20 20 2f 2f 2f 20 55 54 46 2d 38 20 65 6e 63 6f    /// UTF-8 enco
23a10 64 69 6e 67 20 61 6e 64 20 72 65 74 75 72 6e 73  ding and returns
23a20 20 61 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e   a managed strin
23a30 67 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  g...        /// 
23a40 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
23a50 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
23a60 61 6d 65 3d 22 62 79 74 65 73 22 3e 0d 0a 20 20  ame="bytes">..  
23a70 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 72        /// The ar
23a80 72 61 79 20 6f 66 20 62 79 74 65 73 20 74 6f 20  ray of bytes to 
23a90 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20  convert...      
23aa0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
23ab0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
23ac0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
23ad0 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20 73  // The managed s
23ae0 74 72 69 6e 67 20 6f 72 20 6e 75 6c 6c 20 75 70  tring or null up
23af0 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20  on failure...   
23b00 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
23b10 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ns>..        pub
23b20 6c 69 63 20 73 74 61 74 69 63 20 73 74 72 69 6e  lic static strin
23b30 67 20 47 65 74 53 74 72 69 6e 67 46 72 6f 6d 55  g GetStringFromU
23b40 74 66 38 42 79 74 65 73 28 0d 0a 20 20 20 20 20  tf8Bytes(..     
23b50 20 20 20 20 20 20 20 62 79 74 65 5b 5d 20 62 79         byte[] by
23b60 74 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tes..           
23b70 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
23b80 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62             if (b
23b90 79 74 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  ytes == null).. 
23ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
23bb0 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 23  eturn null;....#
23bc0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
23bd0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
23be0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
23bf0 6e 20 55 74 66 38 45 6e 63 6f 64 69 6e 67 2e 47  n Utf8Encoding.G
23c00 65 74 53 74 72 69 6e 67 28 62 79 74 65 73 29 3b  etString(bytes);
23c10 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
23c20 20 20 20 20 20 72 65 74 75 72 6e 20 55 74 66 38       return Utf8
23c30 45 6e 63 6f 64 69 6e 67 2e 47 65 74 53 74 72 69  Encoding.GetStri
23c40 6e 67 28 62 79 74 65 73 2c 20 30 2c 20 62 79 74  ng(bytes, 0, byt
23c50 65 73 2e 4c 65 6e 67 74 68 29 3b 0d 0a 23 65 6e  es.Length);..#en
23c60 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
23c70 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
23c80 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
23c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23cd0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
23ce0 20 23 72 65 67 69 6f 6e 20 55 54 46 2d 38 20 53   #region UTF-8 S
23cf0 74 72 69 6e 67 20 48 65 6c 70 65 72 20 4d 65 74  tring Helper Met
23d00 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hods..        //
23d10 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
23d20 20 20 20 20 20 2f 2f 2f 20 50 72 6f 62 65 73 20       /// Probes 
23d30 61 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  a native pointer
23d40 20 74 6f 20 61 20 73 74 72 69 6e 67 20 69 6e 20   to a string in 
23d50 74 68 65 20 55 54 46 2d 38 20 65 6e 63 6f 64 69  the UTF-8 encodi
23d60 6e 67 20 66 6f 72 20 69 74 73 0d 0a 20 20 20 20  ng for its..    
23d70 20 20 20 20 2f 2f 2f 20 74 65 72 6d 69 6e 61 74      /// terminat
23d80 69 6e 67 20 4e 55 4c 20 63 68 61 72 61 63 74 65  ing NUL characte
23d90 72 2c 20 77 69 74 68 69 6e 20 74 68 65 20 73 70  r, within the sp
23da0 65 63 69 66 69 65 64 20 6c 65 6e 67 74 68 20 6c  ecified length l
23db0 69 6d 69 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f  imit...        /
23dc0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
23dd0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
23de0 6d 20 6e 61 6d 65 3d 22 70 56 61 6c 75 65 22 3e  m name="pValue">
23df0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
23e00 65 20 6e 61 74 69 76 65 20 4e 55 4c 2d 74 65 72  e native NUL-ter
23e10 6d 69 6e 61 74 65 64 20 73 74 72 69 6e 67 20 70  minated string p
23e20 6f 69 6e 74 65 72 2e 0d 0a 20 20 20 20 20 20 20  ointer...       
23e30 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
23e40 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
23e50 6d 20 6e 61 6d 65 3d 22 6c 69 6d 69 74 22 3e 0d  m name="limit">.
23e60 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
23e70 20 6d 61 78 69 6d 75 6d 20 6c 65 6e 67 74 68 20   maximum length 
23e80 6f 66 20 74 68 65 20 6e 61 74 69 76 65 20 73 74  of the native st
23e90 72 69 6e 67 2c 20 69 6e 20 62 79 74 65 73 2e 0d  ring, in bytes..
23ea0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
23eb0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
23ec0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
23ed0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6c 65        /// The le
23ee0 6e 67 74 68 20 6f 66 20 74 68 65 20 6e 61 74 69  ngth of the nati
23ef0 76 65 20 73 74 72 69 6e 67 2c 20 69 6e 20 62 79  ve string, in by
23f00 74 65 73 20 2d 4f 52 2d 20 7a 65 72 6f 20 69 66  tes -OR- zero if
23f10 20 74 68 65 20 6c 65 6e 67 74 68 0d 0a 20 20 20   the length..   
23f20 20 20 20 20 20 2f 2f 2f 20 63 6f 75 6c 64 20 6e       /// could n
23f30 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64  ot be determined
23f40 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
23f50 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
23f60 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
23f70 20 69 6e 74 20 50 72 6f 62 65 46 6f 72 55 74 66   int ProbeForUtf
23f80 38 42 79 74 65 4c 65 6e 67 74 68 28 0d 0a 20 20  8ByteLength(..  
23f90 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
23fa0 20 70 56 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20   pValue,..      
23fb0 20 20 20 20 20 20 69 6e 74 20 6c 69 6d 69 74 0d        int limit.
23fc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
23fd0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
23fe0 20 20 20 20 20 20 20 69 6e 74 20 6c 65 6e 67 74         int lengt
23ff0 68 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20  h = 0;....      
24000 20 20 20 20 20 20 69 66 20 28 28 70 56 61 6c 75        if ((pValu
24010 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e != IntPtr.Zero
24020 29 20 26 26 20 28 6c 69 6d 69 74 20 3e 20 30 29  ) && (limit > 0)
24030 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
24040 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24050 20 20 64 6f 0d 0a 20 20 20 20 20 20 20 20 20 20    do..          
24060 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
24070 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
24080 28 4d 61 72 73 68 61 6c 2e 52 65 61 64 42 79 74  (Marshal.ReadByt
24090 65 28 70 56 61 6c 75 65 2c 20 6c 65 6e 67 74 68  e(pValue, length
240a0 29 20 3d 3d 20 30 29 0d 0a 20 20 20 20 20 20 20  ) == 0)..       
240b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
240c0 20 62 72 65 61 6b 3b 0d 0a 0d 0a 20 20 20 20 20   break;....     
240d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
240e0 66 20 28 6c 65 6e 67 74 68 20 3e 3d 20 6c 69 6d  f (length >= lim
240f0 69 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  it)..           
24100 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65               bre
24110 61 6b 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ak;....         
24120 20 20 20 20 20 20 20 20 20 20 20 6c 65 6e 67 74             lengt
24130 68 2b 2b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  h++;..          
24140 20 20 20 20 20 20 7d 20 77 68 69 6c 65 20 28 74        } while (t
24150 72 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  rue);..         
24160 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
24170 20 20 20 20 72 65 74 75 72 6e 20 6c 65 6e 67 74      return lengt
24180 68 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  h;..        }...
24190 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
241a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
241b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
241c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
241d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
241e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
241f0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
24200 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20     /// Converts 
24210 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6e 61  the specified na
24220 74 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69 6e 61  tive NUL-termina
24230 74 65 64 20 55 54 46 2d 38 20 73 74 72 69 6e 67  ted UTF-8 string
24240 20 70 6f 69 6e 74 65 72 0d 0a 20 20 20 20 20 20   pointer..      
24250 20 20 2f 2f 2f 20 69 6e 74 6f 20 61 20 6d 61 6e    /// into a man
24260 61 67 65 64 20 73 74 72 69 6e 67 2e 0d 0a 20 20  aged string...  
24270 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
24280 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
24290 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
242a0 56 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20  Value">..       
242b0 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
242c0 4e 55 4c 2d 74 65 72 6d 69 6e 61 74 65 64 20 55  NUL-terminated U
242d0 54 46 2d 38 20 73 74 72 69 6e 67 20 70 6f 69 6e  TF-8 string poin
242e0 74 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ter...        //
242f0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
24300 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
24310 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
24320 68 65 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e  he managed strin
24330 67 20 6f 72 20 6e 75 6c 6c 20 75 70 6f 6e 20 66  g or null upon f
24340 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ailure...       
24350 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
24360 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
24370 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 53 74  static string St
24380 72 69 6e 67 46 72 6f 6d 55 74 66 38 49 6e 74 50  ringFromUtf8IntP
24390 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tr(..           
243a0 20 49 6e 74 50 74 72 20 70 56 61 6c 75 65 0d 0a   IntPtr pValue..
243b0 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
243c0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
243d0 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 74 72        return Str
243e0 69 6e 67 46 72 6f 6d 55 74 66 38 49 6e 74 50 74  ingFromUtf8IntPt
243f0 72 28 70 56 61 6c 75 65 2c 0d 0a 20 20 20 20 20  r(pValue,..     
24400 20 20 20 20 20 20 20 20 20 20 20 50 72 6f 62 65             Probe
24410 46 6f 72 55 74 66 38 42 79 74 65 4c 65 6e 67 74  ForUtf8ByteLengt
24420 68 28 70 56 61 6c 75 65 2c 20 54 68 69 72 74 79  h(pValue, Thirty
24430 42 69 74 73 29 29 3b 0d 0a 20 20 20 20 20 20 20  Bits));..       
24440 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
24450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24490 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
244a0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
244b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76          /// Conv
244c0 65 72 74 73 20 74 68 65 20 73 70 65 63 69 66 69  erts the specifi
244d0 65 64 20 6e 61 74 69 76 65 20 55 54 46 2d 38 20  ed native UTF-8 
244e0 73 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 20 6f  string pointer o
244f0 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64 0d  f the specified.
24500 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 65 6e  .        /// len
24510 67 74 68 20 69 6e 74 6f 20 61 20 6d 61 6e 61 67  gth into a manag
24520 65 64 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20  ed string...    
24530 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
24540 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
24550 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 61  <param name="pVa
24560 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  lue">..        /
24570 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 55 54  // The native UT
24580 46 2d 38 20 73 74 72 69 6e 67 20 70 6f 69 6e 74  F-8 string point
24590 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  er...        ///
245a0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
245b0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
245c0 6d 65 3d 22 6c 65 6e 67 74 68 22 3e 0d 0a 20 20  me="length">..  
245d0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6c 65        /// The le
245e0 6e 67 74 68 20 6f 66 20 74 68 65 20 6e 61 74 69  ngth of the nati
245f0 76 65 20 73 74 72 69 6e 67 2c 20 69 6e 20 62 79  ve string, in by
24600 74 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tes...        //
24610 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
24620 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
24630 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
24640 68 65 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e  he managed strin
24650 67 20 6f 72 20 6e 75 6c 6c 20 75 70 6f 6e 20 66  g or null upon f
24660 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ailure...       
24670 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
24680 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
24690 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 53 74  static string St
246a0 72 69 6e 67 46 72 6f 6d 55 74 66 38 49 6e 74 50  ringFromUtf8IntP
246b0 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tr(..           
246c0 20 49 6e 74 50 74 72 20 70 56 61 6c 75 65 2c 0d   IntPtr pValue,.
246d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
246e0 20 6c 65 6e 67 74 68 0d 0a 20 20 20 20 20 20 20   length..       
246f0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
24700 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
24710 66 20 28 70 56 61 6c 75 65 20 3d 3d 20 49 6e 74  f (pValue == Int
24720 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
24730 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
24740 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  n null;....     
24750 20 20 20 20 20 20 20 69 66 20 28 6c 65 6e 67 74         if (lengt
24760 68 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 20 20  h > 0)..        
24770 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
24780 20 20 20 20 20 20 20 62 79 74 65 5b 5d 20 62 79         byte[] by
24790 74 65 73 20 3d 20 6e 65 77 20 62 79 74 65 5b 6c  tes = new byte[l
247a0 65 6e 67 74 68 5d 3b 0d 0a 0d 0a 20 20 20 20 20  ength];....     
247b0 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68             Marsh
247c0 61 6c 2e 43 6f 70 79 28 70 56 61 6c 75 65 2c 20  al.Copy(pValue, 
247d0 62 79 74 65 73 2c 20 30 2c 20 6c 65 6e 67 74 68  bytes, 0, length
247e0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
247f0 20 20 20 20 20 20 72 65 74 75 72 6e 20 47 65 74        return Get
24800 53 74 72 69 6e 67 46 72 6f 6d 55 74 66 38 42 79  StringFromUtf8By
24810 74 65 73 28 62 79 74 65 73 29 3b 0d 0a 20 20 20  tes(bytes);..   
24820 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
24830 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
24840 20 53 74 72 69 6e 67 2e 45 6d 70 74 79 3b 0d 0a   String.Empty;..
24850 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
24860 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
24870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
248a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
248b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
248c0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
248d0 2f 2f 20 43 6f 6e 76 65 72 74 73 20 74 68 65 20  // Converts the 
248e0 73 70 65 63 69 66 69 65 64 20 6d 61 6e 61 67 65  specified manage
248f0 64 20 73 74 72 69 6e 67 20 69 6e 74 6f 20 61 20  d string into a 
24900 6e 61 74 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69  native NUL-termi
24910 6e 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f  nated..        /
24920 2f 2f 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20  // UTF-8 string 
24930 70 6f 69 6e 74 65 72 20 75 73 69 6e 67 20 6d 65  pointer using me
24940 6d 6f 72 79 20 6f 62 74 61 69 6e 65 64 20 66 72  mory obtained fr
24950 6f 6d 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  om the SQLite co
24960 72 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  re..        /// 
24970 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20  library...      
24980 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
24990 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
249a0 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65  aram name="value
249b0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
249c0 54 68 65 20 6d 61 6e 61 67 65 64 20 73 74 72 69  The managed stri
249d0 6e 67 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a  ng to convert...
249e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
249f0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
24a00 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
24a10 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
24a20 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69 6e 61 74  ive NUL-terminat
24a30 65 64 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20  ed UTF-8 string 
24a40 70 6f 69 6e 74 65 72 20 6f 72 0d 0a 20 20 20 20  pointer or..    
24a50 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
24a60 66 3d 22 49 6e 74 50 74 72 2e 5a 65 72 6f 22 20  f="IntPtr.Zero" 
24a70 2f 3e 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e  /> upon failure.
24a80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
24a90 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
24aa0 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
24ab0 49 6e 74 50 74 72 20 55 74 66 38 49 6e 74 50 74  IntPtr Utf8IntPt
24ac0 72 46 72 6f 6d 53 74 72 69 6e 67 28 0d 0a 20 20  rFromString(..  
24ad0 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
24ae0 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20   value..        
24af0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
24b00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
24b10 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29   (value == null)
24b20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24b30 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e    return IntPtr.
24b40 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Zero;....       
24b50 20 20 20 20 20 49 6e 74 50 74 72 20 72 65 73 75       IntPtr resu
24b60 6c 74 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  lt = IntPtr.Zero
24b70 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62  ;..            b
24b80 79 74 65 5b 5d 20 62 79 74 65 73 20 3d 20 47 65  yte[] bytes = Ge
24b90 74 55 74 66 38 42 79 74 65 73 46 72 6f 6d 53 74  tUtf8BytesFromSt
24ba0 72 69 6e 67 28 76 61 6c 75 65 29 3b 0d 0a 0d 0a  ring(value);....
24bb0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
24bc0 62 79 74 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  bytes == null)..
24bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24be0 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65  return IntPtr.Ze
24bf0 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ro;....         
24c00 20 20 20 69 6e 74 20 6c 65 6e 67 74 68 20 3d 20     int length = 
24c10 62 79 74 65 73 2e 4c 65 6e 67 74 68 3b 0d 0a 0d  bytes.Length;...
24c20 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73  .            res
24c30 75 6c 74 20 3d 20 53 51 4c 69 74 65 4d 65 6d 6f  ult = SQLiteMemo
24c40 72 79 2e 41 6c 6c 6f 63 61 74 65 28 6c 65 6e 67  ry.Allocate(leng
24c50 74 68 20 2b 20 31 29 3b 0d 0a 0d 0a 20 20 20 20  th + 1);....    
24c60 20 20 20 20 20 20 20 20 69 66 20 28 72 65 73 75          if (resu
24c70 6c 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72  lt == IntPtr.Zer
24c80 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
24c90 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74      return IntPt
24ca0 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20  r.Zero;....     
24cb0 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 43         Marshal.C
24cc0 6f 70 79 28 62 79 74 65 73 2c 20 30 2c 20 72 65  opy(bytes, 0, re
24cd0 73 75 6c 74 2c 20 6c 65 6e 67 74 68 29 3b 0d 0a  sult, length);..
24ce0 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73              Mars
24cf0 68 61 6c 2e 57 72 69 74 65 42 79 74 65 28 72 65  hal.WriteByte(re
24d00 73 75 6c 74 2c 20 6c 65 6e 67 74 68 2c 20 30 29  sult, length, 0)
24d10 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
24d20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d   return result;.
24d30 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
24d40 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
24d50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
24d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24da0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
24db0 67 69 6f 6e 20 55 54 46 2d 38 20 53 74 72 69 6e  gion UTF-8 Strin
24dc0 67 20 41 72 72 61 79 20 48 65 6c 70 65 72 20 4d  g Array Helper M
24dd0 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
24de0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
24df0 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65         /// Conve
24e00 72 74 73 20 61 20 6c 6f 67 69 63 61 6c 20 61 72  rts a logical ar
24e10 72 61 79 20 6f 66 20 6e 61 74 69 76 65 20 4e 55  ray of native NU
24e20 4c 2d 74 65 72 6d 69 6e 61 74 65 64 20 55 54 46  L-terminated UTF
24e30 2d 38 20 73 74 72 69 6e 67 0d 0a 20 20 20 20 20  -8 string..     
24e40 20 20 20 2f 2f 2f 20 70 6f 69 6e 74 65 72 73 20     /// pointers 
24e50 69 6e 74 6f 20 61 6e 20 61 72 72 61 79 20 6f 66  into an array of
24e60 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67 73   managed strings
24e70 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
24e80 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
24e90 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
24ea0 6d 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20 20 20  me="argc">..    
24eb0 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62      /// The numb
24ec0 65 72 20 6f 66 20 65 6c 65 6d 65 6e 74 73 20 69  er of elements i
24ed0 6e 20 74 68 65 20 6c 6f 67 69 63 61 6c 20 61 72  n the logical ar
24ee0 72 61 79 20 6f 66 20 6e 61 74 69 76 65 0d 0a 20  ray of native.. 
24ef0 20 20 20 20 20 20 20 2f 2f 2f 20 4e 55 4c 2d 74         /// NUL-t
24f00 65 72 6d 69 6e 61 74 65 64 20 55 54 46 2d 38 20  erminated UTF-8 
24f10 73 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 73 2e  string pointers.
24f20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
24f30 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
24f40 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
24f50 22 61 72 67 76 22 3e 0d 0a 20 20 20 20 20 20 20  "argv">..       
24f60 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
24f70 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 6c  pointer to the l
24f80 6f 67 69 63 61 6c 20 61 72 72 61 79 20 6f 66 20  ogical array of 
24f90 6e 61 74 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69  native NUL-termi
24fa0 6e 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f  nated..        /
24fb0 2f 2f 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20  // UTF-8 string 
24fc0 70 6f 69 6e 74 65 72 73 20 74 6f 20 63 6f 6e 76  pointers to conv
24fd0 65 72 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ert...        //
24fe0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
24ff0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
25000 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
25010 68 65 20 61 72 72 61 79 20 6f 66 20 6d 61 6e 61  he array of mana
25020 67 65 64 20 73 74 72 69 6e 67 73 20 6f 72 20 6e  ged strings or n
25030 75 6c 6c 20 75 70 6f 6e 20 66 61 69 6c 75 72 65  ull upon failure
25040 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
25050 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
25060 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
25070 20 73 74 72 69 6e 67 5b 5d 20 53 74 72 69 6e 67   string[] String
25080 41 72 72 61 79 46 72 6f 6d 55 74 66 38 53 69 7a  ArrayFromUtf8Siz
25090 65 41 6e 64 49 6e 74 50 74 72 28 0d 0a 20 20 20  eAndIntPtr(..   
250a0 20 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67           int arg
250b0 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  c,..            
250c0 49 6e 74 50 74 72 20 61 72 67 76 0d 0a 20 20 20  IntPtr argv..   
250d0 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
250e0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
250f0 20 20 20 69 66 20 28 61 72 67 63 20 3c 20 30 29     if (argc < 0)
25100 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25110 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
25120 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
25130 20 28 61 72 67 76 20 3d 3d 20 49 6e 74 50 74 72   (argv == IntPtr
25140 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
25150 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
25160 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
25170 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 72 65 73      string[] res
25180 75 6c 74 20 3d 20 6e 65 77 20 73 74 72 69 6e 67  ult = new string
25190 5b 61 72 67 63 5d 3b 0d 0a 0d 0a 20 20 20 20 20  [argc];....     
251a0 20 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74 20         for (int 
251b0 69 6e 64 65 78 20 3d 20 30 2c 20 6f 66 66 73 65  index = 0, offse
251c0 74 20 3d 20 30 3b 0d 0a 20 20 20 20 20 20 20 20  t = 0;..        
251d0 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 65              inde
251e0 78 20 3c 20 72 65 73 75 6c 74 2e 4c 65 6e 67 74  x < result.Lengt
251f0 68 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  h;..            
25200 20 20 20 20 20 20 20 20 69 6e 64 65 78 2b 2b 2c          index++,
25210 20 6f 66 66 73 65 74 20 2b 3d 20 49 6e 74 50 74   offset += IntPt
25220 72 2e 53 69 7a 65 29 0d 0a 20 20 20 20 20 20 20  r.Size)..       
25230 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
25240 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
25250 41 72 67 20 3d 20 53 51 4c 69 74 65 4d 61 72 73  Arg = SQLiteMars
25260 68 61 6c 2e 52 65 61 64 49 6e 74 50 74 72 28 61  hal.ReadIntPtr(a
25270 72 67 76 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d  rgv, offset);...
25280 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25290 20 72 65 73 75 6c 74 5b 69 6e 64 65 78 5d 20 3d   result[index] =
252a0 20 28 70 41 72 67 20 21 3d 20 49 6e 74 50 74 72   (pArg != IntPtr
252b0 2e 5a 65 72 6f 29 20 3f 0d 0a 20 20 20 20 20 20  .Zero) ?..      
252c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 74                St
252d0 72 69 6e 67 46 72 6f 6d 55 74 66 38 49 6e 74 50  ringFromUtf8IntP
252e0 74 72 28 70 41 72 67 29 20 3a 20 6e 75 6c 6c 3b  tr(pArg) : null;
252f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
25300 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
25310 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20  eturn result;.. 
25320 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
25330 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
25340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
25380 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
25390 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
253a0 2f 20 43 6f 6e 76 65 72 74 73 20 61 6e 20 61 72  / Converts an ar
253b0 72 61 79 20 6f 66 20 6d 61 6e 61 67 65 64 20 73  ray of managed s
253c0 74 72 69 6e 67 73 20 69 6e 74 6f 20 61 6e 20 61  trings into an a
253d0 72 72 61 79 20 6f 66 20 6e 61 74 69 76 65 0d 0a  rray of native..
253e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 55 4c 2d          /// NUL-
253f0 74 65 72 6d 69 6e 61 74 65 64 20 55 54 46 2d 38  terminated UTF-8
25400 20 73 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 73   string pointers
25410 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
25420 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
25430 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
25440 6d 65 3d 22 76 61 6c 75 65 73 22 3e 0d 0a 20 20  me="values">..  
25450 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 72        /// The ar
25460 72 61 79 20 6f 66 20 6d 61 6e 61 67 65 64 20 73  ray of managed s
25470 74 72 69 6e 67 73 20 74 6f 20 63 6f 6e 76 65 72  trings to conver
25480 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  t...        /// 
25490 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
254a0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
254b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
254c0 20 61 72 72 61 79 20 6f 66 20 6e 61 74 69 76 65   array of native
254d0 20 4e 55 4c 2d 74 65 72 6d 69 6e 61 74 65 64 20   NUL-terminated 
254e0 55 54 46 2d 38 20 73 74 72 69 6e 67 20 70 6f 69  UTF-8 string poi
254f0 6e 74 65 72 73 20 6f 72 20 6e 75 6c 6c 0d 0a 20  nters or null.. 
25500 20 20 20 20 20 20 20 2f 2f 2f 20 75 70 6f 6e 20         /// upon 
25510 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20  failure...      
25520 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
25530 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
25540 20 73 74 61 74 69 63 20 49 6e 74 50 74 72 5b 5d   static IntPtr[]
25550 20 55 74 66 38 49 6e 74 50 74 72 41 72 72 61 79   Utf8IntPtrArray
25560 46 72 6f 6d 53 74 72 69 6e 67 41 72 72 61 79 28  FromStringArray(
25570 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74  ..            st
25580 72 69 6e 67 5b 5d 20 76 61 6c 75 65 73 0d 0a 20  ring[] values.. 
25590 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
255a0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
255b0 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 73 20       if (values 
255c0 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
255d0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
255e0 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20   null;....      
255f0 20 20 20 20 20 20 49 6e 74 50 74 72 5b 5d 20 72        IntPtr[] r
25600 65 73 75 6c 74 20 3d 20 6e 65 77 20 49 6e 74 50  esult = new IntP
25610 74 72 5b 76 61 6c 75 65 73 2e 4c 65 6e 67 74 68  tr[values.Length
25620 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  ];....          
25630 20 20 66 6f 72 20 28 69 6e 74 20 69 6e 64 65 78    for (int index
25640 20 3d 20 30 3b 20 69 6e 64 65 78 20 3c 20 72 65   = 0; index < re
25650 73 75 6c 74 2e 4c 65 6e 67 74 68 3b 20 69 6e 64  sult.Length; ind
25660 65 78 2b 2b 29 0d 0a 20 20 20 20 20 20 20 20 20  ex++)..         
25670 20 20 20 20 20 20 20 72 65 73 75 6c 74 5b 69 6e         result[in
25680 64 65 78 5d 20 3d 20 55 74 66 38 49 6e 74 50 74  dex] = Utf8IntPt
25690 72 46 72 6f 6d 53 74 72 69 6e 67 28 76 61 6c 75  rFromString(valu
256a0 65 73 5b 69 6e 64 65 78 5d 29 3b 0d 0a 0d 0a 20  es[index]);.... 
256b0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
256c0 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20  n result;..     
256d0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
256e0 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d  ndregion..    }.
256f0 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
25700 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
25710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25750 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
25760 6e 20 53 51 4c 69 74 65 42 79 74 65 73 20 53 74  n SQLiteBytes St
25770 61 74 69 63 20 43 6c 61 73 73 0d 0a 20 20 20 20  atic Class..    
25780 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
25790 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73     /// This clas
257a0 73 20 63 6f 6e 74 61 69 6e 73 20 73 74 61 74 69  s contains stati
257b0 63 20 6d 65 74 68 6f 64 73 20 74 68 61 74 20 61  c methods that a
257c0 72 65 20 75 73 65 64 20 74 6f 20 64 65 61 6c 20  re used to deal 
257d0 77 69 74 68 20 6e 61 74 69 76 65 0d 0a 20 20 20  with native..   
257e0 20 2f 2f 2f 20 70 6f 69 6e 74 65 72 73 20 74 6f   /// pointers to
257f0 20 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b 73 20 74   memory blocks t
25800 68 61 74 20 6c 6f 67 69 63 61 6c 6c 79 20 63 6f  hat logically co
25810 6e 74 61 69 6e 20 61 72 72 61 79 73 20 6f 66 20  ntain arrays of 
25820 62 79 74 65 73 20 74 6f 20 62 65 0d 0a 20 20 20  bytes to be..   
25830 20 2f 2f 2f 20 75 73 65 64 20 77 69 74 68 20 74   /// used with t
25840 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c  he SQLite core l
25850 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f  ibrary...    ///
25860 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
25870 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
25880 20 63 6c 61 73 73 20 53 51 4c 69 74 65 42 79 74   class SQLiteByt
25890 65 73 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  es..    {..     
258a0 20 20 20 23 72 65 67 69 6f 6e 20 42 79 74 65 20     #region Byte 
258b0 41 72 72 61 79 20 48 65 6c 70 65 72 20 4d 65 74  Array Helper Met
258c0 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hods..        //
258d0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
258e0 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74       /// Convert
258f0 73 20 61 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  s a native point
25900 65 72 20 74 6f 20 61 20 6c 6f 67 69 63 61 6c 20  er to a logical 
25910 61 72 72 61 79 20 6f 66 20 62 79 74 65 73 20 6f  array of bytes o
25920 66 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  f the..        /
25930 2f 2f 20 73 70 65 63 69 66 69 65 64 20 6c 65 6e  // specified len
25940 67 74 68 20 69 6e 74 6f 20 61 20 6d 61 6e 61 67  gth into a manag
25950 65 64 20 62 79 74 65 20 61 72 72 61 79 2e 0d 0a  ed byte array...
25960 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
25970 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
25980 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
25990 22 70 56 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20  "pValue">..     
259a0 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
259b0 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
259c0 20 6c 6f 67 69 63 61 6c 20 61 72 72 61 79 20 6f   logical array o
259d0 66 20 62 79 74 65 73 20 74 6f 20 63 6f 6e 76 65  f bytes to conve
259e0 72 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  rt...        ///
259f0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
25a00 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
25a10 6d 65 3d 22 6c 65 6e 67 74 68 22 3e 0d 0a 20 20  me="length">..  
25a20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6c 65        /// The le
25a30 6e 67 74 68 2c 20 69 6e 20 62 79 74 65 73 2c 20  ngth, in bytes, 
25a40 6f 66 20 74 68 65 20 6c 6f 67 69 63 61 6c 20 61  of the logical a
25a50 72 72 61 79 20 6f 66 20 62 79 74 65 73 20 74 6f  rray of bytes to
25a60 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20   convert...     
25a70 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
25a80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
25a90 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
25aa0 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20  /// The managed 
25ab0 62 79 74 65 20 61 72 72 61 79 20 6f 72 20 6e 75  byte array or nu
25ac0 6c 6c 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e  ll upon failure.
25ad0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
25ae0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
25af0 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
25b00 62 79 74 65 5b 5d 20 46 72 6f 6d 49 6e 74 50 74  byte[] FromIntPt
25b10 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
25b20 49 6e 74 50 74 72 20 70 56 61 6c 75 65 2c 0d 0a  IntPtr pValue,..
25b30 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
25b40 6c 65 6e 67 74 68 0d 0a 20 20 20 20 20 20 20 20  length..        
25b50 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
25b60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
25b70 20 28 70 56 61 6c 75 65 20 3d 3d 20 49 6e 74 50   (pValue == IntP
25b80 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
25b90 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
25ba0 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20   null;....      
25bb0 20 20 20 20 20 20 69 66 20 28 6c 65 6e 67 74 68        if (length
25bc0 20 3d 3d 20 30 29 0d 0a 20 20 20 20 20 20 20 20   == 0)..        
25bd0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
25be0 65 77 20 62 79 74 65 5b 30 5d 3b 0d 0a 0d 0a 20  ew byte[0];.... 
25bf0 20 20 20 20 20 20 20 20 20 20 20 62 79 74 65 5b             byte[
25c00 5d 20 72 65 73 75 6c 74 20 3d 20 6e 65 77 20 62  ] result = new b
25c10 79 74 65 5b 6c 65 6e 67 74 68 5d 3b 0d 0a 0d 0a  yte[length];....
25c20 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73              Mars
25c30 68 61 6c 2e 43 6f 70 79 28 70 56 61 6c 75 65 2c  hal.Copy(pValue,
25c40 20 72 65 73 75 6c 74 2c 20 30 2c 20 6c 65 6e 67   result, 0, leng
25c50 74 68 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  th);....        
25c60 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c      return resul
25c70 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  t;..        }...
25c80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
25c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25cd0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
25ce0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
25cf0 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20     /// Converts 
25d00 61 20 6d 61 6e 61 67 65 64 20 62 79 74 65 20 61  a managed byte a
25d10 72 72 61 79 20 69 6e 74 6f 20 61 20 6e 61 74 69  rray into a nati
25d20 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20  ve pointer to a 
25d30 6c 6f 67 69 63 61 6c 0d 0a 20 20 20 20 20 20 20  logical..       
25d40 20 2f 2f 2f 20 61 72 72 61 79 20 6f 66 20 62 79   /// array of by
25d50 74 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tes...        //
25d60 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
25d70 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
25d80 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a   name="value">..
25d90 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
25da0 6d 61 6e 61 67 65 64 20 62 79 74 65 20 61 72 72  managed byte arr
25db0 61 79 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a  ay to convert...
25dc0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
25dd0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
25de0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
25df0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
25e00 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 61  ive pointer to a
25e10 20 6c 6f 67 69 63 61 6c 20 62 79 74 65 20 61 72   logical byte ar
25e20 72 61 79 20 6f 72 20 6e 75 6c 6c 20 75 70 6f 6e  ray or null upon
25e30 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20   failure...     
25e40 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
25e50 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
25e60 63 20 73 74 61 74 69 63 20 49 6e 74 50 74 72 20  c static IntPtr 
25e70 54 6f 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20  ToIntPtr(..     
25e80 20 20 20 20 20 20 20 62 79 74 65 5b 5d 20 76 61         byte[] va
25e90 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lue..           
25ea0 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
25eb0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76             if (v
25ec0 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  alue == null).. 
25ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
25ee0 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72  eturn IntPtr.Zer
25ef0 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  o;....          
25f00 20 20 69 6e 74 20 6c 65 6e 67 74 68 20 3d 20 76    int length = v
25f10 61 6c 75 65 2e 4c 65 6e 67 74 68 3b 0d 0a 0d 0a  alue.Length;....
25f20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
25f30 6c 65 6e 67 74 68 20 3d 3d 20 30 29 0d 0a 20 20  length == 0)..  
25f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
25f50 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f  turn IntPtr.Zero
25f60 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
25f70 20 49 6e 74 50 74 72 20 72 65 73 75 6c 74 20 3d   IntPtr result =
25f80 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 41 6c   SQLiteMemory.Al
25f90 6c 6f 63 61 74 65 28 6c 65 6e 67 74 68 29 3b 0d  locate(length);.
25fa0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
25fb0 66 20 28 72 65 73 75 6c 74 20 3d 3d 20 49 6e 74  f (result == Int
25fc0 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
25fd0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
25fe0 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  n IntPtr.Zero;..
25ff0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 4d 61  ..            Ma
26000 72 73 68 61 6c 2e 43 6f 70 79 28 76 61 6c 75 65  rshal.Copy(value
26010 2c 20 30 2c 20 72 65 73 75 6c 74 2c 20 6c 65 6e  , 0, result, len
26020 67 74 68 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  gth);....       
26030 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75       return resu
26040 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  lt;..        }..
26050 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
26060 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23  on..    }..    #
26070 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
26080 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
26090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
260a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
260b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
260c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
260d0 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69      #region SQLi
260e0 74 65 4d 61 72 73 68 61 6c 20 53 74 61 74 69 63  teMarshal Static
260f0 20 43 6c 61 73 73 0d 0a 20 20 20 20 69 6e 74 65   Class..    inte
26100 72 6e 61 6c 20 73 74 61 74 69 63 20 63 6c 61 73  rnal static clas
26110 73 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 0d  s SQLiteMarshal.
26120 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
26130 23 72 65 67 69 6f 6e 20 49 6e 74 50 74 72 20 48  #region IntPtr H
26140 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20  elper Methods.. 
26150 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
26160 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
26170 2f 20 52 65 74 75 72 6e 73 20 61 20 6e 65 77 20  / Returns a new 
26180 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74  <see cref="IntPt
26190 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  r" /> object ins
261a0 74 61 6e 63 65 20 62 61 73 65 64 20 6f 6e 20 74  tance based on t
261b0 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
261c0 73 70 65 63 69 66 69 65 64 20 3c 73 65 65 20 63  specified <see c
261d0 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20  ref="IntPtr" /> 
261e0 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
261f0 61 6e 64 20 61 6e 20 69 6e 74 65 67 65 72 0d 0a  and an integer..
26200 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 66 66 73          /// offs
26210 65 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  et...        ///
26220 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
26230 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
26240 6e 61 6d 65 3d 22 70 6f 69 6e 74 65 72 22 3e 0d  name="pointer">.
26250 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
26260 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50   <see cref="IntP
26270 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  tr" /> object in
26280 73 74 61 6e 63 65 20 72 65 70 72 65 73 65 6e 74  stance represent
26290 69 6e 67 20 74 68 65 20 62 61 73 65 0d 0a 20 20  ing the base..  
262a0 20 20 20 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79        /// memory
262b0 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20   location...    
262c0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
262d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
262e0 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65  aram name="offse
262f0 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  t">..        ///
26300 20 54 68 65 20 69 6e 74 65 67 65 72 20 6f 66 66   The integer off
26310 73 65 74 20 66 72 6f 6d 20 74 68 65 20 62 61 73  set from the bas
26320 65 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f  e memory locatio
26330 6e 20 74 68 61 74 20 74 68 65 20 6e 65 77 0d 0a  n that the new..
26340 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
26350 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f   cref="IntPtr" /
26360 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
26370 65 20 73 68 6f 75 6c 64 20 70 6f 69 6e 74 20 74  e should point t
26380 6f 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  o...        /// 
26390 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
263a0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
263b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
263c0 20 6e 65 77 20 3c 73 65 65 20 63 72 65 66 3d 22   new <see cref="
263d0 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63  IntPtr" /> objec
263e0 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  t instance...   
263f0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
26400 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ns>..        pub
26410 6c 69 63 20 73 74 61 74 69 63 20 49 6e 74 50 74  lic static IntPt
26420 72 20 49 6e 74 50 74 72 46 6f 72 4f 66 66 73 65  r IntPtrForOffse
26430 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
26440 49 6e 74 50 74 72 20 70 6f 69 6e 74 65 72 2c 0d  IntPtr pointer,.
26450 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
26460 20 6f 66 66 73 65 74 0d 0a 20 20 20 20 20 20 20   offset..       
26470 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
26480 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  {..            r
26490 65 74 75 72 6e 20 6e 65 77 20 49 6e 74 50 74 72  eturn new IntPtr
264a0 28 70 6f 69 6e 74 65 72 2e 54 6f 49 6e 74 36 34  (pointer.ToInt64
264b0 28 29 20 2b 20 6f 66 66 73 65 74 29 3b 0d 0a 20  () + offset);.. 
264c0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
264d0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
264e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
264f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
26520 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
26530 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
26540 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 74 68 65  / Determines the
26550 20 73 69 7a 65 20 6f 66 20 61 20 3c 73 65 65 20   size of a <see 
26560 63 72 65 66 3d 22 49 6e 74 33 32 22 20 2f 3e 20  cref="Int32" /> 
26570 77 68 65 6e 20 69 74 20 72 65 73 69 64 65 73 0d  when it resides.
26580 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73  .        /// ins
26590 69 64 65 20 6f 66 20 61 20 6e 61 74 69 76 65 20  ide of a native 
265a0 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20  structure...    
265b0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
265c0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
265d0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
265e0 20 20 20 2f 2f 2f 20 54 68 65 20 73 69 7a 65 20     /// The size 
265f0 6f 66 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  of the <see cref
26600 3d 22 49 6e 74 33 32 22 20 2f 3e 20 74 79 70 65  ="Int32" /> type
26610 2c 20 69 6e 20 62 79 74 65 73 2c 20 77 68 65 6e  , in bytes, when
26620 20 69 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   it..        ///
26630 20 72 65 73 69 64 65 73 20 69 6e 73 69 64 65 20   resides inside 
26640 61 20 6e 61 74 69 76 65 20 73 74 72 75 63 74 75  a native structu
26650 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
26660 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
26670 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
26680 69 63 20 69 6e 74 20 53 69 7a 65 4f 66 53 74 72  ic int SizeOfStr
26690 75 63 74 49 6e 74 28 29 0d 0a 20 20 20 20 20 20  uctInt()..      
266a0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
266b0 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 53   return IntPtr.S
266c0 69 7a 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ize;..        }.
266d0 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
266e0 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
266f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26730 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
26740 20 20 23 72 65 67 69 6f 6e 20 4d 61 72 73 68 61    #region Marsha
26750 6c 20 52 65 61 64 20 48 65 6c 70 65 72 20 4d 65  l Read Helper Me
26760 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f  thods..        /
26770 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
26780 20 20 20 20 20 20 2f 2f 2f 20 52 65 61 64 73 20        /// Reads 
26790 61 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74  a <see cref="Int
267a0 33 32 22 20 2f 3e 20 76 61 6c 75 65 20 66 72 6f  32" /> value fro
267b0 6d 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  m the specified 
267c0 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20 20 20  memory..        
267d0 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20  /// location... 
267e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
267f0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
26800 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
26810 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20 20 20 20  pointer">..     
26820 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
26830 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e  cref="IntPtr" />
26840 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
26850 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 74 68   representing th
26860 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20 20 20  e base..        
26870 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74  /// memory locat
26880 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ion...        //
26890 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
268a0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
268b0 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d 0a 20  ame="offset">.. 
268c0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 69         /// The i
268d0 6e 74 65 67 65 72 20 6f 66 66 73 65 74 20 66 72  nteger offset fr
268e0 6f 6d 20 74 68 65 20 62 61 73 65 20 6d 65 6d 6f  om the base memo
268f0 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77 68 65 72  ry location wher
26900 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  e the..        /
26910 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  // <see cref="In
26920 74 33 32 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f  t32" /> value to
26930 20 62 65 20 72 65 61 64 20 69 73 20 6c 6f 63 61   be read is loca
26940 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ted...        //
26950 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
26960 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
26970 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
26980 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  he <see cref="In
26990 74 33 32 22 20 2f 3e 20 76 61 6c 75 65 20 61 74  t32" /> value at
269a0 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6d   the specified m
269b0 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d  emory location..
269c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
269d0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
269e0 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69   public static i
269f0 6e 74 20 52 65 61 64 49 6e 74 33 32 28 0d 0a 20  nt ReadInt32(.. 
26a00 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
26a10 72 20 70 6f 69 6e 74 65 72 2c 0d 0a 20 20 20 20  r pointer,..    
26a20 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66 73          int offs
26a30 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  et..            
26a40 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
26a50 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
26a60 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
26a70 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
26a80 20 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74   Marshal.ReadInt
26a90 33 32 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73  32(pointer, offs
26aa0 65 74 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  et);..#else..   
26ab0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
26ac0 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 33  Marshal.ReadInt3
26ad0 32 28 49 6e 74 50 74 72 46 6f 72 4f 66 66 73 65  2(IntPtrForOffse
26ae0 74 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65  t(pointer, offse
26af0 74 29 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  t));..#endif..  
26b00 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
26b10 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
26b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
26b60 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
26b70 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
26b80 20 52 65 61 64 73 20 61 20 3c 73 65 65 20 63 72   Reads a <see cr
26b90 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f 3e 20 76  ef="Double" /> v
26ba0 61 6c 75 65 20 66 72 6f 6d 20 74 68 65 20 73 70  alue from the sp
26bb0 65 63 69 66 69 65 64 20 6d 65 6d 6f 72 79 0d 0a  ecified memory..
26bc0 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 6f 63 61          /// loca
26bd0 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  tion...        /
26be0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
26bf0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
26c00 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74 65 72 22  m name="pointer"
26c10 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
26c20 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  he <see cref="In
26c30 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20  tPtr" /> object 
26c40 69 6e 73 74 61 6e 63 65 20 72 65 70 72 65 73 65  instance represe
26c50 6e 74 69 6e 67 20 74 68 65 20 62 61 73 65 0d 0a  nting the base..
26c60 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 6d 6f          /// memo
26c70 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20  ry location...  
26c80 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
26c90 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
26ca0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 66 66  <param name="off
26cb0 73 65 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  set">..        /
26cc0 2f 2f 20 54 68 65 20 69 6e 74 65 67 65 72 20 6f  // The integer o
26cd0 66 66 73 65 74 20 66 72 6f 6d 20 74 68 65 20 62  ffset from the b
26ce0 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74  ase memory locat
26cf0 69 6f 6e 20 77 68 65 72 65 20 74 68 65 0d 0a 20  ion where the.. 
26d00 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
26d10 63 72 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f 3e  cref="Double" />
26d20 20 74 6f 20 62 65 20 72 65 61 64 20 69 73 20 6c   to be read is l
26d30 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20 20 20 20  ocated...       
26d40 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
26d50 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
26d60 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
26d70 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
26d80 22 44 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75  "Double" /> valu
26d90 65 20 61 74 20 74 68 65 20 73 70 65 63 69 66 69  e at the specifi
26da0 65 64 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69  ed memory locati
26db0 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  on...        ///
26dc0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
26dd0 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
26de0 69 63 20 64 6f 75 62 6c 65 20 52 65 61 64 44 6f  ic double ReadDo
26df0 75 62 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20  uble(..         
26e00 20 20 20 49 6e 74 50 74 72 20 70 6f 69 6e 74 65     IntPtr pointe
26e10 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r,..            
26e20 69 6e 74 20 6f 66 66 73 65 74 0d 0a 20 20 20 20  int offset..    
26e30 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
26e40 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46     {..#if !PLATF
26e50 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
26e60 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
26e70 20 20 72 65 74 75 72 6e 20 42 69 74 43 6f 6e 76    return BitConv
26e80 65 72 74 65 72 2e 49 6e 74 36 34 42 69 74 73 54  erter.Int64BitsT
26e90 6f 44 6f 75 62 6c 65 28 4d 61 72 73 68 61 6c 2e  oDouble(Marshal.
26ea0 52 65 61 64 49 6e 74 36 34 28 0d 0a 20 20 20 20  ReadInt64(..    
26eb0 20 20 20 20 20 20 20 20 20 20 20 20 70 6f 69 6e              poin
26ec0 74 65 72 2c 20 6f 66 66 73 65 74 29 29 3b 0d 0a  ter, offset));..
26ed0 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
26ee0 20 20 20 72 65 74 75 72 6e 20 42 69 74 43 6f 6e     return BitCon
26ef0 76 65 72 74 65 72 2e 54 6f 44 6f 75 62 6c 65 28  verter.ToDouble(
26f00 42 69 74 43 6f 6e 76 65 72 74 65 72 2e 47 65 74  BitConverter.Get
26f10 42 79 74 65 73 28 0d 0a 20 20 20 20 20 20 20 20  Bytes(..        
26f20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e          Marshal.
26f30 52 65 61 64 49 6e 74 36 34 28 49 6e 74 50 74 72  ReadInt64(IntPtr
26f40 46 6f 72 4f 66 66 73 65 74 28 70 6f 69 6e 74 65  ForOffset(pointe
26f50 72 2c 20 6f 66 66 73 65 74 29 29 29 2c 20 30 29  r, offset))), 0)
26f60 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
26f70 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
26f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26fc0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
26fd0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
26fe0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65  ..        /// Re
26ff0 61 64 73 20 61 6e 20 3c 73 65 65 20 63 72 65 66  ads an <see cref
27000 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20 76 61 6c  ="IntPtr" /> val
27010 75 65 20 66 72 6f 6d 20 74 68 65 20 73 70 65 63  ue from the spec
27020 69 66 69 65 64 20 6d 65 6d 6f 72 79 0d 0a 20 20  ified memory..  
27030 20 20 20 20 20 20 2f 2f 2f 20 6c 6f 63 61 74 69        /// locati
27040 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  on...        ///
27050 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
27060 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
27070 6e 61 6d 65 3d 22 70 6f 69 6e 74 65 72 22 3e 0d  name="pointer">.
27080 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
27090 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50   <see cref="IntP
270a0 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  tr" /> object in
270b0 73 74 61 6e 63 65 20 72 65 70 72 65 73 65 6e 74  stance represent
270c0 69 6e 67 20 74 68 65 20 62 61 73 65 0d 0a 20 20  ing the base..  
270d0 20 20 20 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79        /// memory
270e0 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20   location...    
270f0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
27100 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
27110 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65  aram name="offse
27120 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  t">..        ///
27130 20 54 68 65 20 69 6e 74 65 67 65 72 20 6f 66 66   The integer off
27140 73 65 74 20 66 72 6f 6d 20 74 68 65 20 62 61 73  set from the bas
27150 65 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f  e memory locatio
27160 6e 20 77 68 65 72 65 20 74 68 65 0d 0a 20 20 20  n where the..   
27170 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
27180 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20 76  ef="IntPtr" /> v
27190 61 6c 75 65 20 74 6f 20 62 65 20 72 65 61 64 20  alue to be read 
271a0 69 73 20 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20  is located...   
271b0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
271c0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
271d0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
271e0 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
271f0 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20  ref="IntPtr" /> 
27200 76 61 6c 75 65 20 61 74 20 74 68 65 20 73 70 65  value at the spe
27210 63 69 66 69 65 64 20 6d 65 6d 6f 72 79 20 6c 6f  cified memory lo
27220 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  cation...       
27230 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
27240 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
27250 73 74 61 74 69 63 20 49 6e 74 50 74 72 20 52 65  static IntPtr Re
27260 61 64 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20  adIntPtr(..     
27270 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 6f         IntPtr po
27280 69 6e 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20  inter,..        
27290 20 20 20 20 69 6e 74 20 6f 66 66 73 65 74 0d 0a      int offset..
272a0 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
272b0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50         {..#if !P
272c0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
272d0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
272e0 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 61 72        return Mar
272f0 73 68 61 6c 2e 52 65 61 64 49 6e 74 50 74 72 28  shal.ReadIntPtr(
27300 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29  pointer, offset)
27310 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
27320 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 61 72        return Mar
27330 73 68 61 6c 2e 52 65 61 64 49 6e 74 50 74 72 28  shal.ReadIntPtr(
27340 49 6e 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28  IntPtrForOffset(
27350 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29  pointer, offset)
27360 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
27370 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
27380 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
27390 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
273a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
273b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
273c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
273d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
273e0 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
273f0 4d 61 72 73 68 61 6c 20 57 72 69 74 65 20 48 65  Marshal Write He
27400 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20  lper Methods..  
27410 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
27420 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
27430 20 57 72 69 74 65 73 20 61 6e 20 3c 73 65 65 20   Writes an <see 
27440 63 72 65 66 3d 22 49 6e 74 33 32 22 20 2f 3e 20  cref="Int32" /> 
27450 76 61 6c 75 65 20 74 6f 20 74 68 65 20 73 70 65  value to the spe
27460 63 69 66 69 65 64 20 6d 65 6d 6f 72 79 0d 0a 20  cified memory.. 
27470 20 20 20 20 20 20 20 2f 2f 2f 20 6c 6f 63 61 74         /// locat
27480 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ion...        //
27490 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
274a0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
274b0 20 6e 61 6d 65 3d 22 70 6f 69 6e 74 65 72 22 3e   name="pointer">
274c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
274d0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74  e <see cref="Int
274e0 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  Ptr" /> object i
274f0 6e 73 74 61 6e 63 65 20 72 65 70 72 65 73 65 6e  nstance represen
27500 74 69 6e 67 20 74 68 65 20 62 61 73 65 0d 0a 20  ting the base.. 
27510 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72         /// memor
27520 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20  y location...   
27530 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
27540 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
27550 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 66 66 73  param name="offs
27560 65 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  et">..        //
27570 2f 20 54 68 65 20 69 6e 74 65 67 65 72 20 6f 66  / The integer of
27580 66 73 65 74 20 66 72 6f 6d 20 74 68 65 20 62 61  fset from the ba
27590 73 65 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69  se memory locati
275a0 6f 6e 20 77 68 65 72 65 20 74 68 65 0d 0a 20 20  on where the..  
275b0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
275c0 72 65 66 3d 22 49 6e 74 33 32 22 20 2f 3e 20 76  ref="Int32" /> v
275d0 61 6c 75 65 20 74 6f 20 62 65 20 77 72 69 74 74  alue to be writt
275e0 65 6e 20 69 73 20 6c 6f 63 61 74 65 64 2e 0d 0a  en is located...
275f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
27600 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
27610 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76  / <param name="v
27620 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  alue">..        
27630 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
27640 66 3d 22 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c  f="Int32" /> val
27650 75 65 20 74 6f 20 77 72 69 74 65 2e 0d 0a 20 20  ue to write...  
27660 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
27670 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  m>..        publ
27680 69 63 20 73 74 61 74 69 63 20 76 6f 69 64 20 57  ic static void W
27690 72 69 74 65 49 6e 74 33 32 28 0d 0a 20 20 20 20  riteInt32(..    
276a0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
276b0 6f 69 6e 74 65 72 2c 0d 0a 20 20 20 20 20 20 20  ointer,..       
276c0 20 20 20 20 20 69 6e 74 20 6f 66 66 73 65 74 2c       int offset,
276d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
276e0 74 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20  t value..       
276f0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
27700 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  {..#if !PLATFORM
27710 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
27720 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 4d  K..            M
27730 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 33  arshal.WriteInt3
27740 32 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65  2(pointer, offse
27750 74 2c 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6c 73  t, value);..#els
27760 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 4d  e..            M
27770 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 33  arshal.WriteInt3
27780 32 28 49 6e 74 50 74 72 46 6f 72 4f 66 66 73 65  2(IntPtrForOffse
27790 74 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65  t(pointer, offse
277a0 74 29 2c 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e  t), value);..#en
277b0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
277c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
277d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
277e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
277f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27810 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
27820 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
27830 20 20 20 20 2f 2f 2f 20 57 72 69 74 65 73 20 61      /// Writes a
27840 20 3c 73 65 65 20 63 72 65 66 3d 22 44 6f 75 62   <see cref="Doub
27850 6c 65 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20  le" /> value to 
27860 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6d 65  the specified me
27870 6d 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f  mory..        //
27880 2f 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20  / location...   
27890 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
278a0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
278b0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 6f   <param name="po
278c0 69 6e 74 65 72 22 3e 0d 0a 20 20 20 20 20 20 20  inter">..       
278d0 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
278e0 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f  ef="IntPtr" /> o
278f0 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 72  bject instance r
27900 65 70 72 65 73 65 6e 74 69 6e 67 20 74 68 65 20  epresenting the 
27910 62 61 73 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  base..        //
27920 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f  / memory locatio
27930 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  n...        /// 
27940 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
27950 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
27960 65 3d 22 6f 66 66 73 65 74 22 3e 0d 0a 20 20 20  e="offset">..   
27970 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74       /// The int
27980 65 67 65 72 20 6f 66 66 73 65 74 20 66 72 6f 6d  eger offset from
27990 20 74 68 65 20 62 61 73 65 20 6d 65 6d 6f 72 79   the base memory
279a0 20 6c 6f 63 61 74 69 6f 6e 20 77 68 65 72 65 20   location where 
279b0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
279c0 20 3c 73 65 65 20 63 72 65 66 3d 22 44 6f 75 62   <see cref="Doub
279d0 6c 65 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20  le" /> value to 
279e0 62 65 20 77 72 69 74 74 65 6e 20 69 73 20 6c 6f  be written is lo
279f0 63 61 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20  cated...        
27a00 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
27a10 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
27a20 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a   name="value">..
27a30 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
27a40 3c 73 65 65 20 63 72 65 66 3d 22 44 6f 75 62 6c  <see cref="Doubl
27a50 65 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 77  e" /> value to w
27a60 72 69 74 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  rite...        /
27a70 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
27a80 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
27a90 69 63 20 76 6f 69 64 20 57 72 69 74 65 44 6f 75  ic void WriteDou
27aa0 62 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ble(..          
27ab0 20 20 49 6e 74 50 74 72 20 70 6f 69 6e 74 65 72    IntPtr pointer
27ac0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ,..            i
27ad0 6e 74 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20  nt offset,..    
27ae0 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 76          double v
27af0 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20  alue..          
27b00 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
27b10 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
27b20 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
27b30 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73              Mars
27b40 68 61 6c 2e 57 72 69 74 65 49 6e 74 36 34 28 70  hal.WriteInt64(p
27b50 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 2c 0d  ointer, offset,.
27b60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27b70 20 42 69 74 43 6f 6e 76 65 72 74 65 72 2e 44 6f   BitConverter.Do
27b80 75 62 6c 65 54 6f 49 6e 74 36 34 42 69 74 73 28  ubleToInt64Bits(
27b90 76 61 6c 75 65 29 29 3b 0d 0a 23 65 6c 73 65 0d  value));..#else.
27ba0 0a 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72  .            Mar
27bb0 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 36 34 28  shal.WriteInt64(
27bc0 49 6e 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28  IntPtrForOffset(
27bd0 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29  pointer, offset)
27be0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
27bf0 20 20 20 42 69 74 43 6f 6e 76 65 72 74 65 72 2e     BitConverter.
27c00 54 6f 49 6e 74 36 34 28 42 69 74 43 6f 6e 76 65  ToInt64(BitConve
27c10 72 74 65 72 2e 47 65 74 42 79 74 65 73 28 76 61  rter.GetBytes(va
27c20 6c 75 65 29 2c 20 30 29 29 3b 0d 0a 23 65 6e 64  lue), 0));..#end
27c30 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  if..        }...
27c40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
27c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27c90 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
27ca0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
27cb0 20 20 20 2f 2f 2f 20 57 72 69 74 65 73 20 61 20     /// Writes a 
27cc0 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74  <see cref="IntPt
27cd0 72 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 74  r" /> value to t
27ce0 68 65 20 73 70 65 63 69 66 69 65 64 20 6d 65 6d  he specified mem
27cf0 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ory..        ///
27d00 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20   location...    
27d10 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
27d20 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
27d30 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69  <param name="poi
27d40 6e 74 65 72 22 3e 0d 0a 20 20 20 20 20 20 20 20  nter">..        
27d50 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
27d60 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62  f="IntPtr" /> ob
27d70 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 72 65  ject instance re
27d80 70 72 65 73 65 6e 74 69 6e 67 20 74 68 65 20 62  presenting the b
27d90 61 73 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ase..        ///
27da0 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e   memory location
27db0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
27dc0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
27dd0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
27de0 3d 22 6f 66 66 73 65 74 22 3e 0d 0a 20 20 20 20  ="offset">..    
27df0 20 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65      /// The inte
27e00 67 65 72 20 6f 66 66 73 65 74 20 66 72 6f 6d 20  ger offset from 
27e10 74 68 65 20 62 61 73 65 20 6d 65 6d 6f 72 79 20  the base memory 
27e20 6c 6f 63 61 74 69 6f 6e 20 77 68 65 72 65 20 74  location where t
27e30 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
27e40 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74  <see cref="IntPt
27e50 72 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 62  r" /> value to b
27e60 65 20 77 72 69 74 74 65 6e 20 69 73 20 6c 6f 63  e written is loc
27e70 61 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ated...        /
27e80 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
27e90 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
27ea0 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20  name="value">.. 
27eb0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
27ec0 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72  see cref="IntPtr
27ed0 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 77 72  " /> value to wr
27ee0 69 74 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ite...        //
27ef0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
27f00 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
27f10 63 20 76 6f 69 64 20 57 72 69 74 65 49 6e 74 50  c void WriteIntP
27f20 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tr(..           
27f30 20 49 6e 74 50 74 72 20 70 6f 69 6e 74 65 72 2c   IntPtr pointer,
27f40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
27f50 74 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20 20  t offset,..     
27f60 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 76 61         IntPtr va
27f70 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lue..           
27f80 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23   )..        {..#
27f90 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
27fa0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
27fb0 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68             Marsh
27fc0 61 6c 2e 57 72 69 74 65 49 6e 74 50 74 72 28 70  al.WriteIntPtr(p
27fd0 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 2c 20  ointer, offset, 
27fe0 76 61 6c 75 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a  value);..#else..
27ff0 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73              Mars
28000 68 61 6c 2e 57 72 69 74 65 49 6e 74 50 74 72 28  hal.WriteIntPtr(
28010 49 6e 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28  IntPtrForOffset(
28020 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29  pointer, offset)
28030 2c 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69  , value);..#endi
28040 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  f..        }..  
28050 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
28060 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e  ..    }..    #en
28070 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
28080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
280a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
280b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
280c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
280d0 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65    #region SQLite
280e0 4d 6f 64 75 6c 65 20 42 61 73 65 20 43 6c 61 73  Module Base Clas
280f0 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  s..    /// <summ
28100 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
28110 69 73 20 63 6c 61 73 73 20 72 65 70 72 65 73 65  is class represe
28120 6e 74 73 20 61 20 6d 61 6e 61 67 65 64 20 76 69  nts a managed vi
28130 72 74 75 61 6c 20 74 61 62 6c 65 20 6d 6f 64 75  rtual table modu
28140 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  le implementatio
28150 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 49 74 20 69  n...    /// It i
28160 73 20 6e 6f 74 20 73 65 61 6c 65 64 20 61 6e 64  s not sealed and
28170 20 6d 75 73 74 20 62 65 20 75 73 65 64 20 61 73   must be used as
28180 20 74 68 65 20 62 61 73 65 20 63 6c 61 73 73 20   the base class 
28190 66 6f 72 20 61 6e 79 0d 0a 20 20 20 20 2f 2f 2f  for any..    ///
281a0 20 75 73 65 72 2d 64 65 66 69 6e 65 64 20 76 69   user-defined vi
281b0 72 74 75 61 6c 20 74 61 62 6c 65 20 6d 6f 64 75  rtual table modu
281c0 6c 65 20 63 6c 61 73 73 65 73 20 69 6d 70 6c 65  le classes imple
281d0 6d 65 6e 74 65 64 20 69 6e 20 6d 61 6e 61 67 65  mented in manage
281e0 64 20 63 6f 64 65 2e 0d 0a 20 20 20 20 2f 2f 2f  d code...    ///
281f0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
28200 20 70 75 62 6c 69 63 20 61 62 73 74 72 61 63 74   public abstract
28210 20 63 6c 61 73 73 20 53 51 4c 69 74 65 4d 6f 64   class SQLiteMod
28220 75 6c 65 20 3a 0d 0a 20 20 20 20 20 20 20 20 20  ule :..         
28230 20 20 20 49 53 51 4c 69 74 65 4d 61 6e 61 67 65     ISQLiteManage
28240 64 4d 6f 64 75 6c 65 2c 20 2f 2a 49 53 51 4c 69  dModule, /*ISQLi
28250 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2c 2a  teNativeModule,*
28260 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  /..            I
28270 44 69 73 70 6f 73 61 62 6c 65 20 2f 2a 20 4e 4f  Disposable /* NO
28280 54 20 53 45 41 4c 45 44 20 2a 2f 0d 0a 20 20 20  T SEALED */..   
28290 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67   {..        #reg
282a0 69 6f 6e 20 53 51 4c 69 74 65 4e 61 74 69 76 65  ion SQLiteNative
282b0 4d 6f 64 75 6c 65 20 50 72 69 76 61 74 65 20 43  Module Private C
282c0 6c 61 73 73 0d 0a 20 20 20 20 20 20 20 20 70 72  lass..        pr
282d0 69 76 61 74 65 20 73 65 61 6c 65 64 20 63 6c 61  ivate sealed cla
282e0 73 73 20 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ss SQLiteNativeM
282f0 6f 64 75 6c 65 20 3a 0d 0a 20 20 20 20 20 20 20  odule :..       
28300 20 20 20 20 20 20 20 20 20 49 53 51 4c 69 74 65           ISQLite
28310 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2c 20 49 44  NativeModule, ID
28320 69 73 70 6f 73 61 62 6c 65 0d 0a 20 20 20 20 20  isposable..     
28330 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
28340 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74    #region Privat
28350 65 20 43 6f 6e 73 74 61 6e 74 73 0d 0a 20 20 20  e Constants..   
28360 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75           /// <su
28370 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
28380 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20      /// This is 
28390 74 68 65 20 76 61 6c 75 65 20 74 68 61 74 20 69  the value that i
283a0 73 20 61 6c 77 61 79 73 20 75 73 65 64 20 66 6f  s always used fo
283b0 72 20 74 68 65 20 22 6c 6f 67 45 72 72 6f 72 73  r the "logErrors
283c0 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  "..            /
283d0 2f 2f 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20  // parameter to 
283e0 74 68 65 20 76 61 72 69 6f 75 73 20 73 74 61 74  the various stat
283f0 69 63 20 65 72 72 6f 72 20 68 61 6e 64 6c 69 6e  ic error handlin
28400 67 20 6d 65 74 68 6f 64 73 20 70 72 6f 76 69 64  g methods provid
28410 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ed..            
28420 2f 2f 2f 20 62 79 20 74 68 65 20 3c 73 65 65 20  /// by the <see 
28430 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75  cref="SQLiteModu
28440 6c 65 22 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20  le" /> class... 
28450 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
28460 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
28470 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63         private c
28480 6f 6e 73 74 20 62 6f 6f 6c 20 44 65 66 61 75 6c  onst bool Defaul
28490 74 4c 6f 67 45 72 72 6f 72 73 20 3d 20 74 72 75  tLogErrors = tru
284a0 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
284b0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
284c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
284d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
284e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
284f0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
28500 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
28510 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
28520 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20  /// This is the 
28530 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 74 65  error message te
28540 78 74 20 75 73 65 64 20 77 68 65 6e 20 74 68 65  xt used when the
28550 20 63 6f 6e 74 61 69 6e 65 64 0d 0a 20 20 20 20   contained..    
28560 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
28570 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64   cref="SQLiteMod
28580 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  ule" /> object i
28590 6e 73 74 61 6e 63 65 20 69 73 20 6e 6f 74 20 61  nstance is not a
285a0 76 61 69 6c 61 62 6c 65 0d 0a 20 20 20 20 20 20  vailable..      
285b0 20 20 20 20 20 20 2f 2f 2f 20 66 6f 72 20 61 6e        /// for an
285c0 79 20 72 65 61 73 6f 6e 2e 0d 0a 20 20 20 20 20  y reason...     
285d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
285e0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
285f0 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74     private const
28600 20 73 74 72 69 6e 67 20 4d 6f 64 75 6c 65 4e 6f   string ModuleNo
28610 74 41 76 61 69 6c 61 62 6c 65 45 72 72 6f 72 4d  tAvailableErrorM
28620 65 73 73 61 67 65 20 3d 0d 0a 20 20 20 20 20 20  essage =..      
28630 20 20 20 20 20 20 20 20 20 20 22 6e 61 74 69 76            "nativ
28640 65 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65 6d 65  e module impleme
28650 6e 74 61 74 69 6f 6e 20 6e 6f 74 20 61 76 61 69  ntation not avai
28660 6c 61 62 6c 65 22 3b 0d 0a 20 20 20 20 20 20 20  lable";..       
28670 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
28680 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
28690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
286a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
286b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
286c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
286d0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
286e0 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74    #region Privat
286f0 65 20 44 61 74 61 0d 0a 20 20 20 20 20 20 20 20  e Data..        
28700 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
28710 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
28720 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
28730 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20  ="SQLiteModule" 
28740 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
28750 63 65 20 75 73 65 64 20 74 6f 20 70 72 6f 76 69  ce used to provi
28760 64 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  de..            
28770 2f 2f 2f 20 61 6e 20 69 6d 70 6c 65 6d 65 6e 74  /// an implement
28780 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 3c 73 65  ation of the <se
28790 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
287a0 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 0d  ativeModule" />.
287b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
287c0 20 69 6e 74 65 72 66 61 63 65 2e 0d 0a 20 20 20   interface...   
287d0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73           /// </s
287e0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
287f0 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c       private SQL
28800 69 74 65 4d 6f 64 75 6c 65 20 6d 6f 64 75 6c 65  iteModule module
28810 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ;..            #
28820 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
28830 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
28840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
28880 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67              #reg
28890 69 6f 6e 20 50 75 62 6c 69 63 20 43 6f 6e 73 74  ion Public Const
288a0 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20  ructors..       
288b0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
288c0 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
288d0 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61  /// Constructs a
288e0 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68  n instance of th
288f0 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20  is class...     
28900 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
28910 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
28920 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
28930 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20  me="module">..  
28940 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68            /// Th
28950 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
28960 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62  iteModule" /> ob
28970 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 75 73  ject instance us
28980 65 64 20 74 6f 20 70 72 6f 76 69 64 65 0d 0a 20  ed to provide.. 
28990 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 61             /// a
289a0 6e 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  n implementation
289b0 20 6f 66 20 74 68 65 20 3c 73 65 65 20 63 72 65   of the <see cre
289c0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
289d0 4d 6f 64 75 6c 65 22 20 2f 3e 0d 0a 20 20 20 20  Module" />..    
289e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65          /// inte
289f0 72 66 61 63 65 2e 0d 0a 20 20 20 20 20 20 20 20  rface...        
28a00 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
28a10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
28a20 62 6c 69 63 20 53 51 4c 69 74 65 4e 61 74 69 76  blic SQLiteNativ
28a30 65 4d 6f 64 75 6c 65 28 0d 0a 20 20 20 20 20 20  eModule(..      
28a40 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
28a50 4d 6f 64 75 6c 65 20 6d 6f 64 75 6c 65 0d 0a 20  Module module.. 
28a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
28a70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
28a80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28a90 20 74 68 69 73 2e 6d 6f 64 75 6c 65 20 3d 20 6d   this.module = m
28aa0 6f 64 75 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20  odule;..        
28ab0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
28ac0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
28ad0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
28ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28b20 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
28b30 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
28b40 53 74 61 74 69 63 20 4d 65 74 68 6f 64 73 0d 0a  Static Methods..
28b50 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
28b60 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
28b70 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 74 73 20         /// Sets 
28b80 74 68 65 20 74 61 62 6c 65 20 65 72 72 6f 72 20  the table error 
28b90 6d 65 73 73 61 67 65 20 74 6f 20 6f 6e 65 20 74  message to one t
28ba0 68 61 74 20 69 6e 64 69 63 61 74 65 73 20 74 68  hat indicates th
28bb0 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20  e native..      
28bc0 20 20 20 20 20 20 2f 2f 2f 20 6d 6f 64 75 6c 65        /// module
28bd0 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20   implementation 
28be0 69 73 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65  is not available
28bf0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
28c00 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
28c10 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
28c20 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61  param name="pVta
28c30 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  b">..           
28c40 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
28c50 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73  pointer to the s
28c60 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69  qlite3_vtab deri
28c70 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  ved structure...
28c80 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
28c90 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
28ca0 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
28cb0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
28cc0 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 6f   /// The value o
28cd0 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  f <see cref="SQL
28ce0 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 45 72 72  iteErrorCode.Err
28cf0 6f 72 22 20 2f 3e 2e 0d 0a 20 20 20 20 20 20 20  or" />...       
28d00 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
28d10 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
28d20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
28d30 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
28d40 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62  ModuleNotAvailab
28d50 6c 65 54 61 62 6c 65 45 72 72 6f 72 28 0d 0a 20  leTableError(.. 
28d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
28d70 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20  ntPtr pVtab..   
28d80 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
28d90 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
28da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
28db0 65 74 54 61 62 6c 65 45 72 72 6f 72 28 6e 75 6c  etTableError(nul
28dc0 6c 2c 20 70 56 74 61 62 2c 20 44 65 66 61 75 6c  l, pVtab, Defaul
28dd0 74 4c 6f 67 45 72 72 6f 72 73 2c 0d 0a 20 20 20  tLogErrors,..   
28de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28df0 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61   ModuleNotAvaila
28e00 62 6c 65 45 72 72 6f 72 4d 65 73 73 61 67 65 29  bleErrorMessage)
28e10 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
28e20 20 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69       return SQLi
28e30 74 65 45 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f  teErrorCode.Erro
28e40 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r;..            
28e50 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
28e60 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
28e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28ea0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
28eb0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
28ec0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
28ed0 2f 2f 20 53 65 74 73 20 74 68 65 20 74 61 62 6c  // Sets the tabl
28ee0 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20  e error message 
28ef0 74 6f 20 6f 6e 65 20 74 68 61 74 20 69 6e 64 69  to one that indi
28f00 63 61 74 65 73 20 74 68 65 20 6e 61 74 69 76 65  cates the native
28f10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
28f20 2f 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65 6d 65  / module impleme
28f30 6e 74 61 74 69 6f 6e 20 69 73 20 6e 6f 74 20 61  ntation is not a
28f40 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20 20  vailable...     
28f50 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
28f60 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
28f70 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
28f80 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20  me="pCursor">.. 
28f90 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54             /// T
28fa0 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
28fb0 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33  r to the sqlite3
28fc0 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72  _vtab_cursor der
28fd0 69 76 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20  ived..          
28fe0 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 2e    /// structure.
28ff0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
29000 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
29010 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
29020 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
29030 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65     /// The value
29040 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53   of <see cref="S
29050 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 45  QLiteErrorCode.E
29060 72 72 6f 72 22 20 2f 3e 2e 0d 0a 20 20 20 20 20  rror" />...     
29070 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
29080 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
29090 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
290a0 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  c SQLiteErrorCod
290b0 65 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c  e ModuleNotAvail
290c0 61 62 6c 65 43 75 72 73 6f 72 45 72 72 6f 72 28  ableCursorError(
290d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
290e0 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72    IntPtr pCursor
290f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29100 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
29110 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
29120 20 20 20 20 53 65 74 43 75 72 73 6f 72 45 72 72      SetCursorErr
29130 6f 72 28 6e 75 6c 6c 2c 20 70 43 75 72 73 6f 72  or(null, pCursor
29140 2c 20 44 65 66 61 75 6c 74 4c 6f 67 45 72 72 6f  , DefaultLogErro
29150 72 73 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  rs,..           
29160 20 20 20 20 20 20 20 20 20 4d 6f 64 75 6c 65 4e           ModuleN
29170 6f 74 41 76 61 69 6c 61 62 6c 65 45 72 72 6f 72  otAvailableError
29180 4d 65 73 73 61 67 65 29 3b 0d 0a 0d 0a 20 20 20  Message);....   
29190 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
291a0 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  urn SQLiteErrorC
291b0 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20 20  ode.Error;..    
291c0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
291d0 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
291e0 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n....           
291f0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
29200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29230 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
29240 20 20 20 20 23 72 65 67 69 6f 6e 20 49 53 51 4c      #region ISQL
29250 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20  iteNativeModule 
29260 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20  Members..       
29270 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
29280 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
29290 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
292a0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
292b0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61  tiveModule.xCrea
292c0 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  te" /> method...
292d0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
292e0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
292f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
29300 61 6d 20 6e 61 6d 65 3d 22 70 44 62 22 3e 0d 0a  am name="pDb">..
29310 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
29320 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
29330 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
29340 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 22 20  Module.xCreate" 
29350 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
29360 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
29370 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
29380 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
29390 65 3d 22 70 41 75 78 22 3e 0d 0a 20 20 20 20 20  e="pAux">..     
293a0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
293b0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
293c0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
293d0 65 2e 78 43 72 65 61 74 65 22 20 2f 3e 20 6d 65  e.xCreate" /> me
293e0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
293f0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
29400 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
29410 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72   <param name="ar
29420 67 63 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  gc">..          
29430 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
29440 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
29450 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72  NativeModule.xCr
29460 65 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  eate" /> method.
29470 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
29480 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
29490 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
294a0 61 6d 20 6e 61 6d 65 3d 22 61 72 67 76 22 3e 0d  am name="argv">.
294b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
294c0 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
294d0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
294e0 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 22  eModule.xCreate"
294f0 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
29500 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
29510 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
29520 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
29530 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20  me="pVtab">..   
29540 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
29550 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
29560 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
29570 75 6c 65 2e 78 43 72 65 61 74 65 22 20 2f 3e 20  ule.xCreate" /> 
29580 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
29590 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
295a0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
295b0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
295c0 70 45 72 72 6f 72 22 3e 0d 0a 20 20 20 20 20 20  pError">..      
295d0 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
295e0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
295f0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
29600 2e 78 43 72 65 61 74 65 22 20 2f 3e 20 6d 65 74  .xCreate" /> met
29610 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
29620 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
29630 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
29640 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
29650 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
29660 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
29670 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
29680 65 2e 78 43 72 65 61 74 65 22 20 2f 3e 20 6d 65  e.xCreate" /> me
29690 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
296a0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
296b0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
296c0 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f  ublic SQLiteErro
296d0 72 43 6f 64 65 20 78 43 72 65 61 74 65 28 0d 0a  rCode xCreate(..
296e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
296f0 49 6e 74 50 74 72 20 70 44 62 2c 0d 0a 20 20 20  IntPtr pDb,..   
29700 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
29710 50 74 72 20 70 41 75 78 2c 0d 0a 20 20 20 20 20  Ptr pAux,..     
29720 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 61             int a
29730 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  rgc,..          
29740 20 20 20 20 20 20 49 6e 74 50 74 72 20 61 72 67        IntPtr arg
29750 76 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  v,..            
29760 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70      ref IntPtr p
29770 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20  Vtab,..         
29780 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74         ref IntPt
29790 72 20 70 45 72 72 6f 72 0d 0a 20 20 20 20 20 20  r pError..      
297a0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
297b0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
297c0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43              // C
297d0 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d  heckDisposed();.
297e0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
297f0 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d     if (module ==
29800 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
29810 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
29820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
29830 45 72 72 6f 72 20 3d 20 53 51 4c 69 74 65 53 74  Error = SQLiteSt
29840 72 69 6e 67 2e 55 74 66 38 49 6e 74 50 74 72 46  ring.Utf8IntPtrF
29850 72 6f 6d 53 74 72 69 6e 67 28 0d 0a 20 20 20 20  romString(..    
29860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29870 20 20 20 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61      ModuleNotAva
29880 69 6c 61 62 6c 65 45 72 72 6f 72 4d 65 73 73 61  ilableErrorMessa
29890 67 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ge);....        
298a0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
298b0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
298c0 64 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20 20 20  de.Error;..     
298d0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
298e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
298f0 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 43  return module.xC
29900 72 65 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20  reate(..        
29910 20 20 20 20 20 20 20 20 20 20 20 20 70 44 62 2c              pDb,
29920 20 70 41 75 78 2c 20 61 72 67 63 2c 20 61 72 67   pAux, argc, arg
29930 76 2c 20 72 65 66 20 70 56 74 61 62 2c 20 72 65  v, ref pVtab, re
29940 66 20 70 45 72 72 6f 72 29 3b 0d 0a 20 20 20 20  f pError);..    
29950 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
29960 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
29970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
299a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
299b0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
299c0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
299d0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
299e0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
299f0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
29a00 65 2e 78 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d  e.xConnect" /> m
29a10 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
29a20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
29a30 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
29a40 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
29a50 22 70 44 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  "pDb">..        
29a60 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
29a70 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
29a80 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
29a90 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68  Connect" /> meth
29aa0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
29ab0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
29ac0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
29ad0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 41 75 78  param name="pAux
29ae0 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
29af0 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
29b00 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
29b10 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e  tiveModule.xConn
29b20 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ect" /> method..
29b30 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
29b40 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
29b50 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
29b60 6d 20 6e 61 6d 65 3d 22 61 72 67 63 22 3e 0d 0a  m name="argc">..
29b70 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
29b80 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
29b90 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
29ba0 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 22  Module.xConnect"
29bb0 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
29bc0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
29bd0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
29be0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
29bf0 6d 65 3d 22 61 72 67 76 22 3e 0d 0a 20 20 20 20  me="argv">..    
29c00 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
29c10 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
29c20 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
29c30 6c 65 2e 78 43 6f 6e 6e 65 63 74 22 20 2f 3e 20  le.xConnect" /> 
29c40 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
29c50 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
29c60 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
29c70 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
29c80 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20  pVtab">..       
29c90 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
29ca0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
29cb0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
29cc0 78 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74  xConnect" /> met
29cd0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
29ce0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
29cf0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
29d00 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 45 72  <param name="pEr
29d10 72 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  ror">..         
29d20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
29d30 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
29d40 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
29d50 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f  onnect" /> metho
29d60 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
29d70 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
29d80 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72            /// <r
29d90 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
29da0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
29db0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
29dc0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
29dd0 78 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74  xConnect" /> met
29de0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
29df0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
29e00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
29e10 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72  blic SQLiteError
29e20 43 6f 64 65 20 78 43 6f 6e 6e 65 63 74 28 0d 0a  Code xConnect(..
29e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29e40 49 6e 74 50 74 72 20 70 44 62 2c 0d 0a 20 20 20  IntPtr pDb,..   
29e50 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
29e60 50 74 72 20 70 41 75 78 2c 0d 0a 20 20 20 20 20  Ptr pAux,..     
29e70 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 61             int a
29e80 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  rgc,..          
29e90 20 20 20 20 20 20 49 6e 74 50 74 72 20 61 72 67        IntPtr arg
29ea0 76 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  v,..            
29eb0 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70      ref IntPtr p
29ec0 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20  Vtab,..         
29ed0 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74         ref IntPt
29ee0 72 20 70 45 72 72 6f 72 0d 0a 20 20 20 20 20 20  r pError..      
29ef0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
29f00 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
29f10 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43              // C
29f20 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d  heckDisposed();.
29f30 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
29f40 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d     if (module ==
29f50 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
29f60 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
29f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
29f80 45 72 72 6f 72 20 3d 20 53 51 4c 69 74 65 53 74  Error = SQLiteSt
29f90 72 69 6e 67 2e 55 74 66 38 49 6e 74 50 74 72 46  ring.Utf8IntPtrF
29fa0 72 6f 6d 53 74 72 69 6e 67 28 0d 0a 20 20 20 20  romString(..    
29fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29fc0 20 20 20 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61      ModuleNotAva
29fd0 69 6c 61 62 6c 65 45 72 72 6f 72 4d 65 73 73 61  ilableErrorMessa
29fe0 67 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ge);....        
29ff0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2a000 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
2a010 64 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20 20 20  de.Error;..     
2a020 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
2a030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a040 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 43  return module.xC
2a050 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20  onnect(..       
2a060 20 20 20 20 20 20 20 20 20 20 20 20 20 70 44 62               pDb
2a070 2c 20 70 41 75 78 2c 20 61 72 67 63 2c 20 61 72  , pAux, argc, ar
2a080 67 76 2c 20 72 65 66 20 70 56 74 61 62 2c 20 72  gv, ref pVtab, r
2a090 65 66 20 70 45 72 72 6f 72 29 3b 0d 0a 20 20 20  ef pError);..   
2a0a0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
2a0b0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
2a0c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a0d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a0e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a0f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2a100 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2a110 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2a120 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
2a130 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
2a140 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2a150 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 22 20 2f  le.xBestIndex" /
2a160 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
2a170 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
2a180 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
2a190 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2a1a0 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20  me="pVtab">..   
2a1b0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
2a1c0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
2a1d0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2a1e0 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 22 20  ule.xBestIndex" 
2a1f0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2a200 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
2a210 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
2a220 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2a230 65 3d 22 70 49 6e 64 65 78 22 3e 0d 0a 20 20 20  e="pIndex">..   
2a240 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
2a250 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
2a260 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2a270 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 22 20  ule.xBestIndex" 
2a280 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2a290 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
2a2a0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
2a2b0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
2a2c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2a2d0 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
2a2e0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
2a2f0 65 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64  eModule.xBestInd
2a300 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  ex" /> method...
2a310 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2a320 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
2a330 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53          public S
2a340 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
2a350 42 65 73 74 49 6e 64 65 78 28 0d 0a 20 20 20 20  BestIndex(..    
2a360 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
2a370 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
2a380 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
2a390 72 20 70 49 6e 64 65 78 0d 0a 20 20 20 20 20 20  r pIndex..      
2a3a0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
2a3b0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2a3c0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43              // C
2a3d0 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d  heckDisposed();.
2a3e0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2a3f0 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d     if (module ==
2a400 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
2a410 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2a420 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69  rn ModuleNotAvai
2a430 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72 28  lableTableError(
2a440 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20  pVtab);....     
2a450 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2a460 6e 20 6d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e  n module.xBestIn
2a470 64 65 78 28 70 56 74 61 62 2c 20 70 49 6e 64 65  dex(pVtab, pInde
2a480 78 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  x);..           
2a490 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
2a4a0 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a4d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a4e0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2a4f0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
2a500 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
2a510 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
2a520 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
2a530 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 69 73 63  tiveModule.xDisc
2a540 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f  onnect" /> metho
2a550 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
2a560 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
2a570 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2a580 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74  <param name="pVt
2a590 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ab">..          
2a5a0 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
2a5b0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2a5c0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 69  NativeModule.xDi
2a5d0 73 63 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74  sconnect" /> met
2a5e0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
2a5f0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2a600 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2a610 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
2a620 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
2a630 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
2a640 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2a650 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 22 20 2f  e.xDisconnect" /
2a660 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
2a670 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
2a680 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
2a690 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
2a6a0 45 72 72 6f 72 43 6f 64 65 20 78 44 69 73 63 6f  ErrorCode xDisco
2a6b0 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20  nnect(..        
2a6c0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
2a6d0 56 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20  Vtab..          
2a6e0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
2a6f0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2a700 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b          // Check
2a710 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20  Disposed();.... 
2a720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
2a730 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c  f (module == nul
2a740 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
2a750 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d          return M
2a760 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c  oduleNotAvailabl
2a770 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61  eTableError(pVta
2a780 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  b);....         
2a790 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f         return mo
2a7a0 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74  dule.xDisconnect
2a7b0 28 70 56 74 61 62 29 3b 0d 0a 20 20 20 20 20 20  (pVtab);..      
2a7c0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2a7d0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2a7e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a7f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2a820 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73            /// <s
2a830 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2a840 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2a850 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2a860 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2a870 78 44 65 73 74 72 6f 79 22 20 2f 3e 20 6d 65 74  xDestroy" /> met
2a880 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
2a890 20 20 2f 2f 2f 20 3c 2f 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 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
2a8c0 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
2a8d0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
2a8e0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
2a8f0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
2a900 44 65 73 74 72 6f 79 22 20 2f 3e 20 6d 65 74 68  Destroy" /> meth
2a910 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
2a920 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
2a930 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2a940 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
2a950 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
2a960 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
2a970 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2a980 2e 78 44 65 73 74 72 6f 79 22 20 2f 3e 20 6d 65  .xDestroy" /> me
2a990 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2a9a0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
2a9b0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
2a9c0 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f  ublic SQLiteErro
2a9d0 72 43 6f 64 65 20 78 44 65 73 74 72 6f 79 28 0d  rCode xDestroy(.
2a9e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a9f0 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20   IntPtr pVtab.. 
2aa00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
2aa10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2aa20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2aa30 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65   // CheckDispose
2aa40 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  d();....        
2aa50 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75          if (modu
2aa60 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  le == null)..   
2aa70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2aa80 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f   return ModuleNo
2aa90 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45  tAvailableTableE
2aaa0 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a  rror(pVtab);....
2aab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2aac0 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 44  return module.xD
2aad0 65 73 74 72 6f 79 28 70 56 74 61 62 29 3b 0d 0a  estroy(pVtab);..
2aae0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
2aaf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2ab00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ab10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ab20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ab30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ab40 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2ab50 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2ab60 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
2ab70 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
2ab80 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
2ab90 6f 64 75 6c 65 2e 78 4f 70 65 6e 22 20 2f 3e 20  odule.xOpen" /> 
2aba0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2abb0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
2abc0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
2abd0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2abe0 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20  ="pVtab">..     
2abf0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
2ac00 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
2ac10 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2ac20 65 2e 78 4f 70 65 6e 22 20 2f 3e 20 6d 65 74 68  e.xOpen" /> meth
2ac30 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
2ac40 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
2ac50 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2ac60 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72  param name="pCur
2ac70 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  sor">..         
2ac80 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2ac90 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2aca0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4f  eNativeModule.xO
2acb0 70 65 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  pen" /> method..
2acc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2acd0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
2ace0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
2acf0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
2ad00 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
2ad10 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2ad20 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4f 70  NativeModule.xOp
2ad30 65 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  en" /> method...
2ad40 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2ad50 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
2ad60 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53          public S
2ad70 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
2ad80 4f 70 65 6e 28 0d 0a 20 20 20 20 20 20 20 20 20  Open(..         
2ad90 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
2ada0 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  tab,..          
2adb0 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72        ref IntPtr
2adc0 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 20 20   pCursor..      
2add0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
2ade0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2adf0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43              // C
2ae00 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d  heckDisposed();.
2ae10 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2ae20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d     if (module ==
2ae30 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
2ae40 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2ae50 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69  rn ModuleNotAvai
2ae60 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72 28  lableTableError(
2ae70 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20  pVtab);....     
2ae80 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2ae90 6e 20 6d 6f 64 75 6c 65 2e 78 4f 70 65 6e 28 70  n module.xOpen(p
2aea0 56 74 61 62 2c 20 72 65 66 20 70 43 75 72 73 6f  Vtab, ref pCurso
2aeb0 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r);..           
2aec0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
2aed0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2aee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2af00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2af10 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2af20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
2af30 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
2af40 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
2af50 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
2af60 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73  tiveModule.xClos
2af70 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
2af80 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2af90 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
2afa0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
2afb0 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22  m name="pCursor"
2afc0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2afd0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
2afe0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
2aff0 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65  iveModule.xClose
2b000 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
2b010 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2b020 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
2b030 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
2b040 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2b050 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
2b060 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
2b070 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65  iveModule.xClose
2b080 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
2b090 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2b0a0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
2b0b0 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c        public SQL
2b0c0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6c  iteErrorCode xCl
2b0d0 6f 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ose(..          
2b0e0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75        IntPtr pCu
2b0f0 72 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20  rsor..          
2b100 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
2b110 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2b120 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b          // Check
2b130 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20  Disposed();.... 
2b140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
2b150 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c  f (module == nul
2b160 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
2b170 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d          return M
2b180 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c  oduleNotAvailabl
2b190 65 43 75 72 73 6f 72 45 72 72 6f 72 28 70 43 75  eCursorError(pCu
2b1a0 72 73 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  rsor);....      
2b1b0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2b1c0 20 6d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 28 70   module.xClose(p
2b1d0 43 75 72 73 6f 72 29 3b 0d 0a 20 20 20 20 20 20  Cursor);..      
2b1e0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2b1f0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2b200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2b240 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73            /// <s
2b250 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2b260 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2b270 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2b280 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2b290 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68  xFilter" /> meth
2b2a0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
2b2b0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2b2c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2b2d0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43   <param name="pC
2b2e0 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20  ursor">..       
2b2f0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2b300 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2b310 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2b320 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68  xFilter" /> meth
2b330 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
2b340 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
2b350 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2b360 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 64 78 4e  param name="idxN
2b370 75 6d 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  um">..          
2b380 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
2b390 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2b3a0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69  NativeModule.xFi
2b3b0 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  lter" /> method.
2b3c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2b3d0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
2b3e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
2b3f0 61 6d 20 6e 61 6d 65 3d 22 69 64 78 53 74 72 22  am name="idxStr"
2b400 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2b410 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
2b420 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
2b430 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65  iveModule.xFilte
2b440 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  r" /> method... 
2b450 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2b460 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
2b470 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
2b480 6e 61 6d 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20  name="argc">..  
2b490 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2b4a0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
2b4b0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2b4c0 64 75 6c 65 2e 78 46 69 6c 74 65 72 22 20 2f 3e  dule.xFilter" />
2b4d0 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
2b4e0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
2b4f0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
2b500 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
2b510 22 61 72 67 76 22 3e 0d 0a 20 20 20 20 20 20 20  "argv">..       
2b520 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2b530 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2b540 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2b550 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68  xFilter" /> meth
2b560 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
2b570 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
2b580 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2b590 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
2b5a0 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
2b5b0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
2b5c0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2b5d0 2e 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74  .xFilter" /> met
2b5e0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
2b5f0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
2b600 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
2b610 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72  blic SQLiteError
2b620 43 6f 64 65 20 78 46 69 6c 74 65 72 28 0d 0a 20  Code xFilter(.. 
2b630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
2b640 6e 74 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a  ntPtr pCursor,..
2b650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b660 69 6e 74 20 69 64 78 4e 75 6d 2c 0d 0a 20 20 20  int idxNum,..   
2b670 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
2b680 50 74 72 20 69 64 78 53 74 72 2c 0d 0a 20 20 20  Ptr idxStr,..   
2b690 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74               int
2b6a0 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20   argc,..        
2b6b0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 61          IntPtr a
2b6c0 72 67 76 0d 0a 20 20 20 20 20 20 20 20 20 20 20  rgv..           
2b6d0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
2b6e0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2b6f0 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44         // CheckD
2b700 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20  isposed();....  
2b710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
2b720 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c   (module == null
2b730 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2b740 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f         return Mo
2b750 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65  duleNotAvailable
2b760 43 75 72 73 6f 72 45 72 72 6f 72 28 70 43 75 72  CursorError(pCur
2b770 73 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  sor);....       
2b780 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2b790 6d 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 28 70  module.xFilter(p
2b7a0 43 75 72 73 6f 72 2c 20 69 64 78 4e 75 6d 2c 20  Cursor, idxNum, 
2b7b0 69 64 78 53 74 72 2c 20 61 72 67 63 2c 20 61 72  idxStr, argc, ar
2b7c0 67 76 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  gv);..          
2b7d0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
2b7e0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2b7f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b820 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2b830 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
2b840 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
2b850 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
2b860 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
2b870 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4e 65 78  ativeModule.xNex
2b880 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  t" /> method... 
2b890 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2b8a0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
2b8b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
2b8c0 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22  m name="pCursor"
2b8d0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2b8e0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
2b8f0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
2b900 69 76 65 4d 6f 64 75 6c 65 2e 78 4e 65 78 74 22  iveModule.xNext"
2b910 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
2b920 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
2b930 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
2b940 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
2b950 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2b960 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
2b970 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
2b980 76 65 4d 6f 64 75 6c 65 2e 78 4e 65 78 74 22 20  veModule.xNext" 
2b990 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2b9a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
2b9b0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
2b9c0 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
2b9d0 65 45 72 72 6f 72 43 6f 64 65 20 78 4e 65 78 74  eErrorCode xNext
2b9e0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2b9f0 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f     IntPtr pCurso
2ba00 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  r..             
2ba10 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
2ba20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2ba30 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73       // CheckDis
2ba40 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20  posed();....    
2ba50 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2ba60 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d  module == null).
2ba70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ba80 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75       return Modu
2ba90 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43 75  leNotAvailableCu
2baa0 72 73 6f 72 45 72 72 6f 72 28 70 43 75 72 73 6f  rsorError(pCurso
2bab0 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  r);....         
2bac0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f         return mo
2bad0 64 75 6c 65 2e 78 4e 65 78 74 28 70 43 75 72 73  dule.xNext(pCurs
2bae0 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  or);..          
2baf0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
2bb00 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2bb10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bb20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bb30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bb40 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2bb50 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
2bb60 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
2bb70 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
2bb80 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
2bb90 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 45 6f 66  ativeModule.xEof
2bba0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
2bbb0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2bbc0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2bbd0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
2bbe0 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e   name="pCursor">
2bbf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2bc00 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
2bc10 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
2bc20 76 65 4d 6f 64 75 6c 65 2e 78 45 6f 66 22 20 2f  veModule.xEof" /
2bc30 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
2bc40 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
2bc50 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
2bc60 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
2bc70 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2bc80 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
2bc90 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
2bca0 4d 6f 64 75 6c 65 2e 78 45 6f 66 22 20 2f 3e 20  Module.xEof" /> 
2bcb0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2bcc0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
2bcd0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
2bce0 20 70 75 62 6c 69 63 20 69 6e 74 20 78 45 6f 66   public int xEof
2bcf0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2bd00 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f     IntPtr pCurso
2bd10 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  r..             
2bd20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
2bd30 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2bd40 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73       // CheckDis
2bd50 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20  posed();....    
2bd60 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2bd70 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d  module == null).
2bd80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2bd90 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2bda0 20 20 20 20 20 20 20 20 4d 6f 64 75 6c 65 4e 6f          ModuleNo
2bdb0 74 41 76 61 69 6c 61 62 6c 65 43 75 72 73 6f 72  tAvailableCursor
2bdc0 45 72 72 6f 72 28 70 43 75 72 73 6f 72 29 3b 0d  Error(pCursor);.
2bdd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2bde0 20 20 20 20 20 72 65 74 75 72 6e 20 31 3b 0d 0a       return 1;..
2bdf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2be00 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
2be10 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75       return modu
2be20 6c 65 2e 78 45 6f 66 28 70 43 75 72 73 6f 72 29  le.xEof(pCursor)
2be30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
2be40 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2be50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be90 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
2bea0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2beb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2bec0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
2bed0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
2bee0 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e  veModule.xColumn
2bef0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
2bf00 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2bf10 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2bf20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
2bf30 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e   name="pCursor">
2bf40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2bf50 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
2bf60 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
2bf70 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e  veModule.xColumn
2bf80 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
2bf90 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2bfa0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
2bfb0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
2bfc0 61 6d 65 3d 22 70 43 6f 6e 74 65 78 74 22 3e 0d  ame="pContext">.
2bfd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2bfe0 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
2bff0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
2c000 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 22  eModule.xColumn"
2c010 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
2c020 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
2c030 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
2c040 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2c050 6d 65 3d 22 69 6e 64 65 78 22 3e 0d 0a 20 20 20  me="index">..   
2c060 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
2c070 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
2c080 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2c090 75 6c 65 2e 78 43 6f 6c 75 6d 6e 22 20 2f 3e 20  ule.xColumn" /> 
2c0a0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2c0b0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2c0c0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2c0d0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
2c0e0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2c0f0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
2c100 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2c110 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 22 20 2f 3e  dule.xColumn" />
2c120 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
2c130 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
2c140 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
2c150 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45    public SQLiteE
2c160 72 72 6f 72 43 6f 64 65 20 78 43 6f 6c 75 6d 6e  rrorCode xColumn
2c170 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2c180 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f     IntPtr pCurso
2c190 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r,..            
2c1a0 20 20 20 20 49 6e 74 50 74 72 20 70 43 6f 6e 74      IntPtr pCont
2c1b0 65 78 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ext,..          
2c1c0 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65 78 0d        int index.
2c1d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c1e0 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
2c1f0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2c200 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f     // CheckDispo
2c210 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  sed();....      
2c220 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f            if (mo
2c230 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  dule == null).. 
2c240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c250 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65     return Module
2c260 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43 75 72 73  NotAvailableCurs
2c270 6f 72 45 72 72 6f 72 28 70 43 75 72 73 6f 72 29  orError(pCursor)
2c280 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2c290 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75       return modu
2c2a0 6c 65 2e 78 43 6f 6c 75 6d 6e 28 70 43 75 72 73  le.xColumn(pCurs
2c2b0 6f 72 2c 20 70 43 6f 6e 74 65 78 74 2c 20 69 6e  or, pContext, in
2c2c0 64 65 78 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  dex);..         
2c2d0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
2c2e0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2c2f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c320 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2c330 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
2c340 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
2c350 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
2c360 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2c370 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f  NativeModule.xRo
2c380 77 49 64 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  wId" /> method..
2c390 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2c3a0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
2c3b0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
2c3c0 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f  ram name="pCurso
2c3d0 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r">..           
2c3e0 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
2c3f0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
2c400 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 77  ativeModule.xRow
2c410 49 64 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  Id" /> method...
2c420 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2c430 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
2c440 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
2c450 20 6e 61 6d 65 3d 22 72 6f 77 49 64 22 3e 0d 0a   name="rowId">..
2c460 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2c470 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
2c480 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
2c490 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 22 20 2f  Module.xRowId" /
2c4a0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
2c4b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
2c4c0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
2c4d0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
2c4e0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2c4f0 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
2c500 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
2c510 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 22 20 2f  Module.xRowId" /
2c520 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
2c530 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
2c540 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
2c550 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
2c560 45 72 72 6f 72 43 6f 64 65 20 78 52 6f 77 49 64  ErrorCode xRowId
2c570 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2c580 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f     IntPtr pCurso
2c590 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r,..            
2c5a0 20 20 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77      ref long row
2c5b0 49 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  Id..            
2c5c0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
2c5d0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2c5e0 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69        // CheckDi
2c5f0 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20  sposed();....   
2c600 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2c610 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29  (module == null)
2c620 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2c630 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64        return Mod
2c640 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43  uleNotAvailableC
2c650 75 72 73 6f 72 45 72 72 6f 72 28 70 43 75 72 73  ursorError(pCurs
2c660 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  or);....        
2c670 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d          return m
2c680 6f 64 75 6c 65 2e 78 52 6f 77 49 64 28 70 43 75  odule.xRowId(pCu
2c690 72 73 6f 72 2c 20 72 65 66 20 72 6f 77 49 64 29  rsor, ref rowId)
2c6a0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
2c6b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2c6c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c6e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c6f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c700 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
2c710 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2c720 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2c730 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
2c740 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
2c750 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65  veModule.xUpdate
2c760 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
2c770 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2c780 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2c790 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
2c7a0 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a   name="pVtab">..
2c7b0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2c7c0 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
2c7d0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
2c7e0 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 22 20  Module.xUpdate" 
2c7f0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2c800 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
2c810 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
2c820 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2c830 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20 20 20 20  e="argc">..     
2c840 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
2c850 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
2c860 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2c870 65 2e 78 55 70 64 61 74 65 22 20 2f 3e 20 6d 65  e.xUpdate" /> me
2c880 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2c890 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
2c8a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2c8b0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72   <param name="ar
2c8c0 67 76 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  gv">..          
2c8d0 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
2c8e0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2c8f0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70  NativeModule.xUp
2c900 64 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  date" /> method.
2c910 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2c920 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
2c930 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
2c940 61 6d 20 6e 61 6d 65 3d 22 72 6f 77 49 64 22 3e  am name="rowId">
2c950 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2c960 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
2c970 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
2c980 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65  veModule.xUpdate
2c990 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
2c9a0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2c9b0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
2c9c0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
2c9d0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2c9e0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
2c9f0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
2ca00 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74  iveModule.xUpdat
2ca10 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
2ca20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2ca30 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
2ca40 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51         public SQ
2ca50 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 55  LiteErrorCode xU
2ca60 70 64 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20  pdate(..        
2ca70 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
2ca80 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20  Vtab,..         
2ca90 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c         int argc,
2caa0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2cab0 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a    IntPtr argv,..
2cac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cad0 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a  ref long rowId..
2cae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2caf0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
2cb00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2cb10 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73    // CheckDispos
2cb20 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ed();....       
2cb30 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64           if (mod
2cb40 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ule == null)..  
2cb50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cb60 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e    return ModuleN
2cb70 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65  otAvailableTable
2cb80 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d  Error(pVtab);...
2cb90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2cba0 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78   return module.x
2cbb0 55 70 64 61 74 65 28 70 56 74 61 62 2c 20 61 72  Update(pVtab, ar
2cbc0 67 63 2c 20 61 72 67 76 2c 20 72 65 66 20 72 6f  gc, argv, ref ro
2cbd0 77 49 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  wId);..         
2cbe0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
2cbf0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2cc00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cc10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cc20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cc30 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2cc40 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
2cc50 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
2cc60 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
2cc70 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2cc80 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65  NativeModule.xBe
2cc90 67 69 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  gin" /> method..
2cca0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2ccb0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
2ccc0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
2ccd0 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22  ram name="pVtab"
2cce0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2ccf0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
2cd00 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
2cd10 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 67 69 6e  iveModule.xBegin
2cd20 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
2cd30 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2cd40 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
2cd50 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
2cd60 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2cd70 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
2cd80 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
2cd90 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 67 69 6e  iveModule.xBegin
2cda0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
2cdb0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2cdc0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
2cdd0 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c        public SQL
2cde0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 42 65  iteErrorCode xBe
2cdf0 67 69 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  gin(..          
2ce00 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
2ce10 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ab..            
2ce20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
2ce30 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2ce40 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69        // CheckDi
2ce50 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20  sposed();....   
2ce60 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2ce70 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29  (module == null)
2ce80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ce90 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64        return Mod
2cea0 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54  uleNotAvailableT
2ceb0 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29  ableError(pVtab)
2cec0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2ced0 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75       return modu
2cee0 6c 65 2e 78 42 65 67 69 6e 28 70 56 74 61 62 29  le.xBegin(pVtab)
2cef0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
2cf00 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2cf10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cf20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cf30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cf40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cf50 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
2cf60 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2cf70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2cf80 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
2cf90 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
2cfa0 76 65 4d 6f 64 75 6c 65 2e 78 53 79 6e 63 22 20  veModule.xSync" 
2cfb0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2cfc0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
2cfd0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2cfe0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
2cff0 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20  ame="pVtab">..  
2d000 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2d010 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
2d020 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2d030 64 75 6c 65 2e 78 53 79 6e 63 22 20 2f 3e 20 6d  dule.xSync" /> m
2d040 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2d050 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2d060 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2d070 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
2d080 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
2d090 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
2d0a0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2d0b0 75 6c 65 2e 78 53 79 6e 63 22 20 2f 3e 20 6d 65  ule.xSync" /> me
2d0c0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2d0d0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
2d0e0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
2d0f0 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f  ublic SQLiteErro
2d100 72 43 6f 64 65 20 78 53 79 6e 63 28 0d 0a 20 20  rCode xSync(..  
2d110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
2d120 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20  tPtr pVtab..    
2d130 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
2d140 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2d150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2d160 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
2d170 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2d180 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20       if (module 
2d190 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
2d1a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2d1b0 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76  turn ModuleNotAv
2d1c0 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f  ailableTableErro
2d1d0 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20  r(pVtab);....   
2d1e0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2d1f0 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 53 79 6e 63  urn module.xSync
2d200 28 70 56 74 61 62 29 3b 0d 0a 20 20 20 20 20 20  (pVtab);..      
2d210 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2d220 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2d230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2d270 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73            /// <s
2d280 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2d290 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2d2a0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2d2b0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2d2c0 78 43 6f 6d 6d 69 74 22 20 2f 3e 20 6d 65 74 68  xCommit" /> meth
2d2d0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
2d2e0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2d2f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2d300 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
2d310 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  tab">..         
2d320 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2d330 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2d340 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
2d350 6f 6d 6d 69 74 22 20 2f 3e 20 6d 65 74 68 6f 64  ommit" /> method
2d360 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2d370 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
2d380 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65           /// <re
2d390 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
2d3a0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
2d3b0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
2d3c0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
2d3d0 43 6f 6d 6d 69 74 22 20 2f 3e 20 6d 65 74 68 6f  Commit" /> metho
2d3e0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
2d3f0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
2d400 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
2d410 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  ic SQLiteErrorCo
2d420 64 65 20 78 43 6f 6d 6d 69 74 28 0d 0a 20 20 20  de xCommit(..   
2d430 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
2d440 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 20  Ptr pVtab..     
2d450 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
2d460 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2d470 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2d480 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
2d490 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2d4a0 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d      if (module =
2d4b0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
2d4c0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2d4d0 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61  urn ModuleNotAva
2d4e0 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72  ilableTableError
2d4f0 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20  (pVtab);....    
2d500 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2d510 72 6e 20 6d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69  rn module.xCommi
2d520 74 28 70 56 74 61 62 29 3b 0d 0a 20 20 20 20 20  t(pVtab);..     
2d530 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2d540 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2d550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2d590 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2d5a0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2d5b0 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
2d5c0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
2d5d0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2d5e0 2e 78 52 6f 6c 6c 62 61 63 6b 22 20 2f 3e 20 6d  .xRollback" /> m
2d5f0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2d600 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2d610 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
2d620 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
2d630 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20  "pVtab">..      
2d640 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
2d650 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
2d660 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2d670 2e 78 52 6f 6c 6c 62 61 63 6b 22 20 2f 3e 20 6d  .xRollback" /> m
2d680 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2d690 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2d6a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2d6b0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
2d6c0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
2d6d0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
2d6e0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2d6f0 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 22 20 2f  ule.xRollback" /
2d700 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
2d710 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
2d720 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
2d730 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
2d740 45 72 72 6f 72 43 6f 64 65 20 78 52 6f 6c 6c 62  ErrorCode xRollb
2d750 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ack(..          
2d760 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
2d770 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ab..            
2d780 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
2d790 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2d7a0 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69        // CheckDi
2d7b0 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20  sposed();....   
2d7c0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2d7d0 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29  (module == null)
2d7e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d7f0 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64        return Mod
2d800 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54  uleNotAvailableT
2d810 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29  ableError(pVtab)
2d820 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2d830 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75       return modu
2d840 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 28 70 56 74  le.xRollback(pVt
2d850 61 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ab);..          
2d860 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
2d870 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2d880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d8a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d8b0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2d8c0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
2d8d0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
2d8e0 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
2d8f0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
2d900 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e  ativeModule.xFin
2d910 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6d 65  dFunction" /> me
2d920 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2d930 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
2d940 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2d950 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
2d960 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20  pVtab">..       
2d970 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2d980 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2d990 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2d9a0 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f  xFindFunction" /
2d9b0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
2d9c0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
2d9d0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
2d9e0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2d9f0 3d 22 6e 41 72 67 22 3e 0d 0a 20 20 20 20 20 20  ="nArg">..      
2da00 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
2da10 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
2da20 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2da30 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20  .xFindFunction" 
2da40 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2da50 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
2da60 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
2da70 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2da80 65 3d 22 7a 4e 61 6d 65 22 3e 0d 0a 20 20 20 20  e="zName">..    
2da90 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
2daa0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
2dab0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2dac0 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e  le.xFindFunction
2dad0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
2dae0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2daf0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
2db00 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
2db10 61 6d 65 3d 22 63 61 6c 6c 62 61 63 6b 22 3e 0d  ame="callback">.
2db20 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2db30 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
2db40 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
2db50 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e  eModule.xFindFun
2db60 63 74 69 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64  ction" /> method
2db70 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2db80 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
2db90 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
2dba0 72 61 6d 20 6e 61 6d 65 3d 22 70 43 6c 69 65 6e  ram name="pClien
2dbb0 74 44 61 74 61 22 3e 0d 0a 20 20 20 20 20 20 20  tData">..       
2dbc0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2dbd0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2dbe0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2dbf0 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f  xFindFunction" /
2dc00 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
2dc10 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
2dc20 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
2dc30 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
2dc40 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2dc50 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
2dc60 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
2dc70 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63  Module.xFindFunc
2dc80 74 69 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  tion" /> method.
2dc90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2dca0 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
2dcb0 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
2dcc0 20 69 6e 74 20 78 46 69 6e 64 46 75 6e 63 74 69   int xFindFuncti
2dcd0 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on(..           
2dce0 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
2dcf0 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  b,..            
2dd00 20 20 20 20 69 6e 74 20 6e 41 72 67 2c 0d 0a 20      int nArg,.. 
2dd10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
2dd20 6e 74 50 74 72 20 7a 4e 61 6d 65 2c 0d 0a 20 20  ntPtr zName,..  
2dd30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2dd40 66 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b  f SQLiteCallback
2dd50 20 63 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20   callback,..    
2dd60 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
2dd70 49 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61  IntPtr pClientDa
2dd80 74 61 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ta..            
2dd90 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
2dda0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2ddb0 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69        // CheckDi
2ddc0 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20  sposed();....   
2ddd0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2dde0 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29  (module == null)
2ddf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2de00 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2de10 20 20 20 20 20 20 20 20 20 4d 6f 64 75 6c 65 4e           ModuleN
2de20 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65  otAvailableTable
2de30 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 20  Error(pVtab);.. 
2de40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2de50 20 20 20 72 65 74 75 72 6e 20 30 3b 0d 0a 20 20     return 0;..  
2de60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
2de70 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2de80 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65     return module
2de90 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28 0d  .xFindFunction(.
2dea0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2deb0 20 20 20 20 20 70 56 74 61 62 2c 20 6e 41 72 67       pVtab, nArg
2dec0 2c 20 7a 4e 61 6d 65 2c 20 72 65 66 20 63 61 6c  , zName, ref cal
2ded0 6c 62 61 63 6b 2c 20 72 65 66 20 70 43 6c 69 65  lback, ref pClie
2dee0 6e 74 44 61 74 61 29 3b 0d 0a 20 20 20 20 20 20  ntData);..      
2def0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2df00 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2df10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2df20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2df30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2df40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2df50 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73            /// <s
2df60 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2df70 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2df80 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2df90 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2dfa0 78 52 65 6e 61 6d 65 22 20 2f 3e 20 6d 65 74 68  xRename" /> meth
2dfb0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
2dfc0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2dfd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2dfe0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
2dff0 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  tab">..         
2e000 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2e010 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2e020 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52  eNativeModule.xR
2e030 65 6e 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64  ename" /> method
2e040 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2e050 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
2e060 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
2e070 72 61 6d 20 6e 61 6d 65 3d 22 7a 4e 65 77 22 3e  ram name="zNew">
2e080 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2e090 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
2e0a0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
2e0b0 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65  veModule.xRename
2e0c0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
2e0d0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2e0e0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
2e0f0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
2e100 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2e110 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
2e120 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
2e130 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d  iveModule.xRenam
2e140 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
2e150 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2e160 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
2e170 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51         public SQ
2e180 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52  LiteErrorCode xR
2e190 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20  ename(..        
2e1a0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
2e1b0 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20  Vtab,..         
2e1c0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 7a 4e         IntPtr zN
2e1d0 65 77 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ew..            
2e1e0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
2e1f0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2e200 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69        // CheckDi
2e210 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20  sposed();....   
2e220 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2e230 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29  (module == null)
2e240 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e250 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64        return Mod
2e260 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54  uleNotAvailableT
2e270 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29  ableError(pVtab)
2e280 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2e290 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75       return modu
2e2a0 6c 65 2e 78 52 65 6e 61 6d 65 28 70 56 74 61 62  le.xRename(pVtab
2e2b0 2c 20 7a 4e 65 77 29 3b 0d 0a 20 20 20 20 20 20  , zNew);..      
2e2c0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2e2d0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2e2e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e2f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2e320 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73            /// <s
2e330 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2e340 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2e350 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2e360 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2e370 78 53 61 76 65 70 6f 69 6e 74 22 20 2f 3e 20 6d  xSavepoint" /> m
2e380 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2e390 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2e3a0 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
2e3b0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
2e3c0 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20  "pVtab">..      
2e3d0 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
2e3e0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
2e3f0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2e400 2e 78 53 61 76 65 70 6f 69 6e 74 22 20 2f 3e 20  .xSavepoint" /> 
2e410 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2e420 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2e430 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2e440 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
2e450 69 53 61 76 65 70 6f 69 6e 74 22 3e 0d 0a 20 20  iSavepoint">..  
2e460 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2e470 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
2e480 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2e490 64 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74 22  dule.xSavepoint"
2e4a0 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
2e4b0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
2e4c0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
2e4d0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
2e4e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2e4f0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
2e500 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
2e510 76 65 4d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f  veModule.xSavepo
2e520 69 6e 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  int" /> method..
2e530 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2e540 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
2e550 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
2e560 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
2e570 78 53 61 76 65 70 6f 69 6e 74 28 0d 0a 20 20 20  xSavepoint(..   
2e580 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
2e590 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
2e5a0 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
2e5b0 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20  iSavepoint..    
2e5c0 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
2e5d0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2e5e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2e5f0 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
2e600 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2e610 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20       if (module 
2e620 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
2e630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2e640 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76  turn ModuleNotAv
2e650 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f  ailableTableErro
2e660 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20  r(pVtab);....   
2e670 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2e680 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 53 61 76 65  urn module.xSave
2e690 70 6f 69 6e 74 28 70 56 74 61 62 2c 20 69 53 61  point(pVtab, iSa
2e6a0 76 65 70 6f 69 6e 74 29 3b 0d 0a 20 20 20 20 20  vepoint);..     
2e6b0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2e6c0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2e6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e6e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e6f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2e710 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2e720 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2e730 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
2e740 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
2e750 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2e760 2e 78 52 65 6c 65 61 73 65 22 20 2f 3e 20 6d 65  .xRelease" /> me
2e770 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2e780 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
2e790 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2e7a0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
2e7b0 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20  pVtab">..       
2e7c0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2e7d0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2e7e0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2e7f0 78 52 65 6c 65 61 73 65 22 20 2f 3e 20 6d 65 74  xRelease" /> met
2e800 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
2e810 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2e820 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2e830 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 53 61  <param name="iSa
2e840 76 65 70 6f 69 6e 74 22 3e 0d 0a 20 20 20 20 20  vepoint">..     
2e850 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
2e860 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
2e870 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2e880 65 2e 78 52 65 6c 65 61 73 65 22 20 2f 3e 20 6d  e.xRelease" /> m
2e890 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2e8a0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2e8b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2e8c0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
2e8d0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
2e8e0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
2e8f0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2e900 75 6c 65 2e 78 52 65 6c 65 61 73 65 22 20 2f 3e  ule.xRelease" />
2e910 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
2e920 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
2e930 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
2e940 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45    public SQLiteE
2e950 72 72 6f 72 43 6f 64 65 20 78 52 65 6c 65 61 73  rrorCode xReleas
2e960 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
2e970 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
2e980 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2e990 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69 6e     int iSavepoin
2e9a0 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  t..             
2e9b0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
2e9c0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2e9d0 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73       // CheckDis
2e9e0 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20  posed();....    
2e9f0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2ea00 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d  module == null).
2ea10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ea20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75       return Modu
2ea30 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61  leNotAvailableTa
2ea40 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b  bleError(pVtab);
2ea50 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2ea60 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c      return modul
2ea70 65 2e 78 52 65 6c 65 61 73 65 28 70 56 74 61 62  e.xRelease(pVtab
2ea80 2c 20 69 53 61 76 65 70 6f 69 6e 74 29 3b 0d 0a  , iSavepoint);..
2ea90 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
2eaa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2eab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ead0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eaf0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2eb00 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2eb10 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
2eb20 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
2eb30 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
2eb40 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54  odule.xRollbackT
2eb50 6f 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  o" /> method... 
2eb60 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2eb70 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
2eb80 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
2eb90 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d  m name="pVtab">.
2eba0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2ebb0 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
2ebc0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
2ebd0 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63  eModule.xRollbac
2ebe0 6b 54 6f 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  kTo" /> method..
2ebf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2ec00 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
2ec10 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
2ec20 6d 20 6e 61 6d 65 3d 22 69 53 61 76 65 70 6f 69  m name="iSavepoi
2ec30 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  nt">..          
2ec40 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
2ec50 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2ec60 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f  NativeModule.xRo
2ec70 6c 6c 62 61 63 6b 54 6f 22 20 2f 3e 20 6d 65 74  llbackTo" /> met
2ec80 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
2ec90 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2eca0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2ecb0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
2ecc0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
2ecd0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
2ece0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2ecf0 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 22 20 2f  e.xRollbackTo" /
2ed00 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
2ed10 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
2ed20 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
2ed30 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
2ed40 45 72 72 6f 72 43 6f 64 65 20 78 52 6f 6c 6c 62  ErrorCode xRollb
2ed50 61 63 6b 54 6f 28 0d 0a 20 20 20 20 20 20 20 20  ackTo(..        
2ed60 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
2ed70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20  Vtab,..         
2ed80 20 20 20 20 20 20 20 69 6e 74 20 69 53 61 76 65         int iSave
2ed90 70 6f 69 6e 74 0d 0a 20 20 20 20 20 20 20 20 20  point..         
2eda0 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
2edb0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2edc0 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63           // Chec
2edd0 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a  kDisposed();....
2ede0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2edf0 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75  if (module == nu
2ee00 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
2ee10 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2ee20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62  ModuleNotAvailab
2ee30 6c 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74  leTableError(pVt
2ee40 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ab);....        
2ee50 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d          return m
2ee60 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54  odule.xRollbackT
2ee70 6f 28 70 56 74 61 62 2c 20 69 53 61 76 65 70 6f  o(pVtab, iSavepo
2ee80 69 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  int);..         
2ee90 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
2eea0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
2eeb0 20 20 20 20 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2ef00 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ...            #
2ef10 72 65 67 69 6f 6e 20 49 44 69 73 70 6f 73 61 62  region IDisposab
2ef20 6c 65 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20  le Members..    
2ef30 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
2ef40 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
2ef50 20 20 20 2f 2f 2f 20 44 69 73 70 6f 73 65 73 20     /// Disposes 
2ef60 6f 66 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69  of this object i
2ef70 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20  nstance...      
2ef80 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
2ef90 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
2efa0 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 44 69    public void Di
2efb0 73 70 6f 73 65 28 29 0d 0a 20 20 20 20 20 20 20  spose()..       
2efc0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2efd0 20 20 20 20 20 20 20 20 44 69 73 70 6f 73 65 28          Dispose(
2efe0 74 72 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  true);..        
2eff0 20 20 20 20 20 20 20 20 47 43 2e 53 75 70 70 72          GC.Suppr
2f000 65 73 73 46 69 6e 61 6c 69 7a 65 28 74 68 69 73  essFinalize(this
2f010 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2f020 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  }..            #
2f030 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
2f040 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
2f050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2f090 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67              #reg
2f0a0 69 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c 65 20  ion IDisposable 
2f0b0 22 50 61 74 74 65 72 6e 22 20 4d 65 6d 62 65 72  "Pattern" Member
2f0c0 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  s..            p
2f0d0 72 69 76 61 74 65 20 62 6f 6f 6c 20 64 69 73 70  rivate bool disp
2f0e0 6f 73 65 64 3b 0d 0a 20 20 20 20 20 20 20 20 20  osed;..         
2f0f0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2f100 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2f110 2f 20 54 68 72 6f 77 73 20 61 6e 20 3c 73 65 65  / Throws an <see
2f120 20 63 72 65 66 3d 22 4f 62 6a 65 63 74 44 69 73   cref="ObjectDis
2f130 70 6f 73 65 64 45 78 63 65 70 74 69 6f 6e 22 20  posedException" 
2f140 2f 3e 20 69 66 20 74 68 69 73 20 6f 62 6a 65 63  /> if this objec
2f150 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  t..            /
2f160 2f 2f 20 69 6e 73 74 61 6e 63 65 20 68 61 73 20  // instance has 
2f170 62 65 65 6e 20 64 69 73 70 6f 73 65 64 2e 0d 0a  been disposed...
2f180 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2f190 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
2f1a0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
2f1b0 76 6f 69 64 20 43 68 65 63 6b 44 69 73 70 6f 73  void CheckDispos
2f1c0 65 64 28 29 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  ed() /* throw */
2f1d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2f1e0 0a 23 69 66 20 54 48 52 4f 57 5f 4f 4e 5f 44 49  .#if THROW_ON_DI
2f1f0 53 50 4f 53 45 44 0d 0a 20 20 20 20 20 20 20 20  SPOSED..        
2f200 20 20 20 20 20 20 20 20 69 66 20 28 64 69 73 70          if (disp
2f210 6f 73 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20  osed)..         
2f220 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2f230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
2f240 72 6f 77 20 6e 65 77 20 4f 62 6a 65 63 74 44 69  row new ObjectDi
2f250 73 70 6f 73 65 64 45 78 63 65 70 74 69 6f 6e 28  sposedException(
2f260 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f270 20 20 20 20 20 20 20 20 20 20 74 79 70 65 6f 66            typeof
2f280 28 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  (SQLiteNativeMod
2f290 75 6c 65 29 2e 4e 61 6d 65 29 3b 0d 0a 20 20 20  ule).Name);..   
2f2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2f2b0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
2f2c0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2f2d0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2f2e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f2f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f310 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2f320 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
2f330 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
2f340 20 20 20 2f 2f 2f 20 44 69 73 70 6f 73 65 73 20     /// Disposes 
2f350 6f 66 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69  of this object i
2f360 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20  nstance...      
2f370 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
2f380 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
2f390 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2f3a0 65 3d 22 64 69 73 70 6f 73 69 6e 67 22 3e 0d 0a  e="disposing">..
2f3b0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2f3c0 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 69 73  Non-zero if this
2f3d0 20 6d 65 74 68 6f 64 20 69 73 20 62 65 69 6e 67   method is being
2f3e0 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 74 68 65   called from the
2f3f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2f400 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 44 69 73  / <see cref="Dis
2f410 70 6f 73 65 28 29 22 20 2f 3e 20 6d 65 74 68 6f  pose()" /> metho
2f420 64 2e 20 20 5a 65 72 6f 20 69 66 20 74 68 69 73  d.  Zero if this
2f430 20 6d 65 74 68 6f 64 20 69 73 20 62 65 69 6e 67   method is being
2f440 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2f450 2f 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 74 68  / called from th
2f460 65 20 66 69 6e 61 6c 69 7a 65 72 2e 0d 0a 20 20  e finalizer...  
2f470 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2f480 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
2f490 20 20 20 20 70 72 69 76 61 74 65 20 2f 2a 20 70      private /* p
2f4a0 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c  rotected virtual
2f4b0 20 2a 2f 20 76 6f 69 64 20 44 69 73 70 6f 73 65   */ void Dispose
2f4c0 28 62 6f 6f 6c 20 64 69 73 70 6f 73 69 6e 67 29  (bool disposing)
2f4d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2f4e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f4f0 20 69 66 20 28 21 64 69 73 70 6f 73 65 64 29 0d   if (!disposed).
2f500 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f510 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2f520 20 20 20 20 20 20 20 20 2f 2f 69 66 20 28 64 69          //if (di
2f530 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20 20  sposing)..      
2f540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2f550 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2f560 20 20 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 2f         //    ///
2f570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f590 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
2f5a0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 20         //    // 
2f5b0 64 69 73 70 6f 73 65 20 6d 61 6e 61 67 65 64 20  dispose managed 
2f5c0 72 65 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e  resources here..
2f5d0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2f5e0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 2f         //    ///
2f5f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f610 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
2f620 20 20 20 20 20 20 20 2f 2f 7d 0d 0a 0d 0a 20 20         //}....  
2f630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f640 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2f650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f660 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
2f670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2f680 20 72 65 6c 65 61 73 65 20 75 6e 6d 61 6e 61 67   release unmanag
2f690 65 64 20 72 65 73 6f 75 72 63 65 73 20 68 65 72  ed resources her
2f6a0 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  e.....          
2f6b0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
2f6c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f6e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2f6f0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
2f700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f710 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20 6d 6f 64  // NOTE: The mod
2f720 75 6c 65 20 69 73 20 6e 6f 74 20 6f 77 6e 65 64  ule is not owned
2f730 20 62 79 20 75 73 3b 20 74 68 65 72 65 66 6f 72   by us; therefor
2f740 65 2c 20 64 6f 20 6e 6f 74 0d 0a 20 20 20 20 20  e, do not..     
2f750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2f760 2f 20 20 20 20 20 20 20 64 69 73 70 6f 73 65 20  /       dispose 
2f770 69 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  it...           
2f780 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
2f790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f7a0 20 69 66 20 28 6d 6f 64 75 6c 65 20 21 3d 20 6e   if (module != n
2f7b0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
2f7c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f                mo
2f7d0 64 75 6c 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a  dule = null;....
2f7e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f7f0 20 20 20 20 64 69 73 70 6f 73 65 64 20 3d 20 74      disposed = t
2f800 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
2f810 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2f820 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2f830 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
2f840 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2f850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f890 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
2f8a0 20 23 72 65 67 69 6f 6e 20 44 65 73 74 72 75 63   #region Destruc
2f8b0 74 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tor..           
2f8c0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
2f8d0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2f8e0 46 69 6e 61 6c 69 7a 65 73 20 74 68 69 73 20 6f  Finalizes this o
2f8f0 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d  bject instance..
2f900 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2f910 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
2f920 20 20 20 20 20 20 20 20 20 7e 53 51 4c 69 74 65           ~SQLite
2f930 4e 61 74 69 76 65 4d 6f 64 75 6c 65 28 29 0d 0a  NativeModule()..
2f940 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2f950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44                 D
2f960 69 73 70 6f 73 65 28 66 61 6c 73 65 29 3b 0d 0a  ispose(false);..
2f970 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2f980 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72             #endr
2f990 65 67 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 7d  egion..        }
2f9a0 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
2f9b0 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
2f9c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f9d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f9e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f9f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fa00 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2fa10 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
2fa20 74 65 20 43 6f 6e 73 74 61 6e 74 73 0d 0a 20 20  te Constants..  
2fa30 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
2fa40 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
2fa50 20 54 68 65 20 64 65 66 61 75 6c 74 20 65 73 74   The default est
2fa60 69 6d 61 74 65 64 20 63 6f 73 74 20 66 6f 72 20  imated cost for 
2fa70 75 73 65 20 77 69 74 68 20 74 68 65 0d 0a 20 20  use with the..  
2fa80 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
2fa90 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61  ref="ISQLiteMana
2faa0 67 65 64 4d 6f 64 75 6c 65 2e 42 65 73 74 49 6e  gedModule.BestIn
2fab0 64 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  dex" /> method..
2fac0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
2fad0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2fae0 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
2faf0 72 65 61 64 6f 6e 6c 79 20 64 6f 75 62 6c 65 20  readonly double 
2fb00 44 65 66 61 75 6c 74 45 73 74 69 6d 61 74 65 64  DefaultEstimated
2fb10 43 6f 73 74 20 3d 20 64 6f 75 62 6c 65 2e 4d 61  Cost = double.Ma
2fb20 78 56 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20  xValue;....     
2fb30 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2fb40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fb50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fb60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fb70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2fb80 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
2fb90 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
2fba0 20 54 68 65 20 64 65 66 61 75 6c 74 20 76 65 72   The default ver
2fbb0 73 69 6f 6e 20 6f 66 20 74 68 65 20 6e 61 74 69  sion of the nati
2fbc0 76 65 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c  ve sqlite3_modul
2fbd0 65 20 73 74 72 75 63 74 75 72 65 20 69 6e 20 75  e structure in u
2fbe0 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  se...        ///
2fbf0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
2fc00 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
2fc10 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 69 6e 74  tic readonly int
2fc20 20 44 65 66 61 75 6c 74 4d 6f 64 75 6c 65 56 65   DefaultModuleVe
2fc30 72 73 69 6f 6e 20 3d 20 32 3b 0d 0a 20 20 20 20  rsion = 2;..    
2fc40 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
2fc50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2fc60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fc70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fc80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fc90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fca0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
2fcb0 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61 74  gion Private Dat
2fcc0 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  a..        /// <
2fcd0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2fce0 20 20 2f 2f 2f 20 54 68 69 73 20 66 69 65 6c 64    /// This field
2fcf0 20 69 73 20 75 73 65 64 20 74 6f 20 73 74 6f 72   is used to stor
2fd00 65 20 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c  e the native sql
2fd10 69 74 65 33 5f 6d 6f 64 75 6c 65 20 73 74 72 75  ite3_module stru
2fd20 63 74 75 72 65 0d 0a 20 20 20 20 20 20 20 20 2f  cture..        /
2fd30 2f 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  // associated wi
2fd40 74 68 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69  th this object i
2fd50 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20  nstance...      
2fd60 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2fd70 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
2fd80 65 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  e UnsafeNativeMe
2fd90 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f  thods.sqlite3_mo
2fda0 64 75 6c 65 20 6e 61 74 69 76 65 4d 6f 64 75 6c  dule nativeModul
2fdb0 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  e;....        //
2fdc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fdd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fde0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fdf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fe00 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2fe10 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
2fe20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
2fe30 20 66 69 65 6c 64 20 69 73 20 75 73 65 64 20 74   field is used t
2fe40 6f 20 73 74 6f 72 65 20 61 20 70 6f 69 6e 74 65  o store a pointe
2fe50 72 20 74 6f 20 74 68 65 20 6e 61 74 69 76 65 20  r to the native 
2fe60 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 0d 0a  sqlite3_module..
2fe70 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75          /// stru
2fe80 63 74 75 72 65 20 72 65 74 75 72 6e 65 64 20 62  cture returned b
2fe90 79 20 74 68 65 20 73 71 6c 69 74 65 33 5f 63 72  y the sqlite3_cr
2fea0 65 61 74 65 5f 64 69 73 70 6f 73 61 62 6c 65 5f  eate_disposable_
2feb0 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20 20 20 20  module..        
2fec0 2f 2f 2f 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20  /// function... 
2fed0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
2fee0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
2fef0 72 69 76 61 74 65 20 49 6e 74 50 74 72 20 64 69  rivate IntPtr di
2ff00 73 70 6f 73 61 62 6c 65 4d 6f 64 75 6c 65 3b 0d  sposableModule;.
2ff10 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2ff20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ff30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ff40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ff50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ff60 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f  //....#if PLATFO
2ff70 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
2ff80 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ORK..        ///
2ff90 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2ffa0 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 66 69 65      /// This fie
2ffb0 6c 64 20 69 73 20 75 73 65 64 20 74 6f 20 68 6f  ld is used to ho
2ffc0 6c 64 20 74 68 65 20 62 6c 6f 63 6b 20 6f 66 20  ld the block of 
2ffd0 6e 61 74 69 76 65 20 6d 65 6d 6f 72 79 20 74 68  native memory th
2ffe0 61 74 20 63 6f 6e 74 61 69 6e 73 0d 0a 20 20 20  at contains..   
2fff0 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 6e 61 74       /// the nat
30000 69 76 65 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75  ive sqlite3_modu
30010 6c 65 20 73 74 72 75 63 74 75 72 65 20 61 73 73  le structure ass
30020 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69  ociated with thi
30030 73 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20 20  s object..      
30040 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 20 77    /// instance w
30050 68 65 6e 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 74  hen running on t
30060 68 65 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20  he .NET Compact 
30070 46 72 61 6d 65 77 6f 72 6b 2e 0d 0a 20 20 20 20  Framework...    
30080 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
30090 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  y>..        priv
300a0 61 74 65 20 49 6e 74 50 74 72 20 70 4e 61 74 69  ate IntPtr pNati
300b0 76 65 4d 6f 64 75 6c 65 3b 0d 0a 23 65 6e 64 69  veModule;..#endi
300c0 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  f....        ///
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 2f 2f  ////////////////
30110 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
30120 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
30130 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
30140 66 69 65 6c 64 20 69 73 20 75 73 65 64 20 74 6f  field is used to
30150 20 73 74 6f 72 65 20 74 68 65 20 76 69 72 74 75   store the virtu
30160 61 6c 20 74 61 62 6c 65 20 69 6e 73 74 61 6e 63  al table instanc
30170 65 73 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20  es associated.. 
30180 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20         /// with 
30190 74 68 69 73 20 6d 6f 64 75 6c 65 2e 20 20 54 68  this module.  Th
301a0 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
301b0 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
301c0 76 74 61 62 20 64 65 72 69 76 65 64 0d 0a 20 20  vtab derived..  
301d0 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74        /// struct
301e0 75 72 65 20 69 73 20 75 73 65 64 20 74 6f 20 6b  ure is used to k
301f0 65 79 20 69 6e 74 6f 20 74 68 69 73 20 63 6f 6c  ey into this col
30200 6c 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  lection...      
30210 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
30220 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
30230 65 20 44 69 63 74 69 6f 6e 61 72 79 3c 49 6e 74  e Dictionary<Int
30240 50 74 72 2c 20 53 51 4c 69 74 65 56 69 72 74 75  Ptr, SQLiteVirtu
30250 61 6c 54 61 62 6c 65 3e 20 74 61 62 6c 65 73 3b  alTable> tables;
30260 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
30270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
302a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
302b0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
302c0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
302d0 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 66        /// This f
302e0 69 65 6c 64 20 69 73 20 75 73 65 64 20 74 6f 20  ield is used to 
302f0 73 74 6f 72 65 20 74 68 65 20 76 69 72 74 75 61  store the virtua
30300 6c 20 74 61 62 6c 65 20 63 75 72 73 6f 72 20 69  l table cursor i
30310 6e 73 74 61 6e 63 65 73 0d 0a 20 20 20 20 20 20  nstances..      
30320 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64    /// associated
30330 20 77 69 74 68 20 74 68 69 73 20 6d 6f 64 75 6c   with this modul
30340 65 2e 20 20 54 68 65 20 6e 61 74 69 76 65 20 70  e.  The native p
30350 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 0d 0a 20  ointer to the.. 
30360 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74         /// sqlit
30370 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 64  e3_vtab_cursor d
30380 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65  erived structure
30390 20 69 73 20 75 73 65 64 20 74 6f 20 6b 65 79 20   is used to key 
303a0 69 6e 74 6f 20 74 68 69 73 0d 0a 20 20 20 20 20  into this..     
303b0 20 20 20 2f 2f 2f 20 63 6f 6c 6c 65 63 74 69 6f     /// collectio
303c0 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  n...        /// 
303d0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
303e0 20 20 20 20 70 72 69 76 61 74 65 20 44 69 63 74      private Dict
303f0 69 6f 6e 61 72 79 3c 49 6e 74 50 74 72 2c 20 53  ionary<IntPtr, S
30400 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
30410 65 43 75 72 73 6f 72 3e 20 63 75 72 73 6f 72 73  eCursor> cursors
30420 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
30430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30470 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
30480 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
30490 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
304a0 66 69 65 6c 64 20 69 73 20 75 73 65 64 20 74 6f  field is used to
304b0 20 73 74 6f 72 65 20 74 68 65 20 76 69 72 74 75   store the virtu
304c0 61 6c 20 74 61 62 6c 65 20 66 75 6e 63 74 69 6f  al table functio
304d0 6e 20 69 6e 73 74 61 6e 63 65 73 0d 0a 20 20 20  n instances..   
304e0 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61       /// associa
304f0 74 65 64 20 77 69 74 68 20 74 68 69 73 20 6d 6f  ted with this mo
30500 64 75 6c 65 2e 20 20 54 68 65 20 63 61 73 65 2d  dule.  The case-
30510 69 6e 73 65 6e 73 69 74 69 76 65 20 66 75 6e 63  insensitive func
30520 74 69 6f 6e 20 6e 61 6d 65 0d 0a 20 20 20 20 20  tion name..     
30530 20 20 20 2f 2f 2f 20 61 6e 64 20 74 68 65 20 6e     /// and the n
30540 75 6d 62 65 72 20 6f 66 20 61 72 67 75 6d 65 6e  umber of argumen
30550 74 73 20 28 77 69 74 68 20 2d 31 20 6d 65 61 6e  ts (with -1 mean
30560 69 6e 67 20 22 61 6e 79 22 29 20 61 72 65 20 75  ing "any") are u
30570 73 65 64 20 74 6f 0d 0a 20 20 20 20 20 20 20 20  sed to..        
30580 2f 2f 2f 20 63 6f 6e 73 74 72 75 63 74 20 74 68  /// construct th
30590 65 20 73 74 72 69 6e 67 20 74 68 61 74 20 69 73  e string that is
305a0 20 75 73 65 64 20 74 6f 20 6b 65 79 20 69 6e 74   used to key int
305b0 6f 20 74 68 69 73 20 63 6f 6c 6c 65 63 74 69 6f  o this collectio
305c0 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  n...        /// 
305d0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
305e0 20 20 20 20 70 72 69 76 61 74 65 20 44 69 63 74      private Dict
305f0 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 53  ionary<string, S
30600 51 4c 69 74 65 46 75 6e 63 74 69 6f 6e 3e 20 66  QLiteFunction> f
30610 75 6e 63 74 69 6f 6e 73 3b 0d 0a 20 20 20 20 20  unctions;..     
30620 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
30630 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
30640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30660 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
30690 69 6f 6e 20 50 75 62 6c 69 63 20 43 6f 6e 73 74  ion Public Const
306a0 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20  ructors..       
306b0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
306c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73          /// Cons
306d0 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e  tructs an instan
306e0 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73  ce of this class
306f0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
30700 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
30710 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
30720 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20 20 20  me="name">..    
30730 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65      /// The name
30740 20 6f 66 20 74 68 65 20 6d 6f 64 75 6c 65 2e 20   of the module. 
30750 20 54 68 69 73 20 70 61 72 61 6d 65 74 65 72 20   This parameter 
30760 63 61 6e 6e 6f 74 20 62 65 20 6e 75 6c 6c 2e 0d  cannot be null..
30770 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
30780 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70  aram>..        p
30790 75 62 6c 69 63 20 53 51 4c 69 74 65 4d 6f 64 75  ublic SQLiteModu
307a0 6c 65 28 73 74 72 69 6e 67 20 6e 61 6d 65 29 0d  le(string name).
307b0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
307c0 20 20 20 20 20 20 20 20 69 66 20 28 6e 61 6d 65          if (name
307d0 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
307e0 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
307f0 20 6e 65 77 20 41 72 67 75 6d 65 6e 74 4e 75 6c   new ArgumentNul
30800 6c 45 78 63 65 70 74 69 6f 6e 28 22 6e 61 6d 65  lException("name
30810 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ");....         
30820 20 20 20 74 68 69 73 2e 6e 61 6d 65 20 3d 20 6e     this.name = n
30830 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ame;..          
30840 20 20 74 68 69 73 2e 74 61 62 6c 65 73 20 3d 20    this.tables = 
30850 6e 65 77 20 44 69 63 74 69 6f 6e 61 72 79 3c 49  new Dictionary<I
30860 6e 74 50 74 72 2c 20 53 51 4c 69 74 65 56 69 72  ntPtr, SQLiteVir
30870 74 75 61 6c 54 61 62 6c 65 3e 28 29 3b 0d 0a 20  tualTable>();.. 
30880 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
30890 63 75 72 73 6f 72 73 20 3d 20 6e 65 77 20 44 69  cursors = new Di
308a0 63 74 69 6f 6e 61 72 79 3c 49 6e 74 50 74 72 2c  ctionary<IntPtr,
308b0 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
308c0 62 6c 65 43 75 72 73 6f 72 3e 28 29 3b 0d 0a 20  bleCursor>();.. 
308d0 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
308e0 66 75 6e 63 74 69 6f 6e 73 20 3d 20 6e 65 77 20  functions = new 
308f0 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e  Dictionary<strin
30900 67 2c 20 53 51 4c 69 74 65 46 75 6e 63 74 69 6f  g, SQLiteFunctio
30910 6e 3e 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  n>();..        }
30920 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
30930 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
30940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30980 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
30990 20 20 20 23 72 65 67 69 6f 6e 20 49 6e 74 65 72     #region Inter
309a0 6e 61 6c 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20  nal Methods..   
309b0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
309c0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
309d0 43 61 6c 6c 73 20 74 68 65 20 6e 61 74 69 76 65  Calls the native
309e0 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62   SQLite core lib
309f0 72 61 72 79 20 69 6e 20 6f 72 64 65 72 20 74 6f  rary in order to
30a00 20 63 72 65 61 74 65 20 61 20 6e 65 77 0d 0a 20   create a new.. 
30a10 20 20 20 20 20 20 20 2f 2f 2f 20 64 69 73 70 6f         /// dispo
30a20 73 61 62 6c 65 20 6d 6f 64 75 6c 65 20 63 6f 6e  sable module con
30a30 74 61 69 6e 69 6e 67 20 74 68 65 20 69 6d 70 6c  taining the impl
30a40 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 61 20  ementation of a 
30a50 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a  virtual table...
30a60 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
30a70 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
30a80 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
30a90 22 70 44 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  "pDb">..        
30aa0 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 64  /// The native d
30ab0 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
30ac0 6f 6e 20 70 6f 69 6e 74 65 72 20 74 6f 20 75 73  on pointer to us
30ad0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
30ae0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
30af0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
30b00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  .        /// Non
30b10 2d 7a 65 72 6f 20 75 70 6f 6e 20 73 75 63 63 65  -zero upon succe
30b20 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ss...        ///
30b30 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
30b40 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 62 6f       internal bo
30b50 6f 6c 20 43 72 65 61 74 65 44 69 73 70 6f 73 61  ol CreateDisposa
30b60 62 6c 65 4d 6f 64 75 6c 65 28 0d 0a 20 20 20 20  bleModule(..    
30b70 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
30b80 44 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  Db..            
30b90 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
30ba0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64 69            if (di
30bb0 73 70 6f 73 61 62 6c 65 4d 6f 64 75 6c 65 20 21  sposableModule !
30bc0 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
30bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30be0 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 0d 0a  return true;....
30bf0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
30c00 74 72 20 70 4e 61 6d 65 20 3d 20 49 6e 74 50 74  tr pName = IntPt
30c10 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20  r.Zero;....     
30c20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
30c30 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
30c40 20 20 20 20 20 20 20 20 20 20 20 70 4e 61 6d 65             pName
30c50 20 3d 20 53 51 4c 69 74 65 53 74 72 69 6e 67 2e   = SQLiteString.
30c60 55 74 66 38 49 6e 74 50 74 72 46 72 6f 6d 53 74  Utf8IntPtrFromSt
30c70 72 69 6e 67 28 6e 61 6d 65 29 3b 0d 0a 0d 0a 20  ring(name);.... 
30c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55                 U
30c90 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
30ca0 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c  ds.sqlite3_modul
30cb0 65 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 20 3d  e nativeModule =
30cc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30cd0 20 20 20 20 20 20 41 6c 6c 6f 63 61 74 65 4e 61        AllocateNa
30ce0 74 69 76 65 4d 6f 64 75 6c 65 28 29 3b 0d 0a 0d  tiveModule();...
30cf0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
30d00 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
30d10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30d20 20 64 69 73 70 6f 73 61 62 6c 65 4d 6f 64 75 6c   disposableModul
30d30 65 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e =..           
30d40 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
30d50 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
30d60 69 74 65 33 5f 63 72 65 61 74 65 5f 64 69 73 70  ite3_create_disp
30d70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65 28 0d 0a  osable_module(..
30d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30d90 20 20 20 20 20 20 20 20 70 44 62 2c 20 70 4e 61          pDb, pNa
30da0 6d 65 2c 20 72 65 66 20 6e 61 74 69 76 65 4d 6f  me, ref nativeMo
30db0 64 75 6c 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72  dule, IntPtr.Zer
30dc0 6f 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20  o, null);....   
30dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
30de0 75 72 6e 20 28 64 69 73 70 6f 73 61 62 6c 65 4d  urn (disposableM
30df0 6f 64 75 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e  odule != IntPtr.
30e00 5a 65 72 6f 29 3b 0d 0a 23 65 6c 69 66 20 21 53  Zero);..#elif !S
30e10 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
30e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30e30 64 69 73 70 6f 73 61 62 6c 65 4d 6f 64 75 6c 65  disposableModule
30e40 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   =..            
30e50 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61          UnsafeNa
30e60 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
30e70 74 65 33 5f 63 72 65 61 74 65 5f 64 69 73 70 6f  te3_create_dispo
30e80 73 61 62 6c 65 5f 6d 6f 64 75 6c 65 5f 69 6e 74  sable_module_int
30e90 65 72 6f 70 28 0d 0a 20 20 20 20 20 20 20 20 20  erop(..         
30ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 44                pD
30eb0 62 2c 20 70 4e 61 6d 65 2c 20 41 6c 6c 6f 63 61  b, pName, Alloca
30ec0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 49 6e  teNativeModuleIn
30ed0 74 65 72 6f 70 28 29 2c 0d 0a 20 20 20 20 20 20  terop(),..      
30ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30ef0 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 69 56   nativeModule.iV
30f00 65 72 73 69 6f 6e 2c 20 6e 61 74 69 76 65 4d 6f  ersion, nativeMo
30f10 64 75 6c 65 2e 78 43 72 65 61 74 65 2c 0d 0a 20  dule.xCreate,.. 
30f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30f30 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
30f40 6c 65 2e 78 43 6f 6e 6e 65 63 74 2c 20 6e 61 74  le.xConnect, nat
30f50 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49  iveModule.xBestI
30f60 6e 64 65 78 2c 0d 0a 20 20 20 20 20 20 20 20 20  ndex,..         
30f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
30f80 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 69 73 63  tiveModule.xDisc
30f90 6f 6e 6e 65 63 74 2c 20 6e 61 74 69 76 65 4d 6f  onnect, nativeMo
30fa0 64 75 6c 65 2e 78 44 65 73 74 72 6f 79 2c 0d 0a  dule.xDestroy,..
30fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30fc0 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
30fd0 75 6c 65 2e 78 4f 70 65 6e 2c 20 6e 61 74 69 76  ule.xOpen, nativ
30fe0 65 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 2c 0d  eModule.xClose,.
30ff0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31000 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
31010 64 75 6c 65 2e 78 46 69 6c 74 65 72 2c 20 6e 61  dule.xFilter, na
31020 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4e 65 78 74  tiveModule.xNext
31030 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
31040 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
31050 4d 6f 64 75 6c 65 2e 78 45 6f 66 2c 20 6e 61 74  Module.xEof, nat
31060 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d  iveModule.xColum
31070 6e 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n,..            
31080 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
31090 65 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 2c 20  eModule.xRowId, 
310a0 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70  nativeModule.xUp
310b0 64 61 74 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  date,..         
310c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
310d0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 67 69  tiveModule.xBegi
310e0 6e 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  n, nativeModule.
310f0 78 53 79 6e 63 2c 0d 0a 20 20 20 20 20 20 20 20  xSync,..        
31100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
31110 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6d  ativeModule.xCom
31120 6d 69 74 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c  mit, nativeModul
31130 65 2e 78 52 6f 6c 6c 62 61 63 6b 2c 0d 0a 20 20  e.xRollback,..  
31140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31150 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
31160 65 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 2c  e.xFindFunction,
31170 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52   nativeModule.xR
31180 65 6e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20  ename,..        
31190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
311a0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53 61 76  ativeModule.xSav
311b0 65 70 6f 69 6e 74 2c 20 6e 61 74 69 76 65 4d 6f  epoint, nativeMo
311c0 64 75 6c 65 2e 78 52 65 6c 65 61 73 65 2c 0d 0a  dule.xRelease,..
311d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
311e0 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
311f0 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 2c  ule.xRollbackTo,
31200 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2c 20 6e 75   IntPtr.Zero, nu
31210 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ll);....        
31220 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
31230 64 69 73 70 6f 73 61 62 6c 65 4d 6f 64 75 6c 65  disposableModule
31240 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
31250 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
31260 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
31270 6e 65 77 20 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74  new NotImplement
31280 65 64 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a  edException();..
31290 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
312a0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
312b0 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20     finally..    
312c0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
312d0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
312e0 4e 61 6d 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a  Name != IntPtr.Z
312f0 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
31300 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
31310 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
31320 69 74 65 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70  iteMemory.Free(p
31330 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  Name);..        
31340 20 20 20 20 20 20 20 20 20 20 20 20 70 4e 61 6d              pNam
31350 65 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  e = IntPtr.Zero;
31360 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31370 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
31380 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20   }..        }.. 
31390 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
313a0 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
313b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
313c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
313d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
313e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
313f0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
31400 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
31410 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20  Methods..       
31420 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
31430 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 72 65 61          /// Crea
31440 74 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20  tes and returns 
31450 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74  the native sqlit
31460 65 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63 74 75  e_module structu
31470 72 65 20 75 73 69 6e 67 20 74 68 65 0d 0a 20 20  re using the..  
31480 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 66 69 67        /// config
31490 75 72 65 64 20 28 6f 72 20 64 65 66 61 75 6c 74  ured (or default
314a0 29 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  ) <see cref="ISQ
314b0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
314c0 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  " />..        //
314d0 2f 20 69 6e 74 65 72 66 61 63 65 20 69 6d 70 6c  / interface impl
314e0 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20 20  ementation...   
314f0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
31500 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
31510 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
31520 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
31530 76 65 20 73 71 6c 69 74 65 5f 6d 6f 64 75 6c 65  ve sqlite_module
31540 20 73 74 72 75 63 74 75 72 65 20 75 73 69 6e 67   structure using
31550 20 74 68 65 20 63 6f 6e 66 69 67 75 72 65 64 20   the configured 
31560 28 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  (or..        ///
31570 20 64 65 66 61 75 6c 74 29 20 3c 73 65 65 20 63   default) <see c
31580 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
31590 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 69 6e 74  veModule" /> int
315a0 65 72 66 61 63 65 0d 0a 20 20 20 20 20 20 20 20  erface..        
315b0 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  /// implementati
315c0 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  on...        ///
315d0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
315e0 20 20 20 20 20 70 72 69 76 61 74 65 20 55 6e 73       private Uns
315f0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
31600 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20  .sqlite3_module 
31610 41 6c 6c 6f 63 61 74 65 4e 61 74 69 76 65 4d 6f  AllocateNativeMo
31620 64 75 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20  dule()..        
31630 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  {..            r
31640 65 74 75 72 6e 20 41 6c 6c 6f 63 61 74 65 4e 61  eturn AllocateNa
31650 74 69 76 65 4d 6f 64 75 6c 65 28 47 65 74 4e 61  tiveModule(GetNa
31660 74 69 76 65 4d 6f 64 75 6c 65 49 6d 70 6c 28 29  tiveModuleImpl()
31670 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  );..        }...
31680 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
31690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
316a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
316b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
316c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
316d0 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d  ....#if PLATFORM
316e0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
316f0 4b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  K..        /// <
31700 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
31710 20 20 2f 2f 2f 20 43 72 65 61 74 65 73 20 61 6e    /// Creates an
31720 64 20 72 65 74 75 72 6e 73 20 61 20 6d 65 6d 6f  d returns a memo
31730 72 79 20 62 6c 6f 63 6b 20 6f 62 74 61 69 6e 65  ry block obtaine
31740 64 20 66 72 6f 6d 20 74 68 65 20 53 51 4c 69 74  d from the SQLit
31750 65 20 63 6f 72 65 0d 0a 20 20 20 20 20 20 20 20  e core..        
31760 2f 2f 2f 20 6c 69 62 72 61 72 79 20 75 73 65 64  /// library used
31770 20 74 6f 20 73 74 6f 72 65 20 74 68 65 20 6e 61   to store the na
31780 74 69 76 65 20 73 71 6c 69 74 65 33 5f 6d 6f 64  tive sqlite3_mod
31790 75 6c 65 20 73 74 72 75 63 74 75 72 65 20 66 6f  ule structure fo
317a0 72 20 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20  r this..        
317b0 2f 2f 2f 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  /// object insta
317c0 6e 63 65 20 77 68 65 6e 20 72 75 6e 6e 69 6e 67  nce when running
317d0 20 6f 6e 20 74 68 65 20 2e 4e 45 54 20 43 6f 6d   on the .NET Com
317e0 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2e 0d  pact Framework..
317f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
31800 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
31810 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
31820 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
31830 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
31840 6f 20 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c  o the native sql
31850 69 74 65 33 5f 6d 6f 64 75 6c 65 20 73 74 72 75  ite3_module stru
31860 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  cture...        
31870 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
31880 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
31890 49 6e 74 50 74 72 20 41 6c 6c 6f 63 61 74 65 4e  IntPtr AllocateN
318a0 61 74 69 76 65 4d 6f 64 75 6c 65 49 6e 74 65 72  ativeModuleInter
318b0 6f 70 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  op()..        {.
318c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
318d0 28 70 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20 3d  (pNativeModule =
318e0 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
318f0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
31900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
31910 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
31920 20 20 20 2f 2f 20 48 41 43 4b 3a 20 4e 6f 20 65     // HACK: No e
31930 61 73 79 20 77 61 79 20 74 6f 20 64 65 74 65 72  asy way to deter
31940 6d 69 6e 65 20 74 68 65 20 73 69 7a 65 20 6f 66  mine the size of
31950 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20   the native..   
31960 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
31970 20 20 20 20 20 20 73 71 6c 69 74 65 5f 6d 6f 64        sqlite_mod
31980 75 6c 65 20 73 74 72 75 63 74 75 72 65 20 77 68  ule structure wh
31990 65 6e 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 74 68  en running on th
319a0 65 20 2e 4e 45 54 0d 0a 20 20 20 20 20 20 20 20  e .NET..        
319b0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
319c0 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f   Compact Framewo
319d0 72 6b 3b 20 74 68 65 72 65 66 6f 72 65 2c 20 6a  rk; therefore, j
319e0 75 73 74 20 62 61 73 65 20 74 68 65 20 73 69 7a  ust base the siz
319f0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
31a00 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e 20 77     //       on w
31a10 68 61 74 20 77 65 20 6b 6e 6f 77 3a 0d 0a 20 20  hat we know:..  
31a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
31a30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31a40 20 20 2f 2f 20 20 20 20 20 20 20 54 68 65 72 65    //       There
31a50 20 69 73 20 6f 6e 65 20 69 6e 74 65 67 65 72 20   is one integer 
31a60 6d 65 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20 20  member...       
31a70 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
31a80 20 20 54 68 65 72 65 20 61 72 65 20 32 32 20 66    There are 22 f
31a90 75 6e 63 74 69 6f 6e 20 70 6f 69 6e 74 65 72 20  unction pointer 
31aa0 6d 65 6d 62 65 72 73 2e 0d 0a 20 20 20 20 20 20  members...      
31ab0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
31ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 4e                pN
31ad0 61 74 69 76 65 4d 6f 64 75 6c 65 20 3d 20 53 51  ativeModule = SQ
31ae0 4c 69 74 65 4d 65 6d 6f 72 79 2e 41 6c 6c 6f 63  LiteMemory.Alloc
31af0 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ate(..          
31b00 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
31b10 4d 61 72 73 68 61 6c 2e 53 69 7a 65 4f 66 53 74  Marshal.SizeOfSt
31b20 72 75 63 74 49 6e 74 28 29 20 2b 20 28 32 32 20  ructInt() + (22 
31b30 2a 20 49 6e 74 50 74 72 2e 53 69 7a 65 29 29 3b  * IntPtr.Size));
31b40 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
31b50 20 20 20 20 69 66 20 28 70 4e 61 74 69 76 65 4d      if (pNativeM
31b60 6f 64 75 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e  odule == IntPtr.
31b70 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
31b80 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
31b90 20 6e 65 77 20 4f 75 74 4f 66 4d 65 6d 6f 72 79   new OutOfMemory
31ba0 45 78 63 65 70 74 69 6f 6e 28 22 73 71 6c 69 74  Exception("sqlit
31bb0 65 33 5f 6d 6f 64 75 6c 65 22 29 3b 0d 0a 20 20  e3_module");..  
31bc0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
31bd0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
31be0 6e 20 70 4e 61 74 69 76 65 4d 6f 64 75 6c 65 3b  n pNativeModule;
31bf0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e  ..        }..#en
31c00 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  dif....        /
31c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31c50 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
31c60 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
31c70 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 72 65  .        /// Cre
31c80 61 74 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73  ates and returns
31c90 20 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69   the native sqli
31ca0 74 65 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63 74  te_module struct
31cb0 75 72 65 20 75 73 69 6e 67 20 74 68 65 0d 0a 20  ure using the.. 
31cc0 20 20 20 20 20 20 20 2f 2f 2f 20 73 70 65 63 69         /// speci
31cd0 66 69 65 64 20 3c 73 65 65 20 63 72 65 66 3d 22  fied <see cref="
31ce0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
31cf0 75 6c 65 22 20 2f 3e 20 69 6e 74 65 72 66 61 63  ule" /> interfac
31d00 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  e..        /// i
31d10 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d 0a  mplementation...
31d20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
31d30 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
31d40 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
31d50 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20 20 20 20  "module">..     
31d60 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
31d70 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
31d80 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 69 6e  iveModule" /> in
31d90 74 65 72 66 61 63 65 20 69 6d 70 6c 65 6d 65 6e  terface implemen
31da0 74 61 74 69 6f 6e 20 74 6f 0d 0a 20 20 20 20 20  tation to..     
31db0 20 20 20 2f 2f 2f 20 75 73 65 2e 0d 0a 20 20 20     /// use...   
31dc0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
31dd0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
31de0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
31df0 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
31e00 20 73 71 6c 69 74 65 5f 6d 6f 64 75 6c 65 20 73   sqlite_module s
31e10 74 72 75 63 74 75 72 65 20 75 73 69 6e 67 20 74  tructure using t
31e20 68 65 20 73 70 65 63 69 66 69 65 64 0d 0a 20 20  he specified..  
31e30 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
31e40 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
31e50 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 69 6e 74  veModule" /> int
31e60 65 72 66 61 63 65 20 69 6d 70 6c 65 6d 65 6e 74  erface implement
31e70 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ation...        
31e80 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
31e90 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
31ea0 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
31eb0 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75  ods.sqlite3_modu
31ec0 6c 65 20 41 6c 6c 6f 63 61 74 65 4e 61 74 69 76  le AllocateNativ
31ed0 65 4d 6f 64 75 6c 65 28 0d 0a 20 20 20 20 20 20  eModule(..      
31ee0 20 20 20 20 20 20 49 53 51 4c 69 74 65 4e 61 74        ISQLiteNat
31ef0 69 76 65 4d 6f 64 75 6c 65 20 6d 6f 64 75 6c 65  iveModule module
31f00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
31f10 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
31f20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
31f30 64 75 6c 65 20 3d 20 6e 65 77 20 55 6e 73 61 66  dule = new Unsaf
31f40 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
31f50 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 28 29 3b  qlite3_module();
31f60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 61  ..            na
31f70 74 69 76 65 4d 6f 64 75 6c 65 2e 69 56 65 72 73  tiveModule.iVers
31f80 69 6f 6e 20 3d 20 44 65 66 61 75 6c 74 4d 6f 64  ion = DefaultMod
31f90 75 6c 65 56 65 72 73 69 6f 6e 3b 0d 0a 0d 0a 20  uleVersion;.... 
31fa0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d             if (m
31fb0 6f 64 75 6c 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a  odule != null)..
31fc0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
31fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
31fe0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65  ativeModule.xCre
31ff0 61 74 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  ate = new Unsafe
32000 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 43  NativeMethods.xC
32010 72 65 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20  reate(..        
32020 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c             modul
32030 65 2e 78 43 72 65 61 74 65 29 3b 0d 0a 0d 0a 20  e.xCreate);.... 
32040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
32050 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e  ativeModule.xCon
32060 6e 65 63 74 20 3d 20 6e 65 77 20 55 6e 73 61 66  nect = new Unsaf
32070 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
32080 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20  Connect(..      
32090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f                mo
320a0 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 29 3b 0d  dule.xConnect);.
320b0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
320c0 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
320d0 78 42 65 73 74 49 6e 64 65 78 20 3d 20 6e 65 77  xBestIndex = new
320e0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
320f0 68 6f 64 73 2e 78 42 65 73 74 49 6e 64 65 78 28  hods.xBestIndex(
32100 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
32110 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 42 65        module.xBe
32120 73 74 49 6e 64 65 78 29 3b 0d 0a 0d 0a 20 20 20  stIndex);....   
32130 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
32140 69 76 65 4d 6f 64 75 6c 65 2e 78 44 69 73 63 6f  iveModule.xDisco
32150 6e 6e 65 63 74 20 3d 20 6e 65 77 20 55 6e 73 61  nnect = new Unsa
32160 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
32170 78 44 69 73 63 6f 6e 6e 65 63 74 28 0d 0a 20 20  xDisconnect(..  
32180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32190 20 20 6d 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e    module.xDiscon
321a0 6e 65 63 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  nect);....      
321b0 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
321c0 4d 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f 79 20  Module.xDestroy 
321d0 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
321e0 76 65 4d 65 74 68 6f 64 73 2e 78 44 65 73 74 72  veMethods.xDestr
321f0 6f 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  oy(..           
32200 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e           module.
32210 78 44 65 73 74 72 6f 79 29 3b 0d 0a 0d 0a 20 20  xDestroy);....  
32220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
32230 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e  tiveModule.xOpen
32240 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
32250 69 76 65 4d 65 74 68 6f 64 73 2e 78 4f 70 65 6e  iveMethods.xOpen
32260 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
32270 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 4f         module.xO
32280 70 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  pen);....       
32290 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
322a0 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 20 3d 20 6e  odule.xClose = n
322b0 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
322c0 65 74 68 6f 64 73 2e 78 43 6c 6f 73 65 28 0d 0a  ethods.xClose(..
322d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
322e0 20 20 20 20 6d 6f 64 75 6c 65 2e 78 43 6c 6f 73      module.xClos
322f0 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
32300 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
32310 75 6c 65 2e 78 46 69 6c 74 65 72 20 3d 20 6e 65  ule.xFilter = ne
32320 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
32330 74 68 6f 64 73 2e 78 46 69 6c 74 65 72 28 0d 0a  thods.xFilter(..
32340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32350 20 20 20 20 6d 6f 64 75 6c 65 2e 78 46 69 6c 74      module.xFilt
32360 65 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  er);....        
32370 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
32380 64 75 6c 65 2e 78 4e 65 78 74 20 3d 20 6e 65 77  dule.xNext = new
32390 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
323a0 68 6f 64 73 2e 78 4e 65 78 74 28 0d 0a 20 20 20  hods.xNext(..   
323b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
323c0 20 6d 6f 64 75 6c 65 2e 78 4e 65 78 74 29 3b 0d   module.xNext);.
323d0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
323e0 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
323f0 78 45 6f 66 20 3d 20 6e 65 77 20 55 6e 73 61 66  xEof = new Unsaf
32400 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
32410 45 6f 66 28 6d 6f 64 75 6c 65 2e 78 45 6f 66 29  Eof(module.xEof)
32420 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
32430 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
32440 65 2e 78 43 6f 6c 75 6d 6e 20 3d 20 6e 65 77 20  e.xColumn = new 
32450 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
32460 6f 64 73 2e 78 43 6f 6c 75 6d 6e 28 0d 0a 20 20  ods.xColumn(..  
32470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32480 20 20 6d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e    module.xColumn
32490 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
324a0 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
324b0 6c 65 2e 78 52 6f 77 49 64 20 3d 20 6e 65 77 20  le.xRowId = new 
324c0 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
324d0 6f 64 73 2e 78 52 6f 77 49 64 28 0d 0a 20 20 20  ods.xRowId(..   
324e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
324f0 20 6d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 29 3b   module.xRowId);
32500 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
32510 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
32520 2e 78 55 70 64 61 74 65 20 3d 20 6e 65 77 20 55  .xUpdate = new U
32530 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
32540 64 73 2e 78 55 70 64 61 74 65 28 0d 0a 20 20 20  ds.xUpdate(..   
32550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32560 20 6d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 29   module.xUpdate)
32570 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
32580 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
32590 65 2e 78 42 65 67 69 6e 20 3d 20 6e 65 77 20 55  e.xBegin = new U
325a0 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
325b0 64 73 2e 78 42 65 67 69 6e 28 0d 0a 20 20 20 20  ds.xBegin(..    
325c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
325d0 6d 6f 64 75 6c 65 2e 78 42 65 67 69 6e 29 3b 0d  module.xBegin);.
325e0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
325f0 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
32600 78 53 79 6e 63 20 3d 20 6e 65 77 20 55 6e 73 61  xSync = new Unsa
32610 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
32620 78 53 79 6e 63 28 0d 0a 20 20 20 20 20 20 20 20  xSync(..        
32630 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75              modu
32640 6c 65 2e 78 53 79 6e 63 29 3b 0d 0a 0d 0a 20 20  le.xSync);....  
32650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
32660 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6d 6d  tiveModule.xComm
32670 69 74 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  it = new UnsafeN
32680 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 43 6f  ativeMethods.xCo
32690 6d 6d 69 74 28 0d 0a 20 20 20 20 20 20 20 20 20  mmit(..         
326a0 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c             modul
326b0 65 2e 78 43 6f 6d 6d 69 74 29 3b 0d 0a 0d 0a 20  e.xCommit);.... 
326c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
326d0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c  ativeModule.xRol
326e0 6c 62 61 63 6b 20 3d 20 6e 65 77 20 55 6e 73 61  lback = new Unsa
326f0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
32700 78 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20  xRollback(..    
32710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32720 6d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b  module.xRollback
32730 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
32740 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
32750 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e  le.xFindFunction
32760 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
32770 69 76 65 4d 65 74 68 6f 64 73 2e 78 46 69 6e 64  iveMethods.xFind
32780 46 75 6e 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20  Function(..     
32790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d                 m
327a0 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74  odule.xFindFunct
327b0 69 6f 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ion);....       
327c0 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
327d0 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65 20 3d 20  odule.xRename = 
327e0 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
327f0 4d 65 74 68 6f 64 73 2e 78 52 65 6e 61 6d 65 28  Methods.xRename(
32800 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
32810 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 52 65        module.xRe
32820 6e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  name);....      
32830 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
32840 4d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e  Module.xSavepoin
32850 74 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  t = new UnsafeNa
32860 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 53 61 76  tiveMethods.xSav
32870 65 70 6f 69 6e 74 28 0d 0a 20 20 20 20 20 20 20  epoint(..       
32880 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64               mod
32890 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74 29 3b  ule.xSavepoint);
328a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
328b0 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
328c0 2e 78 52 65 6c 65 61 73 65 20 3d 20 6e 65 77 20  .xRelease = new 
328d0 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
328e0 6f 64 73 2e 78 52 65 6c 65 61 73 65 28 0d 0a 20  ods.xRelease(.. 
328f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32900 20 20 20 6d 6f 64 75 6c 65 2e 78 52 65 6c 65 61     module.xRelea
32910 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  se);....        
32920 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
32930 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f  dule.xRollbackTo
32940 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
32950 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 6f 6c 6c  iveMethods.xRoll
32960 62 61 63 6b 54 6f 28 0d 0a 20 20 20 20 20 20 20  backTo(..       
32970 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64               mod
32980 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 29  ule.xRollbackTo)
32990 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
329a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c  ..            el
329b0 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
329c0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
329d0 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
329e0 78 43 72 65 61 74 65 20 3d 20 6e 65 77 20 55 6e  xCreate = new Un
329f0 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
32a00 73 2e 78 43 72 65 61 74 65 28 0d 0a 20 20 20 20  s.xCreate(..    
32a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32a20 78 43 72 65 61 74 65 29 3b 0d 0a 0d 0a 20 20 20  xCreate);....   
32a30 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
32a40 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65  iveModule.xConne
32a50 63 74 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  ct = new UnsafeN
32a60 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 43 6f  ativeMethods.xCo
32a70 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20  nnect(..        
32a80 20 20 20 20 20 20 20 20 20 20 20 20 78 43 6f 6e              xCon
32a90 6e 65 63 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  nect);....      
32aa0 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
32ab0 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65  Module.xBestInde
32ac0 78 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  x = new UnsafeNa
32ad0 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 42 65 73  tiveMethods.xBes
32ae0 74 49 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20  tIndex(..       
32af0 20 20 20 20 20 20 20 20 20 20 20 20 20 78 42 65               xBe
32b00 73 74 49 6e 64 65 78 29 3b 0d 0a 0d 0a 20 20 20  stIndex);....   
32b10 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
32b20 69 76 65 4d 6f 64 75 6c 65 2e 78 44 69 73 63 6f  iveModule.xDisco
32b30 6e 6e 65 63 74 20 3d 20 6e 65 77 20 55 6e 73 61  nnect = new Unsa
32b40 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
32b50 78 44 69 73 63 6f 6e 6e 65 63 74 28 0d 0a 20 20  xDisconnect(..  
32b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32b70 20 20 78 44 69 73 63 6f 6e 6e 65 63 74 29 3b 0d    xDisconnect);.
32b80 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
32b90 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
32ba0 78 44 65 73 74 72 6f 79 20 3d 20 6e 65 77 20 55  xDestroy = new U
32bb0 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
32bc0 64 73 2e 78 44 65 73 74 72 6f 79 28 0d 0a 20 20  ds.xDestroy(..  
32bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32be0 20 20 78 44 65 73 74 72 6f 79 29 3b 0d 0a 0d 0a    xDestroy);....
32bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32c00 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4f 70  nativeModule.xOp
32c10 65 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  en = new UnsafeN
32c20 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 4f 70  ativeMethods.xOp
32c30 65 6e 28 78 4f 70 65 6e 29 3b 0d 0a 20 20 20 20  en(xOpen);..    
32c40 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
32c50 76 65 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 20  veModule.xClose 
32c60 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
32c70 76 65 4d 65 74 68 6f 64 73 2e 78 43 6c 6f 73 65  veMethods.xClose
32c80 28 78 43 6c 6f 73 65 29 3b 0d 0a 0d 0a 20 20 20  (xClose);....   
32c90 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
32ca0 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65  iveModule.xFilte
32cb0 72 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  r = new UnsafeNa
32cc0 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 46 69 6c  tiveMethods.xFil
32cd0 74 65 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ter(..          
32ce0 20 20 20 20 20 20 20 20 20 20 78 46 69 6c 74 65            xFilte
32cf0 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  r);....         
32d00 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
32d10 75 6c 65 2e 78 4e 65 78 74 20 3d 20 6e 65 77 20  ule.xNext = new 
32d20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
32d30 6f 64 73 2e 78 4e 65 78 74 28 78 4e 65 78 74 29  ods.xNext(xNext)
32d40 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
32d50 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
32d60 78 45 6f 66 20 3d 20 6e 65 77 20 55 6e 73 61 66  xEof = new Unsaf
32d70 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
32d80 45 6f 66 28 78 45 6f 66 29 3b 0d 0a 0d 0a 20 20  Eof(xEof);....  
32d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
32da0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75  tiveModule.xColu
32db0 6d 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  mn = new UnsafeN
32dc0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 43 6f  ativeMethods.xCo
32dd0 6c 75 6d 6e 28 0d 0a 20 20 20 20 20 20 20 20 20  lumn(..         
32de0 20 20 20 20 20 20 20 20 20 20 20 78 43 6f 6c 75             xColu
32df0 6d 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  mn);....        
32e00 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
32e10 64 75 6c 65 2e 78 52 6f 77 49 64 20 3d 20 6e 65  dule.xRowId = ne
32e20 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
32e30 74 68 6f 64 73 2e 78 52 6f 77 49 64 28 78 52 6f  thods.xRowId(xRo
32e40 77 49 64 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  wId);....       
32e50 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
32e60 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 20 3d 20  odule.xUpdate = 
32e70 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
32e80 4d 65 74 68 6f 64 73 2e 78 55 70 64 61 74 65 28  Methods.xUpdate(
32e90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
32ea0 20 20 20 20 20 20 78 55 70 64 61 74 65 29 3b 0d        xUpdate);.
32eb0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
32ec0 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
32ed0 78 42 65 67 69 6e 20 3d 20 6e 65 77 20 55 6e 73  xBegin = new Uns
32ee0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
32ef0 2e 78 42 65 67 69 6e 28 78 42 65 67 69 6e 29 3b  .xBegin(xBegin);
32f00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
32f10 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
32f20 53 79 6e 63 20 3d 20 6e 65 77 20 55 6e 73 61 66  Sync = new Unsaf
32f30 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
32f40 53 79 6e 63 28 78 53 79 6e 63 29 3b 0d 0a 0d 0a  Sync(xSync);....
32f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32f60 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  nativeModule.xCo
32f70 6d 6d 69 74 20 3d 20 6e 65 77 20 55 6e 73 61 66  mmit = new Unsaf
32f80 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
32f90 43 6f 6d 6d 69 74 28 0d 0a 20 20 20 20 20 20 20  Commit(..       
32fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 78 43 6f               xCo
32fb0 6d 6d 69 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  mmit);....      
32fc0 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
32fd0 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b  Module.xRollback
32fe0 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
32ff0 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 6f 6c 6c  iveMethods.xRoll
33000 62 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 20  back(..         
33010 20 20 20 20 20 20 20 20 20 20 20 78 52 6f 6c 6c             xRoll
33020 62 61 63 6b 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  back);....      
33030 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
33040 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63  Module.xFindFunc
33050 74 69 6f 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66  tion = new Unsaf
33060 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
33070 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28 0d 0a 20  FindFunction(.. 
33080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33090 20 20 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e     xFindFunction
330a0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
330b0 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
330c0 6c 65 2e 78 52 65 6e 61 6d 65 20 3d 20 6e 65 77  le.xRename = new
330d0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
330e0 68 6f 64 73 2e 78 52 65 6e 61 6d 65 28 0d 0a 20  hods.xRename(.. 
330f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33100 20 20 20 78 52 65 6e 61 6d 65 29 3b 0d 0a 0d 0a     xRename);....
33110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33120 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53 61  nativeModule.xSa
33130 76 65 70 6f 69 6e 74 20 3d 20 6e 65 77 20 55 6e  vepoint = new Un
33140 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
33150 73 2e 78 53 61 76 65 70 6f 69 6e 74 28 0d 0a 20  s.xSavepoint(.. 
33160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33170 20 20 20 78 53 61 76 65 70 6f 69 6e 74 29 3b 0d     xSavepoint);.
33180 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
33190 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
331a0 78 52 65 6c 65 61 73 65 20 3d 20 6e 65 77 20 55  xRelease = new U
331b0 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
331c0 64 73 2e 78 52 65 6c 65 61 73 65 28 0d 0a 20 20  ds.xRelease(..  
331d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
331e0 20 20 78 52 65 6c 65 61 73 65 29 3b 0d 0a 0d 0a    xRelease);....
331f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33200 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f  nativeModule.xRo
33210 6c 6c 62 61 63 6b 54 6f 20 3d 20 6e 65 77 20 55  llbackTo = new U
33220 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
33230 64 73 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 0d  ds.xRollbackTo(.
33240 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
33250 20 20 20 20 20 78 52 6f 6c 6c 62 61 63 6b 54 6f       xRollbackTo
33260 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
33270 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
33280 20 72 65 74 75 72 6e 20 6e 61 74 69 76 65 4d 6f   return nativeMo
33290 64 75 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d  dule;..        }
332a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
332b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
332c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
332d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
332e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
332f0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
33300 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
33310 20 20 20 20 20 20 2f 2f 2f 20 43 72 65 61 74 65        /// Create
33320 73 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20  s a copy of the 
33330 73 70 65 63 69 66 69 65 64 0d 0a 20 20 20 20 20  specified..     
33340 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
33350 3d 22 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  ="UnsafeNativeMe
33360 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f  thods.sqlite3_mo
33370 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20  dule" /> object 
33380 69 6e 73 74 61 6e 63 65 2c 0d 0a 20 20 20 20 20  instance,..     
33390 20 20 20 2f 2f 2f 20 75 73 69 6e 67 20 64 65 66     /// using def
333a0 61 75 6c 74 20 69 6d 70 6c 65 6d 65 6e 74 61 74  ault implementat
333b0 69 6f 6e 73 20 66 6f 72 20 74 68 65 20 63 6f 6e  ions for the con
333c0 74 61 69 6e 65 64 20 64 65 6c 65 67 61 74 65 73  tained delegates
333d0 20 77 68 65 6e 0d 0a 20 20 20 20 20 20 20 20 2f   when..        /
333e0 2f 2f 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20  // necessary... 
333f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
33400 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
33410 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
33420 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20 20 20 20 20  module">..      
33430 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
33440 72 65 66 3d 22 55 6e 73 61 66 65 4e 61 74 69 76  ref="UnsafeNativ
33450 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
33460 5f 6d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65  _module" /> obje
33470 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ct..        /// 
33480 69 6e 73 74 61 6e 63 65 20 74 6f 20 63 6f 70 79  instance to copy
33490 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
334a0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
334b0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
334c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
334d0 6e 65 77 20 3c 73 65 65 20 63 72 65 66 3d 22 55  new <see cref="U
334e0 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
334f0 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c  ds.sqlite3_modul
33500 65 22 20 2f 3e 20 6f 62 6a 65 63 74 0d 0a 20 20  e" /> object..  
33510 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e        /// instan
33520 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ce...        ///
33530 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
33540 20 20 20 20 20 70 72 69 76 61 74 65 20 55 6e 73       private Uns
33550 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
33560 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20  .sqlite3_module 
33570 43 6f 70 79 4e 61 74 69 76 65 4d 6f 64 75 6c 65  CopyNativeModule
33580 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 55  (..            U
33590 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
335a0 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c  ds.sqlite3_modul
335b0 65 20 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20 20  e module..      
335c0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
335d0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
335e0 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
335f0 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75  ods.sqlite3_modu
33600 6c 65 20 6e 65 77 4d 6f 64 75 6c 65 20 3d 0d 0a  le newModule =..
33610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33620 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
33630 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
33640 6d 6f 64 75 6c 65 28 29 3b 0d 0a 0d 0a 20 20 20  module();....   
33650 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75           newModu
33660 6c 65 2e 69 56 65 72 73 69 6f 6e 20 3d 20 6d 6f  le.iVersion = mo
33670 64 75 6c 65 2e 69 56 65 72 73 69 6f 6e 3b 0d 0a  dule.iVersion;..
33680 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
33690 77 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 20  wModule.xCreate 
336a0 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
336b0 76 65 4d 65 74 68 6f 64 73 2e 78 43 72 65 61 74  veMethods.xCreat
336c0 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
336d0 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 43 72 65      (module.xCre
336e0 61 74 65 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d  ate != null) ? m
336f0 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 20 3a 20  odule.xCreate : 
33700 78 43 72 65 61 74 65 29 3b 0d 0a 0d 0a 20 20 20  xCreate);....   
33710 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75           newModu
33720 6c 65 2e 78 43 6f 6e 6e 65 63 74 20 3d 20 6e 65  le.xConnect = ne
33730 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
33740 74 68 6f 64 73 2e 78 43 6f 6e 6e 65 63 74 28 0d  thods.xConnect(.
33750 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
33760 20 28 6d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63   (module.xConnec
33770 74 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64  t != null) ? mod
33780 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 20 3a 20 78  ule.xConnect : x
33790 43 6f 6e 6e 65 63 74 29 3b 0d 0a 0d 0a 20 20 20  Connect);....   
337a0 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75           newModu
337b0 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 20 3d 20  le.xBestIndex = 
337c0 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
337d0 4d 65 74 68 6f 64 73 2e 78 42 65 73 74 49 6e 64  Methods.xBestInd
337e0 65 78 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ex(..           
337f0 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 42 65       (module.xBe
33800 73 74 49 6e 64 65 78 20 21 3d 20 6e 75 6c 6c 29  stIndex != null)
33810 20 3f 20 6d 6f 64 75 6c 65 2e 78 42 65 73 74 49   ? module.xBestI
33820 6e 64 65 78 20 3a 20 78 42 65 73 74 49 6e 64 65  ndex : xBestInde
33830 78 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  x);....         
33840 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 44 69     newModule.xDi
33850 73 63 6f 6e 6e 65 63 74 20 3d 20 6e 65 77 20 55  sconnect = new U
33860 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
33870 64 73 2e 78 44 69 73 63 6f 6e 6e 65 63 74 28 0d  ds.xDisconnect(.
33880 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
33890 20 28 6d 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e   (module.xDiscon
338a0 6e 65 63 74 20 21 3d 20 6e 75 6c 6c 29 20 3f 20  nect != null) ? 
338b0 6d 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65  module.xDisconne
338c0 63 74 20 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  ct :..          
338d0 20 20 20 20 20 20 78 44 69 73 63 6f 6e 6e 65 63        xDisconnec
338e0 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  t);....         
338f0 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 44 65     newModule.xDe
33900 73 74 72 6f 79 20 3d 20 6e 65 77 20 55 6e 73 61  stroy = new Unsa
33910 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
33920 78 44 65 73 74 72 6f 79 28 0d 0a 20 20 20 20 20  xDestroy(..     
33930 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75             (modu
33940 6c 65 2e 78 44 65 73 74 72 6f 79 20 21 3d 20 6e  le.xDestroy != n
33950 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 44  ull) ? module.xD
33960 65 73 74 72 6f 79 20 3a 20 78 44 65 73 74 72 6f  estroy : xDestro
33970 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
33980 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 4f 70     newModule.xOp
33990 65 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  en = new UnsafeN
339a0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 4f 70  ativeMethods.xOp
339b0 65 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  en(..           
339c0 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 4f 70       (module.xOp
339d0 65 6e 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f  en != null) ? mo
339e0 64 75 6c 65 2e 78 4f 70 65 6e 20 3a 20 78 4f 70  dule.xOpen : xOp
339f0 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  en);....        
33a00 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 43      newModule.xC
33a10 6c 6f 73 65 20 3d 20 6e 65 77 20 55 6e 73 61 66  lose = new Unsaf
33a20 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
33a30 43 6c 6f 73 65 28 0d 0a 20 20 20 20 20 20 20 20  Close(..        
33a40 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e          (module.
33a50 78 43 6c 6f 73 65 20 21 3d 20 6e 75 6c 6c 29 20  xClose != null) 
33a60 3f 20 6d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 20  ? module.xClose 
33a70 3a 20 78 43 6c 6f 73 65 29 3b 0d 0a 0d 0a 20 20  : xClose);....  
33a80 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64            newMod
33a90 75 6c 65 2e 78 46 69 6c 74 65 72 20 3d 20 6e 65  ule.xFilter = ne
33aa0 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
33ab0 74 68 6f 64 73 2e 78 46 69 6c 74 65 72 28 0d 0a  thods.xFilter(..
33ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33ad0 28 6d 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 20  (module.xFilter 
33ae0 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c  != null) ? modul
33af0 65 2e 78 46 69 6c 74 65 72 20 3a 20 78 46 69 6c  e.xFilter : xFil
33b00 74 65 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ter);....       
33b10 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78       newModule.x
33b20 4e 65 78 74 20 3d 20 6e 65 77 20 55 6e 73 61 66  Next = new Unsaf
33b30 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
33b40 4e 65 78 74 28 0d 0a 20 20 20 20 20 20 20 20 20  Next(..         
33b50 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78         (module.x
33b60 4e 65 78 74 20 21 3d 20 6e 75 6c 6c 29 20 3f 20  Next != null) ? 
33b70 6d 6f 64 75 6c 65 2e 78 4e 65 78 74 20 3a 20 78  module.xNext : x
33b80 4e 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Next);....      
33b90 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e        newModule.
33ba0 78 45 6f 66 20 3d 20 6e 65 77 20 55 6e 73 61 66  xEof = new Unsaf
33bb0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
33bc0 45 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Eof(..          
33bd0 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 45        (module.xE
33be0 6f 66 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f  of != null) ? mo
33bf0 64 75 6c 65 2e 78 45 6f 66 20 3a 20 78 45 6f 66  dule.xEof : xEof
33c00 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
33c10 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 43 6f 6c    newModule.xCol
33c20 75 6d 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  umn = new Unsafe
33c30 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 43  NativeMethods.xC
33c40 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20 20 20 20 20  olumn(..        
33c50 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e          (module.
33c60 78 43 6f 6c 75 6d 6e 20 21 3d 20 6e 75 6c 6c 29  xColumn != null)
33c70 20 3f 20 6d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d   ? module.xColum
33c80 6e 20 3a 20 78 43 6f 6c 75 6d 6e 29 3b 0d 0a 0d  n : xColumn);...
33c90 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
33ca0 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 20 3d 20  Module.xRowId = 
33cb0 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
33cc0 4d 65 74 68 6f 64 73 2e 78 52 6f 77 49 64 28 0d  Methods.xRowId(.
33cd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
33ce0 20 28 6d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 20   (module.xRowId 
33cf0 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c  != null) ? modul
33d00 65 2e 78 52 6f 77 49 64 20 3a 20 78 52 6f 77 49  e.xRowId : xRowI
33d10 64 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  d);....         
33d20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 55 70     newModule.xUp
33d30 64 61 74 65 20 3d 20 6e 65 77 20 55 6e 73 61 66  date = new Unsaf
33d40 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
33d50 55 70 64 61 74 65 28 0d 0a 20 20 20 20 20 20 20  Update(..       
33d60 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65           (module
33d70 2e 78 55 70 64 61 74 65 20 21 3d 20 6e 75 6c 6c  .xUpdate != null
33d80 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 55 70 64 61  ) ? module.xUpda
33d90 74 65 20 3a 20 78 55 70 64 61 74 65 29 3b 0d 0a  te : xUpdate);..
33da0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
33db0 77 4d 6f 64 75 6c 65 2e 78 42 65 67 69 6e 20 3d  wModule.xBegin =
33dc0 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
33dd0 65 4d 65 74 68 6f 64 73 2e 78 42 65 67 69 6e 28  eMethods.xBegin(
33de0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
33df0 20 20 28 6d 6f 64 75 6c 65 2e 78 42 65 67 69 6e    (module.xBegin
33e00 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75   != null) ? modu
33e10 6c 65 2e 78 42 65 67 69 6e 20 3a 20 78 42 65 67  le.xBegin : xBeg
33e20 69 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  in);....        
33e30 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 53      newModule.xS
33e40 79 6e 63 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  ync = new Unsafe
33e50 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 53  NativeMethods.xS
33e60 79 6e 63 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ync(..          
33e70 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 53        (module.xS
33e80 79 6e 63 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d  ync != null) ? m
33e90 6f 64 75 6c 65 2e 78 53 79 6e 63 20 3a 20 78 53  odule.xSync : xS
33ea0 79 6e 63 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ync);....       
33eb0 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78       newModule.x
33ec0 43 6f 6d 6d 69 74 20 3d 20 6e 65 77 20 55 6e 73  Commit = new Uns
33ed0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
33ee0 2e 78 43 6f 6d 6d 69 74 28 0d 0a 20 20 20 20 20  .xCommit(..     
33ef0 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75             (modu
33f00 6c 65 2e 78 43 6f 6d 6d 69 74 20 21 3d 20 6e 75  le.xCommit != nu
33f10 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 43 6f  ll) ? module.xCo
33f20 6d 6d 69 74 20 3a 20 78 43 6f 6d 6d 69 74 29 3b  mmit : xCommit);
33f30 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
33f40 6e 65 77 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62  newModule.xRollb
33f50 61 63 6b 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  ack = new Unsafe
33f60 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52  NativeMethods.xR
33f70 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20 20  ollback(..      
33f80 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c            (modul
33f90 65 2e 78 52 6f 6c 6c 62 61 63 6b 20 21 3d 20 6e  e.xRollback != n
33fa0 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 52  ull) ? module.xR
33fb0 6f 6c 6c 62 61 63 6b 20 3a 20 78 52 6f 6c 6c 62  ollback : xRollb
33fc0 61 63 6b 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ack);....       
33fd0 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78       newModule.x
33fe0 46 69 6e 64 46 75 6e 63 74 69 6f 6e 20 3d 20 6e  FindFunction = n
33ff0 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
34000 65 74 68 6f 64 73 2e 78 46 69 6e 64 46 75 6e 63  ethods.xFindFunc
34010 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20  tion(..         
34020 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78         (module.x
34030 46 69 6e 64 46 75 6e 63 74 69 6f 6e 20 21 3d 20  FindFunction != 
34040 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78  null) ? module.x
34050 46 69 6e 64 46 75 6e 63 74 69 6f 6e 20 3a 0d 0a  FindFunction :..
34060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34070 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 29 3b 0d  xFindFunction);.
34080 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ...            n
34090 65 77 4d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65  ewModule.xRename
340a0 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
340b0 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 65 6e 61  iveMethods.xRena
340c0 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me(..           
340d0 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 52 65       (module.xRe
340e0 6e 61 6d 65 20 21 3d 20 6e 75 6c 6c 29 20 3f 20  name != null) ? 
340f0 6d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65 20 3a  module.xRename :
34100 20 78 52 65 6e 61 6d 65 29 3b 0d 0a 0d 0a 20 20   xRename);....  
34110 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64            newMod
34120 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74 20 3d  ule.xSavepoint =
34130 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
34140 65 4d 65 74 68 6f 64 73 2e 78 53 61 76 65 70 6f  eMethods.xSavepo
34150 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  int(..          
34160 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 53        (module.xS
34170 61 76 65 70 6f 69 6e 74 20 21 3d 20 6e 75 6c 6c  avepoint != null
34180 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 53 61 76 65  ) ? module.xSave
34190 70 6f 69 6e 74 20 3a 20 78 53 61 76 65 70 6f 69  point : xSavepoi
341a0 6e 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  nt);....        
341b0 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 52      newModule.xR
341c0 65 6c 65 61 73 65 20 3d 20 6e 65 77 20 55 6e 73  elease = new Uns
341d0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
341e0 2e 78 52 65 6c 65 61 73 65 28 0d 0a 20 20 20 20  .xRelease(..    
341f0 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64              (mod
34200 75 6c 65 2e 78 52 65 6c 65 61 73 65 20 21 3d 20  ule.xRelease != 
34210 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78  null) ? module.x
34220 52 65 6c 65 61 73 65 20 3a 20 78 52 65 6c 65 61  Release : xRelea
34230 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  se);....        
34240 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 52      newModule.xR
34250 6f 6c 6c 62 61 63 6b 54 6f 20 3d 20 6e 65 77 20  ollbackTo = new 
34260 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
34270 6f 64 73 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 28  ods.xRollbackTo(
34280 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
34290 20 20 28 6d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62    (module.xRollb
342a0 61 63 6b 54 6f 20 21 3d 20 6e 75 6c 6c 29 20 3f  ackTo != null) ?
342b0 20 6d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63   module.xRollbac
342c0 6b 54 6f 20 3a 0d 0a 20 20 20 20 20 20 20 20 20  kTo :..         
342d0 20 20 20 20 20 20 20 78 52 6f 6c 6c 62 61 63 6b         xRollback
342e0 54 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  To);....        
342f0 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 4d 6f      return newMo
34300 64 75 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d  dule;..        }
34310 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
34320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34360 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
34370 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
34380 20 20 20 20 20 20 2f 2f 2f 20 43 61 6c 6c 73 20        /// Calls 
34390 6f 6e 65 20 6f 66 20 74 68 65 20 76 69 72 74 75  one of the virtu
343a0 61 6c 20 74 61 62 6c 65 20 69 6e 69 74 69 61 6c  al table initial
343b0 69 7a 61 74 69 6f 6e 20 6d 65 74 68 6f 64 73 2e  ization methods.
343c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
343d0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
343e0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
343f0 65 3d 22 63 72 65 61 74 65 22 3e 0d 0a 20 20 20  e="create">..   
34400 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
34410 6f 20 74 6f 20 63 61 6c 6c 20 74 68 65 20 3c 73  o to call the <s
34420 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
34430 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43 72  ManagedModule.Cr
34440 65 61 74 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20  eate" />..      
34450 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 3b 20 6f 74    /// method; ot
34460 68 65 72 77 69 73 65 2c 20 74 68 65 20 3c 73 65  herwise, the <se
34470 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d  e cref="ISQLiteM
34480 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43 6f 6e  anagedModule.Con
34490 6e 65 63 74 22 20 2f 3e 0d 0a 20 20 20 20 20 20  nect" />..      
344a0 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 20 77 69 6c    /// method wil
344b0 6c 20 62 65 20 63 61 6c 6c 65 64 2e 0d 0a 20 20  l be called...  
344c0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
344d0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
344e0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 44 62  <param name="pDb
344f0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
34500 54 68 65 20 6e 61 74 69 76 65 20 64 61 74 61 62  The native datab
34510 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 68  ase connection h
34520 61 6e 64 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20  andle...        
34530 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
34540 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
34550 20 6e 61 6d 65 3d 22 70 41 75 78 22 3e 0d 0a 20   name="pAux">.. 
34560 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f         /// The o
34570 72 69 67 69 6e 61 6c 20 6e 61 74 69 76 65 20 70  riginal native p
34580 6f 69 6e 74 65 72 20 76 61 6c 75 65 20 74 68 61  ointer value tha
34590 74 20 77 61 73 20 70 72 6f 76 69 64 65 64 20 74  t was provided t
345a0 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  o the..        /
345b0 2f 2f 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74  // sqlite3_creat
345c0 65 5f 6d 6f 64 75 6c 65 28 29 2c 20 73 71 6c 69  e_module(), sqli
345d0 74 65 33 5f 63 72 65 61 74 65 5f 6d 6f 64 75 6c  te3_create_modul
345e0 65 5f 76 32 28 29 20 6f 72 0d 0a 20 20 20 20 20  e_v2() or..     
345f0 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 63     /// sqlite3_c
34600 72 65 61 74 65 5f 64 69 73 70 6f 73 61 62 6c 65  reate_disposable
34610 5f 6d 6f 64 75 6c 65 28 29 20 66 75 6e 63 74 69  _module() functi
34620 6f 6e 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ons...        //
34630 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
34640 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
34650 61 6d 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20 20  ame="argc">..   
34660 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d       /// The num
34670 62 65 72 20 6f 66 20 61 72 67 75 6d 65 6e 74 73  ber of arguments
34680 20 66 72 6f 6d 20 74 68 65 20 43 52 45 41 54 45   from the CREATE
34690 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45 20 73   VIRTUAL TABLE s
346a0 74 61 74 65 6d 65 6e 74 2e 0d 0a 20 20 20 20 20  tatement...     
346b0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
346c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
346d0 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 76 22 3e  ram name="argv">
346e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
346f0 65 20 61 72 72 61 79 20 6f 66 20 73 74 72 69 6e  e array of strin
34700 67 20 61 72 67 75 6d 65 6e 74 73 20 66 72 6f 6d  g arguments from
34710 20 74 68 65 20 43 52 45 41 54 45 20 56 49 52 54   the CREATE VIRT
34720 55 41 4c 20 54 41 42 4c 45 0d 0a 20 20 20 20 20  UAL TABLE..     
34730 20 20 20 2f 2f 2f 20 73 74 61 74 65 6d 65 6e 74     /// statement
34740 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
34750 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
34760 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
34770 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20  ="pVtab">..     
34780 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63     /// Upon succ
34790 65 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65  ess, this parame
347a0 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69  ter must be modi
347b0 66 69 65 64 20 74 6f 20 70 6f 69 6e 74 20 74 6f  fied to point to
347c0 20 74 68 65 20 6e 65 77 6c 79 0d 0a 20 20 20 20   the newly..    
347d0 20 20 20 20 2f 2f 2f 20 63 72 65 61 74 65 64 20      /// created 
347e0 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76  native sqlite3_v
347f0 74 61 62 20 64 65 72 69 76 65 64 20 73 74 72 75  tab derived stru
34800 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  cture...        
34810 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
34820 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
34830 20 6e 61 6d 65 3d 22 70 45 72 72 6f 72 22 3e 0d   name="pError">.
34840 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f  .        /// Upo
34850 6e 20 66 61 69 6c 75 72 65 2c 20 74 68 69 73 20  n failure, this 
34860 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62  parameter must b
34870 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 70 6f  e modified to po
34880 69 6e 74 20 74 6f 20 74 68 65 20 65 72 72 6f 72  int to the error
34890 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65  ..        /// me
348a0 73 73 61 67 65 2c 20 77 69 74 68 20 74 68 65 20  ssage, with the 
348b0 75 6e 64 65 72 6c 79 69 6e 67 20 6d 65 6d 6f 72  underlying memor
348c0 79 20 68 61 76 69 6e 67 20 62 65 65 6e 20 6f 62  y having been ob
348d0 74 61 69 6e 65 64 20 66 72 6f 6d 20 74 68 65 0d  tained from the.
348e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c  .        /// sql
348f0 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 20 66 75  ite3_malloc() fu
34900 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  nction...       
34910 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
34920 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
34930 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
34940 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c  / A standard SQL
34950 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e  ite return code.
34960 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
34970 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
34980 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65    private SQLite
34990 45 72 72 6f 72 43 6f 64 65 20 43 72 65 61 74 65  ErrorCode Create
349a0 4f 72 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20  OrConnect(..    
349b0 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 63 72 65          bool cre
349c0 61 74 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ate,..          
349d0 20 20 49 6e 74 50 74 72 20 70 44 62 2c 0d 0a 20    IntPtr pDb,.. 
349e0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
349f0 72 20 70 41 75 78 2c 0d 0a 20 20 20 20 20 20 20  r pAux,..       
34a00 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a       int argc,..
34a10 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
34a20 74 72 20 61 72 67 76 2c 0d 0a 20 20 20 20 20 20  tr argv,..      
34a30 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72        ref IntPtr
34a40 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20   pVtab,..       
34a50 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20       ref IntPtr 
34a60 70 45 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20  pError..        
34a70 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
34a80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72  ..            tr
34a90 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
34aa0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
34ab0 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d    string fileNam
34ac0 65 20 3d 20 53 51 4c 69 74 65 53 74 72 69 6e 67  e = SQLiteString
34ad0 2e 53 74 72 69 6e 67 46 72 6f 6d 55 74 66 38 49  .StringFromUtf8I
34ae0 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20  ntPtr(..        
34af0 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
34b00 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
34b10 73 71 6c 69 74 65 33 5f 64 62 5f 66 69 6c 65 6e  sqlite3_db_filen
34b20 61 6d 65 28 70 44 62 2c 20 49 6e 74 50 74 72 2e  ame(pDb, IntPtr.
34b30 5a 65 72 6f 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  Zero));....     
34b40 20 20 20 20 20 20 20 20 20 20 20 75 73 69 6e 67             using
34b50 20 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69   (SQLiteConnecti
34b60 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 3d 20  on connection = 
34b70 6e 65 77 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  new SQLiteConnec
34b80 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20  tion(..         
34b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
34ba0 44 62 2c 20 66 69 6c 65 4e 61 6d 65 2c 20 66 61  Db, fileName, fa
34bb0 6c 73 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  lse))..         
34bc0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
34bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
34be0 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
34bf0 20 74 61 62 6c 65 20 3d 20 6e 75 6c 6c 3b 0d 0a   table = null;..
34c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34c10 20 20 20 20 73 74 72 69 6e 67 20 65 72 72 6f 72      string error
34c20 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20   = null;....    
34c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34c40 69 66 20 28 28 63 72 65 61 74 65 20 26 26 20 43  if ((create && C
34c50 72 65 61 74 65 28 63 6f 6e 6e 65 63 74 69 6f 6e  reate(connection
34c60 2c 20 70 41 75 78 2c 0d 0a 20 20 20 20 20 20 20  , pAux,..       
34c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34c80 20 20 20 20 20 53 51 4c 69 74 65 53 74 72 69 6e       SQLiteStrin
34c90 67 2e 53 74 72 69 6e 67 41 72 72 61 79 46 72 6f  g.StringArrayFro
34ca0 6d 55 74 66 38 53 69 7a 65 41 6e 64 49 6e 74 50  mUtf8SizeAndIntP
34cb0 74 72 28 61 72 67 63 2c 0d 0a 20 20 20 20 20 20  tr(argc,..      
34cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34cd0 20 20 20 20 20 20 61 72 67 76 29 2c 20 72 65 66        argv), ref
34ce0 20 74 61 62 6c 65 2c 20 72 65 66 20 65 72 72 6f   table, ref erro
34cf0 72 29 20 3d 3d 20 53 51 4c 69 74 65 45 72 72 6f  r) == SQLiteErro
34d00 72 43 6f 64 65 2e 4f 6b 29 20 7c 7c 0d 0a 20 20  rCode.Ok) ||..  
34d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34d20 20 20 20 20 20 20 28 21 63 72 65 61 74 65 20 26        (!create &
34d30 26 20 43 6f 6e 6e 65 63 74 28 63 6f 6e 6e 65 63  & Connect(connec
34d40 74 69 6f 6e 2c 20 70 41 75 78 2c 0d 0a 20 20 20  tion, pAux,..   
34d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34d60 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 53           SQLiteS
34d70 74 72 69 6e 67 2e 53 74 72 69 6e 67 41 72 72 61  tring.StringArra
34d80 79 46 72 6f 6d 55 74 66 38 53 69 7a 65 41 6e 64  yFromUtf8SizeAnd
34d90 49 6e 74 50 74 72 28 61 72 67 63 2c 0d 0a 20 20  IntPtr(argc,..  
34da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34db0 20 20 20 20 20 20 20 20 20 20 61 72 67 76 29 2c            argv),
34dc0 20 72 65 66 20 74 61 62 6c 65 2c 20 72 65 66 20   ref table, ref 
34dd0 65 72 72 6f 72 29 20 3d 3d 20 53 51 4c 69 74 65  error) == SQLite
34de0 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 29 29 0d 0a  ErrorCode.Ok))..
34df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34e00 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
34e10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
34e20 66 20 28 74 61 62 6c 65 20 21 3d 20 6e 75 6c 6c  f (table != null
34e30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
34e40 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
34e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34e60 20 20 20 20 20 20 20 20 20 20 70 56 74 61 62 20            pVtab 
34e70 3d 20 54 61 62 6c 65 54 6f 49 6e 74 50 74 72 28  = TableToIntPtr(
34e80 74 61 62 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20  table);..       
34e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34ea0 20 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69       return SQLi
34eb0 74 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 3b 0d  teErrorCode.Ok;.
34ec0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
34ed0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
34ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34ef0 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20      else..      
34f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34f10 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
34f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34f30 20 70 45 72 72 6f 72 20 3d 20 53 51 4c 69 74 65   pError = SQLite
34f40 53 74 72 69 6e 67 2e 55 74 66 38 49 6e 74 50 74  String.Utf8IntPt
34f50 72 46 72 6f 6d 53 74 72 69 6e 67 28 0d 0a 20 20  rFromString(..  
34f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 6e                "n
34f80 6f 20 74 61 62 6c 65 20 77 61 73 20 63 72 65 61  o table was crea
34f90 74 65 64 22 29 3b 0d 0a 20 20 20 20 20 20 20 20  ted");..        
34fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34fb0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
34fc0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
34fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
34fe0 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
34ff0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
35000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35010 20 20 20 70 45 72 72 6f 72 20 3d 20 53 51 4c 69     pError = SQLi
35020 74 65 53 74 72 69 6e 67 2e 55 74 66 38 49 6e 74  teString.Utf8Int
35030 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28 65 72  PtrFromString(er
35040 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ror);..         
35050 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
35060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
35070 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
35080 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
35090 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 20  h (Exception e) 
350a0 2f 2a 20 4e 4f 54 45 3a 20 4d 75 73 74 20 63 61  /* NOTE: Must ca
350b0 74 63 68 20 41 4c 4c 2e 20 2a 2f 0d 0a 20 20 20  tch ALL. */..   
350c0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
350d0 20 20 20 20 20 20 20 20 20 20 20 20 70 45 72 72              pErr
350e0 6f 72 20 3d 20 53 51 4c 69 74 65 53 74 72 69 6e  or = SQLiteStrin
350f0 67 2e 55 74 66 38 49 6e 74 50 74 72 46 72 6f 6d  g.Utf8IntPtrFrom
35100 53 74 72 69 6e 67 28 65 2e 54 6f 53 74 72 69 6e  String(e.ToStrin
35110 67 28 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  g());..         
35120 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
35130 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74      return SQLit
35140 65 45 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72  eErrorCode.Error
35150 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
35160 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
35170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
351a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
351b0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
351c0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
351d0 20 20 2f 2f 2f 20 43 61 6c 6c 73 20 6f 6e 65 20    /// Calls one 
351e0 6f 66 20 74 68 65 20 76 69 72 74 75 61 6c 20 74  of the virtual t
351f0 61 62 6c 65 20 66 69 6e 61 6c 69 7a 61 74 69 6f  able finalizatio
35200 6e 20 6d 65 74 68 6f 64 73 2e 0d 0a 20 20 20 20  n methods...    
35210 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
35220 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
35230 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 65 73  <param name="des
35240 74 72 6f 79 22 3e 0d 0a 20 20 20 20 20 20 20 20  troy">..        
35250 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 74 6f 20  /// Non-zero to 
35260 63 61 6c 6c 20 74 68 65 20 3c 73 65 65 20 63 72  call the <see cr
35270 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67  ef="ISQLiteManag
35280 65 64 4d 6f 64 75 6c 65 2e 44 65 73 74 72 6f 79  edModule.Destroy
35290 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  " />..        //
352a0 2f 20 6d 65 74 68 6f 64 3b 20 6f 74 68 65 72 77  / method; otherw
352b0 69 73 65 2c 20 74 68 65 0d 0a 20 20 20 20 20 20  ise, the..      
352c0 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
352d0 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d  "ISQLiteManagedM
352e0 6f 64 75 6c 65 2e 44 69 73 63 6f 6e 6e 65 63 74  odule.Disconnect
352f0 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77 69 6c 6c  " /> method will
35300 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   be..        ///
35310 20 63 61 6c 6c 65 64 2e 0d 0a 20 20 20 20 20 20   called...      
35320 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
35330 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
35340 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e  am name="pVtab">
35350 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
35360 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
35370 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
35380 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74 72  vtab derived str
35390 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ucture...       
353a0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
353b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
353c0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
353d0 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c  / A standard SQL
353e0 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e  ite return code.
353f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
35400 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
35410 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65    private SQLite
35420 45 72 72 6f 72 43 6f 64 65 20 44 65 73 74 72 6f  ErrorCode Destro
35430 79 4f 72 44 69 73 63 6f 6e 6e 65 63 74 28 0d 0a  yOrDisconnect(..
35440 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
35450 20 64 65 73 74 72 6f 79 2c 0d 0a 20 20 20 20 20   destroy,..     
35460 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
35470 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tab..           
35480 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
35490 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
354a0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
354b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
354c0 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
354d0 65 20 74 61 62 6c 65 20 3d 20 54 61 62 6c 65 46  e table = TableF
354e0 72 6f 6d 49 6e 74 50 74 72 28 70 56 74 61 62 29  romIntPtr(pVtab)
354f0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
35500 20 20 20 20 20 69 66 20 28 74 61 62 6c 65 20 21       if (table !
35510 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
35520 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
35530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35540 69 66 20 28 28 64 65 73 74 72 6f 79 20 26 26 20  if ((destroy && 
35550 28 44 65 73 74 72 6f 79 28 74 61 62 6c 65 29 20  (Destroy(table) 
35560 3d 3d 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  == SQLiteErrorCo
35570 64 65 2e 4f 6b 29 29 20 7c 7c 0d 0a 20 20 20 20  de.Ok)) ||..    
35580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35590 20 20 20 20 28 21 64 65 73 74 72 6f 79 20 26 26      (!destroy &&
355a0 20 28 44 69 73 63 6f 6e 6e 65 63 74 28 74 61 62   (Disconnect(tab
355b0 6c 65 29 20 3d 3d 20 53 51 4c 69 74 65 45 72 72  le) == SQLiteErr
355c0 6f 72 43 6f 64 65 2e 4f 6b 29 29 29 0d 0a 20 20  orCode.Ok)))..  
355d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
355e0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
355f0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
35600 28 74 61 62 6c 65 73 20 21 3d 20 6e 75 6c 6c 29  (tables != null)
35610 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
35620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 61                ta
35630 62 6c 65 73 2e 52 65 6d 6f 76 65 28 70 56 74 61  bles.Remove(pVta
35640 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  b);....         
35650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
35660 65 74 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  eturn SQLiteErro
35670 72 43 6f 64 65 2e 4f 6b 3b 0d 0a 20 20 20 20 20  rCode.Ok;..     
35680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
35690 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
356a0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
356b0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
356c0 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e  catch (Exception
356d0 20 65 29 20 2f 2a 20 4e 4f 54 45 3a 20 4d 75 73   e) /* NOTE: Mus
356e0 74 20 63 61 74 63 68 20 41 4c 4c 2e 20 2a 2f 0d  t catch ALL. */.
356f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
35700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35710 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
35720 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 74 20      // NOTE: At 
35730 74 68 69 73 20 70 6f 69 6e 74 2c 20 74 68 65 72  this point, ther
35740 65 20 69 73 20 6e 6f 20 77 61 79 20 74 6f 20 72  e is no way to r
35750 65 70 6f 72 74 20 74 68 65 20 65 72 72 6f 72 0d  eport the error.
35760 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
35770 20 2f 2f 20 20 20 20 20 20 20 63 6f 6e 64 69 74   //       condit
35780 69 6f 6e 20 62 61 63 6b 20 74 6f 20 74 68 65 20  ion back to the 
35790 63 61 6c 6c 65 72 3b 20 74 68 65 72 65 66 6f 72  caller; therefor
357a0 65 2c 20 75 73 65 20 74 68 65 0d 0a 20 20 20 20  e, use the..    
357b0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
357c0 20 20 20 20 20 6c 6f 67 67 69 6e 67 20 66 61 63       logging fac
357d0 69 6c 69 74 79 20 69 6e 73 74 65 61 64 2e 0d 0a  ility instead...
357e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
357f0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
35800 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
35810 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
35820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35830 69 66 20 28 4c 6f 67 45 78 63 65 70 74 69 6f 6e  if (LogException
35840 73 4e 6f 54 68 72 6f 77 29 0d 0a 20 20 20 20 20  sNoThrow)..     
35850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
35860 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
35870 20 20 20 20 20 20 20 20 20 20 2f 2a 20 74 68 72            /* thr
35880 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
35890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
358a0 51 4c 69 74 65 4c 6f 67 2e 4c 6f 67 4d 65 73 73  QLiteLog.LogMess
358b0 61 67 65 28 53 51 4c 69 74 65 42 61 73 65 2e 43  age(SQLiteBase.C
358c0 4f 52 5f 45 5f 45 58 43 45 50 54 49 4f 4e 2c 0d  OR_E_EXCEPTION,.
358d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
358e0 20 20 20 20 20 20 20 20 20 20 20 20 20 53 74 72               Str
358f0 69 6e 67 2e 46 6f 72 6d 61 74 28 43 75 6c 74 75  ing.Format(Cultu
35900 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
35910 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
35920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35930 20 20 20 20 22 43 61 75 67 68 74 20 65 78 63 65      "Caught exce
35940 70 74 69 6f 6e 20 69 6e 20 5c 22 7b 30 7d 5c 22  ption in \"{0}\"
35950 20 6d 65 74 68 6f 64 3a 20 7b 31 7d 22 2c 0d 0a   method: {1}",..
35960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35970 20 20 20 20 20 20 20 20 20 20 20 20 64 65 73 74              dest
35980 72 6f 79 20 3f 20 22 78 44 65 73 74 72 6f 79 22  roy ? "xDestroy"
35990 20 3a 20 22 78 44 69 73 63 6f 6e 6e 65 63 74 22   : "xDisconnect"
359a0 2c 20 65 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  , e));..        
359b0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
359c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
359d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
359e0 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
359f0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
35a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35a10 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
35a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35a30 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
35a40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69  ..            fi
35a50 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20  nally..         
35a60 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
35a70 20 20 20 20 20 20 46 72 65 65 54 61 62 6c 65 28        FreeTable(
35a80 70 56 74 61 62 29 3b 0d 0a 20 20 20 20 20 20 20  pVtab);..       
35a90 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
35aa0 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c        return SQL
35ab0 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 45 72 72  iteErrorCode.Err
35ac0 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  or;..        }..
35ad0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
35ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35b20 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
35b30 67 69 6f 6e 20 53 74 61 74 69 63 20 45 72 72 6f  gion Static Erro
35b40 72 20 48 61 6e 64 6c 69 6e 67 20 48 65 6c 70 65  r Handling Helpe
35b50 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20  r Methods..     
35b60 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
35b70 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 72  ..        /// Ar
35b80 72 61 6e 67 65 73 20 66 6f 72 20 74 68 65 20 73  ranges for the s
35b90 70 65 63 69 66 69 65 64 20 65 72 72 6f 72 20 6d  pecified error m
35ba0 65 73 73 61 67 65 20 74 6f 20 62 65 20 70 6c 61  essage to be pla
35bb0 63 65 64 20 69 6e 74 6f 20 74 68 65 0d 0a 20 20  ced into the..  
35bc0 20 20 20 20 20 20 2f 2f 2f 20 7a 45 72 72 4d 73        /// zErrMs
35bd0 67 20 66 69 65 6c 64 20 6f 66 20 61 20 73 71 6c  g field of a sql
35be0 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65  ite3_vtab derive
35bf0 64 20 73 74 72 75 63 74 75 72 65 2c 20 66 72 65  d structure, fre
35c00 65 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20  eing the..      
35c10 20 20 2f 2f 2f 20 65 78 69 73 74 69 6e 67 20 65    /// existing e
35c20 72 72 6f 72 20 6d 65 73 73 61 67 65 2c 20 69 66  rror message, if
35c30 20 61 6e 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f   any...        /
35c40 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
35c50 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
35c60 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e  m name="module">
35c70 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
35c80 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
35c90 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62  iteModule" /> ob
35ca0 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 74 6f  ject instance to
35cb0 20 62 65 20 75 73 65 64 2e 0d 0a 20 20 20 20 20   be used...     
35cc0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
35cd0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
35ce0 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22  ram name="pVtab"
35cf0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
35d00 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
35d10 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33  r to the sqlite3
35d20 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74  _vtab derived st
35d30 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  ructure...      
35d40 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
35d50 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
35d60 61 6d 20 6e 61 6d 65 3d 22 6c 6f 67 45 72 72 6f  am name="logErro
35d70 72 73 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rs">..        //
35d80 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68  / Non-zero if th
35d90 69 73 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65  is error message
35da0 20 73 68 6f 75 6c 64 20 61 6c 73 6f 20 62 65 20   should also be 
35db0 6c 6f 67 67 65 64 20 75 73 69 6e 67 20 74 68 65  logged using the
35dc0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
35dd0 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4c  ee cref="SQLiteL
35de0 6f 67 22 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20  og" /> class... 
35df0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
35e00 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
35e10 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 65 72   <param name="er
35e20 72 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ror">..        /
35e30 2f 2f 20 54 68 65 20 65 72 72 6f 72 20 6d 65 73  // The error mes
35e40 73 61 67 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  sage...        /
35e50 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
35e60 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
35e70 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
35e80 4e 6f 6e 2d 7a 65 72 6f 20 75 70 6f 6e 20 73 75  Non-zero upon su
35e90 63 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 20 20  ccess...        
35ea0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
35eb0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
35ec0 73 74 61 74 69 63 20 62 6f 6f 6c 20 53 65 74 54  static bool SetT
35ed0 61 62 6c 65 45 72 72 6f 72 28 0d 0a 20 20 20 20  ableError(..    
35ee0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 6f          SQLiteMo
35ef0 64 75 6c 65 20 6d 6f 64 75 6c 65 2c 0d 0a 20 20  dule module,..  
35f00 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
35f10 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20   pVtab,..       
35f20 20 20 20 20 20 62 6f 6f 6c 20 6c 6f 67 45 72 72       bool logErr
35f30 6f 72 73 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ors,..          
35f40 20 20 73 74 72 69 6e 67 20 65 72 72 6f 72 0d 0a    string error..
35f50 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
35f60 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
35f70 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
35f80 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
35f90 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f            if (lo
35fa0 67 45 72 72 6f 72 73 29 0d 0a 20 20 20 20 20 20  gErrors)..      
35fb0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
35fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35fd0 20 53 51 4c 69 74 65 4c 6f 67 2e 4c 6f 67 4d 65   SQLiteLog.LogMe
35fe0 73 73 61 67 65 28 53 51 4c 69 74 65 45 72 72 6f  ssage(SQLiteErro
35ff0 72 43 6f 64 65 2e 45 72 72 6f 72 2c 0d 0a 20 20  rCode.Error,..  
36000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36010 20 20 20 20 20 20 53 74 72 69 6e 67 2e 46 6f 72        String.For
36020 6d 61 74 28 43 75 6c 74 75 72 65 49 6e 66 6f 2e  mat(CultureInfo.
36030 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
36040 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
36050 20 20 20 20 20 20 20 20 20 22 56 69 72 74 75 61           "Virtua
36060 6c 20 74 61 62 6c 65 20 65 72 72 6f 72 3a 20 7b  l table error: {
36070 30 7d 22 2c 20 65 72 72 6f 72 29 29 3b 20 2f 2a  0}", error)); /*
36080 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
36090 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
360a0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
360b0 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
360c0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
360d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
360e0 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
360f0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
36100 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
36110 70 56 74 61 62 20 3d 3d 20 49 6e 74 50 74 72 2e  pVtab == IntPtr.
36120 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
36130 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
36140 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
36150 20 20 20 20 69 6e 74 20 6f 66 66 73 65 74 20 3d      int offset =
36160 20 49 6e 74 50 74 72 2e 53 69 7a 65 20 2b 20 53   IntPtr.Size + S
36170 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 53 69 7a  QLiteMarshal.Siz
36180 65 4f 66 53 74 72 75 63 74 49 6e 74 28 29 3b 0d  eOfStructInt();.
36190 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
361a0 50 74 72 20 70 45 72 72 6f 72 20 3d 20 53 51 4c  Ptr pError = SQL
361b0 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49  iteMarshal.ReadI
361c0 6e 74 50 74 72 28 70 56 74 61 62 2c 20 6f 66 66  ntPtr(pVtab, off
361d0 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  set);....       
361e0 20 20 20 20 20 69 66 20 28 70 45 72 72 6f 72 20       if (pError 
361f0 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  != IntPtr.Zero).
36200 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
36210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36220 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46 72 65  SQLiteMemory.Fre
36230 65 28 70 45 72 72 6f 72 29 3b 20 70 45 72 72 6f  e(pError); pErro
36240 72 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  r = IntPtr.Zero;
36250 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
36260 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e    SQLiteMarshal.
36270 57 72 69 74 65 49 6e 74 50 74 72 28 70 56 74 61  WriteIntPtr(pVta
36280 62 2c 20 6f 66 66 73 65 74 2c 20 70 45 72 72 6f  b, offset, pErro
36290 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r);..           
362a0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
362b0 20 20 69 66 20 28 65 72 72 6f 72 20 3d 3d 20 6e    if (error == n
362c0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
362d0 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
362e0 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
362f0 20 20 62 6f 6f 6c 20 73 75 63 63 65 73 73 20 3d    bool success =
36300 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20   false;....     
36310 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
36320 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
36330 20 20 20 20 20 20 20 20 20 20 20 70 45 72 72 6f             pErro
36340 72 20 3d 20 53 51 4c 69 74 65 53 74 72 69 6e 67  r = SQLiteString
36350 2e 55 74 66 38 49 6e 74 50 74 72 46 72 6f 6d 53  .Utf8IntPtrFromS
36360 74 72 69 6e 67 28 65 72 72 6f 72 29 3b 0d 0a 20  tring(error);.. 
36370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
36380 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57 72 69  QLiteMarshal.Wri
36390 74 65 49 6e 74 50 74 72 28 70 56 74 61 62 2c 20  teIntPtr(pVtab, 
363a0 6f 66 66 73 65 74 2c 20 70 45 72 72 6f 72 29 3b  offset, pError);
363b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
363c0 20 20 73 75 63 63 65 73 73 20 3d 20 74 72 75 65    success = true
363d0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
363e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69  ..            fi
363f0 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20  nally..         
36400 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
36410 20 20 20 20 20 20 69 66 20 28 21 73 75 63 63 65        if (!succe
36420 73 73 20 26 26 20 28 70 45 72 72 6f 72 20 21 3d  ss && (pError !=
36430 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 29 0d 0a   IntPtr.Zero))..
36440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36450 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
36460 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 65 6d         SQLiteMem
36470 6f 72 79 2e 46 72 65 65 28 70 45 72 72 6f 72 29  ory.Free(pError)
36480 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
36490 20 20 20 20 20 20 20 70 45 72 72 6f 72 20 3d 20         pError = 
364a0 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
364b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
364c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
364d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
364e0 74 75 72 6e 20 73 75 63 63 65 73 73 3b 0d 0a 20  turn success;.. 
364f0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
36500 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
36510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
36550 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
36560 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
36570 2f 20 41 72 72 61 6e 67 65 73 20 66 6f 72 20 74  / Arranges for t
36580 68 65 20 73 70 65 63 69 66 69 65 64 20 65 72 72  he specified err
36590 6f 72 20 6d 65 73 73 61 67 65 20 74 6f 20 62 65  or message to be
365a0 20 70 6c 61 63 65 64 20 69 6e 74 6f 20 74 68 65   placed into the
365b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 7a 45  ..        /// zE
365c0 72 72 4d 73 67 20 66 69 65 6c 64 20 6f 66 20 61  rrMsg field of a
365d0 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65   sqlite3_vtab de
365e0 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2c  rived structure,
365f0 20 66 72 65 65 69 6e 67 20 74 68 65 0d 0a 20 20   freeing the..  
36600 20 20 20 20 20 20 2f 2f 2f 20 65 78 69 73 74 69        /// existi
36610 6e 67 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65  ng error message
36620 2c 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20 20  , if any...     
36630 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
36640 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
36650 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75  param name="modu
36660 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  le">..        //
36670 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
36680 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f  "SQLiteModule" /
36690 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
366a0 65 20 74 6f 20 62 65 20 75 73 65 64 2e 0d 0a 20  e to be used... 
366b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
366c0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
366d0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61   <param name="ta
366e0 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ble">..        /
366f0 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
36700 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  ="SQLiteVirtualT
36710 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20  able" /> object 
36720 69 6e 73 74 61 6e 63 65 20 75 73 65 64 20 74 6f  instance used to
36730 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 6f  ..        /// lo
36740 6f 6b 75 70 20 74 68 65 20 6e 61 74 69 76 65 20  okup the native 
36750 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73  pointer to the s
36760 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69  qlite3_vtab deri
36770 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  ved structure...
36780 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
36790 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
367a0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c  / <param name="l
367b0 6f 67 45 72 72 6f 72 73 22 3e 0d 0a 20 20 20 20  ogErrors">..    
367c0 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
367d0 20 69 66 20 74 68 69 73 20 65 72 72 6f 72 20 6d   if this error m
367e0 65 73 73 61 67 65 20 73 68 6f 75 6c 64 20 61 6c  essage should al
367f0 73 6f 20 62 65 20 6c 6f 67 67 65 64 20 75 73 69  so be logged usi
36800 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  ng the..        
36810 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53  /// <see cref="S
36820 51 4c 69 74 65 4c 6f 67 22 20 2f 3e 20 63 6c 61  QLiteLog" /> cla
36830 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ss...        ///
36840 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
36850 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
36860 6d 65 3d 22 65 72 72 6f 72 22 3e 0d 0a 20 20 20  me="error">..   
36870 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 65 72 72       /// The err
36880 6f 72 20 6d 65 73 73 61 67 65 2e 0d 0a 20 20 20  or message...   
36890 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
368a0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
368b0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
368c0 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 75    /// Non-zero u
368d0 70 6f 6e 20 73 75 63 63 65 73 73 2e 0d 0a 20 20  pon success...  
368e0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
368f0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  rns>..        pr
36900 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f  ivate static boo
36910 6c 20 53 65 74 54 61 62 6c 65 45 72 72 6f 72 28  l SetTableError(
36920 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
36930 4c 69 74 65 4d 6f 64 75 6c 65 20 6d 6f 64 75 6c  LiteModule modul
36940 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
36950 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
36960 6c 65 20 74 61 62 6c 65 2c 0d 0a 20 20 20 20 20  le table,..     
36970 20 20 20 20 20 20 20 62 6f 6f 6c 20 6c 6f 67 45         bool logE
36980 72 72 6f 72 73 2c 0d 0a 20 20 20 20 20 20 20 20  rrors,..        
36990 20 20 20 20 73 74 72 69 6e 67 20 65 72 72 6f 72      string error
369a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
369b0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
369c0 20 20 20 20 20 20 20 20 69 66 20 28 74 61 62 6c          if (tabl
369d0 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
369e0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
369f0 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
36a00 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
36a10 70 56 74 61 62 20 3d 20 74 61 62 6c 65 2e 4e 61  pVtab = table.Na
36a20 74 69 76 65 48 61 6e 64 6c 65 3b 0d 0a 0d 0a 20  tiveHandle;.... 
36a30 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
36a40 56 74 61 62 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  Vtab == IntPtr.Z
36a50 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
36a60 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
36a70 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
36a80 20 20 20 72 65 74 75 72 6e 20 53 65 74 54 61 62     return SetTab
36a90 6c 65 45 72 72 6f 72 28 6d 6f 64 75 6c 65 2c 20  leError(module, 
36aa0 70 56 74 61 62 2c 20 6c 6f 67 45 72 72 6f 72 73  pVtab, logErrors
36ab0 2c 20 65 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20  , error);..     
36ac0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
36ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36b10 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
36b20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
36b30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 72  ..        /// Ar
36b40 72 61 6e 67 65 73 20 66 6f 72 20 74 68 65 20 73  ranges for the s
36b50 70 65 63 69 66 69 65 64 20 65 72 72 6f 72 20 6d  pecified error m
36b60 65 73 73 61 67 65 20 74 6f 20 62 65 20 70 6c 61  essage to be pla
36b70 63 65 64 20 69 6e 74 6f 20 74 68 65 0d 0a 20 20  ced into the..  
36b80 20 20 20 20 20 20 2f 2f 2f 20 7a 45 72 72 4d 73        /// zErrMs
36b90 67 20 66 69 65 6c 64 20 6f 66 20 61 20 73 71 6c  g field of a sql
36ba0 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65  ite3_vtab derive
36bb0 64 20 73 74 72 75 63 74 75 72 65 2c 20 66 72 65  d structure, fre
36bc0 65 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20  eing the..      
36bd0 20 20 2f 2f 2f 20 65 78 69 73 74 69 6e 67 20 65    /// existing e
36be0 72 72 6f 72 20 6d 65 73 73 61 67 65 2c 20 69 66  rror message, if
36bf0 20 61 6e 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f   any...        /
36c00 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
36c10 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
36c20 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e  m name="module">
36c30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
36c40 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
36c50 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62  iteModule" /> ob
36c60 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 74 6f  ject instance to
36c70 20 62 65 20 75 73 65 64 2e 0d 0a 20 20 20 20 20   be used...     
36c80 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
36c90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
36ca0 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f  ram name="pCurso
36cb0 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  r">..        ///
36cc0 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e   The native poin
36cd0 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74  ter to the sqlit
36ce0 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 64  e3_vtab_cursor d
36cf0 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65  erived structure
36d00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 75 73  ..        /// us
36d10 65 64 20 74 6f 20 67 65 74 20 74 68 65 20 6e 61  ed to get the na
36d20 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
36d30 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62  the sqlite3_vtab
36d40 20 64 65 72 69 76 65 64 0d 0a 20 20 20 20 20 20   derived..      
36d50 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 2e    /// structure.
36d60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
36d70 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
36d80 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
36d90 22 6c 6f 67 45 72 72 6f 72 73 22 3e 0d 0a 20 20  "logErrors">..  
36da0 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65        /// Non-ze
36db0 72 6f 20 69 66 20 74 68 69 73 20 65 72 72 6f 72  ro if this error
36dc0 20 6d 65 73 73 61 67 65 20 73 68 6f 75 6c 64 20   message should 
36dd0 61 6c 73 6f 20 62 65 20 6c 6f 67 67 65 64 20 75  also be logged u
36de0 73 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20  sing the..      
36df0 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
36e00 22 53 51 4c 69 74 65 4c 6f 67 22 20 2f 3e 20 63  "SQLiteLog" /> c
36e10 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  lass...        /
36e20 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
36e30 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
36e40 6e 61 6d 65 3d 22 65 72 72 6f 72 22 3e 0d 0a 20  name="error">.. 
36e50 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 65         /// The e
36e60 72 72 6f 72 20 6d 65 73 73 61 67 65 2e 0d 0a 20  rror message... 
36e70 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
36e80 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
36e90 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
36ea0 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
36eb0 20 75 70 6f 6e 20 73 75 63 63 65 73 73 2e 0d 0a   upon success...
36ec0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
36ed0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
36ee0 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62  private static b
36ef0 6f 6f 6c 20 53 65 74 43 75 72 73 6f 72 45 72 72  ool SetCursorErr
36f00 6f 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  or(..           
36f10 20 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20 6d 6f   SQLiteModule mo
36f20 64 75 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  dule,..         
36f30 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f     IntPtr pCurso
36f40 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r,..            
36f50 62 6f 6f 6c 20 6c 6f 67 45 72 72 6f 72 73 2c 0d  bool logErrors,.
36f60 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72  .            str
36f70 69 6e 67 20 65 72 72 6f 72 0d 0a 20 20 20 20 20  ing error..     
36f80 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
36f90 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
36fa0 20 69 66 20 28 70 43 75 72 73 6f 72 20 3d 3d 20   if (pCursor == 
36fb0 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
36fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
36fd0 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
36fe0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
36ff0 72 20 70 56 74 61 62 20 3d 20 54 61 62 6c 65 46  r pVtab = TableF
37000 72 6f 6d 43 75 72 73 6f 72 28 6d 6f 64 75 6c 65  romCursor(module
37010 2c 20 70 43 75 72 73 6f 72 29 3b 0d 0a 0d 0a 20  , pCursor);.... 
37020 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
37030 56 74 61 62 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  Vtab == IntPtr.Z
37040 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
37050 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
37060 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
37070 20 20 20 72 65 74 75 72 6e 20 53 65 74 54 61 62     return SetTab
37080 6c 65 45 72 72 6f 72 28 6d 6f 64 75 6c 65 2c 20  leError(module, 
37090 70 56 74 61 62 2c 20 6c 6f 67 45 72 72 6f 72 73  pVtab, logErrors
370a0 2c 20 65 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20  , error);..     
370b0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
370c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
370d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
370e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
370f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37100 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
37110 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
37120 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 72  ..        /// Ar
37130 72 61 6e 67 65 73 20 66 6f 72 20 74 68 65 20 73  ranges for the s
37140 70 65 63 69 66 69 65 64 20 65 72 72 6f 72 20 6d  pecified error m
37150 65 73 73 61 67 65 20 74 6f 20 62 65 20 70 6c 61  essage to be pla
37160 63 65 64 20 69 6e 74 6f 20 74 68 65 0d 0a 20 20  ced into the..  
37170 20 20 20 20 20 20 2f 2f 2f 20 7a 45 72 72 4d 73        /// zErrMs
37180 67 20 66 69 65 6c 64 20 6f 66 20 61 20 73 71 6c  g field of a sql
37190 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65  ite3_vtab derive
371a0 64 20 73 74 72 75 63 74 75 72 65 2c 20 66 72 65  d structure, fre
371b0 65 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20  eing the..      
371c0 20 20 2f 2f 2f 20 65 78 69 73 74 69 6e 67 20 65    /// existing e
371d0 72 72 6f 72 20 6d 65 73 73 61 67 65 2c 20 69 66  rror message, if
371e0 20 61 6e 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f   any...        /
371f0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
37200 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
37210 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e  m name="module">
37220 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
37230 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
37240 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62  iteModule" /> ob
37250 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 74 6f  ject instance to
37260 20 62 65 20 75 73 65 64 2e 0d 0a 20 20 20 20 20   be used...     
37270 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
37280 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
37290 72 61 6d 20 6e 61 6d 65 3d 22 63 75 72 73 6f 72  ram name="cursor
372a0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
372b0 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
372c0 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
372d0 65 43 75 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65  eCursor" /> obje
372e0 63 74 20 69 6e 73 74 61 6e 63 65 20 75 73 65 64  ct instance used
372f0 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   to..        ///
37300 20 6c 6f 6f 6b 75 70 20 74 68 65 20 6e 61 74 69   lookup the nati
37310 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
37320 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64  e sqlite3_vtab d
37330 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65  erived structure
37340 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
37350 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
37360 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
37370 3d 22 6c 6f 67 45 72 72 6f 72 73 22 3e 0d 0a 20  ="logErrors">.. 
37380 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a         /// Non-z
37390 65 72 6f 20 69 66 20 74 68 69 73 20 65 72 72 6f  ero if this erro
373a0 72 20 6d 65 73 73 61 67 65 20 73 68 6f 75 6c 64  r message should
373b0 20 61 6c 73 6f 20 62 65 20 6c 6f 67 67 65 64 20   also be logged 
373c0 75 73 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20  using the..     
373d0 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
373e0 3d 22 53 51 4c 69 74 65 4c 6f 67 22 20 2f 3e 20  ="SQLiteLog" /> 
373f0 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20  class...        
37400 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
37410 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
37420 20 6e 61 6d 65 3d 22 65 72 72 6f 72 22 3e 0d 0a   name="error">..
37430 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
37440 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2e 0d 0a  error message...
37450 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
37460 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
37470 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
37480 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
37490 6f 20 75 70 6f 6e 20 73 75 63 63 65 73 73 2e 0d  o upon success..
374a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
374b0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
374c0 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
374d0 62 6f 6f 6c 20 53 65 74 43 75 72 73 6f 72 45 72  bool SetCursorEr
374e0 72 6f 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ror(..          
374f0 20 20 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20 6d    SQLiteModule m
37500 6f 64 75 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20  odule,..        
37510 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61      SQLiteVirtua
37520 6c 54 61 62 6c 65 43 75 72 73 6f 72 20 63 75 72  lTableCursor cur
37530 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  sor,..          
37540 20 20 62 6f 6f 6c 20 6c 6f 67 45 72 72 6f 72 73    bool logErrors
37550 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  ,..            s
37560 74 72 69 6e 67 20 65 72 72 6f 72 0d 0a 20 20 20  tring error..   
37570 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
37580 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
37590 20 20 20 69 66 20 28 63 75 72 73 6f 72 20 3d 3d     if (cursor ==
375a0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
375b0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
375c0 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
375d0 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72       IntPtr pCur
375e0 73 6f 72 20 3d 20 63 75 72 73 6f 72 2e 4e 61 74  sor = cursor.Nat
375f0 69 76 65 48 61 6e 64 6c 65 3b 0d 0a 0d 0a 20 20  iveHandle;....  
37600 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 43            if (pC
37610 75 72 73 6f 72 20 3d 3d 20 49 6e 74 50 74 72 2e  ursor == IntPtr.
37620 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
37630 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
37640 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
37650 20 20 20 20 72 65 74 75 72 6e 20 53 65 74 43 75      return SetCu
37660 72 73 6f 72 45 72 72 6f 72 28 6d 6f 64 75 6c 65  rsorError(module
37670 2c 20 70 43 75 72 73 6f 72 2c 20 6c 6f 67 45 72  , pCursor, logEr
37680 72 6f 72 73 2c 20 65 72 72 6f 72 29 3b 0d 0a 20  rors, error);.. 
37690 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
376a0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20    #endregion..  
376b0 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
376c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
376d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
376e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
376f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37710 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
37720 72 65 67 69 6f 6e 20 50 72 6f 74 65 63 74 65 64  region Protected
37730 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20   Members..      
37740 20 20 23 72 65 67 69 6f 6e 20 4d 6f 64 75 6c 65    #region Module
37750 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d   Helper Methods.
37760 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
37770 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
37780 2f 2f 2f 20 47 65 74 73 20 61 6e 64 20 72 65 74  /// Gets and ret
37790 75 72 6e 73 20 74 68 65 20 3c 73 65 65 20 63 72  urns the <see cr
377a0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
377b0 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 69 6e 74 65  eModule" /> inte
377c0 72 66 61 63 65 0d 0a 20 20 20 20 20 20 20 20 2f  rface..        /
377d0 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  // implementatio
377e0 6e 20 74 6f 20 62 65 20 75 73 65 64 20 77 68 65  n to be used whe
377f0 6e 20 63 72 65 61 74 69 6e 67 20 74 68 65 20 6e  n creating the n
37800 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 6d 6f  ative sqlite3_mo
37810 64 75 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  dule..        //
37820 2f 20 73 74 72 75 63 74 75 72 65 2e 20 20 44 65  / structure.  De
37830 72 69 76 65 64 20 63 6c 61 73 73 65 73 20 6d 61  rived classes ma
37840 79 20 6f 76 65 72 72 69 64 65 20 74 68 69 73 20  y override this 
37850 6d 65 74 68 6f 64 20 74 6f 20 73 75 70 70 6c 79  method to supply
37860 20 61 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   an..        ///
37870 20 61 6c 74 65 72 6e 61 74 65 20 69 6d 70 6c 65   alternate imple
37880 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 74 68  mentation for th
37890 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
378a0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
378b0 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  " />..        //
378c0 2f 20 69 6e 74 65 72 66 61 63 65 2e 0d 0a 20 20  / interface...  
378d0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
378e0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
378f0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
37900 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
37910 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
37920 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 20  ativeModule" /> 
37930 69 6e 74 65 72 66 61 63 65 20 69 6d 70 6c 65 6d  interface implem
37940 65 6e 74 61 74 69 6f 6e 20 74 6f 0d 0a 20 20 20  entation to..   
37950 20 20 20 20 20 2f 2f 2f 20 62 65 20 75 73 65 64       /// be used
37960 20 77 68 65 6e 20 70 6f 70 75 6c 61 74 69 6e 67   when populating
37970 20 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69   the native sqli
37980 74 65 33 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63  te3_module struc
37990 74 75 72 65 2e 20 20 49 66 0d 0a 20 20 20 20 20  ture.  If..     
379a0 20 20 20 2f 2f 2f 20 74 68 65 20 72 65 74 75 72     /// the retur
379b0 6e 65 64 20 76 61 6c 75 65 20 69 73 20 6e 75 6c  ned value is nul
379c0 6c 2c 20 74 68 65 20 70 72 69 76 61 74 65 20 6d  l, the private m
379d0 65 74 68 6f 64 73 20 70 72 6f 76 69 64 65 64 20  ethods provided 
379e0 62 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  by the..        
379f0 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53  /// <see cref="S
37a00 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20  QLiteModule" /> 
37a10 63 6c 61 73 73 20 61 6e 64 20 72 65 6c 61 74 69  class and relati
37a20 6e 67 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20  ng to the..     
37a30 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
37a40 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
37a50 6f 64 75 6c 65 22 20 2f 3e 20 69 6e 74 65 72 66  odule" /> interf
37a60 61 63 65 20 20 77 69 6c 6c 20 62 65 20 75 73 65  ace  will be use
37a70 64 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f  d to..        //
37a80 2f 20 63 72 65 61 74 65 20 74 68 65 20 6e 65 63  / create the nec
37a90 65 73 73 61 72 79 20 64 65 6c 65 67 61 74 65 73  essary delegates
37aa0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
37ab0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
37ac0 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 69 72     protected vir
37ad0 74 75 61 6c 20 49 53 51 4c 69 74 65 4e 61 74 69  tual ISQLiteNati
37ae0 76 65 4d 6f 64 75 6c 65 20 47 65 74 4e 61 74 69  veModule GetNati
37af0 76 65 4d 6f 64 75 6c 65 49 6d 70 6c 28 29 0d 0a  veModuleImpl()..
37b00 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
37b10 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
37b20 6c 6c 3b 20 2f 2a 20 4e 4f 54 45 3a 20 55 73 65  ll; /* NOTE: Use
37b30 20 74 68 65 20 62 75 69 6c 74 2d 69 6e 20 64 65   the built-in de
37b40 66 61 75 6c 74 20 64 65 6c 65 67 61 74 65 73 2e  fault delegates.
37b50 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a   */..        }..
37b60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
37b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37bb0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
37bc0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
37bd0 20 20 20 20 2f 2f 2f 20 43 72 65 61 74 65 73 20      /// Creates 
37be0 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
37bf0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
37c00 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20  teNativeModule" 
37c10 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  />..        /// 
37c20 69 6e 74 65 72 66 61 63 65 20 69 6d 70 6c 65 6d  interface implem
37c30 65 6e 74 61 74 69 6f 6e 20 63 6f 72 72 65 73 70  entation corresp
37c40 6f 6e 64 69 6e 67 20 74 6f 20 74 68 65 20 63 75  onding to the cu
37c50 72 72 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 2f  rrent..        /
37c60 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  // <see cref="SQ
37c70 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f  LiteModule" /> o
37c80 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d  bject instance..
37c90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
37ca0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
37cb0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
37cc0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
37cd0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
37ce0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20  teNativeModule" 
37cf0 2f 3e 20 69 6e 74 65 72 66 61 63 65 20 69 6d 70  /> interface imp
37d00 6c 65 6d 65 6e 74 61 74 69 6f 6e 0d 0a 20 20 20  lementation..   
37d10 20 20 20 20 20 2f 2f 2f 20 63 6f 72 72 65 73 70       /// corresp
37d20 6