System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact d253ccae51cd9431f42d79109756657e2b81a538:


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 43 6f 6d 70 69 6c 65 72 53 65 72 76 69  me.CompilerServi
0180: 63 65 73 3b 0d 0a 75 73 69 6e 67 20 53 79 73 74  ces;..using Syst
0190: 65 6d 2e 52 75 6e 74 69 6d 65 2e 49 6e 74 65 72  em.Runtime.Inter
01a0: 6f 70 53 65 72 76 69 63 65 73 3b 0d 0a 75 73 69  opServices;..usi
01b0: 6e 67 20 53 79 73 74 65 6d 2e 54 65 78 74 3b 0d  ng System.Text;.
01c0: 0a 0d 0a 6e 61 6d 65 73 70 61 63 65 20 53 79 73  ...namespace Sys
01d0: 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 0d  tem.Data.SQLite.
01e0: 0a 7b 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  .{..    #region 
01f0: 53 51 4c 69 74 65 43 6f 6e 74 65 78 74 20 48 65  SQLiteContext He
0200: 6c 70 65 72 20 43 6c 61 73 73 0d 0a 20 20 20 20  lper Class..    
0210: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
0220: 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73     /// This clas
0230: 73 20 72 65 70 72 65 73 65 6e 74 73 20 61 20 63  s represents a c
0240: 6f 6e 74 65 78 74 20 66 72 6f 6d 20 74 68 65 20  ontext from the 
0250: 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
0260: 61 72 79 20 74 68 61 74 20 63 61 6e 0d 0a 20 20  ary that can..  
0270: 20 20 2f 2f 2f 20 62 65 20 70 61 73 73 65 64 20    /// be passed 
0280: 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 72  to the sqlite3_r
0290: 65 73 75 6c 74 5f 2a 28 29 20 61 6e 64 20 61 73  esult_*() and as
02a0: 73 6f 63 69 61 74 65 64 20 66 75 6e 63 74 69 6f  sociated functio
02b0: 6e 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ns...    /// </s
02c0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62  ummary>..    pub
02d0: 6c 69 63 20 73 65 61 6c 65 64 20 63 6c 61 73 73  lic sealed class
02e0: 20 53 51 4c 69 74 65 43 6f 6e 74 65 78 74 20 3a   SQLiteContext :
02f0: 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65 48 61   ISQLiteNativeHa
0300: 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  ndle..    {..   
0310: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69       #region Pri
0320: 76 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20 20  vate Data..     
0330: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
0340: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
0350: 65 20 6e 61 74 69 76 65 20 63 6f 6e 74 65 78 74  e native context
0360: 20 68 61 6e 64 6c 65 2e 0d 0a 20 20 20 20 20 20   handle...      
0370: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
0380: 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
0390: 65 20 49 6e 74 50 74 72 20 70 43 6f 6e 74 65 78  e IntPtr pContex
03a0: 74 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64  t;..        #end
03b0: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
03c0: 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
03f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
0410: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69       #region Pri
0420: 76 61 74 65 20 43 6f 6e 73 74 72 75 63 74 6f 72  vate Constructor
0430: 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
0440: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
0450: 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73    /// Constructs
0460: 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20   an instance of 
0470: 74 68 69 73 20 63 6c 61 73 73 20 75 73 69 6e 67  this class using
0480: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6e   the specified n
0490: 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f  ative..        /
04a0: 2f 2f 20 63 6f 6e 74 65 78 74 20 68 61 6e 64 6c  // context handl
04b0: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
04c0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
04d0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
04e0: 61 6d 65 3d 22 70 43 6f 6e 74 65 78 74 22 3e 0d  ame="pContext">.
04f0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
0500: 20 6e 61 74 69 76 65 20 63 6f 6e 74 65 78 74 20   native context 
0510: 68 61 6e 64 6c 65 20 74 6f 20 75 73 65 2e 0d 0a  handle to use...
0520: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
0530: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e  ram>..        in
0540: 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 43 6f 6e  ternal SQLiteCon
0550: 74 65 78 74 28 49 6e 74 50 74 72 20 70 43 6f 6e  text(IntPtr pCon
0560: 74 65 78 74 29 0d 0a 20 20 20 20 20 20 20 20 7b  text)..        {
0570: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
0580: 69 73 2e 70 43 6f 6e 74 65 78 74 20 3d 20 70 43  is.pContext = pC
0590: 6f 6e 74 65 78 74 3b 0d 0a 20 20 20 20 20 20 20  ontext;..       
05a0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
05b0: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
05c0: 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
05f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
0610: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 53 51       #region ISQ
0620: 4c 69 74 65 4e 61 74 69 76 65 48 61 6e 64 6c 65  LiteNativeHandle
0630: 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20   Members..      
0640: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
0650: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65 74  .        /// Ret
0660: 75 72 6e 73 20 74 68 65 20 75 6e 64 65 72 6c 79  urns the underly
0670: 69 6e 67 20 53 51 4c 69 74 65 20 6e 61 74 69 76  ing SQLite nativ
0680: 65 20 68 61 6e 64 6c 65 20 61 73 73 6f 63 69 61  e handle associa
0690: 74 65 64 20 77 69 74 68 20 74 68 69 73 0d 0a 20  ted with this.. 
06a0: 20 20 20 20 20 20 20 2f 2f 2f 20 6f 62 6a 65 63         /// objec
06b0: 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  t instance...   
06c0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
06d0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ry>..        pub
06e0: 6c 69 63 20 49 6e 74 50 74 72 20 4e 61 74 69 76  lic IntPtr Nativ
06f0: 65 48 61 6e 64 6c 65 0d 0a 20 20 20 20 20 20 20  eHandle..       
0700: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
0710: 67 65 74 20 7b 20 72 65 74 75 72 6e 20 70 43 6f  get { return pCo
0720: 6e 74 65 78 74 3b 20 7d 0d 0a 20 20 20 20 20 20  ntext; }..      
0730: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
0740: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
0750: 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
07a0: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75        #region Pu
07b0: 62 6c 69 63 20 4d 65 74 68 6f 64 73 0d 0a 20 20  blic Methods..  
07c0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
07d0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
07e0: 20 53 65 74 73 20 74 68 65 20 63 6f 6e 74 65 78   Sets the contex
07f0: 74 20 72 65 73 75 6c 74 20 74 6f 20 4e 55 4c 4c  t result to NULL
0800: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
0810: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
0820: 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 53     public void S
0830: 65 74 4e 75 6c 6c 28 29 0d 0a 20 20 20 20 20 20  etNull()..      
0840: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
0850: 20 69 66 20 28 70 43 6f 6e 74 65 78 74 20 3d 3d   if (pContext ==
0860: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
0870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
0880: 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64  hrow new Invalid
0890: 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69  OperationExcepti
08a0: 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  on();....       
08b0: 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
08c0: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
08d0: 5f 72 65 73 75 6c 74 5f 6e 75 6c 6c 28 70 43 6f  _result_null(pCo
08e0: 6e 74 65 78 74 29 3b 0d 0a 20 20 20 20 20 20 20  ntext);..       
08f0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f  ////////////////
0920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0940: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
0950: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
0960: 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 74 73          /// Sets
0970: 20 74 68 65 20 63 6f 6e 74 65 78 74 20 72 65 73   the context res
0980: 75 6c 74 20 74 6f 20 74 68 65 20 73 70 65 63 69  ult to the speci
0990: 66 69 65 64 20 3c 73 65 65 20 63 72 65 66 3d 22  fied <see cref="
09a0: 44 6f 75 62 6c 65 22 20 2f 3e 0d 0a 20 20 20 20  Double" />..    
09b0: 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a      /// value...
09c0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
09d0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
09e0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
09f0: 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20  "value">..      
0a00: 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
0a10: 72 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f 3e 20  ref="Double" /> 
0a20: 76 61 6c 75 65 20 74 6f 20 75 73 65 2e 0d 0a 20  value to use... 
0a30: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
0a40: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  am>..        pub
0a50: 6c 69 63 20 76 6f 69 64 20 53 65 74 44 6f 75 62  lic void SetDoub
0a60: 6c 65 28 64 6f 75 62 6c 65 20 76 61 6c 75 65 29  le(double value)
0a70: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
0a80: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f           if (pCo
0a90: 6e 74 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e  ntext == IntPtr.
0aa0: 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
0ab0: 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
0ac0: 20 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f   InvalidOperatio
0ad0: 6e 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d  nException();...
0ae0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
0af0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
0b00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73  .            Uns
0b10: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
0b20: 2e 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f  .sqlite3_result_
0b30: 64 6f 75 62 6c 65 28 70 43 6f 6e 74 65 78 74 2c  double(pContext,
0b40: 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6c 69 66 20   value);..#elif 
0b50: 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44  !SQLITE_STANDARD
0b60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e  ..            Un
0b70: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
0b80: 73 2e 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  s.sqlite3_result
0b90: 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28  _double_interop(
0ba0: 70 43 6f 6e 74 65 78 74 2c 20 72 65 66 20 76 61  pContext, ref va
0bb0: 6c 75 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  lue);..#else..  
0bc0: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
0bd0: 6e 65 77 20 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74  new NotImplement
0be0: 65 64 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a  edException();..
0bf0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
0c00: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f  ////////////////
0c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c50: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
0c60: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
0c70: 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 74 73 20         /// Sets 
0c80: 74 68 65 20 63 6f 6e 74 65 78 74 20 72 65 73 75  the context resu
0c90: 6c 74 20 74 6f 20 74 68 65 20 73 70 65 63 69 66  lt to the specif
0ca0: 69 65 64 20 3c 73 65 65 20 63 72 65 66 3d 22 49  ied <see cref="I
0cb0: 6e 74 33 32 22 20 2f 3e 0d 0a 20 20 20 20 20 20  nt32" />..      
0cc0: 20 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20 20    /// value...  
0cd0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
0ce0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
0cf0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76  / <param name="v
0d00: 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  alue">..        
0d10: 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
0d20: 66 3d 22 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c  f="Int32" /> val
0d30: 75 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20  ue to use...    
0d40: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
0d50: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
0d60: 20 76 6f 69 64 20 53 65 74 49 6e 74 28 69 6e 74   void SetInt(int
0d70: 20 76 61 6c 75 65 29 0d 0a 20 20 20 20 20 20 20   value)..       
0d80: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
0d90: 69 66 20 28 70 43 6f 6e 74 65 78 74 20 3d 3d 20  if (pContext == 
0da0: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
0db0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
0dc0: 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f  row new InvalidO
0dd0: 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69 6f  perationExceptio
0de0: 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  n();....        
0df0: 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65      UnsafeNative
0e00: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
0e10: 72 65 73 75 6c 74 5f 69 6e 74 28 70 43 6f 6e 74  result_int(pCont
0e20: 65 78 74 2c 20 76 61 6c 75 65 29 3b 0d 0a 20 20  ext, value);..  
0e30: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
0e40: 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
0e90: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
0ea0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
0eb0: 20 53 65 74 73 20 74 68 65 20 63 6f 6e 74 65 78   Sets the contex
0ec0: 74 20 72 65 73 75 6c 74 20 74 6f 20 74 68 65 20  t result to the 
0ed0: 73 70 65 63 69 66 69 65 64 20 3c 73 65 65 20 63  specified <see c
0ee0: 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e 0d 0a  ref="Int64" />..
0ef0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75          /// valu
0f00: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
0f10: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
0f20: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
0f30: 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20  ame="value">..  
0f40: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
0f50: 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20  ee cref="Int64" 
0f60: 2f 3e 20 76 61 6c 75 65 20 74 6f 20 75 73 65 2e  /> value to use.
0f70: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
0f80: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
0f90: 70 75 62 6c 69 63 20 76 6f 69 64 20 53 65 74 49  public void SetI
0fa0: 6e 74 36 34 28 6c 6f 6e 67 20 76 61 6c 75 65 29  nt64(long value)
0fb0: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
0fc0: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f           if (pCo
0fd0: 6e 74 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e  ntext == IntPtr.
0fe0: 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
0ff0: 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
1000: 20 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f   InvalidOperatio
1010: 6e 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d  nException();...
1020: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1030: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1040: 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73  .            Uns
1050: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
1060: 2e 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f  .sqlite3_result_
1070: 69 6e 74 36 34 28 70 43 6f 6e 74 65 78 74 2c 20  int64(pContext, 
1080: 76 61 6c 75 65 29 3b 0d 0a 23 65 6c 69 66 20 21  value);..#elif !
1090: 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
10a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73  .            Uns
10b0: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
10c0: 2e 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f  .sqlite3_result_
10d0: 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28 70 43  int64_interop(pC
10e0: 6f 6e 74 65 78 74 2c 20 72 65 66 20 76 61 6c 75  ontext, ref valu
10f0: 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  e);..#else..    
1100: 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65          throw ne
1110: 77 20 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74 65 64  w NotImplemented
1120: 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 23 65  Exception();..#e
1130: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ndif..        }.
1140: 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f  ////////////////
1170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1190: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
11a0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
11b0: 20 20 20 20 20 2f 2f 2f 20 53 65 74 73 20 74 68       /// Sets th
11c0: 65 20 63 6f 6e 74 65 78 74 20 72 65 73 75 6c 74  e context result
11d0: 20 74 6f 20 74 68 65 20 73 70 65 63 69 66 69 65   to the specifie
11e0: 64 20 3c 73 65 65 20 63 72 65 66 3d 22 53 74 72  d <see cref="Str
11f0: 69 6e 67 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20  ing" />..       
1200: 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20   /// value...   
1210: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1220: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1230: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61   <param name="va
1240: 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  lue">..        /
1250: 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
1260: 3d 22 53 74 72 69 6e 67 22 20 2f 3e 20 76 61 6c  ="String" /> val
1270: 75 65 20 74 6f 20 75 73 65 2e 20 20 54 68 69 73  ue to use.  This
1280: 20 76 61 6c 75 65 20 77 69 6c 6c 20 62 65 0d 0a   value will be..
1290: 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 76          /// conv
12a0: 65 72 74 65 64 20 74 6f 20 74 68 65 20 55 54 46  erted to the UTF
12b0: 2d 38 20 65 6e 63 6f 64 69 6e 67 20 70 72 69 6f  -8 encoding prio
12c0: 72 20 74 6f 20 62 65 69 6e 67 20 75 73 65 64 2e  r to being used.
12d0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
12e0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
12f0: 70 75 62 6c 69 63 20 76 6f 69 64 20 53 65 74 53  public void SetS
1300: 74 72 69 6e 67 28 73 74 72 69 6e 67 20 76 61 6c  tring(string val
1310: 75 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ue)..        {..
1320: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1330: 70 43 6f 6e 74 65 78 74 20 3d 3d 20 49 6e 74 50  pContext == IntP
1340: 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
1350: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
1360: 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72 61  new InvalidOpera
1370: 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 29 3b  tionException();
1380: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1390: 62 79 74 65 5b 5d 20 62 79 74 65 73 20 3d 20 53  byte[] bytes = S
13a0: 51 4c 69 74 65 53 74 72 69 6e 67 2e 47 65 74 55  QLiteString.GetU
13b0: 74 66 38 42 79 74 65 73 46 72 6f 6d 53 74 72 69  tf8BytesFromStri
13c0: 6e 67 28 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20  ng(value);....  
13d0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 79            if (by
13e0: 74 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  tes == null)..  
13f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
1400: 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65 6e 74  row new Argument
1410: 4e 75 6c 6c 45 78 63 65 70 74 69 6f 6e 28 22 76  NullException("v
1420: 61 6c 75 65 22 29 3b 0d 0a 0d 0a 20 20 20 20 20  alue");....     
1430: 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74         UnsafeNat
1440: 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
1450: 65 33 5f 72 65 73 75 6c 74 5f 74 65 78 74 28 0d  e3_result_text(.
1460: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1470: 20 70 43 6f 6e 74 65 78 74 2c 20 62 79 74 65 73   pContext, bytes
1480: 2c 20 62 79 74 65 73 2e 4c 65 6e 67 74 68 2c 20  , bytes.Length, 
1490: 28 49 6e 74 50 74 72 29 28 2d 31 29 29 3b 0d 0a  (IntPtr)(-1));..
14a0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
14b0: 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1500: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
1510: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1520: 2f 2f 20 53 65 74 73 20 74 68 65 20 63 6f 6e 74  // Sets the cont
1530: 65 78 74 20 72 65 73 75 6c 74 20 74 6f 20 74 68  ext result to th
1540: 65 20 73 70 65 63 69 66 69 65 64 20 3c 73 65 65  e specified <see
1550: 20 63 72 65 66 3d 22 53 74 72 69 6e 67 22 20 2f   cref="String" /
1560: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76  >..        /// v
1570: 61 6c 75 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20  alue containing 
1580: 61 6e 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65  an error message
1590: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
15a0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
15b0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
15c0: 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20  me="value">..   
15d0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
15e0: 65 20 63 72 65 66 3d 22 53 74 72 69 6e 67 22 20  e cref="String" 
15f0: 2f 3e 20 76 61 6c 75 65 20 63 6f 6e 74 61 69 6e  /> value contain
1600: 69 6e 67 20 74 68 65 20 65 72 72 6f 72 20 6d 65  ing the error me
1610: 73 73 61 67 65 20 74 65 78 74 2e 0d 0a 20 20 20  ssage text...   
1620: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 76 61       /// This va
1630: 6c 75 65 20 77 69 6c 6c 20 62 65 20 63 6f 6e 76  lue will be conv
1640: 65 72 74 65 64 20 74 6f 20 74 68 65 20 55 54 46  erted to the UTF
1650: 2d 38 20 65 6e 63 6f 64 69 6e 67 20 70 72 69 6f  -8 encoding prio
1660: 72 20 74 6f 20 62 65 69 6e 67 0d 0a 20 20 20 20  r to being..    
1670: 20 20 20 20 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20      /// used... 
1680: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1690: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  am>..        pub
16a0: 6c 69 63 20 76 6f 69 64 20 53 65 74 45 72 72 6f  lic void SetErro
16b0: 72 28 73 74 72 69 6e 67 20 76 61 6c 75 65 29 0d  r(string value).
16c0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
16d0: 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f 6e          if (pCon
16e0: 74 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  text == IntPtr.Z
16f0: 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
1700: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
1710: 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e  InvalidOperation
1720: 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a  Exception();....
1730: 20 20 20 20 20 20 20 20 20 20 20 20 62 79 74 65              byte
1740: 5b 5d 20 62 79 74 65 73 20 3d 20 53 51 4c 69 74  [] bytes = SQLit
1750: 65 53 74 72 69 6e 67 2e 47 65 74 55 74 66 38 42  eString.GetUtf8B
1760: 79 74 65 73 46 72 6f 6d 53 74 72 69 6e 67 28 76  ytesFromString(v
1770: 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  alue);....      
1780: 20 20 20 20 20 20 69 66 20 28 62 79 74 65 73 20        if (bytes 
1790: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
17a0: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
17b0: 6e 65 77 20 41 72 67 75 6d 65 6e 74 4e 75 6c 6c  new ArgumentNull
17c0: 45 78 63 65 70 74 69 6f 6e 28 22 76 61 6c 75 65  Exception("value
17d0: 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ");....         
17e0: 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
17f0: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 72  ethods.sqlite3_r
1800: 65 73 75 6c 74 5f 65 72 72 6f 72 28 0d 0a 20 20  esult_error(..  
1810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 43                pC
1820: 6f 6e 74 65 78 74 2c 20 62 79 74 65 73 2c 20 62  ontext, bytes, b
1830: 79 74 65 73 2e 4c 65 6e 67 74 68 29 3b 0d 0a 20  ytes.Length);.. 
1840: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
1850: 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
18a0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
18b0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
18c0: 2f 20 53 65 74 73 20 74 68 65 20 63 6f 6e 74 65  / Sets the conte
18d0: 78 74 20 72 65 73 75 6c 74 20 74 6f 20 74 68 65  xt result to the
18e0: 20 73 70 65 63 69 66 69 65 64 20 3c 73 65 65 20   specified <see 
18f0: 63 72 65 66 3d 22 53 51 4c 69 74 65 45 72 72 6f  cref="SQLiteErro
1900: 72 43 6f 64 65 22 20 2f 3e 0d 0a 20 20 20 20 20  rCode" />..     
1910: 20 20 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20     /// value... 
1920: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
1930: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1940: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1950: 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20  value">..       
1960: 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
1970: 65 66 3d 22 53 51 4c 69 74 65 45 72 72 6f 72 43  ef="SQLiteErrorC
1980: 6f 64 65 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f  ode" /> value to
1990: 20 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f   use...        /
19a0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
19b0: 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64       public void
19c0: 20 53 65 74 45 72 72 6f 72 43 6f 64 65 28 53 51   SetErrorCode(SQ
19d0: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 76 61  LiteErrorCode va
19e0: 6c 75 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  lue)..        {.
19f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
1a00: 28 70 43 6f 6e 74 65 78 74 20 3d 3d 20 49 6e 74  (pContext == Int
1a10: 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
1a20: 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
1a30: 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72   new InvalidOper
1a40: 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 29  ationException()
1a50: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1a60: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
1a70: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 72 65 73  hods.sqlite3_res
1a80: 75 6c 74 5f 65 72 72 6f 72 5f 63 6f 64 65 28 70  ult_error_code(p
1a90: 43 6f 6e 74 65 78 74 2c 20 76 61 6c 75 65 29 3b  Context, value);
1aa0: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
1ab0: 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1b00: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1b10: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1b20: 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20 63 6f   /// Sets the co
1b30: 6e 74 65 78 74 20 72 65 73 75 6c 74 20 74 6f 20  ntext result to 
1b40: 63 6f 6e 74 61 69 6e 20 74 68 65 20 65 72 72 6f  contain the erro
1b50: 72 20 63 6f 64 65 20 53 51 4c 49 54 45 5f 54 4f  r code SQLITE_TO
1b60: 4f 42 49 47 2e 0d 0a 20 20 20 20 20 20 20 20 2f  OBIG...        /
1b70: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1b80: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f         public vo
1b90: 69 64 20 53 65 74 45 72 72 6f 72 54 6f 6f 42 69  id SetErrorTooBi
1ba0: 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  g()..        {..
1bb0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1bc0: 70 43 6f 6e 74 65 78 74 20 3d 3d 20 49 6e 74 50  pContext == IntP
1bd0: 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
1be0: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
1bf0: 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72 61  new InvalidOpera
1c00: 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 29 3b  tionException();
1c10: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1c20: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
1c30: 6f 64 73 2e 73 71 6c 69 74 65 33 5f 72 65 73 75  ods.sqlite3_resu
1c40: 6c 74 5f 65 72 72 6f 72 5f 74 6f 6f 62 69 67 28  lt_error_toobig(
1c50: 70 43 6f 6e 74 65 78 74 29 3b 0d 0a 20 20 20 20  pContext);..    
1c60: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1c70: 20 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: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1cc0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1cd0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53  >..        /// S
1ce0: 65 74 73 20 74 68 65 20 63 6f 6e 74 65 78 74 20  ets the context 
1cf0: 72 65 73 75 6c 74 20 74 6f 20 63 6f 6e 74 61 69  result to contai
1d00: 6e 20 74 68 65 20 65 72 72 6f 72 20 63 6f 64 65  n the error code
1d10: 20 53 51 4c 49 54 45 5f 4e 4f 4d 45 4d 2e 0d 0a   SQLITE_NOMEM...
1d20: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
1d30: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1d40: 70 75 62 6c 69 63 20 76 6f 69 64 20 53 65 74 45  public void SetE
1d50: 72 72 6f 72 4e 6f 4d 65 6d 6f 72 79 28 29 0d 0a  rrorNoMemory()..
1d60: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1d70: 20 20 20 20 20 20 20 69 66 20 28 70 43 6f 6e 74         if (pCont
1d80: 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  ext == IntPtr.Ze
1d90: 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
1da0: 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 49       throw new I
1db0: 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45  nvalidOperationE
1dc0: 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 20  xception();.... 
1dd0: 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66             Unsaf
1de0: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
1df0: 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72  qlite3_result_er
1e00: 72 6f 72 5f 6e 6f 6d 65 6d 28 70 43 6f 6e 74 65  ror_nomem(pConte
1e10: 78 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  xt);..        }.
1e20: 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f  ////////////////
1e50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e70: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
1e80: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1e90: 20 20 20 20 20 2f 2f 2f 20 53 65 74 73 20 74 68       /// Sets th
1ea0: 65 20 63 6f 6e 74 65 78 74 20 72 65 73 75 6c 74  e context result
1eb0: 20 74 6f 20 74 68 65 20 73 70 65 63 69 66 69 65   to the specifie
1ec0: 64 20 3c 73 65 65 20 63 72 65 66 3d 22 42 79 74  d <see cref="Byt
1ed0: 65 22 20 2f 3e 20 61 72 72 61 79 0d 0a 20 20 20  e" /> array..   
1ee0: 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d       /// value..
1ef0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
1f00: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1f10: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1f20: 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20  ="value">..     
1f30: 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
1f40: 63 72 65 66 3d 22 42 79 74 65 22 20 2f 3e 20 61  cref="Byte" /> a
1f50: 72 72 61 79 20 76 61 6c 75 65 20 74 6f 20 75 73  rray value to us
1f60: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
1f70: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
1f80: 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 53 65    public void Se
1f90: 74 42 6c 6f 62 28 62 79 74 65 5b 5d 20 76 61 6c  tBlob(byte[] val
1fa0: 75 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ue)..        {..
1fb0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1fc0: 70 43 6f 6e 74 65 78 74 20 3d 3d 20 49 6e 74 50  pContext == IntP
1fd0: 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
1fe0: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
1ff0: 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72 61  new InvalidOpera
2000: 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 29 3b  tionException();
2010: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2020: 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c  if (value == nul
2030: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
2040: 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72      throw new Ar
2050: 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65 70 74  gumentNullExcept
2060: 69 6f 6e 28 22 76 61 6c 75 65 22 29 3b 0d 0a 0d  ion("value");...
2070: 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73  .            Uns
2080: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2090: 2e 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f  .sqlite3_result_
20a0: 62 6c 6f 62 28 0d 0a 20 20 20 20 20 20 20 20 20  blob(..         
20b0: 20 20 20 20 20 20 20 70 43 6f 6e 74 65 78 74 2c         pContext,
20c0: 20 76 61 6c 75 65 2c 20 76 61 6c 75 65 2e 4c 65   value, value.Le
20d0: 6e 67 74 68 2c 20 28 49 6e 74 50 74 72 29 28 2d  ngth, (IntPtr)(-
20e0: 31 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  1));..        }.
20f0: 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f  ////////////////
2120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2140: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
2150: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
2160: 20 20 20 20 20 2f 2f 2f 20 53 65 74 73 20 74 68       /// Sets th
2170: 65 20 63 6f 6e 74 65 78 74 20 72 65 73 75 6c 74  e context result
2180: 20 74 6f 20 61 20 42 4c 4f 42 20 6f 66 20 7a 65   to a BLOB of ze
2190: 72 6f 73 20 6f 66 20 74 68 65 20 73 70 65 63 69  ros of the speci
21a0: 66 69 65 64 20 73 69 7a 65 2e 0d 0a 20 20 20 20  fied size...    
21b0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
21c0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
21d0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c  <param name="val
21e0: 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ue">..        //
21f0: 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  / The number of 
2200: 7a 65 72 6f 20 62 79 74 65 73 20 74 6f 20 75 73  zero bytes to us
2210: 65 20 66 6f 72 20 74 68 65 20 42 4c 4f 42 20 63  e for the BLOB c
2220: 6f 6e 74 65 78 74 20 72 65 73 75 6c 74 2e 0d 0a  ontext result...
2230: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
2240: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ram>..        pu
2250: 62 6c 69 63 20 76 6f 69 64 20 53 65 74 5a 65 72  blic void SetZer
2260: 6f 42 6c 6f 62 28 69 6e 74 20 76 61 6c 75 65 29  oBlob(int value)
2270: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
2280: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f           if (pCo
2290: 6e 74 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e  ntext == IntPtr.
22a0: 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
22b0: 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
22c0: 20 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f   InvalidOperatio
22d0: 6e 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d  nException();...
22e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73  .            Uns
22f0: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2300: 2e 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f  .sqlite3_result_
2310: 7a 65 72 6f 62 6c 6f 62 28 70 43 6f 6e 74 65 78  zeroblob(pContex
2320: 74 2c 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20  t, value);..    
2330: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2340: 20 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: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2380: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2390: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
23a0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53  >..        /// S
23b0: 65 74 73 20 74 68 65 20 63 6f 6e 74 65 78 74 20  ets the context 
23c0: 72 65 73 75 6c 74 20 74 6f 20 74 68 65 20 73 70  result to the sp
23d0: 65 63 69 66 69 65 64 20 3c 73 65 65 20 63 72 65  ecified <see cre
23e0: 66 3d 22 53 51 4c 69 74 65 56 61 6c 75 65 22 20  f="SQLiteValue" 
23f0: 2f 3e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  />...        ///
2400: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
2410: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
2420: 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20  name="value">.. 
2430: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
2440: 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
2450: 56 61 6c 75 65 22 20 2f 3e 20 74 6f 20 75 73 65  Value" /> to use
2460: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
2470: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
2480: 20 70 75 62 6c 69 63 20 76 6f 69 64 20 53 65 74   public void Set
2490: 56 61 6c 75 65 28 53 51 4c 69 74 65 56 61 6c 75  Value(SQLiteValu
24a0: 65 20 76 61 6c 75 65 29 0d 0a 20 20 20 20 20 20  e value)..      
24b0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
24c0: 20 69 66 20 28 70 43 6f 6e 74 65 78 74 20 3d 3d   if (pContext ==
24d0: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
24e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
24f0: 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64  hrow new Invalid
2500: 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69  OperationExcepti
2510: 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  on();....       
2520: 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d       if (value =
2530: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
2540: 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e           throw n
2550: 65 77 20 41 72 67 75 6d 65 6e 74 4e 75 6c 6c 45  ew ArgumentNullE
2560: 78 63 65 70 74 69 6f 6e 28 22 76 61 6c 75 65 22  xception("value"
2570: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2580: 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65    UnsafeNativeMe
2590: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 72 65  thods.sqlite3_re
25a0: 73 75 6c 74 5f 76 61 6c 75 65 28 0d 0a 20 20 20  sult_value(..   
25b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 43 6f               pCo
25c0: 6e 74 65 78 74 2c 20 76 61 6c 75 65 2e 4e 61 74  ntext, value.Nat
25d0: 69 76 65 48 61 6e 64 6c 65 29 3b 0d 0a 20 20 20  iveHandle);..   
25e0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
25f0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20  #endregion..    
2600: 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  }..    #endregio
2610: 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  n....    ///////
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 2f 2f 2f 2f  ////////////////
2640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2660: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
2670: 69 6f 6e 20 53 51 4c 69 74 65 56 61 6c 75 65 20  ion SQLiteValue 
2680: 48 65 6c 70 65 72 20 43 6c 61 73 73 0d 0a 20 20  Helper Class..  
2690: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
26a0: 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c  .    /// This cl
26b0: 61 73 73 20 72 65 70 72 65 73 65 6e 74 73 20 61  ass represents a
26c0: 20 76 61 6c 75 65 20 66 72 6f 6d 20 74 68 65 20   value from the 
26d0: 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
26e0: 61 72 79 20 74 68 61 74 20 63 61 6e 20 62 65 0d  ary that can be.
26f0: 0a 20 20 20 20 2f 2f 2f 20 70 61 73 73 65 64 20  .    /// passed 
2700: 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76  to the sqlite3_v
2710: 61 6c 75 65 5f 2a 28 29 20 61 6e 64 20 61 73 73  alue_*() and ass
2720: 6f 63 69 61 74 65 64 20 66 75 6e 63 74 69 6f 6e  ociated function
2730: 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  s...    /// </su
2740: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c  mmary>..    publ
2750: 69 63 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20  ic sealed class 
2760: 53 51 4c 69 74 65 56 61 6c 75 65 20 3a 20 49 53  SQLiteValue : IS
2770: 51 4c 69 74 65 4e 61 74 69 76 65 48 61 6e 64 6c  QLiteNativeHandl
2780: 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  e..    {..      
2790: 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74    #region Privat
27a0: 65 20 44 61 74 61 0d 0a 20 20 20 20 20 20 20 20  e Data..        
27b0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
27c0: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
27d0: 61 74 69 76 65 20 76 61 6c 75 65 20 68 61 6e 64  ative value hand
27e0: 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le...        ///
27f0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
2800: 20 20 20 20 20 70 72 69 76 61 74 65 20 49 6e 74       private Int
2810: 50 74 72 20 70 56 61 6c 75 65 3b 0d 0a 20 20 20  Ptr pValue;..   
2820: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
2830: 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f  ////////////////
2860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2880: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
2890: 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43 6f  egion Private Co
28a0: 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20  nstructors..    
28b0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
28c0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43  >..        /// C
28d0: 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73  onstructs an ins
28e0: 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c  tance of this cl
28f0: 61 73 73 20 75 73 69 6e 67 20 74 68 65 20 73 70  ass using the sp
2900: 65 63 69 66 69 65 64 20 6e 61 74 69 76 65 0d 0a  ecified native..
2910: 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75          /// valu
2920: 65 20 68 61 6e 64 6c 65 2e 0d 0a 20 20 20 20 20  e handle...     
2930: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
2940: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
2950: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 61 6c  param name="pVal
2960: 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ue">..        //
2970: 2f 20 54 68 65 20 6e 61 74 69 76 65 20 76 61 6c  / The native val
2980: 75 65 20 68 61 6e 64 6c 65 20 74 6f 20 75 73 65  ue handle to use
2990: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
29a0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
29b0: 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 56   private SQLiteV
29c0: 61 6c 75 65 28 49 6e 74 50 74 72 20 70 56 61 6c  alue(IntPtr pVal
29d0: 75 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ue)..        {..
29e0: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
29f0: 2e 70 56 61 6c 75 65 20 3d 20 70 56 61 6c 75 65  .pValue = pValue
2a00: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
2a10: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
2a20: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
2a30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a70: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
2a80: 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 4d  region Private M
2a90: 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
2aa0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2ab0: 20 20 20 20 20 20 20 2f 2f 2f 20 49 6e 76 61 6c         /// Inval
2ac0: 69 64 61 74 65 73 20 74 68 65 20 6e 61 74 69 76  idates the nativ
2ad0: 65 20 76 61 6c 75 65 20 68 61 6e 64 6c 65 2c 20  e value handle, 
2ae0: 74 68 65 72 65 62 79 20 70 72 65 76 65 6e 74 69  thereby preventi
2af0: 6e 67 20 66 75 72 74 68 65 72 0d 0a 20 20 20 20  ng further..    
2b00: 20 20 20 20 2f 2f 2f 20 61 63 63 65 73 73 20 74      /// access t
2b10: 6f 20 69 74 20 66 72 6f 6d 20 74 68 69 73 20 6f  o it from this o
2b20: 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d  bject instance..
2b30: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
2b40: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2b50: 20 70 72 69 76 61 74 65 20 76 6f 69 64 20 50 72   private void Pr
2b60: 65 76 65 6e 74 4e 61 74 69 76 65 41 63 63 65 73  eventNativeAcces
2b70: 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  s()..        {..
2b80: 20 20 20 20 20 20 20 20 20 20 20 20 70 56 61 6c              pVal
2b90: 75 65 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  ue = IntPtr.Zero
2ba0: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
2bb0: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
2bc0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
2bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c10: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
2c20: 72 65 67 69 6f 6e 20 49 6e 74 65 72 6e 61 6c 20  region Internal 
2c30: 4d 61 72 73 68 61 6c 20 48 65 6c 70 65 72 20 4d  Marshal Helper M
2c40: 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
2c50: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2c60: 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65         /// Conve
2c70: 72 74 73 20 61 20 6c 6f 67 69 63 61 6c 20 61 72  rts a logical ar
2c80: 72 61 79 20 6f 66 20 6e 61 74 69 76 65 20 70 6f  ray of native po
2c90: 69 6e 74 65 72 73 20 74 6f 20 6e 61 74 69 76 65  inters to native
2ca0: 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 0d 0a   sqlite3_value..
2cb0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75          /// stru
2cc0: 63 74 75 72 65 73 20 69 6e 74 6f 20 61 20 6d 61  ctures into a ma
2cd0: 6e 61 67 65 64 20 61 72 72 61 79 20 6f 66 20 3c  naged array of <
2ce0: 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
2cf0: 56 61 6c 75 65 22 20 2f 3e 0d 0a 20 20 20 20 20  Value" />..     
2d00: 20 20 20 2f 2f 2f 20 6f 62 6a 65 63 74 20 69 6e     /// object in
2d10: 73 74 61 6e 63 65 73 2e 0d 0a 20 20 20 20 20 20  stances...      
2d20: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2d30: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
2d40: 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 63 22  aram name="argc"
2d50: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
2d60: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 65 6c 65  he number of ele
2d70: 6d 65 6e 74 73 20 69 6e 20 74 68 65 20 6c 6f 67  ments in the log
2d80: 69 63 61 6c 20 61 72 72 61 79 20 6f 66 20 6e 61  ical array of na
2d90: 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76 61 6c  tive sqlite3_val
2da0: 75 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ue..        /// 
2db0: 73 74 72 75 63 74 75 72 65 73 2e 0d 0a 20 20 20  structures...   
2dc0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2dd0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
2de0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 76  param name="argv
2df0: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
2e00: 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  The native point
2e10: 65 72 20 74 6f 20 74 68 65 20 6c 6f 67 69 63 61  er to the logica
2e20: 6c 20 61 72 72 61 79 20 6f 66 20 6e 61 74 69 76  l array of nativ
2e30: 65 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 0d  e sqlite3_value.
2e40: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72  .        /// str
2e50: 75 63 74 75 72 65 73 20 74 6f 20 63 6f 6e 76 65  uctures to conve
2e60: 72 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  rt...        ///
2e70: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
2e80: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
2e90: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
2ea0: 65 20 6d 61 6e 61 67 65 64 20 61 72 72 61 79 20  e managed array 
2eb0: 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  of <see cref="SQ
2ec0: 4c 69 74 65 56 61 6c 75 65 22 20 2f 3e 20 6f 62  LiteValue" /> ob
2ed0: 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 73 20 6f  ject instances o
2ee0: 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e  r..        /// n
2ef0: 75 6c 6c 20 75 70 6f 6e 20 66 61 69 6c 75 72 65  ull upon failure
2f00: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
2f10: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
2f20: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
2f30: 69 63 20 53 51 4c 69 74 65 56 61 6c 75 65 5b 5d  ic SQLiteValue[]
2f40: 20 41 72 72 61 79 46 72 6f 6d 53 69 7a 65 41 6e   ArrayFromSizeAn
2f50: 64 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20  dIntPtr(..      
2f60: 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d        int argc,.
2f70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
2f80: 50 74 72 20 61 72 67 76 0d 0a 20 20 20 20 20 20  Ptr argv..      
2f90: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
2fa0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2fb0: 69 66 20 28 61 72 67 63 20 3c 20 30 29 0d 0a 20  if (argc < 0).. 
2fc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2fd0: 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  eturn null;.... 
2fe0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61             if (a
2ff0: 72 67 76 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  rgv == IntPtr.Ze
3000: 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
3010: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
3020: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
3030: 20 53 51 4c 69 74 65 56 61 6c 75 65 5b 5d 20 72   SQLiteValue[] r
3040: 65 73 75 6c 74 20 3d 20 6e 65 77 20 53 51 4c 69  esult = new SQLi
3050: 74 65 56 61 6c 75 65 5b 61 72 67 63 5d 3b 0d 0a  teValue[argc];..
3060: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f  ..            fo
3070: 72 20 28 69 6e 74 20 69 6e 64 65 78 20 3d 20 30  r (int index = 0
3080: 2c 20 6f 66 66 73 65 74 20 3d 20 30 3b 0d 0a 20  , offset = 0;.. 
3090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30a0: 20 20 20 69 6e 64 65 78 20 3c 20 72 65 73 75 6c     index < resul
30b0: 74 2e 4c 65 6e 67 74 68 3b 0d 0a 20 20 20 20 20  t.Length;..     
30c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
30d0: 6e 64 65 78 2b 2b 2c 20 6f 66 66 73 65 74 20 2b  ndex++, offset +
30e0: 3d 20 49 6e 74 50 74 72 2e 53 69 7a 65 29 0d 0a  = IntPtr.Size)..
30f0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
3100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
3110: 6e 74 50 74 72 20 70 41 72 67 20 3d 20 53 51 4c  ntPtr pArg = SQL
3120: 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49  iteMarshal.ReadI
3130: 6e 74 50 74 72 28 61 72 67 76 2c 20 6f 66 66 73  ntPtr(argv, offs
3140: 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  et);....        
3150: 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 5b 69          result[i
3160: 6e 64 65 78 5d 20 3d 20 28 70 41 72 67 20 21 3d  ndex] = (pArg !=
3170: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20 3f 0d   IntPtr.Zero) ?.
3180: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3190: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 56       new SQLiteV
31a0: 61 6c 75 65 28 70 41 72 67 29 20 3a 20 6e 75 6c  alue(pArg) : nul
31b0: 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l;..            
31c0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
31d0: 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d   return result;.
31e0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
31f0: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
3200: 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f  ////////////////
3230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3250: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
3260: 67 69 6f 6e 20 49 53 51 4c 69 74 65 4e 61 74 69  gion ISQLiteNati
3270: 76 65 48 61 6e 64 6c 65 20 4d 65 6d 62 65 72 73  veHandle Members
3280: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
3290: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
32a0: 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 74 68 65   /// Returns the
32b0: 20 75 6e 64 65 72 6c 79 69 6e 67 20 53 51 4c 69   underlying SQLi
32c0: 74 65 20 6e 61 74 69 76 65 20 68 61 6e 64 6c 65  te native handle
32d0: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
32e0: 20 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20 2f   this..        /
32f0: 2f 2f 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  // object instan
3300: 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ce...        ///
3310: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
3320: 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50       public IntP
3330: 74 72 20 4e 61 74 69 76 65 48 61 6e 64 6c 65 0d  tr NativeHandle.
3340: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
3350: 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65          get { re
3360: 74 75 72 6e 20 70 56 61 6c 75 65 3b 20 7d 0d 0a  turn pValue; }..
3370: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
3380: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
3390: 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33e0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
33f0: 69 6f 6e 20 50 75 62 6c 69 63 20 50 72 6f 70 65  ion Public Prope
3400: 72 74 69 65 73 0d 0a 20 20 20 20 20 20 20 20 70  rties..        p
3410: 72 69 76 61 74 65 20 62 6f 6f 6c 20 70 65 72 73  rivate bool pers
3420: 69 73 74 65 64 3b 0d 0a 20 20 20 20 20 20 20 20  isted;..        
3430: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
3440: 20 20 20 20 20 20 20 2f 2f 2f 20 52 65 74 75 72         /// Retur
3450: 6e 73 20 6e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74  ns non-zero if t
3460: 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
3470: 20 76 61 6c 75 65 20 68 61 73 20 62 65 65 6e 20   value has been 
3480: 73 75 63 63 65 73 73 66 75 6c 6c 79 0d 0a 20 20  successfully..  
3490: 20 20 20 20 20 20 2f 2f 2f 20 70 65 72 73 69 73        /// persis
34a0: 74 65 64 20 61 73 20 61 20 6d 61 6e 61 67 65 64  ted as a managed
34b0: 20 76 61 6c 75 65 20 77 69 74 68 69 6e 20 74 68   value within th
34c0: 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  is object instan
34d0: 63 65 20 28 69 2e 65 2e 20 74 68 65 0d 0a 20 20  ce (i.e. the..  
34e0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
34f0: 72 65 66 3d 22 56 61 6c 75 65 22 20 2f 3e 20 70  ref="Value" /> p
3500: 72 6f 70 65 72 74 79 20 6d 61 79 20 74 68 65 6e  roperty may then
3510: 20 62 65 20 72 65 61 64 20 73 75 63 63 65 73 73   be read success
3520: 66 75 6c 6c 79 29 2e 0d 0a 20 20 20 20 20 20 20  fully)...       
3530: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
3540: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
3550: 62 6f 6f 6c 20 50 65 72 73 69 73 74 65 64 0d 0a  bool Persisted..
3560: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
3570: 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
3580: 75 72 6e 20 70 65 72 73 69 73 74 65 64 3b 20 7d  urn persisted; }
3590: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
35a0: 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
35f0: 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
3600: 65 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 3b 0d  e object value;.
3610: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
3620: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
3630: 2f 2f 2f 20 49 66 20 74 68 65 20 6d 61 6e 61 67  /// If the manag
3640: 65 64 20 76 61 6c 75 65 20 66 6f 72 20 74 68 69  ed value for thi
3650: 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  s object instanc
3660: 65 20 69 73 20 61 76 61 69 6c 61 62 6c 65 20 28  e is available (
3670: 69 2e 65 2e 20 69 74 0d 0a 20 20 20 20 20 20 20  i.e. it..       
3680: 20 2f 2f 2f 20 68 61 73 20 62 65 65 6e 20 70 72   /// has been pr
3690: 65 76 69 6f 75 73 6c 79 20 70 65 72 73 69 73 74  eviously persist
36a0: 65 64 20 76 69 61 20 74 68 65 20 3c 73 65 65 20  ed via the <see 
36b0: 63 72 65 66 3d 22 50 65 72 73 69 73 74 22 20 2f  cref="Persist" /
36c0: 3e 29 20 6d 65 74 68 6f 64 2c 0d 0a 20 20 20 20  >) method,..    
36d0: 20 20 20 20 2f 2f 2f 20 74 68 61 74 20 76 61 6c      /// that val
36e0: 75 65 20 69 73 20 72 65 74 75 72 6e 65 64 3b 20  ue is returned; 
36f0: 6f 74 68 65 72 77 69 73 65 2c 20 61 6e 20 65 78  otherwise, an ex
3700: 63 65 70 74 69 6f 6e 20 69 73 20 74 68 72 6f 77  ception is throw
3710: 6e 2e 20 20 54 68 65 0d 0a 20 20 20 20 20 20 20  n.  The..       
3720: 20 2f 2f 2f 20 72 65 74 75 72 6e 65 64 20 76 61   /// returned va
3730: 6c 75 65 20 6d 61 79 20 62 65 20 6e 75 6c 6c 2e  lue may be null.
3740: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
3750: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
3760: 20 20 70 75 62 6c 69 63 20 6f 62 6a 65 63 74 20    public object 
3770: 56 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 7b  Value..        {
3780: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
3790: 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  t..            {
37a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
37b0: 20 20 69 66 20 28 21 70 65 72 73 69 73 74 65 64    if (!persisted
37c0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
37d0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
37e0: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
37f0: 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72 61  new InvalidOpera
3800: 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 0d 0a  tionException(..
3810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3820: 20 20 20 20 20 20 20 20 22 76 61 6c 75 65 20 77          "value w
3830: 61 73 20 6e 6f 74 20 70 65 72 73 69 73 74 65 64  as not persisted
3840: 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ");..           
3850: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
3860: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
3870: 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20   value;..       
3880: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
3890: 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
38a0: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
38b0: 20 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: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38f0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
3900: 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c      #region Publ
3910: 69 63 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20  ic Methods..    
3920: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
3930: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 47  >..        /// G
3940: 65 74 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20  ets and returns 
3950: 74 68 65 20 74 79 70 65 20 61 66 66 69 6e 69 74  the type affinit
3960: 79 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  y associated wit
3970: 68 20 74 68 69 73 20 76 61 6c 75 65 2e 0d 0a 20  h this value... 
3980: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
3990: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
39a0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
39b0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 74 79        /// The ty
39c0: 70 65 20 61 66 66 69 6e 69 74 79 20 61 73 73 6f  pe affinity asso
39d0: 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73  ciated with this
39e0: 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20   value...       
39f0: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
3a00: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
3a10: 54 79 70 65 41 66 66 69 6e 69 74 79 20 47 65 74  TypeAffinity Get
3a20: 54 79 70 65 41 66 66 69 6e 69 74 79 28 29 0d 0a  TypeAffinity()..
3a30: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
3a40: 20 20 20 20 20 20 20 69 66 20 28 70 56 61 6c 75         if (pValu
3a50: 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e == IntPtr.Zero
3a60: 29 20 72 65 74 75 72 6e 20 54 79 70 65 41 66 66  ) return TypeAff
3a70: 69 6e 69 74 79 2e 4e 6f 6e 65 3b 0d 0a 20 20 20  inity.None;..   
3a80: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
3a90: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
3aa0: 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76 61 6c 75  ods.sqlite3_valu
3ab0: 65 5f 74 79 70 65 28 70 56 61 6c 75 65 29 3b 0d  e_type(pValue);.
3ac0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
3ad0: 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
3b20: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
3b30: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
3b40: 2f 2f 2f 20 47 65 74 73 20 61 6e 64 20 72 65 74  /// Gets and ret
3b50: 75 72 6e 73 20 74 68 65 20 6e 75 6d 62 65 72 20  urns the number 
3b60: 6f 66 20 62 79 74 65 73 20 61 73 73 6f 63 69 61  of bytes associa
3b70: 74 65 64 20 77 69 74 68 20 74 68 69 73 20 76 61  ted with this va
3b80: 6c 75 65 2c 20 69 66 0d 0a 20 20 20 20 20 20 20  lue, if..       
3b90: 20 2f 2f 2f 20 69 74 20 72 65 66 65 72 73 20 74   /// it refers t
3ba0: 6f 20 61 20 55 54 46 2d 38 20 65 6e 63 6f 64 65  o a UTF-8 encode
3bb0: 64 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 20  d string...     
3bc0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
3bd0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
3be0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
3bf0: 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72    /// The number
3c00: 20 6f 66 20 62 79 74 65 73 20 61 73 73 6f 63 69   of bytes associ
3c10: 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20 76  ated with this v
3c20: 61 6c 75 65 2e 20 20 54 68 65 20 72 65 74 75 72  alue.  The retur
3c30: 6e 65 64 20 76 61 6c 75 65 0d 0a 20 20 20 20 20  ned value..     
3c40: 20 20 20 2f 2f 2f 20 6d 61 79 20 62 65 20 7a 65     /// may be ze
3c50: 72 6f 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ro...        ///
3c60: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
3c70: 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
3c80: 47 65 74 42 79 74 65 73 28 29 0d 0a 20 20 20 20  GetBytes()..    
3c90: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
3ca0: 20 20 20 69 66 20 28 70 56 61 6c 75 65 20 3d 3d     if (pValue ==
3cb0: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20 72 65   IntPtr.Zero) re
3cc0: 74 75 72 6e 20 30 3b 0d 0a 20 20 20 20 20 20 20  turn 0;..       
3cd0: 20 20 20 20 20 72 65 74 75 72 6e 20 55 6e 73 61       return Unsa
3ce0: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
3cf0: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 79  sqlite3_value_by
3d00: 74 65 73 28 70 56 61 6c 75 65 29 3b 0d 0a 20 20  tes(pValue);..  
3d10: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
3d20: 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
3d70: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
3d80: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
3d90: 20 47 65 74 73 20 61 6e 64 20 72 65 74 75 72 6e   Gets and return
3da0: 73 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  s the <see cref=
3db0: 22 49 6e 74 33 32 22 20 2f 3e 20 61 73 73 6f 63  "Int32" /> assoc
3dc0: 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73 0d  iated with this.
3dd0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c  .        /// val
3de0: 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ue...        ///
3df0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
3e00: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
3e10: 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
3e20: 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  The <see cref="I
3e30: 6e 74 33 32 22 20 2f 3e 20 61 73 73 6f 63 69 61  nt32" /> associa
3e40: 74 65 64 20 77 69 74 68 20 74 68 69 73 20 76 61  ted with this va
3e50: 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  lue...        //
3e60: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
3e70: 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
3e80: 20 47 65 74 49 6e 74 28 29 0d 0a 20 20 20 20 20   GetInt()..     
3e90: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
3ea0: 20 20 69 66 20 28 70 56 61 6c 75 65 20 3d 3d 20    if (pValue == 
3eb0: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20 72 65 74  IntPtr.Zero) ret
3ec0: 75 72 6e 20 64 65 66 61 75 6c 74 28 69 6e 74 29  urn default(int)
3ed0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ;..            r
3ee0: 65 74 75 72 6e 20 55 6e 73 61 66 65 4e 61 74 69  eturn UnsafeNati
3ef0: 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
3f00: 33 5f 76 61 6c 75 65 5f 69 6e 74 28 70 56 61 6c  3_value_int(pVal
3f10: 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ue);..        }.
3f20: 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f  ////////////////
3f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3f70: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
3f80: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
3f90: 20 20 20 20 20 2f 2f 2f 20 47 65 74 73 20 61 6e       /// Gets an
3fa0: 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 3c 73  d returns the <s
3fb0: 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20  ee cref="Int64" 
3fc0: 2f 3e 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  /> associated wi
3fd0: 74 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  th..        /// 
3fe0: 74 68 69 73 20 76 61 6c 75 65 2e 0d 0a 20 20 20  this value...   
3ff0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
4000: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
4010: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
4020: 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
4030: 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e   cref="Int64" />
4040: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
4050: 20 74 68 69 73 20 76 61 6c 75 65 2e 0d 0a 20 20   this value...  
4060: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
4070: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  rns>..        pu
4080: 62 6c 69 63 20 6c 6f 6e 67 20 47 65 74 49 6e 74  blic long GetInt
4090: 36 34 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  64()..        {.
40a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
40b0: 28 70 56 61 6c 75 65 20 3d 3d 20 49 6e 74 50 74  (pValue == IntPt
40c0: 72 2e 5a 65 72 6f 29 20 72 65 74 75 72 6e 20 64  r.Zero) return d
40d0: 65 66 61 75 6c 74 28 6c 6f 6e 67 29 3b 0d 0a 0d  efault(long);...
40e0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
40f0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
4100: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
4110: 75 72 6e 20 55 6e 73 61 66 65 4e 61 74 69 76 65  urn UnsafeNative
4120: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
4130: 76 61 6c 75 65 5f 69 6e 74 36 34 28 70 56 61 6c  value_int64(pVal
4140: 75 65 29 3b 0d 0a 23 65 6c 69 66 20 21 53 51 4c  ue);..#elif !SQL
4150: 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20  ITE_STANDARD..  
4160: 20 20 20 20 20 20 20 20 20 20 6c 6f 6e 67 20 76            long v
4170: 61 6c 75 65 20 3d 20 30 3b 0d 0a 20 20 20 20 20  alue = 0;..     
4180: 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74         UnsafeNat
4190: 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
41a0: 65 33 5f 76 61 6c 75 65 5f 69 6e 74 36 34 5f 69  e3_value_int64_i
41b0: 6e 74 65 72 6f 70 28 70 56 61 6c 75 65 2c 20 72  nterop(pValue, r
41c0: 65 66 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20  ef value);..    
41d0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76          return v
41e0: 61 6c 75 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  alue;..#else..  
41f0: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
4200: 6e 65 77 20 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74  new NotImplement
4210: 65 64 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a  edException();..
4220: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
4230: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4280: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
4290: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
42a0: 20 20 20 20 20 20 20 2f 2f 2f 20 47 65 74 73 20         /// Gets 
42b0: 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
42c0: 3c 73 65 65 20 63 72 65 66 3d 22 44 6f 75 62 6c  <see cref="Doubl
42d0: 65 22 20 2f 3e 20 61 73 73 6f 63 69 61 74 65 64  e" /> associated
42e0: 20 77 69 74 68 20 74 68 69 73 0d 0a 20 20 20 20   with this..    
42f0: 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a      /// value...
4300: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
4310: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
4320: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
4330: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
4340: 73 65 65 20 63 72 65 66 3d 22 44 6f 75 62 6c 65  see cref="Double
4350: 22 20 2f 3e 20 61 73 73 6f 63 69 61 74 65 64 20  " /> associated 
4360: 77 69 74 68 20 74 68 69 73 20 76 61 6c 75 65 2e  with this value.
4370: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
4380: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
4390: 20 20 70 75 62 6c 69 63 20 64 6f 75 62 6c 65 20    public double 
43a0: 47 65 74 44 6f 75 62 6c 65 28 29 0d 0a 20 20 20  GetDouble()..   
43b0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
43c0: 20 20 20 20 69 66 20 28 70 56 61 6c 75 65 20 3d      if (pValue =
43d0: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20 72  = IntPtr.Zero) r
43e0: 65 74 75 72 6e 20 64 65 66 61 75 6c 74 28 64 6f  eturn default(do
43f0: 75 62 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  uble);....#if !P
4400: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
4410: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
4420: 20 20 20 20 20 20 72 65 74 75 72 6e 20 55 6e 73        return Uns
4430: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
4440: 2e 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64  .sqlite3_value_d
4450: 6f 75 62 6c 65 28 70 56 61 6c 75 65 29 3b 0d 0a  ouble(pValue);..
4460: 23 65 6c 69 66 20 21 53 51 4c 49 54 45 5f 53 54  #elif !SQLITE_ST
4470: 41 4e 44 41 52 44 0d 0a 20 20 20 20 20 20 20 20  ANDARD..        
4480: 20 20 20 20 64 6f 75 62 6c 65 20 76 61 6c 75 65      double value
4490: 20 3d 20 30 2e 30 3b 0d 0a 20 20 20 20 20 20 20   = 0.0;..       
44a0: 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
44b0: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
44c0: 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65 5f 69 6e  _value_double_in
44d0: 74 65 72 6f 70 28 70 56 61 6c 75 65 2c 20 72 65  terop(pValue, re
44e0: 66 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20  f value);..     
44f0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61         return va
4500: 6c 75 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  lue;..#else..   
4510: 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e           throw n
4520: 65 77 20 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74 65  ew NotImplemente
4530: 64 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 23  dException();..#
4540: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d  endif..        }
4550: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
4560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
45a0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
45b0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
45c0: 20 20 20 20 20 20 2f 2f 2f 20 47 65 74 73 20 61        /// Gets a
45d0: 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 3c  nd returns the <
45e0: 73 65 65 20 63 72 65 66 3d 22 53 74 72 69 6e 67  see cref="String
45f0: 22 20 2f 3e 20 61 73 73 6f 63 69 61 74 65 64 20  " /> associated 
4600: 77 69 74 68 20 74 68 69 73 0d 0a 20 20 20 20 20  with this..     
4610: 20 20 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20     /// value... 
4620: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
4630: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
4640: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
4650: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
4660: 65 65 20 63 72 65 66 3d 22 53 74 72 69 6e 67 22  ee cref="String"
4670: 20 2f 3e 20 61 73 73 6f 63 69 61 74 65 64 20 77   /> associated w
4680: 69 74 68 20 74 68 69 73 20 76 61 6c 75 65 2e 20  ith this value. 
4690: 20 54 68 65 20 76 61 6c 75 65 20 69 73 0d 0a 20   The value is.. 
46a0: 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 76 65         /// conve
46b0: 72 74 65 64 20 66 72 6f 6d 20 74 68 65 20 55 54  rted from the UT
46c0: 46 2d 38 20 65 6e 63 6f 64 69 6e 67 20 70 72 69  F-8 encoding pri
46d0: 6f 72 20 74 6f 20 62 65 69 6e 67 20 72 65 74 75  or to being retu
46e0: 72 6e 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  rned...        /
46f0: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
4700: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
4710: 72 69 6e 67 20 47 65 74 53 74 72 69 6e 67 28 29  ring GetString()
4720: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
4730: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 56 61           if (pVa
4740: 6c 75 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  lue == IntPtr.Ze
4750: 72 6f 29 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b  ro) return null;
4760: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
4770: 69 6e 74 20 6c 65 6e 67 74 68 3b 0d 0a 20 20 20  int length;..   
4780: 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
4790: 70 53 74 72 69 6e 67 3b 0d 0a 0d 0a 23 69 66 20  pString;....#if 
47a0: 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
47b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 6e  .            len
47c0: 67 74 68 20 3d 20 55 6e 73 61 66 65 4e 61 74 69  gth = UnsafeNati
47d0: 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
47e0: 33 5f 76 61 6c 75 65 5f 62 79 74 65 73 28 70 56  3_value_bytes(pV
47f0: 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  alue);..        
4800: 20 20 20 20 70 53 74 72 69 6e 67 20 3d 20 55 6e      pString = Un
4810: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
4820: 73 2e 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  s.sqlite3_value_
4830: 74 65 78 74 28 70 56 61 6c 75 65 29 3b 0d 0a 23  text(pValue);..#
4840: 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
4850: 20 20 6c 65 6e 67 74 68 20 3d 20 30 3b 0d 0a 0d    length = 0;...
4860: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 53 74  .            pSt
4870: 72 69 6e 67 20 3d 20 55 6e 73 61 66 65 4e 61 74  ring = UnsafeNat
4880: 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
4890: 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 5f 69 6e  e3_value_text_in
48a0: 74 65 72 6f 70 28 0d 0a 20 20 20 20 20 20 20 20  terop(..        
48b0: 20 20 20 20 20 20 20 20 70 56 61 6c 75 65 2c 20          pValue, 
48c0: 72 65 66 20 6c 65 6e 67 74 68 29 3b 0d 0a 23 65  ref length);..#e
48d0: 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
48e0: 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74      return SQLit
48f0: 65 53 74 72 69 6e 67 2e 53 74 72 69 6e 67 46 72  eString.StringFr
4900: 6f 6d 55 74 66 38 49 6e 74 50 74 72 28 70 53 74  omUtf8IntPtr(pSt
4910: 72 69 6e 67 2c 20 6c 65 6e 67 74 68 29 3b 0d 0a  ring, length);..
4920: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
4930: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
4940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
4980: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
4990: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
49a0: 2f 2f 20 47 65 74 73 20 61 6e 64 20 72 65 74 75  // Gets and retu
49b0: 72 6e 73 20 74 68 65 20 3c 73 65 65 20 63 72 65  rns the <see cre
49c0: 66 3d 22 42 79 74 65 22 20 2f 3e 20 61 72 72 61  f="Byte" /> arra
49d0: 79 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  y associated wit
49e0: 68 20 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20  h this..        
49f0: 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20  /// value...    
4a00: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
4a10: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
4a20: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
4a30: 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
4a40: 63 72 65 66 3d 22 42 79 74 65 22 20 2f 3e 20 61  cref="Byte" /> a
4a50: 72 72 61 79 20 61 73 73 6f 63 69 61 74 65 64 20  rray associated 
4a60: 77 69 74 68 20 74 68 69 73 20 76 61 6c 75 65 2e  with this value.
4a70: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
4a80: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
4a90: 20 20 70 75 62 6c 69 63 20 62 79 74 65 5b 5d 20    public byte[] 
4aa0: 47 65 74 42 6c 6f 62 28 29 0d 0a 20 20 20 20 20  GetBlob()..     
4ab0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
4ac0: 20 20 69 66 20 28 70 56 61 6c 75 65 20 3d 3d 20    if (pValue == 
4ad0: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20 72 65 74  IntPtr.Zero) ret
4ae0: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  urn null;....   
4af0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
4b00: 53 51 4c 69 74 65 42 79 74 65 73 2e 46 72 6f 6d  SQLiteBytes.From
4b10: 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20  IntPtr(..       
4b20: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
4b30: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
4b40: 69 74 65 33 5f 76 61 6c 75 65 5f 62 6c 6f 62 28  ite3_value_blob(
4b50: 70 56 61 6c 75 65 29 2c 20 47 65 74 42 79 74 65  pValue), GetByte
4b60: 73 28 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  s());..        }
4b70: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
4b80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4bc0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
4bd0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
4be0: 20 20 20 20 20 20 2f 2f 2f 20 55 73 65 73 20 74        /// Uses t
4bf0: 68 65 20 6e 61 74 69 76 65 20 76 61 6c 75 65 20  he native value 
4c00: 68 61 6e 64 6c 65 20 74 6f 20 6f 62 74 61 69 6e  handle to obtain
4c10: 20 61 6e 64 20 73 74 6f 72 65 20 74 68 65 20 6d   and store the m
4c20: 61 6e 61 67 65 64 20 76 61 6c 75 65 0d 0a 20 20  anaged value..  
4c30: 20 20 20 20 20 20 2f 2f 2f 20 66 6f 72 20 74 68        /// for th
4c40: 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  is object instan
4c50: 63 65 2c 20 74 68 75 73 20 73 61 76 69 6e 67 20  ce, thus saving 
4c60: 69 74 20 66 6f 72 20 6c 61 74 65 72 20 75 73 65  it for later use
4c70: 2e 20 20 54 68 65 20 74 79 70 65 0d 0a 20 20 20  .  The type..   
4c80: 20 20 20 20 20 2f 2f 2f 20 6f 66 20 74 68 65 20       /// of the 
4c90: 6d 61 6e 61 67 65 64 20 76 61 6c 75 65 20 69 73  managed value is
4ca0: 20 64 65 74 65 72 6d 69 6e 65 64 20 62 79 20 74   determined by t
4cb0: 68 65 20 74 79 70 65 20 61 66 66 69 6e 69 74 79  he type affinity
4cc0: 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20 20 20   of the..       
4cd0: 20 2f 2f 2f 20 6e 61 74 69 76 65 20 76 61 6c 75   /// native valu
4ce0: 65 2e 20 20 49 66 20 74 68 65 20 74 79 70 65 20  e.  If the type 
4cf0: 61 66 66 69 6e 69 74 79 20 69 73 20 6e 6f 74 20  affinity is not 
4d00: 72 65 63 6f 67 6e 69 7a 65 64 20 62 79 20 74 68  recognized by th
4d10: 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  is..        /// 
4d20: 6d 65 74 68 6f 64 2c 20 6e 6f 20 77 6f 72 6b 20  method, no work 
4d30: 69 73 20 64 6f 6e 65 20 61 6e 64 20 66 61 6c 73  is done and fals
4d40: 65 20 69 73 20 72 65 74 75 72 6e 65 64 2e 0d 0a  e is returned...
4d50: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
4d60: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
4d70: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
4d80: 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a         /// Non-z
4d90: 65 72 6f 20 69 66 20 74 68 65 20 6e 61 74 69 76  ero if the nativ
4da0: 65 20 76 61 6c 75 65 20 77 61 73 20 70 65 72 73  e value was pers
4db0: 69 73 74 65 64 20 73 75 63 63 65 73 73 66 75 6c  isted successful
4dc0: 6c 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ly...        ///
4dd0: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
4de0: 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c       public bool
4df0: 20 50 65 72 73 69 73 74 28 29 0d 0a 20 20 20 20   Persist()..    
4e00: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
4e10: 20 20 20 73 77 69 74 63 68 20 28 47 65 74 54 79     switch (GetTy
4e20: 70 65 41 66 66 69 6e 69 74 79 28 29 29 0d 0a 20  peAffinity()).. 
4e30: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
4e40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
4e50: 73 65 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e  se TypeAffinity.
4e60: 55 6e 69 6e 69 74 69 61 6c 69 7a 65 64 3a 0d 0a  Uninitialized:..
4e70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4e80: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
4e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76                 v
4ea0: 61 6c 75 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20  alue = null;..  
4eb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4ec0: 20 20 20 20 20 20 50 72 65 76 65 6e 74 4e 61 74        PreventNat
4ed0: 69 76 65 41 63 63 65 73 73 28 29 3b 0d 0a 20 20  iveAccess();..  
4ee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4ef0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 70 65        return (pe
4f00: 72 73 69 73 74 65 64 20 3d 20 74 72 75 65 29 3b  rsisted = true);
4f10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4f20: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
4f30: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 54 79           case Ty
4f40: 70 65 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34  peAffinity.Int64
4f50: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
4f60: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
4f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4f80: 20 20 76 61 6c 75 65 20 3d 20 47 65 74 49 6e 74    value = GetInt
4f90: 36 34 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  64();..         
4fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 50                 P
4fb0: 72 65 76 65 6e 74 4e 61 74 69 76 65 41 63 63 65  reventNativeAcce
4fc0: 73 73 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ss();..         
4fd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
4fe0: 65 74 75 72 6e 20 28 70 65 72 73 69 73 74 65 64  eturn (persisted
4ff0: 20 3d 20 74 72 75 65 29 3b 0d 0a 20 20 20 20 20   = true);..     
5000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
5010: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5020: 20 20 63 61 73 65 20 54 79 70 65 41 66 66 69 6e    case TypeAffin
5030: 69 74 79 2e 44 6f 75 62 6c 65 3a 0d 0a 20 20 20  ity.Double:..   
5040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5050: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
5060: 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75              valu
5070: 65 20 3d 20 47 65 74 44 6f 75 62 6c 65 28 29 3b  e = GetDouble();
5080: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5090: 20 20 20 20 20 20 20 20 20 20 50 72 65 76 65 6e            Preven
50a0: 74 4e 61 74 69 76 65 41 63 63 65 73 73 28 29 3b  tNativeAccess();
50b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
50c0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
50d0: 20 28 70 65 72 73 69 73 74 65 64 20 3d 20 74 72   (persisted = tr
50e0: 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ue);..          
50f0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
5100: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73               cas
5110: 65 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 54  e TypeAffinity.T
5120: 65 78 74 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  ext:..          
5130: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
5140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5150: 20 20 20 20 20 76 61 6c 75 65 20 3d 20 47 65 74       value = Get
5160: 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20  String();..     
5170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5180: 20 20 20 50 72 65 76 65 6e 74 4e 61 74 69 76 65     PreventNative
5190: 41 63 63 65 73 73 28 29 3b 0d 0a 20 20 20 20 20  Access();..     
51a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
51b0: 20 20 20 72 65 74 75 72 6e 20 28 70 65 72 73 69     return (persi
51c0: 73 74 65 64 20 3d 20 74 72 75 65 29 3b 0d 0a 20  sted = true);.. 
51d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
51e0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
51f0: 20 20 20 20 20 20 63 61 73 65 20 54 79 70 65 41        case TypeA
5200: 66 66 69 6e 69 74 79 2e 42 6c 6f 62 3a 0d 0a 20  ffinity.Blob:.. 
5210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5220: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
5230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61                va
5240: 6c 75 65 20 3d 20 47 65 74 42 79 74 65 73 28 29  lue = GetBytes()
5250: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
5260: 20 20 20 20 20 20 20 20 20 20 20 50 72 65 76 65             Preve
5270: 6e 74 4e 61 74 69 76 65 41 63 63 65 73 73 28 29  ntNativeAccess()
5280: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
5290: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
52a0: 6e 20 28 70 65 72 73 69 73 74 65 64 20 3d 20 74  n (persisted = t
52b0: 72 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  rue);..         
52c0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
52d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
52e0: 73 65 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e  se TypeAffinity.
52f0: 4e 75 6c 6c 3a 0d 0a 20 20 20 20 20 20 20 20 20  Null:..         
5300: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
5310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5320: 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 44 42        value = DB
5330: 4e 75 6c 6c 2e 56 61 6c 75 65 3b 0d 0a 20 20 20  Null.Value;..   
5340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5350: 20 20 20 20 20 50 72 65 76 65 6e 74 4e 61 74 69       PreventNati
5360: 76 65 41 63 63 65 73 73 28 29 3b 0d 0a 20 20 20  veAccess();..   
5370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5380: 20 20 20 20 20 72 65 74 75 72 6e 20 28 70 65 72       return (per
5390: 73 69 73 74 65 64 20 3d 20 74 72 75 65 29 3b 0d  sisted = true);.
53a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
53b0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
53c0: 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a          default:
53d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
53e0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
53f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5400: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
5410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5420: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
5430: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
5440: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
5450: 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20  ion..    }..    
5460: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
5470: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
5480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
54c0: 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c  .    #region SQL
54d0: 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69  iteIndexConstrai
54e0: 6e 74 4f 70 20 45 6e 75 6d 65 72 61 74 69 6f 6e  ntOp Enumeration
54f0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
5500: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ry>..    /// The
5510: 73 65 20 61 72 65 20 74 68 65 20 61 6c 6c 6f 77  se are the allow
5520: 65 64 20 76 61 6c 75 65 73 20 66 6f 72 20 74 68  ed values for th
5530: 65 20 6f 70 65 72 61 74 6f 72 73 20 74 68 61 74  e operators that
5540: 20 61 72 65 20 70 61 72 74 20 6f 66 20 61 0d 0a   are part of a..
5550: 20 20 20 20 2f 2f 2f 20 63 6f 6e 73 74 72 61 69      /// constrai
5560: 6e 74 20 74 65 72 6d 20 69 6e 20 74 68 65 20 57  nt term in the W
5570: 48 45 52 45 20 63 6c 61 75 73 65 20 6f 66 20 61  HERE clause of a
5580: 20 71 75 65 72 79 20 74 68 61 74 20 75 73 65 73   query that uses
5590: 20 61 20 76 69 72 74 75 61 6c 0d 0a 20 20 20 20   a virtual..    
55a0: 2f 2f 2f 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  /// table...    
55b0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
55c0: 20 20 20 20 70 75 62 6c 69 63 20 65 6e 75 6d 20      public enum 
55d0: 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74  SQLiteIndexConst
55e0: 72 61 69 6e 74 4f 70 20 3a 20 62 79 74 65 0d 0a  raintOp : byte..
55f0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f      {..        /
5600: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
5610: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 76        /// This v
5620: 61 6c 75 65 20 72 65 70 72 65 73 65 6e 74 73 20  alue represents 
5630: 74 68 65 20 65 71 75 61 6c 69 74 79 20 6f 70 65  the equality ope
5640: 72 61 74 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20  rator...        
5650: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
5660: 20 20 20 20 20 20 20 20 45 71 75 61 6c 54 6f 20          EqualTo 
5670: 3d 20 32 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20  = 2,....        
5680: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
5690: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
56a0: 76 61 6c 75 65 20 72 65 70 72 65 73 65 6e 74 73  value represents
56b0: 20 74 68 65 20 67 72 65 61 74 65 72 20 74 68 61   the greater tha
56c0: 6e 20 6f 70 65 72 61 74 6f 72 2e 0d 0a 20 20 20  n operator...   
56d0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
56e0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 47 72 65  ry>..        Gre
56f0: 61 74 65 72 54 68 61 6e 20 3d 20 34 2c 0d 0a 0d  aterThan = 4,...
5700: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
5710: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
5720: 2f 2f 2f 20 54 68 69 73 20 76 61 6c 75 65 20 72  /// This value r
5730: 65 70 72 65 73 65 6e 74 73 20 74 68 65 20 6c 65  epresents the le
5740: 73 73 20 74 68 61 6e 20 6f 72 20 65 71 75 61 6c  ss than or equal
5750: 20 74 6f 20 6f 70 65 72 61 74 6f 72 2e 0d 0a 20   to operator... 
5760: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
5770: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 4c  mary>..        L
5780: 65 73 73 54 68 61 6e 4f 72 45 71 75 61 6c 54 6f  essThanOrEqualTo
5790: 20 3d 20 38 2c 0d 0a 0d 0a 20 20 20 20 20 20 20   = 8,....       
57a0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
57b0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
57c0: 20 76 61 6c 75 65 20 72 65 70 72 65 73 65 6e 74   value represent
57d0: 73 20 74 68 65 20 6c 65 73 73 20 74 68 61 6e 20  s the less than 
57e0: 6f 70 65 72 61 74 6f 72 2e 0d 0a 20 20 20 20 20  operator...     
57f0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
5800: 3e 0d 0a 20 20 20 20 20 20 20 20 4c 65 73 73 54  >..        LessT
5810: 68 61 6e 20 3d 20 31 36 2c 0d 0a 0d 0a 20 20 20  han = 16,....   
5820: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
5830: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
5840: 54 68 69 73 20 76 61 6c 75 65 20 72 65 70 72 65  This value repre
5850: 73 65 6e 74 73 20 74 68 65 20 67 72 65 61 74 65  sents the greate
5860: 72 20 74 68 61 6e 20 6f 72 20 65 71 75 61 6c 20  r than or equal 
5870: 74 6f 20 6f 70 65 72 61 74 6f 72 2e 0d 0a 20 20  to operator...  
5880: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
5890: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 47 72  ary>..        Gr
58a0: 65 61 74 65 72 54 68 61 6e 4f 72 45 71 75 61 6c  eaterThanOrEqual
58b0: 54 6f 20 3d 20 33 32 2c 0d 0a 0d 0a 20 20 20 20  To = 32,....    
58c0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
58d0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
58e0: 68 69 73 20 76 61 6c 75 65 20 72 65 70 72 65 73  his value repres
58f0: 65 6e 74 73 20 74 68 65 20 4d 41 54 43 48 20 6f  ents the MATCH o
5900: 70 65 72 61 74 6f 72 2e 0d 0a 20 20 20 20 20 20  perator...      
5910: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
5920: 0d 0a 20 20 20 20 20 20 20 20 4d 61 74 63 68 20  ..        Match 
5930: 3d 20 36 34 0d 0a 20 20 20 20 7d 0d 0a 20 20 20  = 64..    }..   
5940: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
5950: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
5960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
59a0: 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51  ..    #region SQ
59b0: 4c 69 74 65 49 6e 64 65 78 46 6c 61 67 73 20 45  LiteIndexFlags E
59c0: 6e 75 6d 65 72 61 74 69 6f 6e 0d 0a 20 20 20 20  numeration..    
59d0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
59e0: 20 20 20 2f 2f 2f 20 54 68 65 73 65 20 61 72 65     /// These are
59f0: 20 74 68 65 20 61 6c 6c 6f 77 65 64 20 76 61 6c   the allowed val
5a00: 75 65 73 20 66 6f 72 20 74 68 65 20 69 6e 64 65  ues for the inde
5a10: 78 20 66 6c 61 67 73 20 66 72 6f 6d 20 74 68 65  x flags from the
5a20: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63  ..    /// <see c
5a30: 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61  ref="ISQLiteMana
5a40: 67 65 64 4d 6f 64 75 6c 65 2e 42 65 73 74 49 6e  gedModule.BestIn
5a50: 64 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  dex" /> method..
5a60: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
5a70: 72 79 3e 0d 0a 20 20 20 20 5b 46 6c 61 67 73 28  ry>..    [Flags(
5a80: 29 5d 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 65  )]..    public e
5a90: 6e 75 6d 20 53 51 4c 69 74 65 49 6e 64 65 78 46  num SQLiteIndexF
5aa0: 6c 61 67 73 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  lags..    {..   
5ab0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
5ac0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
5ad0: 4e 6f 20 73 70 65 63 69 61 6c 20 68 61 6e 64 6c  No special handl
5ae0: 69 6e 67 2e 20 20 54 68 69 73 20 69 73 20 74 68  ing.  This is th
5af0: 65 20 64 65 66 61 75 6c 74 2e 0d 0a 20 20 20 20  e default...    
5b00: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
5b10: 79 3e 0d 0a 20 20 20 20 20 20 20 20 4e 6f 6e 65  y>..        None
5b20: 20 3d 20 30 78 30 2c 0d 0a 0d 0a 20 20 20 20 20   = 0x0,....     
5b30: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
5b40: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
5b50: 69 73 20 76 61 6c 75 65 20 69 6e 64 69 63 61 74  is value indicat
5b60: 65 73 20 74 68 61 74 20 74 68 65 20 73 63 61 6e  es that the scan
5b70: 20 6f 66 20 74 68 65 20 69 6e 64 65 78 20 77 69   of the index wi
5b80: 6c 6c 20 76 69 73 69 74 20 61 74 0d 0a 20 20 20  ll visit at..   
5b90: 20 20 20 20 20 2f 2f 2f 20 6d 6f 73 74 20 6f 6e       /// most on
5ba0: 65 20 72 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20  e row...        
5bb0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
5bc0: 20 20 20 20 20 20 20 20 53 63 61 6e 55 6e 69 71          ScanUniq
5bd0: 75 65 20 3d 20 30 78 31 0d 0a 20 20 20 20 7d 0d  ue = 0x1..    }.
5be0: 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
5bf0: 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
5c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5c10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5c20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5c40: 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
5c50: 6e 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e  n SQLiteIndexCon
5c60: 73 74 72 61 69 6e 74 20 48 65 6c 70 65 72 20 43  straint Helper C
5c70: 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  lass..    /// <s
5c80: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
5c90: 20 54 68 69 73 20 63 6c 61 73 73 20 72 65 70 72   This class repr
5ca0: 65 73 65 6e 74 73 20 74 68 65 20 6e 61 74 69 76  esents the nativ
5cb0: 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  e sqlite3_index_
5cc0: 63 6f 6e 73 74 72 61 69 6e 74 20 73 74 72 75 63  constraint struc
5cd0: 74 75 72 65 0d 0a 20 20 20 20 2f 2f 2f 20 66 72  ture..    /// fr
5ce0: 6f 6d 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  om the SQLite co
5cf0: 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  re library...   
5d00: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
5d10: 0a 20 20 20 20 70 75 62 6c 69 63 20 73 65 61 6c  .    public seal
5d20: 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 49  ed class SQLiteI
5d30: 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 0d 0a  ndexConstraint..
5d40: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23      {..        #
5d50: 72 65 67 69 6f 6e 20 49 6e 74 65 72 6e 61 6c 20  region Internal 
5d60: 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20  Constructors..  
5d70: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
5d80: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
5d90: 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69   Constructs an i
5da0: 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20  nstance of this 
5db0: 63 6c 61 73 73 20 75 73 69 6e 67 20 74 68 65 20  class using the 
5dc0: 73 70 65 63 69 66 69 65 64 20 6e 61 74 69 76 65  specified native
5dd0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71  ..        /// sq
5de0: 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73  lite3_index_cons
5df0: 74 72 61 69 6e 74 20 73 74 72 75 63 74 75 72 65  traint structure
5e00: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
5e10: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
5e20: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
5e30: 6d 65 3d 22 63 6f 6e 73 74 72 61 69 6e 74 22 3e  me="constraint">
5e40: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
5e50: 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33  e native sqlite3
5e60: 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e  _index_constrain
5e70: 74 20 73 74 72 75 63 74 75 72 65 20 74 6f 20 75  t structure to u
5e80: 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  se...        ///
5e90: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
5ea0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69     internal SQLi
5eb0: 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
5ec0: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
5ed0: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
5ee0: 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65  ods.sqlite3_inde
5ef0: 78 5f 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e  x_constraint con
5f00: 73 74 72 61 69 6e 74 0d 0a 20 20 20 20 20 20 20  straint..       
5f10: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
5f20: 20 20 20 20 3a 20 74 68 69 73 28 63 6f 6e 73 74      : this(const
5f30: 72 61 69 6e 74 2e 69 43 6f 6c 75 6d 6e 2c 20 63  raint.iColumn, c
5f40: 6f 6e 73 74 72 61 69 6e 74 2e 6f 70 2c 20 63 6f  onstraint.op, co
5f50: 6e 73 74 72 61 69 6e 74 2e 75 73 61 62 6c 65 2c  nstraint.usable,
5f60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5f70: 20 20 20 20 20 63 6f 6e 73 74 72 61 69 6e 74 2e       constraint.
5f80: 69 54 65 72 6d 4f 66 66 73 65 74 29 0d 0a 20 20  iTermOffset)..  
5f90: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
5fa0: 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
5fb0: 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ng...        }..
5fc0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
5fd0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6020: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
6030: 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
6040: 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20  Constructors..  
6050: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
6060: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
6070: 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69   Constructs an i
6080: 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20  nstance of this 
6090: 63 6c 61 73 73 20 75 73 69 6e 67 20 74 68 65 20  class using the 
60a0: 73 70 65 63 69 66 69 65 64 20 66 69 65 6c 64 0d  specified field.
60b0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c  .        /// val
60c0: 75 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ues...        //
60d0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
60e0: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
60f0: 20 6e 61 6d 65 3d 22 69 43 6f 6c 75 6d 6e 22 3e   name="iColumn">
6100: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f  ..        /// Co
6110: 6c 75 6d 6e 20 6f 6e 20 6c 65 66 74 2d 68 61 6e  lumn on left-han
6120: 64 20 73 69 64 65 20 6f 66 20 63 6f 6e 73 74 72  d side of constr
6130: 61 69 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f  aint...        /
6140: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
6150: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
6160: 6e 61 6d 65 3d 22 6f 70 22 3e 0d 0a 20 20 20 20  name="op">..    
6170: 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 61 69      /// Constrai
6180: 6e 74 20 6f 70 65 72 61 74 6f 72 20 28 3c 73 65  nt operator (<se
6190: 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e  e cref="SQLiteIn
61a0: 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 4f 70 22  dexConstraintOp"
61b0: 20 2f 3e 29 2e 0d 0a 20 20 20 20 20 20 20 20 2f   />)...        /
61c0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
61d0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
61e0: 6e 61 6d 65 3d 22 75 73 61 62 6c 65 22 3e 0d 0a  name="usable">..
61f0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 72 75 65          /// True
6200: 20 69 66 20 74 68 69 73 20 63 6f 6e 73 74 72 61   if this constra
6210: 69 6e 74 20 69 73 20 75 73 61 62 6c 65 2e 0d 0a  int is usable...
6220: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
6230: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
6240: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69  / <param name="i
6250: 54 65 72 6d 4f 66 66 73 65 74 22 3e 0d 0a 20 20  TermOffset">..  
6260: 20 20 20 20 20 20 2f 2f 2f 20 55 73 65 64 20 69        /// Used i
6270: 6e 74 65 72 6e 61 6c 6c 79 20 2d 20 3c 73 65 65  nternally - <see
6280: 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61   cref="ISQLiteMa
6290: 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 42 65 73 74  nagedModule.Best
62a0: 49 6e 64 65 78 22 20 2f 3e 0d 0a 20 20 20 20 20  Index" />..     
62b0: 20 20 20 2f 2f 2f 20 73 68 6f 75 6c 64 20 69 67     /// should ig
62c0: 6e 6f 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  nore...        /
62d0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
62e0: 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c       private SQL
62f0: 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69  iteIndexConstrai
6300: 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nt(..           
6310: 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 2c 0d 0a 20   int iColumn,.. 
6320: 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
6330: 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74  eIndexConstraint
6340: 4f 70 20 6f 70 2c 0d 0a 20 20 20 20 20 20 20 20  Op op,..        
6350: 20 20 20 20 62 79 74 65 20 75 73 61 62 6c 65 2c      byte usable,
6360: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
6370: 74 20 69 54 65 72 6d 4f 66 66 73 65 74 0d 0a 20  t iTermOffset.. 
6380: 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
6390: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
63a0: 20 20 20 20 20 74 68 69 73 2e 69 43 6f 6c 75 6d       this.iColum
63b0: 6e 20 3d 20 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20  n = iColumn;..  
63c0: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f            this.o
63d0: 70 20 3d 20 6f 70 3b 0d 0a 20 20 20 20 20 20 20  p = op;..       
63e0: 20 20 20 20 20 74 68 69 73 2e 75 73 61 62 6c 65       this.usable
63f0: 20 3d 20 75 73 61 62 6c 65 3b 0d 0a 20 20 20 20   = usable;..    
6400: 20 20 20 20 20 20 20 20 74 68 69 73 2e 69 54 65          this.iTe
6410: 72 6d 4f 66 66 73 65 74 20 3d 20 69 54 65 72 6d  rmOffset = iTerm
6420: 4f 66 66 73 65 74 3b 0d 0a 20 20 20 20 20 20 20  Offset;..       
6430: 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
6440: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
6450: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
6460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6490: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
64a0: 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c      #region Publ
64b0: 69 63 20 46 69 65 6c 64 73 0d 0a 20 20 20 20 20  ic Fields..     
64c0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
64d0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f  ..        /// Co
64e0: 6c 75 6d 6e 20 6f 6e 20 6c 65 66 74 2d 68 61 6e  lumn on left-han
64f0: 64 20 73 69 64 65 20 6f 66 20 63 6f 6e 73 74 72  d side of constr
6500: 61 69 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f  aint...        /
6510: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
6520: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
6530: 74 20 69 43 6f 6c 75 6d 6e 3b 0d 0a 0d 0a 20 20  t iColumn;....  
6540: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
6550: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
6590: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
65a0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
65b0: 2f 2f 20 43 6f 6e 73 74 72 61 69 6e 74 20 6f 70  // Constraint op
65c0: 65 72 61 74 6f 72 20 28 3c 73 65 65 20 63 72 65  erator (<see cre
65d0: 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 43 6f  f="SQLiteIndexCo
65e0: 6e 73 74 72 61 69 6e 74 4f 70 22 20 2f 3e 29 2e  nstraintOp" />).
65f0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
6600: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
6610: 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 49    public SQLiteI
6620: 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 4f 70  ndexConstraintOp
6630: 20 6f 70 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20   op;....        
6640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6680: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
6690: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
66a0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 72 75  .        /// Tru
66b0: 65 20 69 66 20 74 68 69 73 20 63 6f 6e 73 74 72  e if this constr
66c0: 61 69 6e 74 20 69 73 20 75 73 61 62 6c 65 2e 0d  aint is usable..
66d0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
66e0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
66f0: 20 70 75 62 6c 69 63 20 62 79 74 65 20 75 73 61   public byte usa
6700: 62 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ble;....        
6710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6750: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
6760: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
6770: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 73 65  .        /// Use
6780: 64 20 69 6e 74 65 72 6e 61 6c 6c 79 20 2d 20 3c  d internally - <
6790: 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
67a0: 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 42  eManagedModule.B
67b0: 65 73 74 49 6e 64 65 78 22 20 2f 3e 0d 0a 20 20  estIndex" />..  
67c0: 20 20 20 20 20 20 2f 2f 2f 20 73 68 6f 75 6c 64        /// should
67d0: 20 69 67 6e 6f 72 65 2e 0d 0a 20 20 20 20 20 20   ignore...      
67e0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
67f0: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
6800: 20 69 6e 74 20 69 54 65 72 6d 4f 66 66 73 65 74   int iTermOffset
6810: 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  ;..        #endr
6820: 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20  egion..    }..  
6830: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
6840: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
6850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
6890: 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53  ...    #region S
68a0: 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65 72 42  QLiteIndexOrderB
68b0: 79 20 48 65 6c 70 65 72 20 43 6c 61 73 73 0d 0a  y Helper Class..
68c0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
68d0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  >..    /// This 
68e0: 63 6c 61 73 73 20 72 65 70 72 65 73 65 6e 74 73  class represents
68f0: 20 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69   the native sqli
6900: 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62  te3_index_orderb
6910: 79 20 73 74 72 75 63 74 75 72 65 20 66 72 6f 6d  y structure from
6920: 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 65 20 53 51  ..    /// the SQ
6930: 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
6940: 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  y...    /// </su
6950: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c  mmary>..    publ
6960: 69 63 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20  ic sealed class 
6970: 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65 72  SQLiteIndexOrder
6980: 42 79 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  By..    {..     
6990: 20 20 20 23 72 65 67 69 6f 6e 20 49 6e 74 65 72     #region Inter
69a0: 6e 61 6c 20 43 6f 6e 73 74 72 75 63 74 6f 72 73  nal Constructors
69b0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
69c0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
69d0: 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20   /// Constructs 
69e0: 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74  an instance of t
69f0: 68 69 73 20 63 6c 61 73 73 20 75 73 69 6e 67 20  his class using 
6a00: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6e 61  the specified na
6a10: 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tive..        //
6a20: 2f 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  / sqlite3_index_
6a30: 6f 72 64 65 72 62 79 20 73 74 72 75 63 74 75 72  orderby structur
6a40: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
6a50: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
6a60: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
6a70: 61 6d 65 3d 22 6f 72 64 65 72 42 79 22 3e 0d 0a  ame="orderBy">..
6a80: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
6a90: 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 69  native sqlite3_i
6aa0: 6e 64 65 78 5f 6f 72 64 65 72 62 79 20 73 74 72  ndex_orderby str
6ab0: 75 63 74 75 72 65 20 74 6f 20 75 73 65 2e 0d 0a  ucture to use...
6ac0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
6ad0: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e  ram>..        in
6ae0: 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 49 6e 64  ternal SQLiteInd
6af0: 65 78 4f 72 64 65 72 42 79 28 0d 0a 20 20 20 20  exOrderBy(..    
6b00: 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61          UnsafeNa
6b10: 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
6b20: 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62  te3_index_orderb
6b30: 79 20 6f 72 64 65 72 42 79 0d 0a 20 20 20 20 20  y orderBy..     
6b40: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
6b50: 20 20 20 20 20 20 3a 20 74 68 69 73 28 6f 72 64        : this(ord
6b60: 65 72 42 79 2e 69 43 6f 6c 75 6d 6e 2c 20 6f 72  erBy.iColumn, or
6b70: 64 65 72 42 79 2e 64 65 73 63 29 0d 0a 20 20 20  derBy.desc)..   
6b80: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
6b90: 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e      // do nothin
6ba0: 67 2e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  g...        }.. 
6bb0: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
6bc0: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
6bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6c10: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
6c20: 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43  region Private C
6c30: 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20  onstructors..   
6c40: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
6c50: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
6c60: 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e  Constructs an in
6c70: 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63  stance of this c
6c80: 6c 61 73 73 20 75 73 69 6e 67 20 74 68 65 20 73  lass using the s
6c90: 70 65 63 69 66 69 65 64 20 66 69 65 6c 64 0d 0a  pecified field..
6ca0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75          /// valu
6cb0: 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  es...        ///
6cc0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
6cd0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
6ce0: 6e 61 6d 65 3d 22 69 43 6f 6c 75 6d 6e 22 3e 0d  name="iColumn">.
6cf0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6c  .        /// Col
6d00: 75 6d 6e 20 6e 75 6d 62 65 72 2e 0d 0a 20 20 20  umn number...   
6d10: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
6d20: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
6d30: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 65 73 63  param name="desc
6d40: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
6d50: 54 72 75 65 20 66 6f 72 20 44 45 53 43 2e 20 20  True for DESC.  
6d60: 46 61 6c 73 65 20 66 6f 72 20 41 53 43 2e 0d 0a  False for ASC...
6d70: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
6d80: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  ram>..        pr
6d90: 69 76 61 74 65 20 53 51 4c 69 74 65 49 6e 64 65  ivate SQLiteInde
6da0: 78 4f 72 64 65 72 42 79 28 0d 0a 20 20 20 20 20  xOrderBy(..     
6db0: 20 20 20 20 20 20 20 69 6e 74 20 69 43 6f 6c 75         int iColu
6dc0: 6d 6e 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  mn,..           
6dd0: 20 62 79 74 65 20 64 65 73 63 0d 0a 20 20 20 20   byte desc..    
6de0: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
6df0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
6e00: 20 20 74 68 69 73 2e 69 43 6f 6c 75 6d 6e 20 3d    this.iColumn =
6e10: 20 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20   iColumn;..     
6e20: 20 20 20 20 20 20 20 74 68 69 73 2e 64 65 73 63         this.desc
6e30: 20 3d 20 64 65 73 63 3b 0d 0a 20 20 20 20 20 20   = desc;..      
6e40: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
6e50: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
6e60: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
6e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
6eb0: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62       #region Pub
6ec0: 6c 69 63 20 46 69 65 6c 64 73 0d 0a 20 20 20 20  lic Fields..    
6ed0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
6ee0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43  >..        /// C
6ef0: 6f 6c 75 6d 6e 20 6e 75 6d 62 65 72 2e 0d 0a 20  olumn number... 
6f00: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
6f10: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
6f20: 75 62 6c 69 63 20 69 6e 74 20 69 43 6f 6c 75 6d  ublic int iColum
6f30: 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  n;....        //
6f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f80: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
6f90: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
6fa0: 20 20 20 20 20 20 20 2f 2f 2f 20 54 72 75 65 20         /// True 
6fb0: 66 6f 72 20 44 45 53 43 2e 20 20 46 61 6c 73 65  for DESC.  False
6fc0: 20 66 6f 72 20 41 53 43 2e 0d 0a 20 20 20 20 20   for ASC...     
6fd0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
6fe0: 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
6ff0: 63 20 62 79 74 65 20 64 65 73 63 3b 0d 0a 20 20  c byte desc;..  
7000: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
7010: 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e  ..    }..    #en
7020: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
7030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
7080: 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65    #region SQLite
7090: 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55  IndexConstraintU
70a0: 73 61 67 65 20 48 65 6c 70 65 72 20 43 6c 61 73  sage Helper Clas
70b0: 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  s..    /// <summ
70c0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
70d0: 69 73 20 63 6c 61 73 73 20 72 65 70 72 65 73 65  is class represe
70e0: 6e 74 73 20 74 68 65 20 6e 61 74 69 76 65 20 73  nts the native s
70f0: 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e  qlite3_index_con
7100: 73 74 72 61 69 6e 74 5f 75 73 61 67 65 0d 0a 20  straint_usage.. 
7110: 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65     /// structure
7120: 20 66 72 6f 6d 20 74 68 65 20 53 51 4c 69 74 65   from the SQLite
7130: 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a   core library...
7140: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
7150: 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73  y>..    public s
7160: 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69  ealed class SQLi
7170: 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
7180: 74 55 73 61 67 65 0d 0a 20 20 20 20 7b 0d 0a 20  tUsage..    {.. 
7190: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49         #region I
71a0: 6e 74 65 72 6e 61 6c 20 43 6f 6e 73 74 72 75 63  nternal Construc
71b0: 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tors..        //
71c0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
71d0: 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75       /// Constru
71e0: 63 74 73 20 61 20 64 65 66 61 75 6c 74 20 69 6e  cts a default in
71f0: 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63  stance of this c
7200: 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  lass...        /
7210: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
7220: 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20         internal 
7230: 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74  SQLiteIndexConst
7240: 72 61 69 6e 74 55 73 61 67 65 28 29 0d 0a 20 20  raintUsage()..  
7250: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
7260: 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
7270: 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ng...        }..
7280: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
7290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
72a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
72b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
72c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
72d0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
72e0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
72f0: 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74     /// Construct
7300: 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66  s an instance of
7310: 20 74 68 69 73 20 63 6c 61 73 73 20 75 73 69 6e   this class usin
7320: 67 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  g the specified 
7330: 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20  native..        
7340: 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 69 6e 64 65  /// sqlite3_inde
7350: 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61  x_constraint_usa
7360: 67 65 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  ge structure... 
7370: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
7380: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
7390: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
73a0: 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 22  constraintUsage"
73b0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
73c0: 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65  he native sqlite
73d0: 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69  3_index_constrai
73e0: 6e 74 5f 75 73 61 67 65 20 73 74 72 75 63 74 75  nt_usage structu
73f0: 72 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20  re to use...    
7400: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
7410: 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
7420: 61 6c 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f  al SQLiteIndexCo
7430: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 28 0d 0a  nstraintUsage(..
7440: 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
7450: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
7460: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
7470: 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65 20 63  nstraint_usage c
7480: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 0d 0a  onstraintUsage..
7490: 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
74a0: 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69             : thi
74b0: 73 28 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  s(constraintUsag
74c0: 65 2e 61 72 67 76 49 6e 64 65 78 2c 20 63 6f 6e  e.argvIndex, con
74d0: 73 74 72 61 69 6e 74 55 73 61 67 65 2e 6f 6d 69  straintUsage.omi
74e0: 74 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  t)..        {.. 
74f0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
7500: 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
7510: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
7520: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
7530: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
7540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7550: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
7580: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
7590: 69 76 61 74 65 20 43 6f 6e 73 74 72 75 63 74 6f  ivate Constructo
75a0: 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  rs..        /// 
75b0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
75c0: 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74     /// Construct
75d0: 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66  s an instance of
75e0: 20 74 68 69 73 20 63 6c 61 73 73 20 75 73 69 6e   this class usin
75f0: 67 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  g the specified 
7600: 66 69 65 6c 64 0d 0a 20 20 20 20 20 20 20 20 2f  field..        /
7610: 2f 2f 20 76 61 6c 75 65 73 2e 0d 0a 20 20 20 20  // values...    
7620: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
7630: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
7640: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67  <param name="arg
7650: 76 49 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20 20  vIndex">..      
7660: 20 20 2f 2f 2f 20 49 66 20 67 72 65 61 74 65 72    /// If greater
7670: 20 74 68 61 6e 20 30 2c 20 63 6f 6e 73 74 72 61   than 0, constra
7680: 69 6e 74 20 69 73 20 70 61 72 74 20 6f 66 20 61  int is part of a
7690: 72 67 76 20 74 6f 20 78 46 69 6c 74 65 72 2e 0d  rgv to xFilter..
76a0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
76b0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
76c0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
76d0: 6f 6d 69 74 22 3e 0d 0a 20 20 20 20 20 20 20 20  omit">..        
76e0: 2f 2f 2f 20 44 6f 20 6e 6f 74 20 63 6f 64 65 20  /// Do not code 
76f0: 61 20 74 65 73 74 20 66 6f 72 20 74 68 69 73 20  a test for this 
7700: 63 6f 6e 73 74 72 61 69 6e 74 2e 0d 0a 20 20 20  constraint...   
7710: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
7720: 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
7730: 74 65 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f  te SQLiteIndexCo
7740: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 28 0d 0a  nstraintUsage(..
7750: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
7760: 61 72 67 76 49 6e 64 65 78 2c 0d 0a 20 20 20 20  argvIndex,..    
7770: 20 20 20 20 20 20 20 20 62 79 74 65 20 6f 6d 69          byte omi
7780: 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  t..            )
7790: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
77a0: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 61 72           this.ar
77b0: 67 76 49 6e 64 65 78 20 3d 20 61 72 67 76 49 6e  gvIndex = argvIn
77c0: 64 65 78 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  dex;..          
77d0: 20 20 74 68 69 73 2e 6f 6d 69 74 20 3d 20 6f 6d    this.omit = om
77e0: 69 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  it;..        }..
77f0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
7800: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
7810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7850: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
7860: 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
7870: 46 69 65 6c 64 73 0d 0a 20 20 20 20 20 20 20 20  Fields..        
7880: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
7890: 20 20 20 20 20 20 20 2f 2f 2f 20 49 66 20 67 72         /// If gr
78a0: 65 61 74 65 72 20 74 68 61 6e 20 30 2c 20 63 6f  eater than 0, co
78b0: 6e 73 74 72 61 69 6e 74 20 69 73 20 70 61 72 74  nstraint is part
78c0: 20 6f 66 20 61 72 67 76 20 74 6f 20 78 46 69 6c   of argv to xFil
78d0: 74 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ter...        //
78e0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
78f0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
7900: 20 61 72 67 76 49 6e 64 65 78 3b 0d 0a 0d 0a 20   argvIndex;.... 
7910: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
7920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
7960: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
7970: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
7980: 20 2f 2f 2f 20 44 6f 20 6e 6f 74 20 63 6f 64 65   /// Do not code
7990: 20 61 20 74 65 73 74 20 66 6f 72 20 74 68 69 73   a test for this
79a0: 20 63 6f 6e 73 74 72 61 69 6e 74 2e 0d 0a 20 20   constraint...  
79b0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
79c0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
79d0: 62 6c 69 63 20 62 79 74 65 20 6f 6d 69 74 3b 0d  blic byte omit;.
79e0: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
79f0: 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20  ion..    }..    
7a00: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
7a10: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
7a20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7a30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7a40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7a50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
7a60: 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c  .    #region SQL
7a70: 69 74 65 49 6e 64 65 78 49 6e 70 75 74 73 20 48  iteIndexInputs H
7a80: 65 6c 70 65 72 20 43 6c 61 73 73 0d 0a 20 20 20  elper Class..   
7a90: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
7aa0: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61      /// This cla
7ab0: 73 73 20 72 65 70 72 65 73 65 6e 74 73 20 74 68  ss represents th
7ac0: 65 20 76 61 72 69 6f 75 73 20 69 6e 70 75 74 73  e various inputs
7ad0: 20 70 72 6f 76 69 64 65 64 20 62 79 20 74 68 65   provided by the
7ae0: 20 53 51 4c 69 74 65 20 63 6f 72 65 0d 0a 20 20   SQLite core..  
7af0: 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79 20 74 6f    /// library to
7b00: 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
7b10: 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f  ISQLiteManagedMo
7b20: 64 75 6c 65 2e 42 65 73 74 49 6e 64 65 78 22 20  dule.BestIndex" 
7b30: 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
7b40: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
7b50: 20 20 20 20 70 75 62 6c 69 63 20 73 65 61 6c 65      public seale
7b60: 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 49 6e  d class SQLiteIn
7b70: 64 65 78 49 6e 70 75 74 73 0d 0a 20 20 20 20 7b  dexInputs..    {
7b80: 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
7b90: 6e 20 49 6e 74 65 72 6e 61 6c 20 43 6f 6e 73 74  n Internal Const
7ba0: 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20  ructors..       
7bb0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
7bc0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73          /// Cons
7bd0: 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e  tructs an instan
7be0: 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73  ce of this class
7bf0: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
7c00: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
7c10: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
7c20: 6d 65 3d 22 6e 43 6f 6e 73 74 72 61 69 6e 74 22  me="nConstraint"
7c30: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
7c40: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 3c 73 65  he number of <se
7c50: 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e  e cref="SQLiteIn
7c60: 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 22 20 2f  dexConstraint" /
7c70: 3e 20 69 6e 73 74 61 6e 63 65 73 20 74 6f 0d 0a  > instances to..
7c80: 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 72 65 2d          /// pre-
7c90: 61 6c 6c 6f 63 61 74 65 20 73 70 61 63 65 20 66  allocate space f
7ca0: 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  or...        ///
7cb0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
7cc0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
7cd0: 6d 65 3d 22 6e 4f 72 64 65 72 42 79 22 3e 0d 0a  me="nOrderBy">..
7ce0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
7cf0: 6e 75 6d 62 65 72 20 6f 66 20 3c 73 65 65 20 63  number of <see c
7d00: 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78  ref="SQLiteIndex
7d10: 4f 72 64 65 72 42 79 22 20 2f 3e 20 69 6e 73 74  OrderBy" /> inst
7d20: 61 6e 63 65 73 20 74 6f 0d 0a 20 20 20 20 20 20  ances to..      
7d30: 20 20 2f 2f 2f 20 70 72 65 2d 61 6c 6c 6f 63 61    /// pre-alloca
7d40: 74 65 20 73 70 61 63 65 20 66 6f 72 2e 0d 0a 20  te space for... 
7d50: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
7d60: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  am>..        int
7d70: 65 72 6e 61 6c 20 53 51 4c 69 74 65 49 6e 64 65  ernal SQLiteInde
7d80: 78 49 6e 70 75 74 73 28 69 6e 74 20 6e 43 6f 6e  xInputs(int nCon
7d90: 73 74 72 61 69 6e 74 2c 20 69 6e 74 20 6e 4f 72  straint, int nOr
7da0: 64 65 72 42 79 29 0d 0a 20 20 20 20 20 20 20 20  derBy)..        
7db0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  {..            c
7dc0: 6f 6e 73 74 72 61 69 6e 74 73 20 3d 20 6e 65 77  onstraints = new
7dd0: 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73   SQLiteIndexCons
7de0: 74 72 61 69 6e 74 5b 6e 43 6f 6e 73 74 72 61 69  traint[nConstrai
7df0: 6e 74 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  nt];..          
7e00: 20 20 6f 72 64 65 72 42 79 73 20 3d 20 6e 65 77    orderBys = new
7e10: 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65   SQLiteIndexOrde
7e20: 72 42 79 5b 6e 4f 72 64 65 72 42 79 5d 3b 0d 0a  rBy[nOrderBy];..
7e30: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
7e40: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
7e50: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
7e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ea0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
7eb0: 69 6f 6e 20 50 75 62 6c 69 63 20 50 72 6f 70 65  ion Public Prope
7ec0: 72 74 69 65 73 0d 0a 20 20 20 20 20 20 20 20 70  rties..        p
7ed0: 72 69 76 61 74 65 20 53 51 4c 69 74 65 49 6e 64  rivate SQLiteInd
7ee0: 65 78 43 6f 6e 73 74 72 61 69 6e 74 5b 5d 20 63  exConstraint[] c
7ef0: 6f 6e 73 74 72 61 69 6e 74 73 3b 0d 0a 20 20 20  onstraints;..   
7f00: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
7f10: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
7f20: 41 6e 20 61 72 72 61 79 20 6f 66 20 3c 73 65 65  An array of <see
7f30: 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64   cref="SQLiteInd
7f40: 65 78 43 6f 6e 73 74 72 61 69 6e 74 22 20 2f 3e  exConstraint" />
7f50: 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
7f60: 73 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s,..        /// 
7f70: 65 61 63 68 20 63 6f 6e 74 61 69 6e 69 6e 67 20  each containing 
7f80: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 73 75 70 70  information supp
7f90: 6c 69 65 64 20 62 79 20 74 68 65 20 53 51 4c 69  lied by the SQLi
7fa0: 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e  te core library.
7fb0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
7fc0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
7fd0: 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 49    public SQLiteI
7fe0: 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 5b 5d  ndexConstraint[]
7ff0: 20 43 6f 6e 73 74 72 61 69 6e 74 73 0d 0a 20 20   Constraints..  
8000: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
8010: 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
8020: 6e 20 63 6f 6e 73 74 72 61 69 6e 74 73 3b 20 7d  n constraints; }
8030: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
8040: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
8050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
8090: 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
80a0: 65 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64  e SQLiteIndexOrd
80b0: 65 72 42 79 5b 5d 20 6f 72 64 65 72 42 79 73 3b  erBy[] orderBys;
80c0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
80d0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
80e0: 20 2f 2f 2f 20 41 6e 20 61 72 72 61 79 20 6f 66   /// An array of
80f0: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
8100: 74 65 49 6e 64 65 78 4f 72 64 65 72 42 79 22 20  teIndexOrderBy" 
8110: 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
8120: 63 65 73 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ces,..        //
8130: 2f 20 65 61 63 68 20 63 6f 6e 74 61 69 6e 69 6e  / each containin
8140: 67 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 73 75  g information su
8150: 70 70 6c 69 65 64 20 62 79 20 74 68 65 20 53 51  pplied by the SQ
8160: 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
8170: 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y...        /// 
8180: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
8190: 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
81a0: 65 49 6e 64 65 78 4f 72 64 65 72 42 79 5b 5d 20  eIndexOrderBy[] 
81b0: 4f 72 64 65 72 42 79 73 0d 0a 20 20 20 20 20 20  OrderBys..      
81c0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
81d0: 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 6f 72   get { return or
81e0: 64 65 72 42 79 73 3b 20 7d 0d 0a 20 20 20 20 20  derBys; }..     
81f0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
8200: 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d  ndregion..    }.
8210: 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
8220: 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8270: 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
8280: 6e 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 75 74  n SQLiteIndexOut
8290: 70 75 74 73 20 48 65 6c 70 65 72 20 43 6c 61 73  puts Helper Clas
82a0: 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  s..    /// <summ
82b0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
82c0: 69 73 20 63 6c 61 73 73 20 72 65 70 72 65 73 65  is class represe
82d0: 6e 74 73 20 74 68 65 20 76 61 72 69 6f 75 73 20  nts the various 
82e0: 6f 75 74 70 75 74 73 20 70 72 6f 76 69 64 65 64  outputs provided
82f0: 20 74 6f 20 74 68 65 20 53 51 4c 69 74 65 20 63   to the SQLite c
8300: 6f 72 65 0d 0a 20 20 20 20 2f 2f 2f 20 6c 69 62  ore..    /// lib
8310: 72 61 72 79 20 62 79 20 74 68 65 20 3c 73 65 65  rary by the <see
8320: 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61   cref="ISQLiteMa
8330: 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 42 65 73 74  nagedModule.Best
8340: 49 6e 64 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64  Index" /> method
8350: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
8360: 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69  mary>..    publi
8370: 63 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53  c sealed class S
8380: 51 4c 69 74 65 49 6e 64 65 78 4f 75 74 70 75 74  QLiteIndexOutput
8390: 73 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  s..    {..      
83a0: 20 20 23 72 65 67 69 6f 6e 20 49 6e 74 65 72 6e    #region Intern
83b0: 61 6c 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d  al Constructors.
83c0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
83d0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
83e0: 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61  /// Constructs a
83f0: 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68  n instance of th
8400: 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20  is class...     
8410: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
8420: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
8430: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 43 6f 6e  param name="nCon
8440: 73 74 72 61 69 6e 74 22 3e 0d 0a 20 20 20 20 20  straint">..     
8450: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65     /// The numbe
8460: 72 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22  r of <see cref="
8470: 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74  SQLiteIndexConst
8480: 72 61 69 6e 74 55 73 61 67 65 22 20 2f 3e 20 69  raintUsage" /> i
8490: 6e 73 74 61 6e 63 65 73 0d 0a 20 20 20 20 20 20  nstances..      
84a0: 20 20 2f 2f 2f 20 74 6f 20 70 72 65 2d 61 6c 6c    /// to pre-all
84b0: 6f 63 61 74 65 20 73 70 61 63 65 20 66 6f 72 2e  ocate space for.
84c0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
84d0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
84e0: 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 49  internal SQLiteI
84f0: 6e 64 65 78 4f 75 74 70 75 74 73 28 69 6e 74 20  ndexOutputs(int 
8500: 6e 43 6f 6e 73 74 72 61 69 6e 74 29 0d 0a 20 20  nConstraint)..  
8510: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
8520: 20 20 20 20 20 63 6f 6e 73 74 72 61 69 6e 74 55       constraintU
8530: 73 61 67 65 73 20 3d 20 6e 65 77 20 53 51 4c 69  sages = new SQLi
8540: 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
8550: 74 55 73 61 67 65 5b 6e 43 6f 6e 73 74 72 61 69  tUsage[nConstrai
8560: 6e 74 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  nt];....        
8570: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
8580: 20 20 20 20 2f 2f 20 42 55 47 46 49 58 3a 20 43      // BUGFIX: C
8590: 72 65 61 74 65 20 74 68 65 20 5b 65 6d 70 74 79  reate the [empty
85a0: 5d 20 63 6f 6e 73 74 72 61 69 6e 74 20 75 73 61  ] constraint usa
85b0: 67 65 73 20 6e 6f 77 20 73 6f 20 74 68 65 79 20  ges now so they 
85c0: 63 61 6e 20 62 65 0d 0a 20 20 20 20 20 20 20 20  can be..        
85d0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 20 20 75      //         u
85e0: 73 65 64 20 62 79 20 74 68 65 20 78 42 65 73 74  sed by the xBest
85f0: 49 6e 64 65 78 20 63 61 6c 6c 62 61 63 6b 2e 0d  Index callback..
8600: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  .            //.
8610: 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72  .            for
8620: 20 28 69 6e 74 20 69 43 6f 6e 73 74 72 61 69 6e   (int iConstrain
8630: 74 20 3d 20 30 3b 20 69 43 6f 6e 73 74 72 61 69  t = 0; iConstrai
8640: 6e 74 20 3c 20 6e 43 6f 6e 73 74 72 61 69 6e 74  nt < nConstraint
8650: 3b 20 69 43 6f 6e 73 74 72 61 69 6e 74 2b 2b 29  ; iConstraint++)
8660: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8670: 20 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67    constraintUsag
8680: 65 73 5b 69 43 6f 6e 73 74 72 61 69 6e 74 5d 20  es[iConstraint] 
8690: 3d 20 6e 65 77 20 53 51 4c 69 74 65 49 6e 64 65  = new SQLiteInde
86a0: 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  xConstraintUsage
86b0: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ();..        }..
86c0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
86d0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
86e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
86f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8720: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
8730: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
8740: 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65          /// Dete
8750: 72 6d 69 6e 65 73 20 69 66 20 74 68 65 20 6e 61  rmines if the na
8760: 74 69 76 65 20 65 73 74 69 6d 61 74 65 64 52 6f  tive estimatedRo
8770: 77 73 20 66 69 65 6c 64 20 63 61 6e 20 62 65 20  ws field can be 
8780: 75 73 65 64 2c 20 62 61 73 65 64 20 6f 6e 0d 0a  used, based on..
8790: 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20          /// the 
87a0: 61 76 61 69 6c 61 62 6c 65 20 76 65 72 73 69 6f  available versio
87b0: 6e 20 6f 66 20 74 68 65 20 53 51 4c 69 74 65 20  n of the SQLite 
87c0: 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20  core library... 
87d0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
87e0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
87f0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
8800: 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65        /// Non-ze
8810: 72 6f 20 69 66 20 74 68 65 20 3c 73 65 65 20 63  ro if the <see c
8820: 72 65 66 3d 22 45 73 74 69 6d 61 74 65 64 52 6f  ref="EstimatedRo
8830: 77 73 22 20 2f 3e 20 70 72 6f 70 65 72 74 79 20  ws" /> property 
8840: 69 73 20 73 75 70 70 6f 72 74 65 64 0d 0a 20 20  is supported..  
8850: 20 20 20 20 20 20 2f 2f 2f 20 62 79 20 74 68 65        /// by the
8860: 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62   SQLite core lib
8870: 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f  rary...        /
8880: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
8890: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f         public bo
88a0: 6f 6c 20 43 61 6e 55 73 65 45 73 74 69 6d 61 74  ol CanUseEstimat
88b0: 65 64 52 6f 77 73 28 29 0d 0a 20 20 20 20 20 20  edRows()..      
88c0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
88d0: 20 69 66 20 28 55 6e 73 61 66 65 4e 61 74 69 76   if (UnsafeNativ
88e0: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
88f0: 5f 6c 69 62 76 65 72 73 69 6f 6e 5f 6e 75 6d 62  _libversion_numb
8900: 65 72 28 29 20 3e 3d 20 33 30 30 38 30 30 32 29  er() >= 3008002)
8910: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8920: 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
8930: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
8940: 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20  turn false;..   
8950: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
8960: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
8970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
89a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
89b0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
89c0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
89d0: 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20 74 68  Determines if th
89e0: 65 20 6e 61 74 69 76 65 20 66 6c 61 67 73 20 66  e native flags f
89f0: 69 65 6c 64 20 63 61 6e 20 62 65 20 75 73 65 64  ield can be used
8a00: 2c 20 62 61 73 65 64 20 6f 6e 20 74 68 65 0d 0a  , based on the..
8a10: 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 76 61 69          /// avai
8a20: 6c 61 62 6c 65 20 76 65 72 73 69 6f 6e 20 6f 66  lable version of
8a30: 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
8a40: 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20   library...     
8a50: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
8a60: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
8a70: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
8a80: 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
8a90: 66 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  f the <see cref=
8aa0: 22 49 64 78 46 6c 61 67 73 22 20 2f 3e 20 70 72  "IdxFlags" /> pr
8ab0: 6f 70 65 72 74 79 20 69 73 20 73 75 70 70 6f 72  operty is suppor
8ac0: 74 65 64 20 62 79 0d 0a 20 20 20 20 20 20 20 20  ted by..        
8ad0: 2f 2f 2f 20 74 68 65 20 53 51 4c 69 74 65 20 63  /// the SQLite c
8ae0: 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ore library...  
8af0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
8b00: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  rns>..        pu
8b10: 62 6c 69 63 20 62 6f 6f 6c 20 43 61 6e 55 73 65  blic bool CanUse
8b20: 49 64 78 46 6c 61 67 73 28 29 0d 0a 20 20 20 20  IdxFlags()..    
8b30: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
8b40: 20 20 20 69 66 20 28 55 6e 73 61 66 65 4e 61 74     if (UnsafeNat
8b50: 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
8b60: 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 5f 6e 75  e3_libversion_nu
8b70: 6d 62 65 72 28 29 20 3e 3d 20 33 30 30 38 30 31  mber() >= 300801
8b80: 32 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  2)..            
8b90: 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b      return true;
8ba0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
8bb0: 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20  return false;.. 
8bc0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
8bd0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
8be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8c10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
8c20: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
8c30: 75 62 6c 69 63 20 50 72 6f 70 65 72 74 69 65 73  ublic Properties
8c40: 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
8c50: 65 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e  e SQLiteIndexCon
8c60: 73 74 72 61 69 6e 74 55 73 61 67 65 5b 5d 20 63  straintUsage[] c
8c70: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 73 3b  onstraintUsages;
8c80: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
8c90: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
8ca0: 20 2f 2f 2f 20 41 6e 20 61 72 72 61 79 20 6f 66   /// An array of
8cb0: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
8cc0: 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
8cd0: 74 55 73 61 67 65 22 20 2f 3e 20 6f 62 6a 65 63  tUsage" /> objec
8ce0: 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  t..        /// i
8cf0: 6e 73 74 61 6e 63 65 73 2c 20 65 61 63 68 20 63  nstances, each c
8d00: 6f 6e 74 61 69 6e 69 6e 67 20 69 6e 66 6f 72 6d  ontaining inform
8d10: 61 74 69 6f 6e 20 74 6f 20 62 65 20 73 75 70 70  ation to be supp
8d20: 6c 69 65 64 20 74 6f 20 74 68 65 20 53 51 4c 69  lied to the SQLi
8d30: 74 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  te..        /// 
8d40: 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20  core library... 
8d50: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
8d60: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
8d70: 75 62 6c 69 63 20 53 51 4c 69 74 65 49 6e 64 65  ublic SQLiteInde
8d80: 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  xConstraintUsage
8d90: 5b 5d 20 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  [] ConstraintUsa
8da0: 67 65 73 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ges..        {..
8db0: 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
8dc0: 7b 20 72 65 74 75 72 6e 20 63 6f 6e 73 74 72 61  { return constra
8dd0: 69 6e 74 55 73 61 67 65 73 3b 20 7d 0d 0a 20 20  intUsages; }..  
8de0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
8df0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
8e00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8e30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
8e40: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 69 6e        private in
8e50: 74 20 69 6e 64 65 78 4e 75 6d 62 65 72 3b 0d 0a  t indexNumber;..
8e60: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
8e70: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
8e80: 2f 2f 20 4e 75 6d 62 65 72 20 75 73 65 64 20 74  // Number used t
8e90: 6f 20 68 65 6c 70 20 69 64 65 6e 74 69 66 79 20  o help identify 
8ea0: 74 68 65 20 73 65 6c 65 63 74 65 64 20 69 6e 64  the selected ind
8eb0: 65 78 2e 20 20 54 68 69 73 20 76 61 6c 75 65 20  ex.  This value 
8ec0: 77 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f  will..        //
8ed0: 2f 20 6c 61 74 65 72 20 62 65 20 70 72 6f 76 69  / later be provi
8ee0: 64 65 64 20 74 6f 20 74 68 65 20 3c 73 65 65 20  ded to the <see 
8ef0: 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e  cref="ISQLiteMan
8f00: 61 67 65 64 4d 6f 64 75 6c 65 2e 46 69 6c 74 65  agedModule.Filte
8f10: 72 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f  r" />..        /
8f20: 2f 2f 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  // method...    
8f30: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
8f40: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
8f50: 69 63 20 69 6e 74 20 49 6e 64 65 78 4e 75 6d 62  ic int IndexNumb
8f60: 65 72 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  er..        {.. 
8f70: 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
8f80: 20 72 65 74 75 72 6e 20 69 6e 64 65 78 4e 75 6d   return indexNum
8f90: 62 65 72 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  ber; }..        
8fa0: 20 20 20 20 73 65 74 20 7b 20 69 6e 64 65 78 4e      set { indexN
8fb0: 75 6d 62 65 72 20 3d 20 76 61 6c 75 65 3b 20 7d  umber = value; }
8fc0: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
8fd0: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
8fe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8ff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
9020: 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
9030: 65 20 73 74 72 69 6e 67 20 69 6e 64 65 78 53 74  e string indexSt
9040: 72 69 6e 67 3b 0d 0a 20 20 20 20 20 20 20 20 2f  ring;..        /
9050: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
9060: 20 20 20 20 20 20 2f 2f 2f 20 53 74 72 69 6e 67        /// String
9070: 20 75 73 65 64 20 74 6f 20 68 65 6c 70 20 69 64   used to help id
9080: 65 6e 74 69 66 79 20 74 68 65 20 73 65 6c 65 63  entify the selec
9090: 74 65 64 20 69 6e 64 65 78 2e 20 20 54 68 69 73  ted index.  This
90a0: 20 76 61 6c 75 65 20 77 69 6c 6c 0d 0a 20 20 20   value will..   
90b0: 20 20 20 20 20 2f 2f 2f 20 6c 61 74 65 72 20 62       /// later b
90c0: 65 20 70 72 6f 76 69 64 65 64 20 74 6f 20 74 68  e provided to th
90d0: 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
90e0: 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c  LiteManagedModul
90f0: 65 2e 46 69 6c 74 65 72 22 20 2f 3e 0d 0a 20 20  e.Filter" />..  
9100: 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64        /// method
9110: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
9120: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
9130: 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67     public string
9140: 20 49 6e 64 65 78 53 74 72 69 6e 67 0d 0a 20 20   IndexString..  
9150: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
9160: 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
9170: 6e 20 69 6e 64 65 78 53 74 72 69 6e 67 3b 20 7d  n indexString; }
9180: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65  ..            se
9190: 74 20 7b 20 69 6e 64 65 78 53 74 72 69 6e 67 20  t { indexString 
91a0: 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20  = value; }..    
91b0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
91c0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
91d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
91e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
91f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9200: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
9210: 20 20 20 20 70 72 69 76 61 74 65 20 69 6e 74 20      private int 
9220: 6e 65 65 64 54 6f 46 72 65 65 49 6e 64 65 78 53  needToFreeIndexS
9230: 74 72 69 6e 67 3b 0d 0a 20 20 20 20 20 20 20 20  tring;..        
9240: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
9250: 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a         /// Non-z
9260: 65 72 6f 20 69 66 20 74 68 65 20 69 6e 64 65 78  ero if the index
9270: 20 73 74 72 69 6e 67 20 6d 75 73 74 20 62 65 20   string must be 
9280: 66 72 65 65 64 20 62 79 20 74 68 65 20 53 51 4c  freed by the SQL
9290: 69 74 65 20 63 6f 72 65 0d 0a 20 20 20 20 20 20  ite core..      
92a0: 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79 2e 0d 0a    /// library...
92b0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
92c0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
92d0: 70 75 62 6c 69 63 20 69 6e 74 20 4e 65 65 64 54  public int NeedT
92e0: 6f 46 72 65 65 49 6e 64 65 78 53 74 72 69 6e 67  oFreeIndexString
92f0: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
9300: 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72           get { r
9310: 65 74 75 72 6e 20 6e 65 65 64 54 6f 46 72 65 65  eturn needToFree
9320: 49 6e 64 65 78 53 74 72 69 6e 67 3b 20 7d 0d 0a  IndexString; }..
9330: 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20              set 
9340: 7b 20 6e 65 65 64 54 6f 46 72 65 65 49 6e 64 65  { needToFreeInde
9350: 78 53 74 72 69 6e 67 20 3d 20 76 61 6c 75 65 3b  xString = value;
9360: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
9370: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
9380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
93a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
93b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
93c0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
93d0: 61 74 65 20 69 6e 74 20 6f 72 64 65 72 42 79 43  ate int orderByC
93e0: 6f 6e 73 75 6d 65 64 3b 0d 0a 20 20 20 20 20 20  onsumed;..      
93f0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
9400: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 72 75  .        /// Tru
9410: 65 20 69 66 20 6f 75 74 70 75 74 20 69 73 20 61  e if output is a
9420: 6c 72 65 61 64 79 20 6f 72 64 65 72 65 64 2e 0d  lready ordered..
9430: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
9440: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
9450: 20 70 75 62 6c 69 63 20 69 6e 74 20 4f 72 64 65   public int Orde
9460: 72 42 79 43 6f 6e 73 75 6d 65 64 0d 0a 20 20 20  rByConsumed..   
9470: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
9480: 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e      get { return
9490: 20 6f 72 64 65 72 42 79 43 6f 6e 73 75 6d 65 64   orderByConsumed
94a0: 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
94b0: 20 73 65 74 20 7b 20 6f 72 64 65 72 42 79 43 6f   set { orderByCo
94c0: 6e 73 75 6d 65 64 20 3d 20 76 61 6c 75 65 3b 20  nsumed = value; 
94d0: 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
94e0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
94f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
9530: 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ...        priva
9540: 74 65 20 64 6f 75 62 6c 65 3f 20 65 73 74 69 6d  te double? estim
9550: 61 74 65 64 43 6f 73 74 3b 0d 0a 20 20 20 20 20  atedCost;..     
9560: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
9570: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 45 73  ..        /// Es
9580: 74 69 6d 61 74 65 64 20 63 6f 73 74 20 6f 66 20  timated cost of 
9590: 75 73 69 6e 67 20 74 68 69 73 20 69 6e 64 65 78  using this index
95a0: 2e 20 20 55 73 69 6e 67 20 61 20 6e 75 6c 6c 20  .  Using a null 
95b0: 76 61 6c 75 65 20 68 65 72 65 0d 0a 20 20 20 20  value here..    
95c0: 20 20 20 20 2f 2f 2f 20 69 6e 64 69 63 61 74 65      /// indicate
95d0: 73 20 74 68 61 74 20 61 20 64 65 66 61 75 6c 74  s that a default
95e0: 20 65 73 74 69 6d 61 74 65 64 20 63 6f 73 74 20   estimated cost 
95f0: 76 61 6c 75 65 20 73 68 6f 75 6c 64 20 62 65 20  value should be 
9600: 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  used...        /
9610: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
9620: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 64 6f         public do
9630: 75 62 6c 65 3f 20 45 73 74 69 6d 61 74 65 64 43  uble? EstimatedC
9640: 6f 73 74 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ost..        {..
9650: 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
9660: 7b 20 72 65 74 75 72 6e 20 65 73 74 69 6d 61 74  { return estimat
9670: 65 64 43 6f 73 74 3b 20 7d 0d 0a 20 20 20 20 20  edCost; }..     
9680: 20 20 20 20 20 20 20 73 65 74 20 7b 20 65 73 74         set { est
9690: 69 6d 61 74 65 64 43 6f 73 74 20 3d 20 76 61 6c  imatedCost = val
96a0: 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d  ue; }..        }
96b0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
96c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
96d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
96e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
96f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9700: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
9710: 72 69 76 61 74 65 20 6c 6f 6e 67 3f 20 65 73 74  rivate long? est
9720: 69 6d 61 74 65 64 52 6f 77 73 3b 0d 0a 20 20 20  imatedRows;..   
9730: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
9740: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
9750: 45 73 74 69 6d 61 74 65 64 20 6e 75 6d 62 65 72  Estimated number
9760: 20 6f 66 20 72 6f 77 73 20 72 65 74 75 72 6e 65   of rows returne
9770: 64 2e 20 20 55 73 69 6e 67 20 61 20 6e 75 6c 6c  d.  Using a null
9780: 20 76 61 6c 75 65 20 68 65 72 65 0d 0a 20 20 20   value here..   
9790: 20 20 20 20 20 2f 2f 2f 20 69 6e 64 69 63 61 74       /// indicat
97a0: 65 73 20 74 68 61 74 20 61 20 64 65 66 61 75 6c  es that a defaul
97b0: 74 20 65 73 74 69 6d 61 74 65 64 20 72 6f 77 73  t estimated rows
97c0: 20 76 61 6c 75 65 20 73 68 6f 75 6c 64 20 62 65   value should be
97d0: 20 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20   used...        
97e0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
97f0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6c          public l
9800: 6f 6e 67 3f 20 45 73 74 69 6d 61 74 65 64 52 6f  ong? EstimatedRo
9810: 77 73 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ws..        {.. 
9820: 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
9830: 20 72 65 74 75 72 6e 20 65 73 74 69 6d 61 74 65   return estimate
9840: 64 52 6f 77 73 3b 20 7d 0d 0a 20 20 20 20 20 20  dRows; }..      
9850: 20 20 20 20 20 20 73 65 74 20 7b 20 65 73 74 69        set { esti
9860: 6d 61 74 65 64 52 6f 77 73 20 3d 20 76 61 6c 75  matedRows = valu
9870: 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d  e; }..        }.
9880: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
9890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
98a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
98b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
98c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
98d0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
98e0: 69 76 61 74 65 20 53 51 4c 69 74 65 49 6e 64 65  ivate SQLiteInde
98f0: 78 46 6c 61 67 73 3f 20 69 64 78 46 6c 61 67 73  xFlags? idxFlags
9900: 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ;..        /// <
9910: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
9920: 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61 67 73 20    /// The flags 
9930: 74 68 61 74 20 73 68 6f 75 6c 64 20 62 65 20 75  that should be u
9940: 73 65 64 20 77 69 74 68 20 74 68 69 73 20 69 6e  sed with this in
9950: 64 65 78 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  dex...        //
9960: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
9970: 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c        public SQL
9980: 69 74 65 49 6e 64 65 78 46 6c 61 67 73 3f 20 49  iteIndexFlags? I
9990: 64 78 46 6c 61 67 73 0d 0a 20 20 20 20 20 20 20  dxFlags..       
99a0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
99b0: 67 65 74 20 7b 20 72 65 74 75 72 6e 20 69 64 78  get { return idx
99c0: 46 6c 61 67 73 3b 20 7d 0d 0a 20 20 20 20 20 20  Flags; }..      
99d0: 20 20 20 20 20 20 73 65 74 20 7b 20 69 64 78 46        set { idxF
99e0: 6c 61 67 73 20 3d 20 76 61 6c 75 65 3b 20 7d 0d  lags = value; }.
99f0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
9a00: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
9a10: 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72      }..    #endr
9a20: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
9a30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9a40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9a50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9a60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9a70: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
9a80: 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 49 6e  #region SQLiteIn
9a90: 64 65 78 20 48 65 6c 70 65 72 20 43 6c 61 73 73  dex Helper Class
9aa0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
9ab0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69  ry>..    /// Thi
9ac0: 73 20 63 6c 61 73 73 20 72 65 70 72 65 73 65 6e  s class represen
9ad0: 74 73 20 74 68 65 20 76 61 72 69 6f 75 73 20 69  ts the various i
9ae0: 6e 70 75 74 73 20 61 6e 64 20 6f 75 74 70 75 74  nputs and output
9af0: 73 20 75 73 65 64 20 77 69 74 68 20 74 68 65 0d  s used with the.
9b00: 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72  .    /// <see cr
9b10: 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67  ef="ISQLiteManag
9b20: 65 64 4d 6f 64 75 6c 65 2e 42 65 73 74 49 6e 64  edModule.BestInd
9b30: 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  ex" /> method...
9b40: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
9b50: 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73  y>..    public s
9b60: 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69  ealed class SQLi
9b70: 74 65 49 6e 64 65 78 0d 0a 20 20 20 20 7b 0d 0a  teIndex..    {..
9b80: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
9b90: 49 6e 74 65 72 6e 61 6c 20 43 6f 6e 73 74 72 75  Internal Constru
9ba0: 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 2f  ctors..        /
9bb0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
9bc0: 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72        /// Constr
9bd0: 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63 65  ucts an instance
9be0: 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73 2e 0d   of this class..
9bf0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
9c00: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
9c10: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
9c20: 3d 22 6e 43 6f 6e 73 74 72 61 69 6e 74 22 3e 0d  ="nConstraint">.
9c30: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
9c40: 20 6e 75 6d 62 65 72 20 6f 66 20 3c 73 65 65 20   number of <see 
9c50: 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65  cref="SQLiteInde
9c60: 78 43 6f 6e 73 74 72 61 69 6e 74 22 20 2f 3e 20  xConstraint" /> 
9c70: 28 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  (and..        //
9c80: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  / <see cref="SQL
9c90: 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69  iteIndexConstrai
9ca0: 6e 74 55 73 61 67 65 22 20 2f 3e 29 20 69 6e 73  ntUsage" />) ins
9cb0: 74 61 6e 63 65 73 20 74 6f 0d 0a 20 20 20 20 20  tances to..     
9cc0: 20 20 20 2f 2f 2f 20 70 72 65 2d 61 6c 6c 6f 63     /// pre-alloc
9cd0: 61 74 65 20 73 70 61 63 65 20 66 6f 72 2e 0d 0a  ate space for...
9ce0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
9cf0: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
9d00: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e  / <param name="n
9d10: 4f 72 64 65 72 42 79 22 3e 0d 0a 20 20 20 20 20  OrderBy">..     
9d20: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65     /// The numbe
9d30: 72 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22  r of <see cref="
9d40: 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65 72  SQLiteIndexOrder
9d50: 42 79 22 20 2f 3e 20 69 6e 73 74 61 6e 63 65 73  By" /> instances
9d60: 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   to..        ///
9d70: 20 70 72 65 2d 61 6c 6c 6f 63 61 74 65 20 73 70   pre-allocate sp
9d80: 61 63 65 20 66 6f 72 2e 0d 0a 20 20 20 20 20 20  ace for...      
9d90: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
9da0: 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
9db0: 20 53 51 4c 69 74 65 49 6e 64 65 78 28 0d 0a 20   SQLiteIndex(.. 
9dc0: 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6e             int n
9dd0: 43 6f 6e 73 74 72 61 69 6e 74 2c 0d 0a 20 20 20  Constraint,..   
9de0: 20 20 20 20 20 20 20 20 20 69 6e 74 20 6e 4f 72           int nOr
9df0: 64 65 72 42 79 0d 0a 20 20 20 20 20 20 20 20 20  derBy..         
9e00: 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
9e10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 70  .            inp
9e20: 75 74 73 20 3d 20 6e 65 77 20 53 51 4c 69 74 65  uts = new SQLite
9e30: 49 6e 64 65 78 49 6e 70 75 74 73 28 6e 43 6f 6e  IndexInputs(nCon
9e40: 73 74 72 61 69 6e 74 2c 20 6e 4f 72 64 65 72 42  straint, nOrderB
9e50: 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y);..           
9e60: 20 6f 75 74 70 75 74 73 20 3d 20 6e 65 77 20 53   outputs = new S
9e70: 51 4c 69 74 65 49 6e 64 65 78 4f 75 74 70 75 74  QLiteIndexOutput
9e80: 73 28 6e 43 6f 6e 73 74 72 61 69 6e 74 29 3b 0d  s(nConstraint);.
9e90: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
9ea0: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
9eb0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
9ec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f00: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
9f10: 67 69 6f 6e 20 49 6e 74 65 72 6e 61 6c 20 4d 61  gion Internal Ma
9f20: 72 73 68 61 6c 20 48 65 6c 70 65 72 20 4d 65 74  rshal Helper Met
9f30: 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hods..        //
9f40: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
9f50: 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74       /// Convert
9f60: 73 20 61 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  s a native point
9f70: 65 72 20 74 6f 20 61 20 6e 61 74 69 76 65 20 73  er to a native s
9f80: 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66  qlite3_index_inf
9f90: 6f 20 73 74 72 75 63 74 75 72 65 0d 0a 20 20 20  o structure..   
9fa0: 20 20 20 20 20 2f 2f 2f 20 69 6e 74 6f 20 61 20       /// into a 
9fb0: 6e 65 77 20 3c 73 65 65 20 63 72 65 66 3d 22 53  new <see cref="S
9fc0: 51 4c 69 74 65 49 6e 64 65 78 22 20 2f 3e 20 6f  QLiteIndex" /> o
9fd0: 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d  bject instance..
9fe0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
9ff0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
a000: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
a010: 3d 22 70 49 6e 64 65 78 22 3e 0d 0a 20 20 20 20  ="pIndex">..    
a020: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
a030: 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
a040: 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33  e native sqlite3
a050: 5f 69 6e 64 65 78 5f 69 6e 66 6f 20 73 74 72 75  _index_info stru
a060: 63 74 75 72 65 20 74 6f 0d 0a 20 20 20 20 20 20  cture to..      
a070: 20 20 2f 2f 2f 20 63 6f 6e 76 65 72 74 2e 0d 0a    /// convert...
a080: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
a090: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
a0a0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69  / <param name="i
a0b0: 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20 20 20 20  ndex">..        
a0c0: 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73  /// Upon success
a0d0: 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72  , this parameter
a0e0: 20 77 69 6c 6c 20 62 65 20 6d 6f 64 69 66 69 65   will be modifie
a0f0: 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65  d to contain the
a100: 20 6e 65 77 6c 79 0d 0a 20 20 20 20 20 20 20 20   newly..        
a110: 2f 2f 2f 20 63 72 65 61 74 65 64 20 3c 73 65 65  /// created <see
a120: 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64   cref="SQLiteInd
a130: 65 78 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  ex" /> object in
a140: 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20  stance...       
a150: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
a160: 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20         internal 
a170: 73 74 61 74 69 63 20 76 6f 69 64 20 46 72 6f 6d  static void From
a180: 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20  IntPtr(..       
a190: 20 20 20 20 20 49 6e 74 50 74 72 20 70 49 6e 64       IntPtr pInd
a1a0: 65 78 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ex,..           
a1b0: 20 72 65 66 20 53 51 4c 69 74 65 49 6e 64 65 78   ref SQLiteIndex
a1c0: 20 69 6e 64 65 78 0d 0a 20 20 20 20 20 20 20 20   index..        
a1d0: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
a1e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
a1f0: 20 28 70 49 6e 64 65 78 20 3d 3d 20 49 6e 74 50   (pIndex == IntP
a200: 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
a210: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
a220: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
a230: 20 69 6e 74 20 6f 66 66 73 65 74 20 3d 20 30 3b   int offset = 0;
a240: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
a250: 69 6e 74 20 6e 43 6f 6e 73 74 72 61 69 6e 74 20  int nConstraint 
a260: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
a270: 52 65 61 64 49 6e 74 33 32 28 70 49 6e 64 65 78  ReadInt32(pIndex
a280: 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20  , offset);....  
a290: 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
a2a0: 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c   = SQLiteMarshal
a2b0: 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 6f 66  .NextOffsetOf(of
a2c0: 66 73 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74  fset, sizeof(int
a2d0: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
a2e0: 20 20 20 20 49 6e 74 50 74 72 2e 53 69 7a 65 29      IntPtr.Size)
a2f0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
a300: 20 49 6e 74 50 74 72 20 70 43 6f 6e 73 74 72 61   IntPtr pConstra
a310: 69 6e 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73  int = SQLiteMars
a320: 68 61 6c 2e 52 65 61 64 49 6e 74 50 74 72 28 70  hal.ReadIntPtr(p
a330: 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d  Index, offset);.
a340: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f  ...            o
a350: 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61  ffset = SQLiteMa
a360: 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74  rshal.NextOffset
a370: 4f 66 28 6f 66 66 73 65 74 2c 20 49 6e 74 50 74  Of(offset, IntPt
a380: 72 2e 53 69 7a 65 2c 0d 0a 20 20 20 20 20 20 20  r.Size,..       
a390: 20 20 20 20 20 20 20 20 20 73 69 7a 65 6f 66 28           sizeof(
a3a0: 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  int));....      
a3b0: 20 20 20 20 20 20 69 6e 74 20 6e 4f 72 64 65 72        int nOrder
a3c0: 42 79 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  By = SQLiteMarsh
a3d0: 61 6c 2e 52 65 61 64 49 6e 74 33 32 28 70 49 6e  al.ReadInt32(pIn
a3e0: 64 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d  dex, offset);...
a3f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66  .            off
a400: 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73  set = SQLiteMars
a410: 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66  hal.NextOffsetOf
a420: 28 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28  (offset, sizeof(
a430: 69 6e 74 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  int),..         
a440: 20 20 20 20 20 20 20 49 6e 74 50 74 72 2e 53 69         IntPtr.Si
a450: 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ze);....        
a460: 20 20 20 20 49 6e 74 50 74 72 20 70 4f 72 64 65      IntPtr pOrde
a470: 72 42 79 20 3d 20 53 51 4c 69 74 65 4d 61 72 73  rBy = SQLiteMars
a480: 68 61 6c 2e 52 65 61 64 49 6e 74 50 74 72 28 70  hal.ReadIntPtr(p
a490: 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d  Index, offset);.
a4a0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
a4b0: 6e 64 65 78 20 3d 20 6e 65 77 20 53 51 4c 69 74  ndex = new SQLit
a4c0: 65 49 6e 64 65 78 28 6e 43 6f 6e 73 74 72 61 69  eIndex(nConstrai
a4d0: 6e 74 2c 20 6e 4f 72 64 65 72 42 79 29 3b 0d 0a  nt, nOrderBy);..
a4e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 54 79  ..            Ty
a4f0: 70 65 20 69 6e 64 65 78 43 6f 6e 73 74 72 61 69  pe indexConstrai
a500: 6e 74 54 79 70 65 20 3d 20 74 79 70 65 6f 66 28  ntType = typeof(
a510: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a520: 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65    UnsafeNativeMe
a530: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e  thods.sqlite3_in
a540: 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 29 3b  dex_constraint);
a550: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
a560: 69 6e 74 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72  int sizeOfConstr
a570: 61 69 6e 74 54 79 70 65 20 3d 20 4d 61 72 73 68  aintType = Marsh
a580: 61 6c 2e 53 69 7a 65 4f 66 28 69 6e 64 65 78 43  al.SizeOf(indexC
a590: 6f 6e 73 74 72 61 69 6e 74 54 79 70 65 29 3b 0d  onstraintType);.
a5a0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66  ...            f
a5b0: 6f 72 20 28 69 6e 74 20 69 43 6f 6e 73 74 72 61  or (int iConstra
a5c0: 69 6e 74 20 3d 20 30 3b 20 69 43 6f 6e 73 74 72  int = 0; iConstr
a5d0: 61 69 6e 74 20 3c 20 6e 43 6f 6e 73 74 72 61 69  aint < nConstrai
a5e0: 6e 74 3b 20 69 43 6f 6e 73 74 72 61 69 6e 74 2b  nt; iConstraint+
a5f0: 2b 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  +)..            
a600: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
a610: 20 20 20 49 6e 74 50 74 72 20 70 4f 66 66 73 65     IntPtr pOffse
a620: 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61  t = SQLiteMarsha
a630: 6c 2e 49 6e 74 50 74 72 46 6f 72 4f 66 66 73 65  l.IntPtrForOffse
a640: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
a650: 20 20 20 20 20 20 20 20 70 43 6f 6e 73 74 72 61          pConstra
a660: 69 6e 74 2c 20 69 43 6f 6e 73 74 72 61 69 6e 74  int, iConstraint
a670: 20 2a 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61   * sizeOfConstra
a680: 69 6e 74 54 79 70 65 29 3b 0d 0a 0d 0a 20 20 20  intType);....   
a690: 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73               Uns
a6a0: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
a6b0: 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63  .sqlite3_index_c
a6c0: 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e 73 74 72  onstraint constr
a6d0: 61 69 6e 74 20 3d 0d 0a 20 20 20 20 20 20 20 20  aint =..        
a6e0: 20 20 20 20 20 20 20 20 20 20 20 20 28 55 6e 73              (Uns
a6f0: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
a700: 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63  .sqlite3_index_c
a710: 6f 6e 73 74 72 61 69 6e 74 29 0d 0a 20 20 20 20  onstraint)..    
a720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a730: 20 20 20 20 4d 61 72 73 68 61 6c 2e 50 74 72 54      Marshal.PtrT
a740: 6f 53 74 72 75 63 74 75 72 65 28 70 4f 66 66 73  oStructure(pOffs
a750: 65 74 2c 20 69 6e 64 65 78 43 6f 6e 73 74 72 61  et, indexConstra
a760: 69 6e 74 54 79 70 65 29 3b 0d 0a 0d 0a 20 20 20  intType);....   
a770: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 64               ind
a780: 65 78 2e 49 6e 70 75 74 73 2e 43 6f 6e 73 74 72  ex.Inputs.Constr
a790: 61 69 6e 74 73 5b 69 43 6f 6e 73 74 72 61 69 6e  aints[iConstrain
a7a0: 74 5d 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20  t] =..          
a7b0: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
a7c0: 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61  LiteIndexConstra
a7d0: 69 6e 74 28 63 6f 6e 73 74 72 61 69 6e 74 29 3b  int(constraint);
a7e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
a7f0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 54  ...            T
a800: 79 70 65 20 69 6e 64 65 78 4f 72 64 65 72 42 79  ype indexOrderBy
a810: 54 79 70 65 20 3d 20 74 79 70 65 6f 66 28 0d 0a  Type = typeof(..
a820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a830: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
a840: 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65  ods.sqlite3_inde
a850: 78 5f 6f 72 64 65 72 62 79 29 3b 0d 0a 0d 0a 20  x_orderby);.... 
a860: 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 73             int s
a870: 69 7a 65 4f 66 4f 72 64 65 72 42 79 54 79 70 65  izeOfOrderByType
a880: 20 3d 20 4d 61 72 73 68 61 6c 2e 53 69 7a 65 4f   = Marshal.SizeO
a890: 66 28 69 6e 64 65 78 4f 72 64 65 72 42 79 54 79  f(indexOrderByTy
a8a0: 70 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  pe);....        
a8b0: 20 20 20 20 66 6f 72 20 28 69 6e 74 20 69 4f 72      for (int iOr
a8c0: 64 65 72 42 79 20 3d 20 30 3b 20 69 4f 72 64 65  derBy = 0; iOrde
a8d0: 72 42 79 20 3c 20 6e 4f 72 64 65 72 42 79 3b 20  rBy < nOrderBy; 
a8e0: 69 4f 72 64 65 72 42 79 2b 2b 29 0d 0a 20 20 20  iOrderBy++)..   
a8f0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
a900: 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
a910: 74 72 20 70 4f 66 66 73 65 74 20 3d 20 53 51 4c  tr pOffset = SQL
a920: 69 74 65 4d 61 72 73 68 61 6c 2e 49 6e 74 50 74  iteMarshal.IntPt
a930: 72 46 6f 72 4f 66 66 73 65 74 28 0d 0a 20 20 20  rForOffset(..   
a940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a950: 20 70 4f 72 64 65 72 42 79 2c 20 69 4f 72 64 65   pOrderBy, iOrde
a960: 72 42 79 20 2a 20 73 69 7a 65 4f 66 4f 72 64 65  rBy * sizeOfOrde
a970: 72 42 79 54 79 70 65 29 3b 0d 0a 0d 0a 20 20 20  rByType);....   
a980: 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73               Uns
a990: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
a9a0: 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f  .sqlite3_index_o
a9b0: 72 64 65 72 62 79 20 6f 72 64 65 72 42 79 20 3d  rderby orderBy =
a9c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a9d0: 20 20 20 20 20 20 28 55 6e 73 61 66 65 4e 61 74        (UnsafeNat
a9e0: 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
a9f0: 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62 79  e3_index_orderby
aa00: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
aa10: 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68             Marsh
aa20: 61 6c 2e 50 74 72 54 6f 53 74 72 75 63 74 75 72  al.PtrToStructur
aa30: 65 28 70 4f 66 66 73 65 74 2c 20 69 6e 64 65 78  e(pOffset, index
aa40: 4f 72 64 65 72 42 79 54 79 70 65 29 3b 0d 0a 0d  OrderByType);...
aa50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
aa60: 20 69 6e 64 65 78 2e 49 6e 70 75 74 73 2e 4f 72   index.Inputs.Or
aa70: 64 65 72 42 79 73 5b 69 4f 72 64 65 72 42 79 5d  derBys[iOrderBy]
aa80: 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   =..            
aa90: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
aaa0: 74 65 49 6e 64 65 78 4f 72 64 65 72 42 79 28 6f  teIndexOrderBy(o
aab0: 72 64 65 72 42 79 29 3b 0d 0a 20 20 20 20 20 20  rderBy);..      
aac0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
aad0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
aae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aaf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ab00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ab10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ab20: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
ab30: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
ab40: 20 20 20 20 20 20 20 20 2f 2f 2f 20 50 6f 70 75          /// Popu
ab50: 6c 61 74 65 73 20 74 68 65 20 6f 75 74 70 75 74  lates the output
ab60: 73 20 6f 66 20 61 20 70 72 65 2d 61 6c 6c 6f 63  s of a pre-alloc
ab70: 61 74 65 64 20 6e 61 74 69 76 65 20 73 71 6c 69  ated native sqli
ab80: 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 0d 0a  te3_index_info..
ab90: 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75          /// stru
aba0: 63 74 75 72 65 20 75 73 69 6e 67 20 61 6e 20 65  cture using an e
abb0: 78 69 73 74 69 6e 67 20 3c 73 65 65 20 63 72 65  xisting <see cre
abc0: 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 22 20  f="SQLiteIndex" 
abd0: 2f 3e 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20  /> object..     
abe0: 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 2e     /// instance.
abf0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
ac00: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
ac10: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
ac20: 65 3d 22 69 6e 64 65 78 22 3e 0d 0a 20 20 20 20  e="index">..    
ac30: 20 20 20 20 2f 2f 2f 20 54 68 65 20 65 78 69 73      /// The exis
ac40: 74 69 6e 67 20 3c 73 65 65 20 63 72 65 66 3d 22  ting <see cref="
ac50: 53 51 4c 69 74 65 49 6e 64 65 78 22 20 2f 3e 20  SQLiteIndex" /> 
ac60: 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
ac70: 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20 20 20  containing..    
ac80: 20 20 20 20 2f 2f 2f 20 74 68 65 20 6f 75 74 70      /// the outp
ac90: 75 74 20 64 61 74 61 20 74 6f 20 75 73 65 2e 0d  ut data to use..
aca0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
acb0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
acc0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
acd0: 70 49 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20 20  pIndex">..      
ace0: 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
acf0: 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
ad00: 70 72 65 2d 61 6c 6c 6f 63 61 74 65 64 20 6e 61  pre-allocated na
ad10: 74 69 76 65 20 73 71 6c 69 74 65 33 5f 69 6e 64  tive sqlite3_ind
ad20: 65 78 5f 69 6e 66 6f 0d 0a 20 20 20 20 20 20 20  ex_info..       
ad30: 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 2e 0d   /// structure..
ad40: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
ad50: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 69  aram>..        i
ad60: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 76  nternal static v
ad70: 6f 69 64 20 54 6f 49 6e 74 50 74 72 28 0d 0a 20  oid ToIntPtr(.. 
ad80: 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
ad90: 65 49 6e 64 65 78 20 69 6e 64 65 78 2c 0d 0a 20  eIndex index,.. 
ada0: 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
adb0: 72 20 70 49 6e 64 65 78 0d 0a 20 20 20 20 20 20  r pIndex..      
adc0: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
add0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
ade0: 69 66 20 28 28 69 6e 64 65 78 20 3d 3d 20 6e 75  if ((index == nu
adf0: 6c 6c 29 20 7c 7c 20 28 69 6e 64 65 78 2e 49 6e  ll) || (index.In
ae00: 70 75 74 73 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c  puts == null) ||
ae10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ae20: 20 20 28 69 6e 64 65 78 2e 49 6e 70 75 74 73 2e    (index.Inputs.
ae30: 43 6f 6e 73 74 72 61 69 6e 74 73 20 3d 3d 20 6e  Constraints == n
ae40: 75 6c 6c 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20  ull) ||..       
ae50: 20 20 20 20 20 20 20 20 20 28 69 6e 64 65 78 2e           (index.
ae60: 4f 75 74 70 75 74 73 20 3d 3d 20 6e 75 6c 6c 29  Outputs == null)
ae70: 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20   ||..           
ae80: 20 20 20 20 20 28 69 6e 64 65 78 2e 4f 75 74 70       (index.Outp
ae90: 75 74 73 2e 43 6f 6e 73 74 72 61 69 6e 74 55 73  uts.ConstraintUs
aea0: 61 67 65 73 20 3d 3d 20 6e 75 6c 6c 29 29 0d 0a  ages == null))..
aeb0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
aec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
aed0: 65 74 75 72 6e 3b 0d 0a 20 20 20 20 20 20 20 20  eturn;..        
aee0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
aef0: 20 20 20 20 20 69 66 20 28 70 49 6e 64 65 78 20       if (pIndex 
af00: 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  == IntPtr.Zero).
af10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
af20: 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20   return;....    
af30: 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66 73          int offs
af40: 65 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20  et = 0;....     
af50: 20 20 20 20 20 20 20 69 6e 74 20 6e 43 6f 6e 73         int nCons
af60: 74 72 61 69 6e 74 20 3d 20 53 51 4c 69 74 65 4d  traint = SQLiteM
af70: 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 33 32  arshal.ReadInt32
af80: 28 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29  (pIndex, offset)
af90: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
afa0: 20 69 66 20 28 6e 43 6f 6e 73 74 72 61 69 6e 74   if (nConstraint
afb0: 20 21 3d 20 69 6e 64 65 78 2e 49 6e 70 75 74 73   != index.Inputs
afc0: 2e 43 6f 6e 73 74 72 61 69 6e 74 73 2e 4c 65 6e  .Constraints.Len
afd0: 67 74 68 29 0d 0a 20 20 20 20 20 20 20 20 20 20  gth)..          
afe0: 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d        return;...
aff0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
b000: 28 6e 43 6f 6e 73 74 72 61 69 6e 74 20 21 3d 20  (nConstraint != 
b010: 69 6e 64 65 78 2e 4f 75 74 70 75 74 73 2e 43 6f  index.Outputs.Co
b020: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 73 2e 4c  nstraintUsages.L
b030: 65 6e 67 74 68 29 0d 0a 20 20 20 20 20 20 20 20  ength)..        
b040: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d          return;.
b050: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f  ...            o
b060: 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61  ffset = SQLiteMa
b070: 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74  rshal.NextOffset
b080: 4f 66 28 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f  Of(offset, sizeo
b090: 66 28 69 6e 74 29 2c 0d 0a 20 20 20 20 20 20 20  f(int),..       
b0a0: 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 2e           IntPtr.
b0b0: 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Size);....      
b0c0: 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53        offset = S
b0d0: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78  QLiteMarshal.Nex
b0e0: 74 4f 66 66 73 65 74 4f 66 28 6f 66 66 73 65 74  tOffsetOf(offset
b0f0: 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c 0d 0a  , IntPtr.Size,..
b100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b110: 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d  sizeof(int));...
b120: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66  .            off
b130: 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73  set = SQLiteMars
b140: 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66  hal.NextOffsetOf
b150: 28 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28  (offset, sizeof(
b160: 69 6e 74 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  int),..         
b170: 20 20 20 20 20 20 20 49 6e 74 50 74 72 2e 53 69         IntPtr.Si
b180: 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ze);....        
b190: 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c      offset = SQL
b1a0: 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f  iteMarshal.NextO
b1b0: 66 66 73 65 74 4f 66 28 6f 66 66 73 65 74 2c 20  ffsetOf(offset, 
b1c0: 49 6e 74 50 74 72 2e 53 69 7a 65 2c 0d 0a 20 20  IntPtr.Size,..  
b1d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 69                si
b1e0: 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20  zeof(int));.... 
b1f0: 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
b200: 72 20 70 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  r pConstraintUsa
b210: 67 65 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  ge = SQLiteMarsh
b220: 61 6c 2e 52 65 61 64 49 6e 74 50 74 72 28 70 49  al.ReadIntPtr(pI
b230: 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a  ndex, offset);..
b240: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
b250: 74 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69  t sizeOfConstrai
b260: 6e 74 55 73 61 67 65 54 79 70 65 20 3d 20 4d 61  ntUsageType = Ma
b270: 72 73 68 61 6c 2e 53 69 7a 65 4f 66 28 74 79 70  rshal.SizeOf(typ
b280: 65 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20  eof(..          
b290: 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69        UnsafeNati
b2a0: 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
b2b0: 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69  3_index_constrai
b2c0: 6e 74 5f 75 73 61 67 65 29 29 3b 0d 0a 0d 0a 20  nt_usage));.... 
b2d0: 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28             for (
b2e0: 69 6e 74 20 69 43 6f 6e 73 74 72 61 69 6e 74 20  int iConstraint 
b2f0: 3d 20 30 3b 20 69 43 6f 6e 73 74 72 61 69 6e 74  = 0; iConstraint
b300: 20 3c 20 6e 43 6f 6e 73 74 72 61 69 6e 74 3b 20   < nConstraint; 
b310: 69 43 6f 6e 73 74 72 61 69 6e 74 2b 2b 29 0d 0a  iConstraint++)..
b320: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
b330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55                 U
b340: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
b350: 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ds.sqlite3_index
b360: 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61 67  _constraint_usag
b370: 65 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  e constraintUsag
b380: 65 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e =..           
b390: 20 20 20 20 20 20 20 20 20 6e 65 77 20 55 6e 73           new Uns
b3a0: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
b3b0: 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63  .sqlite3_index_c
b3c0: 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65 28  onstraint_usage(
b3d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b3e0: 20 20 20 20 20 20 20 20 20 20 69 6e 64 65 78 2e            index.
b3f0: 4f 75 74 70 75 74 73 2e 43 6f 6e 73 74 72 61 69  Outputs.Constrai
b400: 6e 74 55 73 61 67 65 73 5b 69 43 6f 6e 73 74 72  ntUsages[iConstr
b410: 61 69 6e 74 5d 29 3b 0d 0a 0d 0a 20 20 20 20 20  aint]);....     
b420: 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68             Marsh
b430: 61 6c 2e 53 74 72 75 63 74 75 72 65 54 6f 50 74  al.StructureToPt
b440: 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
b450: 20 20 20 20 20 20 20 20 63 6f 6e 73 74 72 61 69          constrai
b460: 6e 74 55 73 61 67 65 2c 20 53 51 4c 69 74 65 4d  ntUsage, SQLiteM
b470: 61 72 73 68 61 6c 2e 49 6e 74 50 74 72 46 6f 72  arshal.IntPtrFor
b480: 4f 66 66 73 65 74 28 0d 0a 20 20 20 20 20 20 20  Offset(..       
b490: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 43 6f               pCo
b4a0: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 2c 20 69  nstraintUsage, i
b4b0: 43 6f 6e 73 74 72 61 69 6e 74 20 2a 20 73 69 7a  Constraint * siz
b4c0: 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  eOfConstraintUsa
b4d0: 67 65 54 79 70 65 29 2c 0d 0a 20 20 20 20 20 20  geType),..      
b4e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 61                fa
b4f0: 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  lse);..         
b500: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
b510: 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c      offset = SQL
b520: 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f  iteMarshal.NextO
b530: 66 66 73 65 74 4f 66 28 6f 66 66 73 65 74 2c 20  ffsetOf(offset, 
b540: 49 6e 74 50 74 72 2e 53 69 7a 65 2c 0d 0a 20 20  IntPtr.Size,..  
b550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 69                si
b560: 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20  zeof(int));.... 
b570: 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
b580: 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e  eMarshal.WriteIn
b590: 74 33 32 28 70 49 6e 64 65 78 2c 20 6f 66 66 73  t32(pIndex, offs
b5a0: 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  et,..           
b5b0: 20 20 20 20 20 69 6e 64 65 78 2e 4f 75 74 70 75       index.Outpu
b5c0: 74 73 2e 49 6e 64 65 78 4e 75 6d 62 65 72 29 3b  ts.IndexNumber);
b5d0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
b5e0: 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d  offset = SQLiteM
b5f0: 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65  arshal.NextOffse
b600: 74 4f 66 28 6f 66 66 73 65 74 2c 20 73 69 7a 65  tOf(offset, size
b610: 6f 66 28 69 6e 74 29 2c 0d 0a 20 20 20 20 20 20  of(int),..      
b620: 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
b630: 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  .Size);....     
b640: 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72         SQLiteMar
b650: 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 50 74 72  shal.WriteIntPtr
b660: 28 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 2c  (pIndex, offset,
b670: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b680: 20 20 53 51 4c 69 74 65 53 74 72 69 6e 67 2e 55    SQLiteString.U
b690: 74 66 38 49 6e 74 50 74 72 46 72 6f 6d 53 74 72  tf8IntPtrFromStr
b6a0: 69 6e 67 28 69 6e 64 65 78 2e 4f 75 74 70 75 74  ing(index.Output
b6b0: 73 2e 49 6e 64 65 78 53 74 72 69 6e 67 29 29 3b  s.IndexString));
b6c0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
b6d0: 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d  offset = SQLiteM
b6e0: 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65  arshal.NextOffse
b6f0: 74 4f 66 28 6f 66 66 73 65 74 2c 20 49 6e 74 50  tOf(offset, IntP
b700: 74 72 2e 53 69 7a 65 2c 0d 0a 20 20 20 20 20 20  tr.Size,..      
b710: 20 20 20 20 20 20 20 20 20 20 73 69 7a 65 6f 66            sizeof
b720: 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  (int));....     
b730: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
b740: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
b750: 57 65 20 6a 75 73 74 20 61 6c 6c 6f 63 61 74 65  We just allocate
b760: 64 20 74 68 65 20 49 6e 64 65 78 53 74 72 69 6e  d the IndexStrin
b770: 67 20 66 69 65 6c 64 3b 20 74 68 65 72 65 66 6f  g field; therefo
b780: 72 65 2c 20 77 65 0d 0a 20 20 20 20 20 20 20 20  re, we..        
b790: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6e 65 65      //       nee
b7a0: 64 20 74 6f 20 73 65 74 20 74 68 65 20 4e 65 65  d to set the Nee
b7b0: 64 54 6f 46 72 65 65 49 6e 64 65 78 53 74 72 69  dToFreeIndexStri
b7c0: 6e 67 20 66 69 65 6c 64 20 74 6f 20 6e 6f 6e 2d  ng field to non-
b7d0: 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 20 20 20  zero...         
b7e0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
b7f0: 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c     SQLiteMarshal
b800: 2e 57 72 69 74 65 49 6e 74 33 32 28 70 49 6e 64  .WriteInt32(pInd
b810: 65 78 2c 20 6f 66 66 73 65 74 2c 20 31 29 3b 0d  ex, offset, 1);.
b820: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f  ...            o
b830: 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61  ffset = SQLiteMa
b840: 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74  rshal.NextOffset
b850: 4f 66 28 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f  Of(offset, sizeo
b860: 66 28 69 6e 74 29 2c 0d 0a 20 20 20 20 20 20 20  f(int),..       
b870: 20 20 20 20 20 20 20 20 20 73 69 7a 65 6f 66 28           sizeof(
b880: 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  int));....      
b890: 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73        SQLiteMars
b8a0: 68 61 6c 2e 57 72 69 74 65 49 6e 74 33 32 28 70  hal.WriteInt32(p
b8b0: 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 2c 0d 0a  Index, offset,..
b8c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b8d0: 69 6e 64 65 78 2e 4f 75 74 70 75 74 73 2e 4f 72  index.Outputs.Or
b8e0: 64 65 72 42 79 43 6f 6e 73 75 6d 65 64 29 3b 0d  derByConsumed);.
b8f0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f  ...            o
b900: 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61  ffset = SQLiteMa
b910: 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74  rshal.NextOffset
b920: 4f 66 28 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f  Of(offset, sizeo
b930: 66 28 69 6e 74 29 2c 0d 0a 20 20 20 20 20 20 20  f(int),..       
b940: 20 20 20 20 20 20 20 20 20 73 69 7a 65 6f 66 28           sizeof(
b950: 64 6f 75 62 6c 65 29 29 3b 0d 0a 0d 0a 20 20 20  double));....   
b960: 20 20 20 20 20 20 20 20 20 69 66 20 28 69 6e 64           if (ind
b970: 65 78 2e 4f 75 74 70 75 74 73 2e 45 73 74 69 6d  ex.Outputs.Estim
b980: 61 74 65 64 43 6f 73 74 2e 48 61 73 56 61 6c 75  atedCost.HasValu
b990: 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e)..            
b9a0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
b9b0: 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c     SQLiteMarshal
b9c0: 2e 57 72 69 74 65 44 6f 75 62 6c 65 28 70 49 6e  .WriteDouble(pIn
b9d0: 64 65 78 2c 20 6f 66 66 73 65 74 2c 0d 0a 20 20  dex, offset,..  
b9e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b9f0: 20 20 69 6e 64 65 78 2e 4f 75 74 70 75 74 73 2e    index.Outputs.
ba00: 45 73 74 69 6d 61 74 65 64 43 6f 73 74 2e 47 65  EstimatedCost.Ge
ba10: 74 56 61 6c 75 65 4f 72 44 65 66 61 75 6c 74 28  tValueOrDefault(
ba20: 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ));..           
ba30: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
ba40: 20 20 69 66 20 28 69 6e 64 65 78 2e 4f 75 74 70    if (index.Outp
ba50: 75 74 73 2e 43 61 6e 55 73 65 45 73 74 69 6d 61  uts.CanUseEstima
ba60: 74 65 64 52 6f 77 73 28 29 20 26 26 0d 0a 20 20  tedRows() &&..  
ba70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
ba80: 64 65 78 2e 4f 75 74 70 75 74 73 2e 45 73 74 69  dex.Outputs.Esti
ba90: 6d 61 74 65 64 52 6f 77 73 2e 48 61 73 56 61 6c  matedRows.HasVal
baa0: 75 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue)..           
bab0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
bac0: 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61      SQLiteMarsha
bad0: 6c 2e 57 72 69 74 65 49 6e 74 36 34 28 70 49 6e  l.WriteInt64(pIn
bae0: 64 65 78 2c 20 6f 66 66 73 65 74 2c 0d 0a 20 20  dex, offset,..  
baf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bb00: 20 20 69 6e 64 65 78 2e 4f 75 74 70 75 74 73 2e    index.Outputs.
bb10: 45 73 74 69 6d 61 74 65 64 52 6f 77 73 2e 47 65  EstimatedRows.Ge
bb20: 74 56 61 6c 75 65 4f 72 44 65 66 61 75 6c 74 28  tValueOrDefault(
bb30: 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ));..           
bb40: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
bb50: 20 20 69 66 20 28 69 6e 64 65 78 2e 4f 75 74 70    if (index.Outp
bb60: 75 74 73 2e 43 61 6e 55 73 65 49 64 78 46 6c 61  uts.CanUseIdxFla
bb70: 67 73 28 29 20 26 26 0d 0a 20 20 20 20 20 20 20  gs() &&..       
bb80: 20 20 20 20 20 20 20 20 20 69 6e 64 65 78 2e 4f           index.O
bb90: 75 74 70 75 74 73 2e 49 64 78 46 6c 61 67 73 2e  utputs.IdxFlags.
bba0: 48 61 73 56 61 6c 75 65 29 0d 0a 20 20 20 20 20  HasValue)..     
bbb0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
bbc0: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
bbd0: 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74  Marshal.WriteInt
bbe0: 33 32 28 70 49 6e 64 65 78 2c 20 6f 66 66 73 65  32(pIndex, offse
bbf0: 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
bc00: 20 20 20 20 20 20 20 28 69 6e 74 29 69 6e 64 65         (int)inde
bc10: 78 2e 4f 75 74 70 75 74 73 2e 49 64 78 46 6c 61  x.Outputs.IdxFla
bc20: 67 73 2e 47 65 74 56 61 6c 75 65 4f 72 44 65 66  gs.GetValueOrDef
bc30: 61 75 6c 74 28 29 29 3b 0d 0a 20 20 20 20 20 20  ault());..      
bc40: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
bc50: 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
bc60: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
bc70: 20 20 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 2f 2f 2f 2f 2f  ////////////////
bca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bcb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
bcc0: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62       #region Pub
bcd0: 6c 69 63 20 50 72 6f 70 65 72 74 69 65 73 0d 0a  lic Properties..
bce0: 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
bcf0: 53 51 4c 69 74 65 49 6e 64 65 78 49 6e 70 75 74  SQLiteIndexInput
bd00: 73 20 69 6e 70 75 74 73 3b 0d 0a 20 20 20 20 20  s inputs;..     
bd10: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
bd20: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
bd30: 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
bd40: 69 74 65 49 6e 64 65 78 49 6e 70 75 74 73 22 20  iteIndexInputs" 
bd50: 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
bd60: 63 65 20 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20  ce containing.. 
bd70: 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 69         /// the i
bd80: 6e 70 75 74 73 20 74 6f 20 74 68 65 20 3c 73 65  nputs to the <se
bd90: 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d  e cref="ISQLiteM
bda0: 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 42 65 73  anagedModule.Bes
bdb0: 74 49 6e 64 65 78 22 20 2f 3e 0d 0a 20 20 20 20  tIndex" />..    
bdc0: 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 2e 0d      /// method..
bdd0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
bde0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
bdf0: 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 49 6e   public SQLiteIn
be00: 64 65 78 49 6e 70 75 74 73 20 49 6e 70 75 74 73  dexInputs Inputs
be10: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
be20: 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72           get { r
be30: 65 74 75 72 6e 20 69 6e 70 75 74 73 3b 20 7d 0d  eturn inputs; }.
be40: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
be50: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
be60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
be70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
be80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
be90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
bea0: 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
beb0: 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 75 74 70   SQLiteIndexOutp
bec0: 75 74 73 20 6f 75 74 70 75 74 73 3b 0d 0a 20 20  uts outputs;..  
bed0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
bee0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
bef0: 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
bf00: 53 51 4c 69 74 65 49 6e 64 65 78 4f 75 74 70 75  SQLiteIndexOutpu
bf10: 74 73 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  ts" /> object in
bf20: 73 74 61 6e 63 65 20 63 6f 6e 74 61 69 6e 69 6e  stance containin
bf30: 67 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  g..        /// t
bf40: 68 65 20 6f 75 74 70 75 74 73 20 66 72 6f 6d 20  he outputs from 
bf50: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
bf60: 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64  SQLiteManagedMod
bf70: 75 6c 65 2e 42 65 73 74 49 6e 64 65 78 22 20 2f  ule.BestIndex" /
bf80: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d  >..        /// m
bf90: 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
bfa0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
bfb0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53          public S
bfc0: 51 4c 69 74 65 49 6e 64 65 78 4f 75 74 70 75 74  QLiteIndexOutput
bfd0: 73 20 4f 75 74 70 75 74 73 0d 0a 20 20 20 20 20  s Outputs..     
bfe0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
bff0: 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 6f    get { return o
c000: 75 74 70 75 74 73 3b 20 7d 0d 0a 20 20 20 20 20  utputs; }..     
c010: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
c020: 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d  ndregion..    }.
c030: 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
c040: 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
c050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c090: 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
c0a0: 6e 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  n SQLiteVirtualT
c0b0: 61 62 6c 65 20 42 61 73 65 20 43 6c 61 73 73 0d  able Base Class.
c0c0: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
c0d0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73  y>..    /// This
c0e0: 20 63 6c 61 73 73 20 72 65 70 72 65 73 65 6e 74   class represent
c0f0: 73 20 61 20 6d 61 6e 61 67 65 64 20 76 69 72 74  s a managed virt
c100: 75 61 6c 20 74 61 62 6c 65 20 69 6d 70 6c 65 6d  ual table implem
c110: 65 6e 74 61 74 69 6f 6e 2e 20 20 49 74 20 69 73  entation.  It is
c120: 0d 0a 20 20 20 20 2f 2f 2f 20 6e 6f 74 20 73 65  ..    /// not se
c130: 61 6c 65 64 20 61 6e 64 20 73 68 6f 75 6c 64 20  aled and should 
c140: 62 65 20 75 73 65 64 20 61 73 20 74 68 65 20 62  be used as the b
c150: 61 73 65 20 63 6c 61 73 73 20 66 6f 72 20 61 6e  ase class for an
c160: 79 20 75 73 65 72 2d 64 65 66 69 6e 65 64 0d 0a  y user-defined..
c170: 20 20 20 20 2f 2f 2f 20 76 69 72 74 75 61 6c 20      /// virtual 
c180: 74 61 62 6c 65 20 63 6c 61 73 73 65 73 20 69 6d  table classes im
c190: 70 6c 65 6d 65 6e 74 65 64 20 69 6e 20 6d 61 6e  plemented in man
c1a0: 61 67 65 64 20 63 6f 64 65 2e 0d 0a 20 20 20 20  aged code...    
c1b0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
c1c0: 20 20 20 20 70 75 62 6c 69 63 20 63 6c 61 73 73      public class
c1d0: 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
c1e0: 62 6c 65 20 3a 0d 0a 20 20 20 20 20 20 20 20 20  ble :..         
c1f0: 20 20 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65     ISQLiteNative
c200: 48 61 6e 64 6c 65 2c 20 49 44 69 73 70 6f 73 61  Handle, IDisposa
c210: 62 6c 65 20 2f 2a 20 4e 4f 54 20 53 45 41 4c 45  ble /* NOT SEALE
c220: 44 20 2a 2f 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  D */..    {..   
c230: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69       #region Pri
c240: 76 61 74 65 20 43 6f 6e 73 74 61 6e 74 73 0d 0a  vate Constants..
c250: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
c260: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
c270: 2f 2f 20 54 68 65 20 69 6e 64 65 78 20 77 69 74  // The index wit
c280: 68 69 6e 20 74 68 65 20 61 72 72 61 79 20 6f 66  hin the array of
c290: 20 73 74 72 69 6e 67 73 20 70 72 6f 76 69 64 65   strings provide
c2a0: 64 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  d to the..      
c2b0: 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
c2c0: 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d  "ISQLiteManagedM
c2d0: 6f 64 75 6c 65 2e 43 72 65 61 74 65 22 20 2f 3e  odule.Create" />
c2e0: 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f   and..        //
c2f0: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  / <see cref="ISQ
c300: 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c  LiteManagedModul
c310: 65 2e 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65  e.Connect" /> me
c320: 74 68 6f 64 73 20 63 6f 6e 74 61 69 6e 69 6e 67  thods containing
c330: 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
c340: 2f 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6d 6f  / name of the mo
c350: 64 75 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 69 6e  dule implementin
c360: 67 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74  g this virtual t
c370: 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  able...        /
c380: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
c390: 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63         private c
c3a0: 6f 6e 73 74 20 69 6e 74 20 4d 6f 64 75 6c 65 4e  onst int ModuleN
c3b0: 61 6d 65 49 6e 64 65 78 20 3d 20 30 3b 0d 0a 0d  ameIndex = 0;...
c3c0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
c3d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c3e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c3f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c410: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
c420: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
c430: 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 64 65 78     /// The index
c440: 20 77 69 74 68 69 6e 20 74 68 65 20 61 72 72 61   within the arra
c450: 79 20 6f 66 20 73 74 72 69 6e 67 73 20 70 72 6f  y of strings pro
c460: 76 69 64 65 64 20 74 6f 20 74 68 65 0d 0a 20 20  vided to the..  
c470: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
c480: 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61  ref="ISQLiteMana
c490: 67 65 64 4d 6f 64 75 6c 65 2e 43 72 65 61 74 65  gedModule.Create
c4a0: 22 20 2f 3e 20 61 6e 64 0d 0a 20 20 20 20 20 20  " /> and..      
c4b0: 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
c4c0: 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d  "ISQLiteManagedM
c4d0: 6f 64 75 6c 65 2e 43 6f 6e 6e 65 63 74 22 20 2f  odule.Connect" /
c4e0: 3e 20 6d 65 74 68 6f 64 73 20 63 6f 6e 74 61 69  > methods contai
c4f0: 6e 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20  ning the..      
c500: 20 20 2f 2f 2f 20 6e 61 6d 65 20 6f 66 20 74 68    /// name of th
c510: 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 74 61  e database conta
c520: 69 6e 69 6e 67 20 74 68 69 73 20 76 69 72 74 75  ining this virtu
c530: 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20  al table...     
c540: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
c550: 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
c560: 74 65 20 63 6f 6e 73 74 20 69 6e 74 20 44 61 74  te const int Dat
c570: 61 62 61 73 65 4e 61 6d 65 49 6e 64 65 78 20 3d  abaseNameIndex =
c580: 20 31 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   1;....        /
c590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c5a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c5b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c5c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c5d0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
c5e0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
c5f0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
c600: 20 69 6e 64 65 78 20 77 69 74 68 69 6e 20 74 68   index within th
c610: 65 20 61 72 72 61 79 20 6f 66 20 73 74 72 69 6e  e array of strin
c620: 67 73 20 70 72 6f 76 69 64 65 64 20 74 6f 20 74  gs provided to t
c630: 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
c640: 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
c650: 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e  teManagedModule.
c660: 43 72 65 61 74 65 22 20 2f 3e 20 61 6e 64 0d 0a  Create" /> and..
c670: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
c680: 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61   cref="ISQLiteMa
c690: 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43 6f 6e 6e  nagedModule.Conn
c6a0: 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 73 20  ect" /> methods 
c6b0: 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 0d 0a  containing the..
c6c0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 61 6d 65          /// name
c6d0: 20 6f 66 20 74 68 65 20 76 69 72 74 75 61 6c 20   of the virtual 
c6e0: 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20  table...        
c6f0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
c700: 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
c710: 63 6f 6e 73 74 20 69 6e 74 20 54 61 62 6c 65 4e  const int TableN
c720: 61 6d 65 49 6e 64 65 78 20 3d 20 32 3b 0d 0a 20  ameIndex = 2;.. 
c730: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
c740: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
c750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c790: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
c7a0: 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 43  #region Public C
c7b0: 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20  onstructors..   
c7c0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
c7d0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
c7e0: 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e  Constructs an in
c7f0: 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63  stance of this c
c800: 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  lass...        /
c810: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
c820: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
c830: 6d 20 6e 61 6d 65 3d 22 61 72 67 75 6d 65 6e 74  m name="argument
c840: 73 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  s">..        ///
c850: 20 54 68 65 20 6f 72 69 67 69 6e 61 6c 20 61 72   The original ar
c860: 72 61 79 20 6f 66 20 73 74 72 69 6e 67 73 20 70  ray of strings p
c870: 72 6f 76 69 64 65 64 20 74 6f 20 74 68 65 0d 0a  rovided to the..
c880: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
c890: 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61   cref="ISQLiteMa
c8a0: 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43 72 65 61  nagedModule.Crea
c8b0: 74 65 22 20 2f 3e 20 61 6e 64 0d 0a 20 20 20 20  te" /> and..    
c8c0: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
c8d0: 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65  f="ISQLiteManage
c8e0: 64 4d 6f 64 75 6c 65 2e 43 6f 6e 6e 65 63 74 22  dModule.Connect"
c8f0: 20 2f 3e 20 6d 65 74 68 6f 64 73 2e 0d 0a 20 20   /> methods...  
c900: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
c910: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  m>..        publ
c920: 69 63 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c  ic SQLiteVirtual
c930: 54 61 62 6c 65 28 0d 0a 20 20 20 20 20 20 20 20  Table(..        
c940: 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 61 72 67      string[] arg
c950: 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20 20 20  uments..        
c960: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
c970: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
c980: 69 73 2e 61 72 67 75 6d 65 6e 74 73 20 3d 20 61  is.arguments = a
c990: 72 67 75 6d 65 6e 74 73 3b 0d 0a 20 20 20 20 20  rguments;..     
c9a0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
c9b0: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
c9c0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
c9d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c9e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c9f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ca00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
ca10: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
ca20: 75 62 6c 69 63 20 50 72 6f 70 65 72 74 69 65 73  ublic Properties
ca30: 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
ca40: 65 20 73 74 72 69 6e 67 5b 5d 20 61 72 67 75 6d  e string[] argum
ca50: 65 6e 74 73 3b 0d 0a 20 20 20 20 20 20 20 20 2f  ents;..        /
ca60: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
ca70: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 72        /// The or
ca80: 69 67 69 6e 61 6c 20 61 72 72 61 79 20 6f 66 20  iginal array of 
ca90: 73 74 72 69 6e 67 73 20 70 72 6f 76 69 64 65 64  strings provided
caa0: 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20   to the..       
cab0: 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
cac0: 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f  ISQLiteManagedMo
cad0: 64 75 6c 65 2e 43 72 65 61 74 65 22 20 2f 3e 20  dule.Create" /> 
cae0: 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  and..        ///
caf0: 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
cb00: 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65  iteManagedModule
cb10: 2e 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74  .Connect" /> met
cb20: 68 6f 64 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  hods...        /
cb30: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
cb40: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 69         public vi
cb50: 72 74 75 61 6c 20 73 74 72 69 6e 67 5b 5d 20 41  rtual string[] A
cb60: 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20  rguments..      
cb70: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
cb80: 20 67 65 74 20 7b 20 43 68 65 63 6b 44 69 73 70   get { CheckDisp
cb90: 6f 73 65 64 28 29 3b 20 72 65 74 75 72 6e 20 61  osed(); return a
cba0: 72 67 75 6d 65 6e 74 73 3b 20 7d 0d 0a 20 20 20  rguments; }..   
cbb0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
cbc0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
cbd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cbe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cbf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cc00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
cc10: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
cc20: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
cc30: 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  The name of the 
cc40: 6d 6f 64 75 6c 65 20 69 6d 70 6c 65 6d 65 6e 74  module implement
cc50: 69 6e 67 20 74 68 69 73 20 76 69 72 74 75 61 6c  ing this virtual
cc60: 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20   table...       
cc70: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
cc80: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
cc90: 76 69 72 74 75 61 6c 20 73 74 72 69 6e 67 20 4d  virtual string M
cca0: 6f 64 75 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20  oduleName..     
ccb0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
ccc0: 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20    get..         
ccd0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
cce0: 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f        CheckDispo
ccf0: 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  sed();....      
cd00: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
cd10: 5b 5d 20 61 72 67 75 6d 65 6e 74 73 20 3d 20 41  [] arguments = A
cd20: 72 67 75 6d 65 6e 74 73 3b 0d 0a 0d 0a 20 20 20  rguments;....   
cd30: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
cd40: 28 28 61 72 67 75 6d 65 6e 74 73 20 21 3d 20 6e  ((arguments != n
cd50: 75 6c 6c 29 20 26 26 0d 0a 20 20 20 20 20 20 20  ull) &&..       
cd60: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 72               (ar
cd70: 67 75 6d 65 6e 74 73 2e 4c 65 6e 67 74 68 20 3e  guments.Length >
cd80: 20 4d 6f 64 75 6c 65 4e 61 6d 65 49 6e 64 65 78   ModuleNameIndex
cd90: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
cda0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
cdb0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
cdc0: 6e 20 61 72 67 75 6d 65 6e 74 73 5b 4d 6f 64 75  n arguments[Modu
cdd0: 6c 65 4e 61 6d 65 49 6e 64 65 78 5d 3b 0d 0a 20  leNameIndex];.. 
cde0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
cdf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ce00: 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20    else..        
ce10: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
ce20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
ce30: 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20  eturn null;..   
ce40: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
ce50: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
ce60: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
ce70: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
ce80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ce90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ceb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
cec0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
ced0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
cee0: 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68  / The name of th
cef0: 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 74 61  e database conta
cf00: 69 6e 69 6e 67 20 74 68 69 73 20 76 69 72 74 75  ining this virtu
cf10: 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20  al table...     
cf20: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
cf30: 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
cf40: 63 20 76 69 72 74 75 61 6c 20 73 74 72 69 6e 67  c virtual string
cf50: 20 44 61 74 61 62 61 73 65 4e 61 6d 65 0d 0a 20   DatabaseName.. 
cf60: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
cf70: 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20        get..     
cf80: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
cf90: 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 44            CheckD
cfa0: 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20  isposed();....  
cfb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
cfc0: 72 69 6e 67 5b 5d 20 61 72 67 75 6d 65 6e 74 73  ring[] arguments
cfd0: 20 3d 20 41 72 67 75 6d 65 6e 74 73 3b 0d 0a 0d   = Arguments;...
cfe0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
cff0: 20 69 66 20 28 28 61 72 67 75 6d 65 6e 74 73 20   if ((arguments 
d000: 21 3d 20 6e 75 6c 6c 29 20 26 26 0d 0a 20 20 20  != null) &&..   
d010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d020: 20 28 61 72 67 75 6d 65 6e 74 73 2e 4c 65 6e 67   (arguments.Leng
d030: 74 68 20 3e 20 44 61 74 61 62 61 73 65 4e 61 6d  th > DatabaseNam
d040: 65 49 6e 64 65 78 29 29 0d 0a 20 20 20 20 20 20  eIndex))..      
d050: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
d060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d070: 20 72 65 74 75 72 6e 20 61 72 67 75 6d 65 6e 74   return argument
d080: 73 5b 44 61 74 61 62 61 73 65 4e 61 6d 65 49 6e  s[DatabaseNameIn
d090: 64 65 78 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20  dex];..         
d0a0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
d0b0: 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a            else..
d0c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d0d0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
d0e0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
d0f0: 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll;..           
d100: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
d110: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
d120: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
d130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
d180: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
d190: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
d1a0: 6d 65 20 6f 66 20 74 68 65 20 76 69 72 74 75 61  me of the virtua
d1b0: 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  l table...      
d1c0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
d1d0: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
d1e0: 20 76 69 72 74 75 61 6c 20 73 74 72 69 6e 67 20   virtual string 
d1f0: 54 61 62 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20  TableName..     
d200: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
d210: 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20    get..         
d220: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
d230: 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f        CheckDispo
d240: 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  sed();....      
d250: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
d260: 5b 5d 20 61 72 67 75 6d 65 6e 74 73 20 3d 20 41  [] arguments = A
d270: 72 67 75 6d 65 6e 74 73 3b 0d 0a 0d 0a 20 20 20  rguments;....   
d280: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
d290: 28 28 61 72 67 75 6d 65 6e 74 73 20 21 3d 20 6e  ((arguments != n
d2a0: 75 6c 6c 29 20 26 26 0d 0a 20 20 20 20 20 20 20  ull) &&..       
d2b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 72               (ar
d2c0: 67 75 6d 65 6e 74 73 2e 4c 65 6e 67 74 68 20 3e  guments.Length >
d2d0: 20 54 61 62 6c 65 4e 61 6d 65 49 6e 64 65 78 29   TableNameIndex)
d2e0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
d2f0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
d300: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
d310: 20 61 72 67 75 6d 65 6e 74 73 5b 54 61 62 6c 65   arguments[Table
d320: 4e 61 6d 65 49 6e 64 65 78 5d 3b 0d 0a 20 20 20  NameIndex];..   
d330: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
d340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d350: 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
d360: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
d370: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
d380: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
d390: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
d3a0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
d3b0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
d3c0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
d3d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d3e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d3f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
d410: 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c       private SQL
d420: 69 74 65 49 6e 64 65 78 20 69 6e 64 65 78 3b 0d  iteIndex index;.
d430: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
d440: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
d450: 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
d460: 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 22 20  f="SQLiteIndex" 
d470: 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
d480: 63 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 6c  ce containing al
d490: 6c 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  l the..        /
d4a0: 2f 2f 20 64 61 74 61 20 66 6f 72 20 74 68 65 20  // data for the 
d4b0: 69 6e 70 75 74 73 20 61 6e 64 20 6f 75 74 70 75  inputs and outpu
d4c0: 74 73 20 72 65 6c 61 74 69 6e 67 20 74 6f 20 74  ts relating to t
d4d0: 68 65 20 6d 6f 73 74 20 72 65 63 65 6e 74 20 69  he most recent i
d4e0: 6e 64 65 78 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ndex..        //
d4f0: 2f 20 73 65 6c 65 63 74 69 6f 6e 2e 0d 0a 20 20  / selection...  
d500: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
d510: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
d520: 62 6c 69 63 20 76 69 72 74 75 61 6c 20 53 51 4c  blic virtual SQL
d530: 69 74 65 49 6e 64 65 78 20 49 6e 64 65 78 0d 0a  iteIndex Index..
d540: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
d550: 20 20 20 20 20 20 20 67 65 74 20 7b 20 43 68 65         get { Che
d560: 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65  ckDisposed(); re
d570: 74 75 72 6e 20 69 6e 64 65 78 3b 20 7d 0d 0a 20  turn index; }.. 
d580: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
d590: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
d5a0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
d5b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d5c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d5d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d5e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
d5f0: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
d600: 6f 6e 20 50 75 62 6c 69 63 20 4d 65 74 68 6f 64  on Public Method
d610: 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
d620: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
d630: 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
d640: 64 20 73 68 6f 75 6c 64 20 6e 6f 72 6d 61 6c 6c  d should normall
d650: 79 20 62 65 20 75 73 65 64 20 62 79 20 74 68 65  y be used by the
d660: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
d670: 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
d680: 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 42 65  ManagedModule.Be
d690: 73 74 49 6e 64 65 78 22 20 2f 3e 20 6d 65 74 68  stIndex" /> meth
d6a0: 6f 64 20 69 6e 20 6f 72 64 65 72 20 74 6f 0d 0a  od in order to..
d6b0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 65 72 66          /// perf
d6c0: 6f 72 6d 20 69 6e 64 65 78 20 73 65 6c 65 63 74  orm index select
d6d0: 69 6f 6e 20 62 61 73 65 64 20 6f 6e 20 74 68 65  ion based on the
d6e0: 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 70 72 6f   constraints pro
d6f0: 76 69 64 65 64 20 62 79 20 74 68 65 0d 0a 20 20  vided by the..  
d700: 20 20 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74 65        /// SQLite
d710: 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a   core library...
d720: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
d730: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
d740: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
d750: 22 69 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20 20  "index">..      
d760: 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
d770: 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78  ref="SQLiteIndex
d780: 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
d790: 61 6e 63 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20  ance containing 
d7a0: 61 6c 6c 20 74 68 65 0d 0a 20 20 20 20 20 20 20  all the..       
d7b0: 20 2f 2f 2f 20 64 61 74 61 20 66 6f 72 20 74 68   /// data for th
d7c0: 65 20 69 6e 70 75 74 73 20 61 6e 64 20 6f 75 74  e inputs and out
d7d0: 70 75 74 73 20 72 65 6c 61 74 69 6e 67 20 74 6f  puts relating to
d7e0: 20 69 6e 64 65 78 20 73 65 6c 65 63 74 69 6f 6e   index selection
d7f0: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
d800: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
d810: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
d820: 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d          /// Non-
d830: 7a 65 72 6f 20 75 70 6f 6e 20 73 75 63 63 65 73  zero upon succes
d840: 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s...        /// 
d850: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
d860: 20 20 20 20 70 75 62 6c 69 63 20 76 69 72 74 75      public virtu
d870: 61 6c 20 62 6f 6f 6c 20 42 65 73 74 49 6e 64 65  al bool BestInde
d880: 78 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  x(..            
d890: 53 51 4c 69 74 65 49 6e 64 65 78 20 69 6e 64 65  SQLiteIndex inde
d8a0: 78 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  x..            )
d8b0: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
d8c0: 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69           CheckDi
d8d0: 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20  sposed();....   
d8e0: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 69 6e           this.in
d8f0: 64 65 78 20 3d 20 69 6e 64 65 78 3b 0d 0a 0d 0a  dex = index;....
d900: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
d910: 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20  rn true;..      
d920: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
d930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d970: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
d980: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
d990: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 74 74  .        /// Att
d9a0: 65 6d 70 74 73 20 74 6f 20 72 65 63 6f 72 64 20  empts to record 
d9b0: 74 68 65 20 72 65 6e 61 6d 69 6e 67 20 6f 66 20  the renaming of 
d9c0: 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c  the virtual tabl
d9d0: 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20  e associated..  
d9e0: 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74        /// with t
d9f0: 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  his object insta
da00: 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nce...        //
da10: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
da20: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
da30: 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20   name="name">.. 
da40: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
da50: 65 77 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20  ew name for the 
da60: 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a  virtual table...
da70: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
da80: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
da90: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
daa0: 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
dab0: 6f 20 75 70 6f 6e 20 73 75 63 63 65 73 73 2e 0d  o upon success..
dac0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
dad0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
dae0: 20 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20   public virtual 
daf0: 62 6f 6f 6c 20 52 65 6e 61 6d 65 28 0d 0a 20 20  bool Rename(..  
db00: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
db10: 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20   name..         
db20: 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
db30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65  .            Che
db40: 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d  ckDisposed();...
db50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
db60: 28 28 61 72 67 75 6d 65 6e 74 73 20 21 3d 20 6e  ((arguments != n
db70: 75 6c 6c 29 20 26 26 0d 0a 20 20 20 20 20 20 20  ull) &&..       
db80: 20 20 20 20 20 20 20 20 20 28 61 72 67 75 6d 65           (argume
db90: 6e 74 73 2e 4c 65 6e 67 74 68 20 3e 20 54 61 62  nts.Length > Tab
dba0: 6c 65 4e 61 6d 65 49 6e 64 65 78 29 29 0d 0a 20  leNameIndex)).. 
dbb0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
dbc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 72                ar
dbd0: 67 75 6d 65 6e 74 73 5b 54 61 62 6c 65 4e 61 6d  guments[TableNam
dbe0: 65 49 6e 64 65 78 5d 20 3d 20 6e 61 6d 65 3b 0d  eIndex] = name;.
dbf0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
dc00: 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20   return true;.. 
dc10: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
dc20: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
dc30: 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20  rn false;..     
dc40: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
dc50: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
dc60: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
dc70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dc80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dc90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
dcb0: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49         #region I
dcc0: 53 51 4c 69 74 65 4e 61 74 69 76 65 48 61 6e 64  SQLiteNativeHand
dcd0: 6c 65 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20  le Members..    
dce0: 20 20 20 20 70 72 69 76 61 74 65 20 49 6e 74 50      private IntP
dcf0: 74 72 20 6e 61 74 69 76 65 48 61 6e 64 6c 65 3b  tr nativeHandle;
dd00: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
dd10: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
dd20: 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 74 68 65   /// Returns the
dd30: 20 75 6e 64 65 72 6c 79 69 6e 67 20 53 51 4c 69   underlying SQLi
dd40: 74 65 20 6e 61 74 69 76 65 20 68 61 6e 64 6c 65  te native handle
dd50: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
dd60: 20 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20 2f   this..        /
dd70: 2f 2f 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  // object instan
dd80: 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ce...        ///
dd90: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
dda0: 20 20 20 20 20 70 75 62 6c 69 63 20 76 69 72 74       public virt
ddb0: 75 61 6c 20 49 6e 74 50 74 72 20 4e 61 74 69 76  ual IntPtr Nativ
ddc0: 65 48 61 6e 64 6c 65 0d 0a 20 20 20 20 20 20 20  eHandle..       
ddd0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
dde0: 67 65 74 20 7b 20 43 68 65 63 6b 44 69 73 70 6f  get { CheckDispo
ddf0: 73 65 64 28 29 3b 20 72 65 74 75 72 6e 20 6e 61  sed(); return na
de00: 74 69 76 65 48 61 6e 64 6c 65 3b 20 7d 0d 0a 20  tiveHandle; }.. 
de10: 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 65 72             inter
de20: 6e 61 6c 20 73 65 74 20 7b 20 6e 61 74 69 76 65  nal set { native
de30: 48 61 6e 64 6c 65 20 3d 20 76 61 6c 75 65 3b 20  Handle = value; 
de40: 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  }..        }..  
de50: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
de60: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
de70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
de80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
de90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
deb0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
dec0: 72 65 67 69 6f 6e 20 49 44 69 73 70 6f 73 61 62  region IDisposab
ded0: 6c 65 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20  le Members..    
dee0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
def0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 44  >..        /// D
df00: 69 73 70 6f 73 65 73 20 6f 66 20 74 68 69 73 20  isposes of this 
df10: 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e  object instance.
df20: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
df30: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
df40: 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 44 69    public void Di
df50: 73 70 6f 73 65 28 29 0d 0a 20 20 20 20 20 20 20  spose()..       
df60: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
df70: 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a  Dispose(true);..
df80: 20 20 20 20 20 20 20 20 20 20 20 20 47 43 2e 53              GC.S
df90: 75 70 70 72 65 73 73 46 69 6e 61 6c 69 7a 65 28  uppressFinalize(
dfa0: 74 68 69 73 29 3b 0d 0a 20 20 20 20 20 20 20 20  this);..        
dfb0: 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
dfc0: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
dfd0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
dfe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e010: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
e020: 20 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73      #region IDis
e030: 70 6f 73 61 62 6c 65 20 22 50 61 74 74 65 72 6e  posable "Pattern
e040: 22 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20  " Members..     
e050: 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20     private bool 
e060: 64 69 73 70 6f 73 65 64 3b 0d 0a 20 20 20 20 20  disposed;..     
e070: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
e080: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
e090: 72 6f 77 73 20 61 6e 20 3c 73 65 65 20 63 72 65  rows an <see cre
e0a0: 66 3d 22 4f 62 6a 65 63 74 44 69 73 70 6f 73 65  f="ObjectDispose
e0b0: 64 45 78 63 65 70 74 69 6f 6e 22 20 2f 3e 20 69  dException" /> i
e0c0: 66 20 74 68 69 73 20 6f 62 6a 65 63 74 0d 0a 20  f this object.. 
e0d0: 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61         /// insta
e0e0: 6e 63 65 20 68 61 73 20 62 65 65 6e 20 64 69 73  nce has been dis
e0f0: 70 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20  posed...        
e100: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
e110: 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
e120: 76 6f 69 64 20 43 68 65 63 6b 44 69 73 70 6f 73  void CheckDispos
e130: 65 64 28 29 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  ed() /* throw */
e140: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
e150: 20 54 48 52 4f 57 5f 4f 4e 5f 44 49 53 50 4f 53   THROW_ON_DISPOS
e160: 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ED..            
e170: 69 66 20 28 64 69 73 70 6f 73 65 64 29 0d 0a 20  if (disposed).. 
e180: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
e190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
e1a0: 72 6f 77 20 6e 65 77 20 4f 62 6a 65 63 74 44 69  row new ObjectDi
e1b0: 73 70 6f 73 65 64 45 78 63 65 70 74 69 6f 6e 28  sposedException(
e1c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e1d0: 20 20 20 20 20 20 74 79 70 65 6f 66 28 53 51 4c        typeof(SQL
e1e0: 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 29  iteVirtualTable)
e1f0: 2e 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20  .Name);..       
e200: 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
e210: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
e220: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
e230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
e270: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
e280: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
e290: 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f 66 20 74  // Disposes of t
e2a0: 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  his object insta
e2b0: 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nce...        //
e2c0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
e2d0: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
e2e0: 20 6e 61 6d 65 3d 22 64 69 73 70 6f 73 69 6e 67   name="disposing
e2f0: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
e300: 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 69 73  Non-zero if this
e310: 20 6d 65 74 68 6f 64 20 69 73 20 62 65 69 6e 67   method is being
e320: 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 74 68 65   called from the
e330: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
e340: 65 65 20 63 72 65 66 3d 22 44 69 73 70 6f 73 65  ee cref="Dispose
e350: 28 29 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 20 20  ()" /> method.  
e360: 5a 65 72 6f 20 69 66 20 74 68 69 73 20 6d 65 74  Zero if this met
e370: 68 6f 64 20 69 73 20 62 65 69 6e 67 20 63 61 6c  hod is being cal
e380: 6c 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  led..        ///
e390: 20 66 72 6f 6d 20 74 68 65 20 66 69 6e 61 6c 69   from the finali
e3a0: 7a 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  zer...        //
e3b0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
e3c0: 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 69      protected vi
e3d0: 72 74 75 61 6c 20 76 6f 69 64 20 44 69 73 70 6f  rtual void Dispo
e3e0: 73 65 28 62 6f 6f 6c 20 64 69 73 70 6f 73 69 6e  se(bool disposin
e3f0: 67 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  g)..        {.. 
e400: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
e410: 64 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20 20  disposed)..     
e420: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
e430: 20 20 20 20 20 20 20 20 20 20 2f 2f 69 66 20 28            //if (
e440: 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20  disposing)..    
e450: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 7b 0d              //{.
e460: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e470: 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f   //    /////////
e480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
e4a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
e4b0: 20 20 20 2f 2f 20 64 69 73 70 6f 73 65 20 6d 61     // dispose ma
e4c0: 6e 61 67 65 64 20 72 65 73 6f 75 72 63 65 73 20  naged resources 
e4d0: 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20  here.....       
e4e0: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 2f           //    /
e4f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e510: 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ///..           
e520: 20 20 20 20 20 2f 2f 7d 0d 0a 0d 0a 20 20 20 20       //}....    
e530: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
e540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e550: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e560: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
e570: 20 20 20 20 2f 2f 20 72 65 6c 65 61 73 65 20 75      // release u
e580: 6e 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72 63  nmanaged resourc
e590: 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20  es here.....    
e5a0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
e5b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e5c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e5d0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
e5e0: 20 20 20 20 20 20 64 69 73 70 6f 73 65 64 20 3d        disposed =
e5f0: 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
e600: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
e610: 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
e620: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
e630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e670: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
e680: 20 20 20 23 72 65 67 69 6f 6e 20 44 65 73 74 72     #region Destr
e690: 75 63 74 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f  uctor..        /
e6a0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
e6b0: 20 20 20 20 20 20 2f 2f 2f 20 46 69 6e 61 6c 69        /// Finali
e6c0: 7a 65 73 20 74 68 69 73 20 6f 62 6a 65 63 74 20  zes this object 
e6d0: 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20  instance...     
e6e0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
e6f0: 3e 0d 0a 20 20 20 20 20 20 20 20 7e 53 51 4c 69  >..        ~SQLi
e700: 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 28 29  teVirtualTable()
e710: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
e720: 20 20 20 20 20 20 20 20 20 44 69 73 70 6f 73 65           Dispose
e730: 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20  (false);..      
e740: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
e750: 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a  dregion..    }..
e760: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
e770: 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
e780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e7a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e7b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e7c0: 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
e7d0: 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
e7e0: 62 6c 65 43 75 72 73 6f 72 20 42 61 73 65 20 43  bleCursor Base C
e7f0: 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  lass..    /// <s
e800: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
e810: 20 54 68 69 73 20 63 6c 61 73 73 20 72 65 70 72   This class repr
e820: 65 73 65 6e 74 73 20 61 20 6d 61 6e 61 67 65 64  esents a managed
e830: 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 63   virtual table c
e840: 75 72 73 6f 72 20 69 6d 70 6c 65 6d 65 6e 74 61  ursor implementa
e850: 74 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 49  tion...    /// I
e860: 74 20 69 73 20 6e 6f 74 20 73 65 61 6c 65 64 20  t is not sealed 
e870: 61 6e 64 20 73 68 6f 75 6c 64 20 62 65 20 75 73  and should be us
e880: 65 64 20 61 73 20 74 68 65 20 62 61 73 65 20 63  ed as the base c
e890: 6c 61 73 73 20 66 6f 72 20 61 6e 79 0d 0a 20 20  lass for any..  
e8a0: 20 20 2f 2f 2f 20 75 73 65 72 2d 64 65 66 69 6e    /// user-defin
e8b0: 65 64 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  ed virtual table
e8c0: 20 63 75 72 73 6f 72 20 63 6c 61 73 73 65 73 20   cursor classes 
e8d0: 69 6d 70 6c 65 6d 65 6e 74 65 64 20 69 6e 20 6d  implemented in m
e8e0: 61 6e 61 67 65 64 20 63 6f 64 65 2e 0d 0a 20 20  anaged code...  
e8f0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
e900: 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 63 6c 61  ..    public cla
e910: 73 73 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c  ss SQLiteVirtual
e920: 54 61 62 6c 65 43 75 72 73 6f 72 20 3a 0d 0a 20  TableCursor :.. 
e930: 20 20 20 20 20 20 20 20 20 20 20 49 53 51 4c 69             ISQLi
e940: 74 65 4e 61 74 69 76 65 48 61 6e 64 6c 65 2c 20  teNativeHandle, 
e950: 49 44 69 73 70 6f 73 61 62 6c 65 20 2f 2a 20 4e  IDisposable /* N
e960: 4f 54 20 53 45 41 4c 45 44 20 2a 2f 0d 0a 20 20  OT SEALED */..  
e970: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65    {..        #re
e980: 67 69 6f 6e 20 50 72 6f 74 65 63 74 65 64 20 43  gion Protected C
e990: 6f 6e 73 74 61 6e 74 73 0d 0a 20 20 20 20 20 20  onstants..      
e9a0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
e9b0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
e9c0: 73 20 76 61 6c 75 65 20 72 65 70 72 65 73 65 6e  s value represen
e9d0: 74 73 20 61 6e 20 69 6e 76 61 6c 69 64 20 69 6e  ts an invalid in
e9e0: 74 65 67 65 72 20 72 6f 77 20 73 65 71 75 65 6e  teger row sequen
e9f0: 63 65 20 6e 75 6d 62 65 72 2e 0d 0a 20 20 20 20  ce number...    
ea00: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
ea10: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74  y>..        prot
ea20: 65 63 74 65 64 20 73 74 61 74 69 63 20 72 65 61  ected static rea
ea30: 64 6f 6e 6c 79 20 69 6e 74 20 49 6e 76 61 6c 69  donly int Invali
ea40: 64 52 6f 77 49 6e 64 65 78 20 3d 20 30 3b 0d 0a  dRowIndex = 0;..
ea50: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
ea60: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
ea70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ea80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ea90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eaa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eab0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
eac0: 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65   #region Private
ead0: 20 44 61 74 61 0d 0a 20 20 20 20 20 20 20 20 2f   Data..        /
eae0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
eaf0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 69        /// The fi
eb00: 65 6c 64 20 68 6f 6c 64 73 20 74 68 65 20 69 6e  eld holds the in
eb10: 74 65 67 65 72 20 72 6f 77 20 73 65 71 75 65 6e  teger row sequen
eb20: 63 65 20 6e 75 6d 62 65 72 20 66 6f 72 20 74 68  ce number for th
eb30: 65 20 63 75 72 72 65 6e 74 20 72 6f 77 0d 0a 20  e current row.. 
eb40: 20 20 20 20 20 20 20 2f 2f 2f 20 70 6f 69 6e 74         /// point
eb50: 65 64 20 74 6f 20 62 79 20 74 68 69 73 20 63 75  ed to by this cu
eb60: 72 73 6f 72 20 6f 62 6a 65 63 74 20 69 6e 73 74  rsor object inst
eb70: 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ance...        /
eb80: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
eb90: 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 69         private i
eba0: 6e 74 20 72 6f 77 49 6e 64 65 78 3b 0d 0a 20 20  nt rowIndex;..  
ebb0: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
ebc0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
ebd0: 2f 2f 2f 2f 2f 2f 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 2f 2f 2f 2f  ////////////////
ec00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ec10: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
ec20: 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 43 6f  region Public Co
ec30: 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20  nstructors..    
ec40: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
ec50: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43  >..        /// C
ec60: 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73  onstructs an ins
ec70: 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c  tance of this cl
ec80: 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ass...        //
ec90: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
eca0: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
ecb0: 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a   name="table">..
ecc0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
ecd0: 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
ece0: 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f  eVirtualTable" /
ecf0: 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
ed00: 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20  e associated..  
ed10: 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74        /// with t
ed20: 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  his object insta
ed30: 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nce...        //
ed40: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
ed50: 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
ed60: 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72  eVirtualTableCur
ed70: 73 6f 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  sor(..          
ed80: 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54    SQLiteVirtualT
ed90: 61 62 6c 65 20 74 61 62 6c 65 0d 0a 20 20 20 20  able table..    
eda0: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
edb0: 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d         : this().
edc0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
edd0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 74 61 62          this.tab
ede0: 6c 65 20 3d 20 74 61 62 6c 65 3b 0d 0a 20 20 20  le = table;..   
edf0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
ee00: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
ee10: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
ee20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
ee60: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
ee70: 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74 72 75   Private Constru
ee80: 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 2f  ctors..        /
ee90: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
eea0: 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72        /// Constr
eeb0: 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63 65  ucts an instance
eec0: 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73 2e 0d   of this class..
eed0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
eee0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
eef0: 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 56   private SQLiteV
ef00: 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f  irtualTableCurso
ef10: 72 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  r()..        {..
ef20: 20 20 20 20 20 20 20 20 20 20 20 20 72 6f 77 49              rowI
ef30: 6e 64 65 78 20 3d 20 49 6e 76 61 6c 69 64 52 6f  ndex = InvalidRo
ef40: 77 49 6e 64 65 78 3b 0d 0a 20 20 20 20 20 20 20  wIndex;..       
ef50: 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
ef60: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
ef70: 20 20 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 0d 0a 0d 0a 20 20 20  /////////....   
efc0: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62       #region Pub
efd0: 6c 69 63 20 50 72 6f 70 65 72 74 69 65 73 0d 0a  lic Properties..
efe0: 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
eff0: 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
f000: 6c 65 20 74 61 62 6c 65 3b 0d 0a 20 20 20 20 20  le table;..     
f010: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
f020: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
f030: 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
f040: 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22  iteVirtualTable"
f050: 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
f060: 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a  nce associated..
f070: 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68          /// with
f080: 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73   this object ins
f090: 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20  tance...        
f0a0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
f0b0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76          public v
f0c0: 69 72 74 75 61 6c 20 53 51 4c 69 74 65 56 69 72  irtual SQLiteVir
f0d0: 74 75 61 6c 54 61 62 6c 65 20 54 61 62 6c 65 0d  tualTable Table.
f0e0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
f0f0: 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 43 68          get { Ch
f100: 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 72  eckDisposed(); r
f110: 65 74 75 72 6e 20 74 61 62 6c 65 3b 20 7d 0d 0a  eturn table; }..
f120: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
f130: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
f140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
f180: 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
f190: 69 6e 74 20 69 6e 64 65 78 4e 75 6d 62 65 72 3b  int indexNumber;
f1a0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
f1b0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
f1c0: 20 2f 2f 2f 20 4e 75 6d 62 65 72 20 75 73 65 64   /// Number used
f1d0: 20 74 6f 20 68 65 6c 70 20 69 64 65 6e 74 69 66   to help identif
f1e0: 79 20 74 68 65 20 73 65 6c 65 63 74 65 64 20 69  y the selected i
f1f0: 6e 64 65 78 2e 20 20 54 68 69 73 20 76 61 6c 75  ndex.  This valu
f200: 65 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20  e will..        
f210: 2f 2f 2f 20 62 65 20 73 65 74 20 76 69 61 20 74  /// be set via t
f220: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 46 69  he <see cref="Fi
f230: 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  lter" /> method.
f240: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
f250: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
f260: 20 20 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c    public virtual
f270: 20 69 6e 74 20 49 6e 64 65 78 4e 75 6d 62 65 72   int IndexNumber
f280: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
f290: 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 43           get { C
f2a0: 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20  heckDisposed(); 
f2b0: 72 65 74 75 72 6e 20 69 6e 64 65 78 4e 75 6d 62  return indexNumb
f2c0: 65 72 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d  er; }..        }
f2d0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
f2e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f2f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f320: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
f330: 72 69 76 61 74 65 20 73 74 72 69 6e 67 20 69 6e  rivate string in
f340: 64 65 78 53 74 72 69 6e 67 3b 0d 0a 20 20 20 20  dexString;..    
f350: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
f360: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53  >..        /// S
f370: 74 72 69 6e 67 20 75 73 65 64 20 74 6f 20 68 65  tring used to he
f380: 6c 70 20 69 64 65 6e 74 69 66 79 20 74 68 65 20  lp identify the 
f390: 73 65 6c 65 63 74 65 64 20 69 6e 64 65 78 2e 20  selected index. 
f3a0: 20 54 68 69 73 20 76 61 6c 75 65 20 77 69 6c 6c   This value will
f3b0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 62 65  ..        /// be
f3c0: 20 73 65 74 20 76 69 61 20 74 68 65 20 3c 73 65   set via the <se
f3d0: 65 20 63 72 65 66 3d 22 46 69 6c 74 65 72 22 20  e cref="Filter" 
f3e0: 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
f3f0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
f400: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
f410: 69 63 20 76 69 72 74 75 61 6c 20 73 74 72 69 6e  ic virtual strin
f420: 67 20 49 6e 64 65 78 53 74 72 69 6e 67 0d 0a 20  g IndexString.. 
f430: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
f440: 20 20 20 20 20 20 67 65 74 20 7b 20 43 68 65 63        get { Chec
f450: 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74  kDisposed(); ret
f460: 75 72 6e 20 69 6e 64 65 78 53 74 72 69 6e 67 3b  urn indexString;
f470: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
f480: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
f490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f4a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f4b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f4c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f4d0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
f4e0: 61 74 65 20 53 51 4c 69 74 65 56 61 6c 75 65 5b  ate SQLiteValue[
f4f0: 5d 20 76 61 6c 75 65 73 3b 0d 0a 20 20 20 20 20  ] values;..     
f500: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
f510: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
f520: 65 20 76 61 6c 75 65 73 20 75 73 65 64 20 74 6f  e values used to
f530: 20 66 69 6c 74 65 72 20 74 68 65 20 72 6f 77 73   filter the rows
f540: 20 72 65 74 75 72 6e 65 64 20 76 69 61 20 74 68   returned via th
f550: 69 73 20 63 75 72 73 6f 72 20 6f 62 6a 65 63 74  is cursor object
f560: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e  ..        /// in
f570: 73 74 61 6e 63 65 2e 20 20 54 68 69 73 20 76 61  stance.  This va
f580: 6c 75 65 20 77 69 6c 6c 20 62 65 20 73 65 74 20  lue will be set 
f590: 76 69 61 20 74 68 65 20 3c 73 65 65 20 63 72 65  via the <see cre
f5a0: 66 3d 22 46 69 6c 74 65 72 22 20 2f 3e 0d 0a 20  f="Filter" />.. 
f5b0: 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f         /// metho
f5c0: 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
f5d0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
f5e0: 20 20 20 20 70 75 62 6c 69 63 20 76 69 72 74 75      public virtu
f5f0: 61 6c 20 53 51 4c 69 74 65 56 61 6c 75 65 5b 5d  al SQLiteValue[]
f600: 20 56 61 6c 75 65 73 0d 0a 20 20 20 20 20 20 20   Values..       
f610: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
f620: 67 65 74 20 7b 20 43 68 65 63 6b 44 69 73 70 6f  get { CheckDispo
f630: 73 65 64 28 29 3b 20 72 65 74 75 72 6e 20 76 61  sed(); return va
f640: 6c 75 65 73 3b 20 7d 0d 0a 20 20 20 20 20 20 20  lues; }..       
f650: 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
f660: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
f670: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
f680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f6a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f6b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
f6c0: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 6f       #region Pro
f6d0: 74 65 63 74 65 64 20 4d 65 74 68 6f 64 73 0d 0a  tected Methods..
f6e0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
f6f0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
f700: 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20 70  // Attempts to p
f710: 65 72 73 69 73 74 20 74 68 65 20 73 70 65 63 69  ersist the speci
f720: 66 69 65 64 20 3c 73 65 65 20 63 72 65 66 3d 22  fied <see cref="
f730: 53 51 4c 69 74 65 56 61 6c 75 65 22 20 2f 3e 20  SQLiteValue" /> 
f740: 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20  object..        
f750: 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 73 20 69 6e  /// instances in
f760: 20 6f 72 64 65 72 20 74 6f 20 6d 61 6b 65 20 74   order to make t
f770: 68 65 6d 20 61 76 61 69 6c 61 62 6c 65 20 61 66  hem available af
f780: 74 65 72 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ter the..       
f790: 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
f7a0: 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f  ISQLiteManagedMo
f7b0: 64 75 6c 65 2e 46 69 6c 74 65 72 22 20 2f 3e 20  dule.Filter" /> 
f7c0: 6d 65 74 68 6f 64 20 72 65 74 75 72 6e 73 2e 0d  method returns..
f7d0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
f7e0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
f7f0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
f800: 3d 22 76 61 6c 75 65 73 22 3e 0d 0a 20 20 20 20  ="values">..    
f810: 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 72 72 61      /// The arra
f820: 79 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22  y of <see cref="
f830: 53 51 4c 69 74 65 56 61 6c 75 65 22 20 2f 3e 20  SQLiteValue" /> 
f840: 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 73  object instances
f850: 20 74 6f 20 62 65 0d 0a 20 20 20 20 20 20 20 20   to be..        
f860: 2f 2f 2f 20 70 65 72 73 69 73 74 65 64 2e 0d 0a  /// persisted...
f870: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
f880: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
f890: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
f8a0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d       /// The num
f8b0: 62 65 72 20 6f 66 20 3c 73 65 65 20 63 72 65 66  ber of <see cref
f8c0: 3d 22 53 51 4c 69 74 65 56 61 6c 75 65 22 20 2f  ="SQLiteValue" /
f8d0: 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
f8e0: 65 73 20 74 68 61 74 20 77 65 72 65 0d 0a 20 20  es that were..  
f8f0: 20 20 20 20 20 20 2f 2f 2f 20 73 75 63 63 65 73        /// succes
f900: 73 66 75 6c 6c 79 20 70 65 72 73 69 73 74 65 64  sfully persisted
f910: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
f920: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
f930: 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 69 72     protected vir
f940: 74 75 61 6c 20 69 6e 74 20 54 72 79 50 65 72 73  tual int TryPers
f950: 69 73 74 56 61 6c 75 65 73 28 0d 0a 20 20 20 20  istValues(..    
f960: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 61          SQLiteVa
f970: 6c 75 65 5b 5d 20 76 61 6c 75 65 73 0d 0a 20 20  lue[] values..  
f980: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
f990: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
f9a0: 20 20 20 20 69 6e 74 20 72 65 73 75 6c 74 20 3d      int result =
f9b0: 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   0;....         
f9c0: 20 20 20 69 66 20 28 76 61 6c 75 65 73 20 21 3d     if (values !=
f9d0: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
f9e0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
f9f0: 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 20 28         foreach (
fa00: 53 51 4c 69 74 65 56 61 6c 75 65 20 76 61 6c 75  SQLiteValue valu
fa10: 65 20 69 6e 20 76 61 6c 75 65 73 29 0d 0a 20 20  e in values)..  
fa20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
fa30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
fa40: 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d       if (value =
fa50: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
fa60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fa70: 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20   continue;....  
fa80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fa90: 20 20 69 66 20 28 76 61 6c 75 65 2e 50 65 72 73    if (value.Pers
faa0: 69 73 74 28 29 29 0d 0a 20 20 20 20 20 20 20 20  ist())..        
fab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fac0: 72 65 73 75 6c 74 2b 2b 3b 0d 0a 20 20 20 20 20  result++;..     
fad0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
fae0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
faf0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
fb00: 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20  n result;..     
fb10: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
fb20: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
fb30: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
fb40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
fb80: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
fb90: 75 62 6c 69 63 20 4d 65 74 68 6f 64 73 0d 0a 20  ublic Methods.. 
fba0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
fbb0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
fbc0: 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 73 68  / This method sh
fbd0: 6f 75 6c 64 20 6e 6f 72 6d 61 6c 6c 79 20 62 65  ould normally be
fbe0: 20 75 73 65 64 20 62 79 20 74 68 65 0d 0a 20 20   used by the..  
fbf0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
fc00: 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61  ref="ISQLiteMana
fc10: 67 65 64 4d 6f 64 75 6c 65 2e 46 69 6c 74 65 72  gedModule.Filter
fc20: 22 20 2f 3e 20 6d 65 74 68 6f 64 20 69 6e 20 6f  " /> method in o
fc30: 72 64 65 72 20 74 6f 0d 0a 20 20 20 20 20 20 20  rder to..       
fc40: 20 2f 2f 2f 20 70 65 72 66 6f 72 6d 20 66 69 6c   /// perform fil
fc50: 74 65 72 69 6e 67 20 6f 66 20 74 68 65 20 72 65  tering of the re
fc60: 73 75 6c 74 20 72 6f 77 73 20 61 6e 64 2f 6f 72  sult rows and/or
fc70: 20 74 6f 20 72 65 63 6f 72 64 20 74 68 65 20 66   to record the f
fc80: 69 6c 74 65 72 69 6e 67 0d 0a 20 20 20 20 20 20  iltering..      
fc90: 20 20 2f 2f 2f 20 63 72 69 74 65 72 69 61 20 70    /// criteria p
fca0: 72 6f 76 69 64 65 64 20 62 79 20 74 68 65 20 53  rovided by the S
fcb0: 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
fcc0: 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry...        ///
fcd0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
fce0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
fcf0: 6e 61 6d 65 3d 22 69 6e 64 65 78 4e 75 6d 62 65  name="indexNumbe
fd00: 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  r">..        ///
fd10: 20 4e 75 6d 62 65 72 20 75 73 65 64 20 74 6f 20   Number used to 
fd20: 68 65 6c 70 20 69 64 65 6e 74 69 66 79 20 74 68  help identify th
fd30: 65 20 73 65 6c 65 63 74 65 64 20 69 6e 64 65 78  e selected index
fd40: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
fd50: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
fd60: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
fd70: 3d 22 69 6e 64 65 78 53 74 72 69 6e 67 22 3e 0d  ="indexString">.
fd80: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 74 72  .        /// Str
fd90: 69 6e 67 20 75 73 65 64 20 74 6f 20 68 65 6c 70  ing used to help
fda0: 20 69 64 65 6e 74 69 66 79 20 74 68 65 20 73 65   identify the se
fdb0: 6c 65 63 74 65 64 20 69 6e 64 65 78 2e 0d 0a 20  lected index... 
fdc0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
fdd0: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
fde0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61   <param name="va
fdf0: 6c 75 65 73 22 3e 0d 0a 20 20 20 20 20 20 20 20  lues">..        
fe00: 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 73 20 63  /// The values c
fe10: 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20  orresponding to 
fe20: 65 61 63 68 20 63 6f 6c 75 6d 6e 20 69 6e 20 74  each column in t
fe30: 68 65 20 73 65 6c 65 63 74 65 64 20 69 6e 64 65  he selected inde
fe40: 78 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  x...        /// 
fe50: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
fe60: 20 20 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c    public virtual
fe70: 20 76 6f 69 64 20 46 69 6c 74 65 72 28 0d 0a 20   void Filter(.. 
fe80: 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69             int i
fe90: 6e 64 65 78 4e 75 6d 62 65 72 2c 0d 0a 20 20 20  ndexNumber,..   
fea0: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
feb0: 69 6e 64 65 78 53 74 72 69 6e 67 2c 0d 0a 20 20  indexString,..  
fec0: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
fed0: 56 61 6c 75 65 5b 5d 20 76 61 6c 75 65 73 0d 0a  Value[] values..
fee0: 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
fef0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
ff00: 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f        CheckDispo
ff10: 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  sed();....      
ff20: 20 20 20 20 20 20 69 66 20 28 28 76 61 6c 75 65        if ((value
ff30: 73 20 21 3d 20 6e 75 6c 6c 29 20 26 26 0d 0a 20  s != null) &&.. 
ff40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
ff50: 54 72 79 50 65 72 73 69 73 74 56 61 6c 75 65 73  TryPersistValues
ff60: 28 76 61 6c 75 65 73 29 20 21 3d 20 76 61 6c 75  (values) != valu
ff70: 65 73 2e 4c 65 6e 67 74 68 29 29 0d 0a 20 20 20  es.Length))..   
ff80: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
ff90: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
ffa0: 77 20 6e 65 77 20 53 51 4c 69 74 65 45 78 63 65  w new SQLiteExce
ffb0: 70 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20  ption(..        
ffc0: 20 20 20 20 20 20 20 20 20 20 20 20 22 66 61 69              "fai
ffd0: 6c 65 64 20 74 6f 20 70 65 72 73 69 73 74 20 6f  led to persist o
ffe0: 6e 65 20 6f 72 20 6d 6f 72 65 20 76 61 6c 75 65  ne or more value
fff0: 73 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  s");..          
10000 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
10010 20 20 20 74 68 69 73 2e 69 6e 64 65 78 4e 75 6d     this.indexNum
10020 62 65 72 20 3d 20 69 6e 64 65 78 4e 75 6d 62 65  ber = indexNumbe
10030 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r;..            
10040 74 68 69 73 2e 69 6e 64 65 78 53 74 72 69 6e 67  this.indexString
10050 20 3d 20 69 6e 64 65 78 53 74 72 69 6e 67 3b 0d   = indexString;.
10060 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
10070 73 2e 76 61 6c 75 65 73 20 3d 20 76 61 6c 75 65  s.values = value
10080 73 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  s;..        }...
10090 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
100a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
100b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
100c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
100d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
100e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
100f0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
10100 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65     /// Determine
10110 73 20 74 68 65 20 69 6e 74 65 67 65 72 20 72 6f  s the integer ro
10120 77 20 73 65 71 75 65 6e 63 65 20 6e 75 6d 62 65  w sequence numbe
10130 72 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e  r for the curren
10140 74 20 72 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20  t row...        
10150 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
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 54 68 65 20 69 6e 74 65 67 65 72 20 72  // The integer r
10190 6f 77 20 73 65 71 75 65 6e 63 65 20 6e 75 6d 62  ow sequence numb
101a0 65 72 20 66 6f 72 20 74 68 65 20 63 75 72 72 65  er for the curre
101b0 6e 74 20 72 6f 77 20 2d 4f 52 2d 20 7a 65 72 6f  nt row -OR- zero
101c0 20 69 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   if..        ///
101d0 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65   it cannot be de
101e0 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20  termined...     
101f0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
10200 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
10210 63 20 76 69 72 74 75 61 6c 20 69 6e 74 20 47 65  c virtual int Ge
10220 74 52 6f 77 49 6e 64 65 78 28 29 0d 0a 20 20 20  tRowIndex()..   
10230 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
10240 20 20 20 20 72 65 74 75 72 6e 20 72 6f 77 49 6e      return rowIn
10250 64 65 78 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  dex;..        }.
10260 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
10270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10290 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
102c0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
102d0 20 20 20 20 20 2f 2f 2f 20 41 64 6a 75 73 74 73       /// Adjusts
102e0 20 74 68 65 20 69 6e 74 65 67 65 72 20 72 6f 77   the integer row
102f0 20 73 65 71 75 65 6e 63 65 20 6e 75 6d 62 65 72   sequence number
10300 20 73 6f 20 74 68 61 74 20 69 74 20 72 65 66 65   so that it refe
10310 72 73 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20  rs to the..     
10320 20 20 20 2f 2f 2f 20 6e 65 78 74 20 72 6f 77 2e     /// next row.
10330 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
10340 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
10350 20 20 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c    public virtual
10360 20 76 6f 69 64 20 4e 65 78 74 52 6f 77 49 6e 64   void NextRowInd
10370 65 78 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ex()..        {.
10380 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 6f 77  .            row
10390 49 6e 64 65 78 2b 2b 3b 0d 0a 20 20 20 20 20 20  Index++;..      
103a0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
103b0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
103c0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
103d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
103e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
103f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
10410 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 53        #region IS
10420 51 4c 69 74 65 4e 61 74 69 76 65 48 61 6e 64 6c  QLiteNativeHandl
10430 65 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20  e Members..     
10440 20 20 20 70 72 69 76 61 74 65 20 49 6e 74 50 74     private IntPt
10450 72 20 6e 61 74 69 76 65 48 61 6e 64 6c 65 3b 0d  r nativeHandle;.
10460 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
10470 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
10480 2f 2f 2f 20 52 65 74 75 72 6e 73 20 74 68 65 20  /// Returns the 
10490 75 6e 64 65 72 6c 79 69 6e 67 20 53 51 4c 69 74  underlying SQLit
104a0 65 20 6e 61 74 69 76 65 20 68 61 6e 64 6c 65 20  e native handle 
104b0 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
104c0 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  this..        //
104d0 2f 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  / object instanc
104e0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
104f0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
10500 20 20 20 20 70 75 62 6c 69 63 20 76 69 72 74 75      public virtu
10510 61 6c 20 49 6e 74 50 74 72 20 4e 61 74 69 76 65  al IntPtr Native
10520 48 61 6e 64 6c 65 0d 0a 20 20 20 20 20 20 20 20  Handle..        
10530 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67  {..            g
10540 65 74 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73  et { CheckDispos
10550 65 64 28 29 3b 20 72 65 74 75 72 6e 20 6e 61 74  ed(); return nat
10560 69 76 65 48 61 6e 64 6c 65 3b 20 7d 0d 0a 20 20  iveHandle; }..  
10570 20 20 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e            intern
10580 61 6c 20 73 65 74 20 7b 20 6e 61 74 69 76 65 48  al set { nativeH
10590 61 6e 64 6c 65 20 3d 20 76 61 6c 75 65 3b 20 7d  andle = value; }
105a0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
105b0 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
105c0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
105d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
105e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
105f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10610 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
10620 65 67 69 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c  egion IDisposabl
10630 65 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20  e Members..     
10640 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
10650 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 69  ..        /// Di
10660 73 70 6f 73 65 73 20 6f 66 20 74 68 69 73 20 6f  sposes of this o
10670 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d  bject instance..
10680 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
10690 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
106a0 20 70 75 62 6c 69 63 20 76 6f 69 64 20 44 69 73   public void Dis
106b0 70 6f 73 65 28 29 0d 0a 20 20 20 20 20 20 20 20  pose()..        
106c0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 44  {..            D
106d0 69 73 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20  ispose(true);.. 
106e0 20 20 20 20 20 20 20 20 20 20 20 47 43 2e 53 75             GC.Su
106f0 70 70 72 65 73 73 46 69 6e 61 6c 69 7a 65 28 74  ppressFinalize(t
10700 68 69 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  his);..        }
10710 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
10720 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
10730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10770 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
10780 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73 70     #region IDisp
10790 6f 73 61 62 6c 65 20 22 50 61 74 74 65 72 6e 22  osable "Pattern"
107a0 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20   Members..      
107b0 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 64    private bool d
107c0 69 73 70 6f 73 65 64 3b 0d 0a 20 20 20 20 20 20  isposed;..      
107d0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
107e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 72  .        /// Thr
107f0 6f 77 73 20 61 6e 20 3c 73 65 65 20 63 72 65 66  ows an <see cref
10800 3d 22 4f 62 6a 65 63 74 44 69 73 70 6f 73 65 64  ="ObjectDisposed
10810 45 78 63 65 70 74 69 6f 6e 22 20 2f 3e 20 69 66  Exception" /> if
10820 20 74 68 69 73 20 6f 62 6a 65 63 74 0d 0a 20 20   this object..  
10830 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e        /// instan
10840 63 65 20 68 61 73 20 62 65 65 6e 20 64 69 73 70  ce has been disp
10850 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  osed...        /
10860 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
10870 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 76         private v
10880 6f 69 64 20 43 68 65 63 6b 44 69 73 70 6f 73 65  oid CheckDispose
10890 64 28 29 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  d() /* throw */.
108a0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
108b0 54 48 52 4f 57 5f 4f 4e 5f 44 49 53 50 4f 53 45  THROW_ON_DISPOSE
108c0 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  D..            i
108d0 66 20 28 64 69 73 70 6f 73 65 64 29 0d 0a 20 20  f (disposed)..  
108e0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
108f0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72               thr
10900 6f 77 20 6e 65 77 20 4f 62 6a 65 63 74 44 69 73  ow new ObjectDis
10910 70 6f 73 65 64 45 78 63 65 70 74 69 6f 6e 28 0d  posedException(.
10920 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10930 20 20 20 20 20 74 79 70 65 6f 66 28 53 51 4c 69       typeof(SQLi
10940 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75  teVirtualTableCu
10950 72 73 6f 72 29 2e 4e 61 6d 65 29 3b 0d 0a 20 20  rsor).Name);..  
10960 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
10970 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
10980 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
10990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
109a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
109b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
109c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
109d0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
109e0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
109f0 20 20 20 20 2f 2f 2f 20 44 69 73 70 6f 73 65 73      /// Disposes
10a00 20 6f 66 20 74 68 69 73 20 6f 62 6a 65 63 74 20   of this object 
10a10 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20  instance...     
10a20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
10a30 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
10a40 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 69 73 70  param name="disp
10a50 6f 73 69 6e 67 22 3e 0d 0a 20 20 20 20 20 20 20  osing">..       
10a60 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66   /// Non-zero if
10a70 20 74 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20   this method is 
10a80 62 65 69 6e 67 20 63 61 6c 6c 65 64 20 66 72 6f  being called fro
10a90 6d 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  m the..        /
10aa0 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 44 69  // <see cref="Di
10ab0 73 70 6f 73 65 28 29 22 20 2f 3e 20 6d 65 74 68  spose()" /> meth
10ac0 6f 64 2e 20 20 5a 65 72 6f 20 69 66 20 74 68 69  od.  Zero if thi
10ad0 73 20 6d 65 74 68 6f 64 20 69 73 20 62 65 69 6e  s method is bein
10ae0 67 20 63 61 6c 6c 65 64 0d 0a 20 20 20 20 20 20  g called..      
10af0 20 20 2f 2f 2f 20 66 72 6f 6d 20 74 68 65 20 66    /// from the f
10b00 69 6e 61 6c 69 7a 65 72 2e 0d 0a 20 20 20 20 20  inalizer...     
10b10 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
10b20 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74  .        protect
10b30 65 64 20 76 69 72 74 75 61 6c 20 76 6f 69 64 20  ed virtual void 
10b40 44 69 73 70 6f 73 65 28 62 6f 6f 6c 20 64 69 73  Dispose(bool dis
10b50 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20 20 20  posing)..       
10b60 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
10b70 69 66 20 28 21 64 69 73 70 6f 73 65 64 29 0d 0a  if (!disposed)..
10b80 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
10b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
10ba0 2f 69 66 20 28 64 69 73 70 6f 73 69 6e 67 29 0d  /if (disposing).
10bb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10bc0 20 2f 2f 7b 0d 0a 20 20 20 20 20 20 20 20 20 20   //{..          
10bd0 20 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f        //    ////
10be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10c00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10c10 20 20 2f 2f 20 20 20 20 2f 2f 20 64 69 73 70 6f    //    // dispo
10c20 73 65 20 6d 61 6e 61 67 65 64 20 72 65 73 6f 75  se managed resou
10c30 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20  rces here.....  
10c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
10c50 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
10c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10c70 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
10c80 20 20 20 20 20 20 20 20 20 20 2f 2f 7d 0d 0a 0d            //}...
10c90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10ca0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
10cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10cc0 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20  ///////..       
10cd0 20 20 20 20 20 20 20 20 20 2f 2f 20 72 65 6c 65           // rele
10ce0 61 73 65 20 75 6e 6d 61 6e 61 67 65 64 20 72 65  ase unmanaged re
10cf0 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d  sources here....
10d00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10d10 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
10d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10d30 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
10d40 20 20 20 20 20 20 20 20 20 20 20 64 69 73 70 6f             dispo
10d50 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20  sed = true;..   
10d60 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
10d70 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
10d80 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
10d90 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
10da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
10de0 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
10df0 44 65 73 74 72 75 63 74 6f 72 0d 0a 20 20 20 20  Destructor..    
10e00 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
10e10 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 46  >..        /// F
10e20 69 6e 61 6c 69 7a 65 73 20 74 68 69 73 20 6f 62  inalizes this ob
10e30 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a  ject instance...
10e40 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
10e50 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
10e60 7e 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  ~SQLiteVirtualTa
10e70 62 6c 65 43 75 72 73 6f 72 28 29 0d 0a 20 20 20  bleCursor()..   
10e80 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
10e90 20 20 20 20 44 69 73 70 6f 73 65 28 66 61 6c 73      Dispose(fals
10ea0 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  e);..        }..
10eb0 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
10ec0 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23  on..    }..    #
10ed0 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
10ee0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
10ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
10f30 20 20 20 20 23 72 65 67 69 6f 6e 20 49 53 51 4c      #region ISQL
10f40 69 74 65 4e 61 74 69 76 65 48 61 6e 64 6c 65 20  iteNativeHandle 
10f50 49 6e 74 65 72 66 61 63 65 0d 0a 20 20 20 20 2f  Interface..    /
10f60 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
10f70 20 20 2f 2f 2f 20 54 68 69 73 20 69 6e 74 65 72    /// This inter
10f80 66 61 63 65 20 72 65 70 72 65 73 65 6e 74 73 20  face represents 
10f90 61 20 6e 61 74 69 76 65 20 68 61 6e 64 6c 65 20  a native handle 
10fa0 70 72 6f 76 69 64 65 64 20 62 79 20 74 68 65 20  provided by the 
10fb0 53 51 4c 69 74 65 20 63 6f 72 65 0d 0a 20 20 20  SQLite core..   
10fc0 20 2f 2f 2f 20 6c 69 62 72 61 72 79 2e 0d 0a 20   /// library... 
10fd0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
10fe0 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 69 6e  >..    public in
10ff0 74 65 72 66 61 63 65 20 49 53 51 4c 69 74 65 4e  terface ISQLiteN
11000 61 74 69 76 65 48 61 6e 64 6c 65 0d 0a 20 20 20  ativeHandle..   
11010 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20   {..        /// 
11020 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
11030 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
11040 65 20 68 61 6e 64 6c 65 20 76 61 6c 75 65 2e 0d  e handle value..
11050 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
11060 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
11070 20 49 6e 74 50 74 72 20 4e 61 74 69 76 65 48 61   IntPtr NativeHa
11080 6e 64 6c 65 20 7b 20 67 65 74 3b 20 7d 0d 0a 20  ndle { get; }.. 
11090 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65     }..    #endre
110a0 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  gion....    ////
110b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
110c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
110d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
110e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
110f0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23  ///////....    #
11100 72 65 67 69 6f 6e 20 49 53 51 4c 69 74 65 4e 61  region ISQLiteNa
11110 74 69 76 65 4d 6f 64 75 6c 65 20 49 6e 74 65 72  tiveModule Inter
11120 66 61 63 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  face..    /// <s
11130 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
11140 20 54 68 69 73 20 69 6e 74 65 72 66 61 63 65 20   This interface 
11150 72 65 70 72 65 73 65 6e 74 73 20 61 20 76 69 72  represents a vir
11160 74 75 61 6c 20 74 61 62 6c 65 20 69 6d 70 6c 65  tual table imple
11170 6d 65 6e 74 61 74 69 6f 6e 20 77 72 69 74 74 65  mentation writte
11180 6e 20 69 6e 0d 0a 20 20 20 20 2f 2f 2f 20 6e 61  n in..    /// na
11190 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20  tive code...    
111a0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
111b0 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 65 72      public inter
111c0 66 61 63 65 20 49 53 51 4c 69 74 65 4e 61 74 69  face ISQLiteNati
111d0 76 65 4d 6f 64 75 6c 65 0d 0a 20 20 20 20 7b 0d  veModule..    {.
111e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
111f0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
11200 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
11210 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74      /// This met
11220 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 74 6f  hod is called to
11230 20 63 72 65 61 74 65 20 61 20 6e 65 77 20 69 6e   create a new in
11240 73 74 61 6e 63 65 20 6f 66 20 61 20 76 69 72 74  stance of a virt
11250 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20 20  ual table..     
11260 20 20 20 2f 2f 2f 20 69 6e 20 72 65 73 70 6f 6e     /// in respon
11270 73 65 20 74 6f 20 61 20 43 52 45 41 54 45 20 56  se to a CREATE V
11280 49 52 54 55 41 4c 20 54 41 42 4c 45 20 73 74 61  IRTUAL TABLE sta
11290 74 65 6d 65 6e 74 2e 20 54 68 65 20 64 62 20 70  tement. The db p
112a0 61 72 61 6d 65 74 65 72 0d 0a 20 20 20 20 20 20  arameter..      
112b0 20 20 2f 2f 2f 20 69 73 20 61 20 70 6f 69 6e 74    /// is a point
112c0 65 72 20 74 6f 20 74 68 65 20 53 51 4c 69 74 65  er to the SQLite
112d0 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
112e0 74 69 6f 6e 20 74 68 61 74 20 69 73 20 65 78 65  tion that is exe
112f0 63 75 74 69 6e 67 0d 0a 20 20 20 20 20 20 20 20  cuting..        
11300 2f 2f 2f 20 74 68 65 20 43 52 45 41 54 45 20 56  /// the CREATE V
11310 49 52 54 55 41 4c 20 54 41 42 4c 45 20 73 74 61  IRTUAL TABLE sta
11320 74 65 6d 65 6e 74 2e 20 54 68 65 20 70 41 75 78  tement. The pAux
11330 20 61 72 67 75 6d 65 6e 74 20 69 73 20 74 68 65   argument is the
11340 20 63 6f 70 79 0d 0a 20 20 20 20 20 20 20 20 2f   copy..        /
11350 2f 2f 20 6f 66 20 74 68 65 20 63 6c 69 65 6e 74  // of the client
11360 20 64 61 74 61 20 70 6f 69 6e 74 65 72 20 74 68   data pointer th
11370 61 74 20 77 61 73 20 74 68 65 20 66 6f 75 72 74  at was the fourt
11380 68 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 74 68  h argument to th
11390 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  e..        /// s
113a0 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 6d 6f  qlite3_create_mo
113b0 64 75 6c 65 28 29 20 6f 72 20 73 71 6c 69 74 65  dule() or sqlite
113c0 33 5f 63 72 65 61 74 65 5f 6d 6f 64 75 6c 65 5f  3_create_module_
113d0 76 32 28 29 20 63 61 6c 6c 20 74 68 61 74 0d 0a  v2() call that..
113e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 72 65 67 69          /// regi
113f0 73 74 65 72 65 64 20 74 68 65 20 76 69 72 74 75  stered the virtu
11400 61 6c 20 74 61 62 6c 65 20 6d 6f 64 75 6c 65 2e  al table module.
11410 20 54 68 65 20 61 72 67 76 20 70 61 72 61 6d 65   The argv parame
11420 74 65 72 20 69 73 20 61 6e 0d 0a 20 20 20 20 20  ter is an..     
11430 20 20 20 2f 2f 2f 20 61 72 72 61 79 20 6f 66 20     /// array of 
11440 61 72 67 63 20 70 6f 69 6e 74 65 72 73 20 74 6f  argc pointers to
11450 20 6e 75 6c 6c 20 74 65 72 6d 69 6e 61 74 65 64   null terminated
11460 20 73 74 72 69 6e 67 73 2e 20 54 68 65 20 66 69   strings. The fi
11470 72 73 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  rst..        ///
11480 20 73 74 72 69 6e 67 2c 20 61 72 67 76 5b 30 5d   string, argv[0]
11490 2c 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66  , is the name of
114a0 20 74 68 65 20 6d 6f 64 75 6c 65 20 62 65 69 6e   the module bein
114b0 67 20 69 6e 76 6f 6b 65 64 2e 20 54 68 65 0d 0a  g invoked. The..
114c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 6f 64 75          /// modu
114d0 6c 65 20 6e 61 6d 65 20 69 73 20 74 68 65 20 6e  le name is the n
114e0 61 6d 65 20 70 72 6f 76 69 64 65 64 20 61 73 20  ame provided as 
114f0 74 68 65 20 73 65 63 6f 6e 64 20 61 72 67 75 6d  the second argum
11500 65 6e 74 20 74 6f 0d 0a 20 20 20 20 20 20 20 20  ent to..        
11510 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 63 72 65 61  /// sqlite3_crea
11520 74 65 5f 6d 6f 64 75 6c 65 28 29 20 61 6e 64 20  te_module() and 
11530 61 73 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20  as the argument 
11540 74 6f 20 74 68 65 20 55 53 49 4e 47 20 63 6c 61  to the USING cla
11550 75 73 65 20 6f 66 0d 0a 20 20 20 20 20 20 20 20  use of..        
11560 2f 2f 2f 20 74 68 65 20 43 52 45 41 54 45 20 56  /// the CREATE V
11570 49 52 54 55 41 4c 20 54 41 42 4c 45 20 73 74 61  IRTUAL TABLE sta
11580 74 65 6d 65 6e 74 20 74 68 61 74 20 69 73 20 72  tement that is r
11590 75 6e 6e 69 6e 67 2e 20 54 68 65 20 73 65 63 6f  unning. The seco
115a0 6e 64 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  nd,..        ///
115b0 20 61 72 67 76 5b 31 5d 2c 20 69 73 20 74 68 65   argv[1], is the
115c0 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 64 61 74   name of the dat
115d0 61 62 61 73 65 20 69 6e 20 77 68 69 63 68 20 74  abase in which t
115e0 68 65 20 6e 65 77 20 76 69 72 74 75 61 6c 20 74  he new virtual t
115f0 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  able..        //
11600 2f 20 69 73 20 62 65 69 6e 67 20 63 72 65 61 74  / is being creat
11610 65 64 2e 20 54 68 65 20 64 61 74 61 62 61 73 65  ed. The database
11620 20 6e 61 6d 65 20 69 73 20 22 6d 61 69 6e 22 20   name is "main" 
11630 66 6f 72 20 74 68 65 20 70 72 69 6d 61 72 79 0d  for the primary.
11640 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 61 74  .        /// dat
11650 61 62 61 73 65 2c 20 6f 72 20 22 74 65 6d 70 22  abase, or "temp"
11660 20 66 6f 72 20 54 45 4d 50 20 64 61 74 61 62 61   for TEMP databa
11670 73 65 2c 20 6f 72 20 74 68 65 20 6e 61 6d 65 20  se, or the name 
11680 67 69 76 65 6e 20 61 74 20 74 68 65 0d 0a 20 20  given at the..  
11690 20 20 20 20 20 20 2f 2f 2f 20 65 6e 64 20 6f 66        /// end of
116a0 20 74 68 65 20 41 54 54 41 43 48 20 73 74 61 74   the ATTACH stat
116b0 65 6d 65 6e 74 20 66 6f 72 20 61 74 74 61 63 68  ement for attach
116c0 65 64 20 64 61 74 61 62 61 73 65 73 2e 20 54 68  ed databases. Th
116d0 65 20 74 68 69 72 64 0d 0a 20 20 20 20 20 20 20  e third..       
116e0 20 2f 2f 2f 20 65 6c 65 6d 65 6e 74 20 6f 66 20   /// element of 
116f0 74 68 65 20 61 72 72 61 79 2c 20 61 72 67 76 5b  the array, argv[
11700 32 5d 2c 20 69 73 20 74 68 65 20 6e 61 6d 65 20  2], is the name 
11710 6f 66 20 74 68 65 20 6e 65 77 20 76 69 72 74 75  of the new virtu
11720 61 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  al..        /// 
11730 74 61 62 6c 65 2c 20 61 73 20 73 70 65 63 69 66  table, as specif
11740 69 65 64 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 68  ied following th
11750 65 20 54 41 42 4c 45 20 6b 65 79 77 6f 72 64 20  e TABLE keyword 
11760 69 6e 20 74 68 65 20 43 52 45 41 54 45 0d 0a 20  in the CREATE.. 
11770 20 20 20 20 20 20 20 2f 2f 2f 20 56 49 52 54 55         /// VIRTU
11780 41 4c 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65  AL TABLE stateme
11790 6e 74 2e 20 49 66 20 70 72 65 73 65 6e 74 2c 20  nt. If present, 
117a0 74 68 65 20 66 6f 75 72 74 68 20 61 6e 64 20 73  the fourth and s
117b0 75 62 73 65 71 75 65 6e 74 0d 0a 20 20 20 20 20  ubsequent..     
117c0 20 20 20 2f 2f 2f 20 73 74 72 69 6e 67 73 20 69     /// strings i
117d0 6e 20 74 68 65 20 61 72 67 76 5b 5d 20 61 72 72  n the argv[] arr
117e0 61 79 20 72 65 70 6f 72 74 20 74 68 65 20 61 72  ay report the ar
117f0 67 75 6d 65 6e 74 73 20 74 6f 20 74 68 65 20 6d  guments to the m
11800 6f 64 75 6c 65 20 6e 61 6d 65 0d 0a 20 20 20 20  odule name..    
11810 20 20 20 20 2f 2f 2f 20 69 6e 20 74 68 65 20 43      /// in the C
11820 52 45 41 54 45 20 56 49 52 54 55 41 4c 20 54 41  REATE VIRTUAL TA
11830 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 2e 0d 0a  BLE statement...
11840 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
11850 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
11860 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
11870 20 2f 2f 2f 20 54 68 65 20 6a 6f 62 20 6f 66 20   /// The job of 
11880 74 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 74  this method is t
11890 6f 20 63 6f 6e 73 74 72 75 63 74 20 74 68 65 20  o construct the 
118a0 6e 65 77 20 76 69 72 74 75 61 6c 20 74 61 62 6c  new virtual tabl
118b0 65 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20 20  e object..      
118c0 20 20 2f 2f 2f 20 28 61 6e 20 73 71 6c 69 74 65    /// (an sqlite
118d0 33 5f 76 74 61 62 20 6f 62 6a 65 63 74 29 20 61  3_vtab object) a
118e0 6e 64 20 72 65 74 75 72 6e 20 61 20 70 6f 69 6e  nd return a poin
118f0 74 65 72 20 74 6f 20 69 74 20 69 6e 20 2a 70 70  ter to it in *pp
11900 56 54 61 62 2e 0d 0a 20 20 20 20 20 20 20 20 2f  VTab...        /
11910 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20  // </para>..    
11920 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a      /// <para>..
11930 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 73 20 70          /// As p
11940 61 72 74 20 6f 66 20 74 68 65 20 74 61 73 6b 20  art of the task 
11950 6f 66 20 63 72 65 61 74 69 6e 67 20 61 20 6e 65  of creating a ne
11960 77 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 73  w sqlite3_vtab s
11970 74 72 75 63 74 75 72 65 2c 20 74 68 69 73 0d 0a  tructure, this..
11980 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68          /// meth
11990 6f 64 20 6d 75 73 74 20 69 6e 76 6f 6b 65 20 73  od must invoke s
119a0 71 6c 69 74 65 33 5f 64 65 63 6c 61 72 65 5f 76  qlite3_declare_v
119b0 74 61 62 28 29 20 74 6f 20 74 65 6c 6c 20 74 68  tab() to tell th
119c0 65 20 53 51 4c 69 74 65 20 63 6f 72 65 0d 0a 20  e SQLite core.. 
119d0 20 20 20 20 20 20 20 2f 2f 2f 20 61 62 6f 75 74         /// about
119e0 20 74 68 65 20 63 6f 6c 75 6d 6e 73 20 61 6e 64   the columns and
119f0 20 64 61 74 61 74 79 70 65 73 20 69 6e 20 74 68   datatypes in th
11a00 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e  e virtual table.
11a10 20 54 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   The..        //
11a20 2f 20 73 71 6c 69 74 65 33 5f 64 65 63 6c 61 72  / sqlite3_declar
11a30 65 5f 76 74 61 62 28 29 20 41 50 49 20 68 61 73  e_vtab() API has
11a40 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 70   the following p
11a50 72 6f 74 6f 74 79 70 65 3a 0d 0a 20 20 20 20 20  rototype:..     
11a60 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a     /// </para>..
11a70 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
11a80 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
11a90 3c 63 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20 20  <code>..        
11aa0 2f 2f 2f 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  /// int sqlite3_
11ab0 64 65 63 6c 61 72 65 5f 76 74 61 62 28 73 71 6c  declare_vtab(sql
11ac0 69 74 65 33 20 2a 64 62 2c 20 63 6f 6e 73 74 20  ite3 *db, const 
11ad0 63 68 61 72 20 2a 7a 43 72 65 61 74 65 54 61 62  char *zCreateTab
11ae0 6c 65 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le)..        ///
11af0 20 3c 2f 63 6f 64 65 3e 0d 0a 20 20 20 20 20 20   </code>..      
11b00 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
11b10 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
11b20 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
11b30 68 65 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e  he first argumen
11b40 74 20 74 6f 20 73 71 6c 69 74 65 33 5f 64 65 63  t to sqlite3_dec
11b50 6c 61 72 65 5f 76 74 61 62 28 29 20 6d 75 73 74  lare_vtab() must
11b60 20 62 65 20 74 68 65 20 73 61 6d 65 0d 0a 20 20   be the same..  
11b70 20 20 20 20 20 20 2f 2f 2f 20 64 61 74 61 62 61        /// databa
11b80 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 70 6f  se connection po
11b90 69 6e 74 65 72 20 61 73 20 74 68 65 20 66 69 72  inter as the fir
11ba0 73 74 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20  st parameter to 
11bb0 74 68 69 73 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  this method...  
11bc0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 65        /// The se
11bd0 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74 20 74 6f  cond argument to
11be0 20 73 71 6c 69 74 65 33 5f 64 65 63 6c 61 72 65   sqlite3_declare
11bf0 5f 76 74 61 62 28 29 20 6d 75 73 74 20 61 0d 0a  _vtab() must a..
11c00 20 20 20 20 20 20 20 20 2f 2f 2f 20 7a 65 72 6f          /// zero
11c10 2d 74 65 72 6d 69 6e 61 74 65 64 20 55 54 46 2d  -terminated UTF-
11c20 38 20 73 74 72 69 6e 67 20 74 68 61 74 20 63 6f  8 string that co
11c30 6e 74 61 69 6e 73 20 61 20 77 65 6c 6c 2d 66 6f  ntains a well-fo
11c40 72 6d 65 64 20 43 52 45 41 54 45 0d 0a 20 20 20  rmed CREATE..   
11c50 20 20 20 20 20 2f 2f 2f 20 54 41 42 4c 45 20 73       /// TABLE s
11c60 74 61 74 65 6d 65 6e 74 20 74 68 61 74 20 64 65  tatement that de
11c70 66 69 6e 65 73 20 74 68 65 20 63 6f 6c 75 6d 6e  fines the column
11c80 73 20 69 6e 20 74 68 65 20 76 69 72 74 75 61 6c  s in the virtual
11c90 20 74 61 62 6c 65 20 61 6e 64 0d 0a 20 20 20 20   table and..    
11ca0 20 20 20 20 2f 2f 2f 20 74 68 65 69 72 20 64 61      /// their da
11cb0 74 61 20 74 79 70 65 73 2e 20 54 68 65 20 6e 61  ta types. The na
11cc0 6d 65 20 6f 66 20 74 68 65 20 74 61 62 6c 65 20  me of the table 
11cd0 69 6e 20 74 68 69 73 20 43 52 45 41 54 45 20 54  in this CREATE T
11ce0 41 42 4c 45 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ABLE..        //
11cf0 2f 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 69  / statement is i
11d00 67 6e 6f 72 65 64 2c 20 61 73 20 61 72 65 20 61  gnored, as are a
11d10 6c 6c 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 20  ll constraints. 
11d20 4f 6e 6c 79 20 74 68 65 20 63 6f 6c 75 6d 6e 20  Only the column 
11d30 6e 61 6d 65 73 0d 0a 20 20 20 20 20 20 20 20 2f  names..        /
11d40 2f 2f 20 61 6e 64 20 64 61 74 61 74 79 70 65 73  // and datatypes
11d50 20 6d 61 74 74 65 72 2e 20 54 68 65 20 43 52 45   matter. The CRE
11d60 41 54 45 20 54 41 42 4c 45 20 73 74 61 74 65 6d  ATE TABLE statem
11d70 65 6e 74 20 73 74 72 69 6e 67 20 6e 65 65 64 20  ent string need 
11d80 6e 6f 74 20 74 6f 0d 0a 20 20 20 20 20 20 20 20  not to..        
11d90 2f 2f 2f 20 62 65 20 68 65 6c 64 20 69 6e 20 70  /// be held in p
11da0 65 72 73 69 73 74 65 6e 74 20 6d 65 6d 6f 72 79  ersistent memory
11db0 2e 20 54 68 65 20 73 74 72 69 6e 67 20 63 61 6e  . The string can
11dc0 20 62 65 20 64 65 61 6c 6c 6f 63 61 74 65 64 20   be deallocated 
11dd0 61 6e 64 2f 6f 72 0d 0a 20 20 20 20 20 20 20 20  and/or..        
11de0 2f 2f 2f 20 72 65 75 73 65 64 20 61 73 20 73 6f  /// reused as so
11df0 6f 6e 20 61 73 20 74 68 65 20 73 71 6c 69 74 65  on as the sqlite
11e00 33 5f 64 65 63 6c 61 72 65 5f 76 74 61 62 28 29  3_declare_vtab()
11e10 20 72 6f 75 74 69 6e 65 20 72 65 74 75 72 6e 73   routine returns
11e20 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
11e30 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
11e40 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
11e50 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
11e60 61 6d 20 6e 61 6d 65 3d 22 70 44 62 22 3e 0d 0a  am name="pDb">..
11e70 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
11e80 6e 61 74 69 76 65 20 64 61 74 61 62 61 73 65 20  native database 
11e90 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 6e 64 6c  connection handl
11ea0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
11eb0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
11ec0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
11ed0 65 3d 22 70 41 75 78 22 3e 0d 0a 20 20 20 20 20  e="pAux">..     
11ee0 20 20 20 2f 2f 2f 20 54 68 65 20 6f 72 69 67 69     /// The origi
11ef0 6e 61 6c 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  nal native point
11f00 65 72 20 76 61 6c 75 65 20 74 68 61 74 20 77 61  er value that wa
11f10 73 20 70 72 6f 76 69 64 65 64 20 74 6f 20 74 68  s provided to th
11f20 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  e..        /// s
11f30 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 6d 6f  qlite3_create_mo
11f40 64 75 6c 65 28 29 2c 20 73 71 6c 69 74 65 33 5f  dule(), sqlite3_
11f50 63 72 65 61 74 65 5f 6d 6f 64 75 6c 65 5f 76 32  create_module_v2
11f60 28 29 20 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f  () or..        /
11f70 2f 2f 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74  // sqlite3_creat
11f80 65 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64  e_disposable_mod
11f90 75 6c 65 28 29 20 66 75 6e 63 74 69 6f 6e 73 2e  ule() functions.
11fa0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
11fb0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
11fc0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
11fd0 22 61 72 67 63 22 3e 0d 0a 20 20 20 20 20 20 20  "argc">..       
11fe0 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20   /// The number 
11ff0 6f 66 20 61 72 67 75 6d 65 6e 74 73 20 66 72 6f  of arguments fro
12000 6d 20 74 68 65 20 43 52 45 41 54 45 20 56 49 52  m the CREATE VIR
12010 54 55 41 4c 20 54 41 42 4c 45 20 73 74 61 74 65  TUAL TABLE state
12020 6d 65 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ment...        /
12030 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
12040 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
12050 6e 61 6d 65 3d 22 61 72 67 76 22 3e 0d 0a 20 20  name="argv">..  
12060 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 72        /// The ar
12070 72 61 79 20 6f 66 20 73 74 72 69 6e 67 20 61 72  ray of string ar
12080 67 75 6d 65 6e 74 73 20 66 72 6f 6d 20 74 68 65  guments from the
12090 20 43 52 45 41 54 45 20 56 49 52 54 55 41 4c 20   CREATE VIRTUAL 
120a0 54 41 42 4c 45 0d 0a 20 20 20 20 20 20 20 20 2f  TABLE..        /
120b0 2f 2f 20 73 74 61 74 65 6d 65 6e 74 2e 0d 0a 20  // statement... 
120c0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
120d0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
120e0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
120f0 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  tab">..        /
12100 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c  // Upon success,
12110 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20   this parameter 
12120 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64  must be modified
12130 20 74 6f 20 70 6f 69 6e 74 20 74 6f 20 74 68 65   to point to the
12140 20 6e 65 77 6c 79 0d 0a 20 20 20 20 20 20 20 20   newly..        
12150 2f 2f 2f 20 63 72 65 61 74 65 64 20 6e 61 74 69  /// created nati
12160 76 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20  ve sqlite3_vtab 
12170 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72  derived structur
12180 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
12190 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
121a0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
121b0 65 3d 22 70 45 72 72 6f 72 22 3e 0d 0a 20 20 20  e="pError">..   
121c0 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 66 61       /// Upon fa
121d0 69 6c 75 72 65 2c 20 74 68 69 73 20 70 61 72 61  ilure, this para
121e0 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f  meter must be mo
121f0 64 69 66 69 65 64 20 74 6f 20 70 6f 69 6e 74 20  dified to point 
12200 74 6f 20 74 68 65 20 65 72 72 6f 72 0d 0a 20 20  to the error..  
12210 20 20 20 20 20 20 2f 2f 2f 20 6d 65 73 73 61 67        /// messag
12220 65 2c 20 77 69 74 68 20 74 68 65 20 75 6e 64 65  e, with the unde
12230 72 6c 79 69 6e 67 20 6d 65 6d 6f 72 79 20 68 61  rlying memory ha
12240 76 69 6e 67 20 62 65 65 6e 20 6f 62 74 61 69 6e  ving been obtain
12250 65 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20  ed from the..   
12260 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33       /// sqlite3
12270 5f 6d 61 6c 6c 6f 63 28 29 20 66 75 6e 63 74 69  _malloc() functi
12280 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  on...        ///
12290 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
122a0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
122b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20  ..        /// A 
122c0 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20  standard SQLite 
122d0 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20  return code...  
122e0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
122f0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51  rns>..        SQ
12300 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43  LiteErrorCode xC
12310 72 65 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20  reate(..        
12320 20 20 20 20 49 6e 74 50 74 72 20 70 44 62 2c 0d      IntPtr pDb,.
12330 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
12340 50 74 72 20 70 41 75 78 2c 0d 0a 20 20 20 20 20  Ptr pAux,..     
12350 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c         int argc,
12360 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
12370 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20 20 20  tPtr argv,..    
12380 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50          ref IntP
12390 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
123a0 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74         ref IntPt
123b0 72 20 70 45 72 72 6f 72 0d 0a 20 20 20 20 20 20  r pError..      
123c0 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20        );....    
123d0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
123e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
123f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
12420 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
12430 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
12440 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
12450 20 20 2f 2f 2f 20 54 68 65 20 78 43 6f 6e 6e 65    /// The xConne
12460 63 74 20 6d 65 74 68 6f 64 20 69 73 20 76 65 72  ct method is ver
12470 79 20 73 69 6d 69 6c 61 72 20 74 6f 20 78 43 72  y similar to xCr
12480 65 61 74 65 2e 20 49 74 20 68 61 73 20 74 68 65  eate. It has the
12490 20 73 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 2f   same..        /
124a0 2f 2f 20 70 61 72 61 6d 65 74 65 72 73 20 61 6e  // parameters an
124b0 64 20 63 6f 6e 73 74 72 75 63 74 73 20 61 20 6e  d constructs a n
124c0 65 77 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20  ew sqlite3_vtab 
124d0 73 74 72 75 63 74 75 72 65 20 6a 75 73 74 20 6c  structure just l
124e0 69 6b 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ike..        ///
124f0 20 78 43 72 65 61 74 65 2e 20 41 6e 64 20 69 74   xCreate. And it
12500 20 6d 75 73 74 20 61 6c 73 6f 20 63 61 6c 6c 20   must also call 
12510 73 71 6c 69 74 65 33 5f 64 65 63 6c 61 72 65 5f  sqlite3_declare_
12520 76 74 61 62 28 29 20 6c 69 6b 65 20 78 43 72 65  vtab() like xCre
12530 61 74 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ate...        //
12540 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20  / </para>..     
12550 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20     /// <para>.. 
12560 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 64         /// The d
12570 69 66 66 65 72 65 6e 63 65 20 69 73 20 74 68 61  ifference is tha
12580 74 20 78 43 6f 6e 6e 65 63 74 20 69 73 20 63 61  t xConnect is ca
12590 6c 6c 65 64 20 74 6f 20 65 73 74 61 62 6c 69 73  lled to establis
125a0 68 20 61 20 6e 65 77 0d 0a 20 20 20 20 20 20 20  h a new..       
125b0 20 2f 2f 2f 20 63 6f 6e 6e 65 63 74 69 6f 6e 20   /// connection 
125c0 74 6f 20 61 6e 20 65 78 69 73 74 69 6e 67 20 76  to an existing v
125d0 69 72 74 75 61 6c 20 74 61 62 6c 65 20 77 68 65  irtual table whe
125e0 72 65 61 73 20 78 43 72 65 61 74 65 20 69 73 20  reas xCreate is 
125f0 63 61 6c 6c 65 64 0d 0a 20 20 20 20 20 20 20 20  called..        
12600 2f 2f 2f 20 74 6f 20 63 72 65 61 74 65 20 61 20  /// to create a 
12610 6e 65 77 20 76 69 72 74 75 61 6c 20 74 61 62 6c  new virtual tabl
12620 65 20 66 72 6f 6d 20 73 63 72 61 74 63 68 2e 0d  e from scratch..
12630 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
12640 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
12650 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
12660 20 20 2f 2f 2f 20 54 68 65 20 78 43 72 65 61 74    /// The xCreat
12670 65 20 61 6e 64 20 78 43 6f 6e 6e 65 63 74 20 6d  e and xConnect m
12680 65 74 68 6f 64 73 20 61 72 65 20 6f 6e 6c 79 20  ethods are only 
12690 64 69 66 66 65 72 65 6e 74 20 77 68 65 6e 20 74  different when t
126a0 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
126b0 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 68 61  virtual table ha
126c0 73 20 73 6f 6d 65 20 6b 69 6e 64 20 6f 66 20 62  s some kind of b
126d0 61 63 6b 69 6e 67 20 73 74 6f 72 65 20 74 68 61  acking store tha
126e0 74 20 6d 75 73 74 20 62 65 0d 0a 20 20 20 20 20  t must be..     
126f0 20 20 20 2f 2f 2f 20 69 6e 69 74 69 61 6c 69 7a     /// initializ
12700 65 64 20 74 68 65 20 66 69 72 73 74 20 74 69 6d  ed the first tim
12710 65 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  e the virtual ta
12720 62 6c 65 20 69 73 20 63 72 65 61 74 65 64 2e 20  ble is created. 
12730 54 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  The..        ///
12740 20 78 43 72 65 61 74 65 20 6d 65 74 68 6f 64 20   xCreate method 
12750 63 72 65 61 74 65 73 20 61 6e 64 20 69 6e 69 74  creates and init
12760 69 61 6c 69 7a 65 73 20 74 68 65 20 62 61 63 6b  ializes the back
12770 69 6e 67 20 73 74 6f 72 65 2e 20 54 68 65 0d 0a  ing store. The..
12780 20 20 20 20 20 20 20 20 2f 2f 2f 20 78 43 6f 6e          /// xCon
12790 6e 65 63 74 20 6d 65 74 68 6f 64 20 6a 75 73 74  nect method just
127a0 20 63 6f 6e 6e 65 63 74 73 20 74 6f 20 61 6e 20   connects to an 
127b0 65 78 69 73 74 69 6e 67 20 62 61 63 6b 69 6e 67  existing backing
127c0 20 73 74 6f 72 65 2e 0d 0a 20 20 20 20 20 20 20   store...       
127d0 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
127e0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
127f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 73  ..        /// As
12800 20 61 6e 20 65 78 61 6d 70 6c 65 2c 20 63 6f 6e   an example, con
12810 73 69 64 65 72 20 61 20 76 69 72 74 75 61 6c 20  sider a virtual 
12820 74 61 62 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61  table implementa
12830 74 69 6f 6e 20 74 68 61 74 0d 0a 20 20 20 20 20  tion that..     
12840 20 20 20 2f 2f 2f 20 70 72 6f 76 69 64 65 73 20     /// provides 
12850 72 65 61 64 2d 6f 6e 6c 79 20 61 63 63 65 73 73  read-only access
12860 20 74 6f 20 65 78 69 73 74 69 6e 67 20 63 6f 6d   to existing com
12870 6d 61 2d 73 65 70 61 72 61 74 65 64 2d 76 61 6c  ma-separated-val
12880 75 65 20 28 43 53 56 29 0d 0a 20 20 20 20 20 20  ue (CSV)..      
12890 20 20 2f 2f 2f 20 66 69 6c 65 73 20 6f 6e 20 64    /// files on d
128a0 69 73 6b 2e 20 54 68 65 72 65 20 69 73 20 6e 6f  isk. There is no
128b0 20 62 61 63 6b 69 6e 67 20 73 74 6f 72 65 20 74   backing store t
128c0 68 61 74 20 6e 65 65 64 73 20 74 6f 20 62 65 20  hat needs to be 
128d0 63 72 65 61 74 65 64 0d 0a 20 20 20 20 20 20 20  created..       
128e0 20 2f 2f 2f 20 6f 72 20 69 6e 69 74 69 61 6c 69   /// or initiali
128f0 7a 65 64 20 66 6f 72 20 73 75 63 68 20 61 20 76  zed for such a v
12900 69 72 74 75 61 6c 20 74 61 62 6c 65 20 28 73 69  irtual table (si
12910 6e 63 65 20 74 68 65 20 43 53 56 20 66 69 6c 65  nce the CSV file
12920 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61  s..        /// a
12930 6c 72 65 61 64 79 20 65 78 69 73 74 20 6f 6e 20  lready exist on 
12940 64 69 73 6b 29 20 73 6f 20 74 68 65 20 78 43 72  disk) so the xCr
12950 65 61 74 65 20 61 6e 64 20 78 43 6f 6e 6e 65 63  eate and xConnec
12960 74 20 6d 65 74 68 6f 64 73 20 77 69 6c 6c 20 62  t methods will b
12970 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  e..        /// i
12980 64 65 6e 74 69 63 61 6c 20 66 6f 72 20 74 68 61  dentical for tha
12990 74 20 6d 6f 64 75 6c 65 2e 0d 0a 20 20 20 20 20  t module...     
129a0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a     /// </para>..
129b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
129c0 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
129d0 41 6e 6f 74 68 65 72 20 65 78 61 6d 70 6c 65 20  Another example 
129e0 69 73 20 61 20 76 69 72 74 75 61 6c 20 74 61 62  is a virtual tab
129f0 6c 65 20 74 68 61 74 20 69 6d 70 6c 65 6d 65 6e  le that implemen
12a00 74 73 20 61 20 66 75 6c 6c 2d 74 65 78 74 0d 0a  ts a full-text..
12a10 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 64 65          /// inde
12a20 78 2e 20 54 68 65 20 78 43 72 65 61 74 65 20 6d  x. The xCreate m
12a30 65 74 68 6f 64 20 6d 75 73 74 20 63 72 65 61 74  ethod must creat
12a40 65 20 61 6e 64 20 69 6e 69 74 69 61 6c 69 7a 65  e and initialize
12a50 20 64 61 74 61 0d 0a 20 20 20 20 20 20 20 20 2f   data..        /
12a60 2f 2f 20 73 74 72 75 63 74 75 72 65 73 20 74 6f  // structures to
12a70 20 68 6f 6c 64 20 74 68 65 20 64 69 63 74 69 6f   hold the dictio
12a80 6e 61 72 79 20 61 6e 64 20 70 6f 73 74 69 6e 67  nary and posting
12a90 20 6c 69 73 74 73 20 66 6f 72 20 74 68 61 74 20   lists for that 
12aa0 69 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20 20 20  index...        
12ab0 2f 2f 2f 20 54 68 65 20 78 43 6f 6e 6e 65 63 74  /// The xConnect
12ac0 20 6d 65 74 68 6f 64 2c 20 6f 6e 20 74 68 65 20   method, on the 
12ad0 6f 74 68 65 72 20 68 61 6e 64 2c 20 6f 6e 6c 79  other hand, only
12ae0 20 68 61 73 20 74 6f 20 6c 6f 63 61 74 65 20 61   has to locate a
12af0 6e 64 20 75 73 65 0d 0a 20 20 20 20 20 20 20 20  nd use..        
12b00 2f 2f 2f 20 61 6e 20 65 78 69 73 74 69 6e 67 20  /// an existing 
12b10 64 69 63 74 69 6f 6e 61 72 79 20 61 6e 64 20 70  dictionary and p
12b20 6f 73 74 69 6e 67 20 6c 69 73 74 73 20 74 68 61  osting lists tha
12b30 74 20 77 65 72 65 20 63 72 65 61 74 65 64 20 62  t were created b
12b40 79 20 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  y a..        ///
12b50 20 70 72 69 6f 72 20 78 43 72 65 61 74 65 20 63   prior xCreate c
12b60 61 6c 6c 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  all...        //
12b70 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20  / </para>..     
12b80 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20     /// <para>.. 
12b90 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 78         /// The x
12ba0 43 6f 6e 6e 65 63 74 20 6d 65 74 68 6f 64 20 6d  Connect method m
12bb0 75 73 74 20 72 65 74 75 72 6e 20 53 51 4c 49 54  ust return SQLIT
12bc0 45 5f 4f 4b 20 69 66 20 69 74 20 69 73 20 73 75  E_OK if it is su
12bd0 63 63 65 73 73 66 75 6c 20 69 6e 0d 0a 20 20 20  ccessful in..   
12be0 20 20 20 20 20 2f 2f 2f 20 63 72 65 61 74 69 6e       /// creatin
12bf0 67 20 74 68 65 20 6e 65 77 20 76 69 72 74 75 61  g the new virtua
12c00 6c 20 74 61 62 6c 65 2c 20 6f 72 20 53 51 4c 49  l table, or SQLI
12c10 54 45 5f 45 52 52 4f 52 20 69 66 20 69 74 20 69  TE_ERROR if it i
12c20 73 20 6e 6f 74 0d 0a 20 20 20 20 20 20 20 20 2f  s not..        /
12c30 2f 2f 20 73 75 63 63 65 73 73 66 75 6c 2e 20 49  // successful. I
12c40 66 20 6e 6f 74 20 73 75 63 63 65 73 73 66 75 6c  f not successful
12c50 2c 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74  , the sqlite3_vt
12c60 61 62 20 73 74 72 75 63 74 75 72 65 20 6d 75 73  ab structure mus
12c70 74 20 6e 6f 74 0d 0a 20 20 20 20 20 20 20 20 2f  t not..        /
12c80 2f 2f 20 62 65 20 61 6c 6c 6f 63 61 74 65 64 2e  // be allocated.
12c90 20 41 6e 20 65 72 72 6f 72 20 6d 65 73 73 61 67   An error messag
12ca0 65 20 6d 61 79 20 6f 70 74 69 6f 6e 61 6c 6c 79  e may optionally
12cb0 20 62 65 20 72 65 74 75 72 6e 65 64 20 69 6e 20   be returned in 
12cc0 2a 70 7a 45 72 72 0d 0a 20 20 20 20 20 20 20 20  *pzErr..        
12cd0 2f 2f 2f 20 69 66 20 75 6e 73 75 63 63 65 73 73  /// if unsuccess
12ce0 66 75 6c 2e 20 53 70 61 63 65 20 74 6f 20 68 6f  ful. Space to ho
12cf0 6c 64 20 74 68 65 20 65 72 72 6f 72 20 6d 65 73  ld the error mes
12d00 73 61 67 65 20 73 74 72 69 6e 67 20 6d 75 73 74  sage string must
12d10 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   be..        ///
12d20 20 61 6c 6c 6f 63 61 74 65 64 20 75 73 69 6e 67   allocated using
12d30 20 61 6e 20 53 51 4c 69 74 65 20 6d 65 6d 6f 72   an SQLite memor
12d40 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 66 75 6e  y allocation fun
12d50 63 74 69 6f 6e 20 6c 69 6b 65 0d 0a 20 20 20 20  ction like..    
12d60 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f      /// sqlite3_
12d70 6d 61 6c 6c 6f 63 28 29 20 6f 72 20 73 71 6c 69  malloc() or sqli
12d80 74 65 33 5f 6d 70 72 69 6e 74 66 28 29 20 61 73  te3_mprintf() as
12d90 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
12da0 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f   will..        /
12db0 2f 2f 20 61 74 74 65 6d 70 74 20 74 6f 20 66 72  // attempt to fr
12dc0 65 65 20 74 68 65 20 73 70 61 63 65 20 75 73 69  ee the space usi
12dd0 6e 67 20 73 71 6c 69 74 65 33 5f 66 72 65 65 28  ng sqlite3_free(
12de0 29 20 61 66 74 65 72 20 74 68 65 20 65 72 72 6f  ) after the erro
12df0 72 20 68 61 73 0d 0a 20 20 20 20 20 20 20 20 2f  r has..        /
12e00 2f 2f 20 62 65 65 6e 20 72 65 70 6f 72 74 65 64  // been reported
12e10 20 75 70 20 74 6f 20 74 68 65 20 61 70 70 6c 69   up to the appli
12e20 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  cation...       
12e30 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
12e40 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
12e50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
12e60 65 20 78 43 6f 6e 6e 65 63 74 20 6d 65 74 68 6f  e xConnect metho
12e70 64 20 69 73 20 72 65 71 75 69 72 65 64 20 66 6f  d is required fo
12e80 72 20 65 76 65 72 79 20 76 69 72 74 75 61 6c 20  r every virtual 
12e90 74 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f  table..        /
12ea0 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  // implementatio
12eb0 6e 2c 20 74 68 6f 75 67 68 20 74 68 65 20 78 43  n, though the xC
12ec0 72 65 61 74 65 20 61 6e 64 20 78 43 6f 6e 6e 65  reate and xConne
12ed0 63 74 20 70 6f 69 6e 74 65 72 73 20 6f 66 20 74  ct pointers of t
12ee0 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
12ef0 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6f  sqlite3_module o
12f00 62 6a 65 63 74 20 6d 61 79 20 70 6f 69 6e 74 20  bject may point 
12f10 74 6f 20 74 68 65 20 73 61 6d 65 20 66 75 6e 63  to the same func
12f20 74 69 6f 6e 20 74 68 65 20 76 69 72 74 75 61 6c  tion the virtual
12f30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 61  ..        /// ta
12f40 62 6c 65 20 64 6f 65 73 20 6e 6f 74 20 6e 65 65  ble does not nee
12f50 64 20 74 6f 20 69 6e 69 74 69 61 6c 69 7a 65 20  d to initialize 
12f60 62 61 63 6b 69 6e 67 20 73 74 6f 72 65 2e 0d 0a  backing store...
12f70 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
12f80 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
12f90 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
12fa0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
12fb0 6e 61 6d 65 3d 22 70 44 62 22 3e 0d 0a 20 20 20  name="pDb">..   
12fc0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
12fd0 69 76 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e  ive database con
12fe0 6e 65 63 74 69 6f 6e 20 68 61 6e 64 6c 65 2e 0d  nection handle..
12ff0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
13000 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
13010 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
13020 70 41 75 78 22 3e 0d 0a 20 20 20 20 20 20 20 20  pAux">..        
13030 2f 2f 2f 20 54 68 65 20 6f 72 69 67 69 6e 61 6c  /// The original
13040 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
13050 76 61 6c 75 65 20 74 68 61 74 20 77 61 73 20 70  value that was p
13060 72 6f 76 69 64 65 64 20 74 6f 20 74 68 65 0d 0a  rovided to the..
13070 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69          /// sqli
13080 74 65 33 5f 63 72 65 61 74 65 5f 6d 6f 64 75 6c  te3_create_modul
13090 65 28 29 2c 20 73 71 6c 69 74 65 33 5f 63 72 65  e(), sqlite3_cre
130a0 61 74 65 5f 6d 6f 64 75 6c 65 5f 76 32 28 29 20  ate_module_v2() 
130b0 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  or..        /// 
130c0 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 64  sqlite3_create_d
130d0 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65  isposable_module
130e0 28 29 20 66 75 6e 63 74 69 6f 6e 73 2e 0d 0a 20  () functions... 
130f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
13100 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
13110 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72   <param name="ar
13120 67 63 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  gc">..        //
13130 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  / The number of 
13140 61 72 67 75 6d 65 6e 74 73 20 66 72 6f 6d 20 74  arguments from t
13150 68 65 20 43 52 45 41 54 45 20 56 49 52 54 55 41  he CREATE VIRTUA
13160 4c 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e  L TABLE statemen
13170 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  t...        /// 
13180 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
13190 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
131a0 65 3d 22 61 72 67 76 22 3e 0d 0a 20 20 20 20 20  e="argv">..     
131b0 20 20 20 2f 2f 2f 20 54 68 65 20 61 72 72 61 79     /// The array
131c0 20 6f 66 20 73 74 72 69 6e 67 20 61 72 67 75 6d   of string argum
131d0 65 6e 74 73 20 66 72 6f 6d 20 74 68 65 20 43 52  ents from the CR
131e0 45 41 54 45 20 56 49 52 54 55 41 4c 20 54 41 42  EATE VIRTUAL TAB
131f0 4c 45 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  LE..        /// 
13200 73 74 61 74 65 6d 65 6e 74 2e 0d 0a 20 20 20 20  statement...    
13210 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
13220 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
13230 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62  aram name="pVtab
13240 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
13250 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68  Upon success, th
13260 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73  is parameter mus
13270 74 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f  t be modified to
13280 20 70 6f 69 6e 74 20 74 6f 20 74 68 65 20 6e 65   point to the ne
13290 77 6c 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  wly..        ///
132a0 20 63 72 65 61 74 65 64 20 6e 61 74 69 76 65 20   created native 
132b0 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72  sqlite3_vtab der
132c0 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d  ived structure..
132d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
132e0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
132f0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
13300 70 45 72 72 6f 72 22 3e 0d 0a 20 20 20 20 20 20  pError">..      
13310 20 20 2f 2f 2f 20 55 70 6f 6e 20 66 61 69 6c 75    /// Upon failu
13320 72 65 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74  re, this paramet
13330 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66  er must be modif
13340 69 65 64 20 74 6f 20 70 6f 69 6e 74 20 74 6f 20  ied to point to 
13350 74 68 65 20 65 72 72 6f 72 0d 0a 20 20 20 20 20  the error..     
13360 20 20 20 2f 2f 2f 20 6d 65 73 73 61 67 65 2c 20     /// message, 
13370 77 69 74 68 20 74 68 65 20 75 6e 64 65 72 6c 79  with the underly
13380 69 6e 67 20 6d 65 6d 6f 72 79 20 68 61 76 69 6e  ing memory havin
13390 67 20 62 65 65 6e 20 6f 62 74 61 69 6e 65 64 20  g been obtained 
133a0 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20 20  from the..      
133b0 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 6d 61    /// sqlite3_ma
133c0 6c 6c 6f 63 28 29 20 66 75 6e 63 74 69 6f 6e 2e  lloc() function.
133d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
133e0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
133f0 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
13400 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61         /// A sta
13410 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74  ndard SQLite ret
13420 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  urn code...     
13430 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
13440 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  >..        SQLit
13450 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6f 6e 6e  eErrorCode xConn
13460 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ect(..          
13470 20 20 49 6e 74 50 74 72 20 70 44 62 2c 0d 0a 20    IntPtr pDb,.. 
13480 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
13490 72 20 70 41 75 78 2c 0d 0a 20 20 20 20 20 20 20  r pAux,..       
134a0 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a       int argc,..
134b0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
134c0 74 72 20 61 72 67 76 2c 0d 0a 20 20 20 20 20 20  tr argv,..      
134d0 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72        ref IntPtr
134e0 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20   pVtab,..       
134f0 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20       ref IntPtr 
13500 70 45 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20  pError..        
13510 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20      );....      
13520 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
13530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13560 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
13570 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
13580 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
13590 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
135a0 2f 2f 2f 20 53 51 4c 69 74 65 20 75 73 65 73 20  /// SQLite uses 
135b0 74 68 65 20 78 42 65 73 74 49 6e 64 65 78 20 6d  the xBestIndex m
135c0 65 74 68 6f 64 20 6f 66 20 61 20 76 69 72 74 75  ethod of a virtu
135d0 61 6c 20 74 61 62 6c 65 20 6d 6f 64 75 6c 65 20  al table module 
135e0 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  to..        /// 
135f0 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20 62 65  determine the be
13600 73 74 20 77 61 79 20 74 6f 20 61 63 63 65 73 73  st way to access
13610 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
13620 6c 65 2e 20 54 68 65 20 78 42 65 73 74 49 6e 64  le. The xBestInd
13630 65 78 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ex..        /// 
13640 6d 65 74 68 6f 64 20 68 61 73 20 61 20 70 72 6f  method has a pro
13650 74 6f 74 79 70 65 20 6c 69 6b 65 20 74 68 69 73  totype like this
13660 3a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  :..        /// <
13670 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
13680 2f 2f 2f 20 3c 63 6f 64 65 3e 0d 0a 20 20 20 20  /// <code>..    
13690 20 20 20 20 2f 2f 2f 20 69 6e 74 20 28 2a 78 42      /// int (*xB
136a0 65 73 74 49 6e 64 65 78 29 28 73 71 6c 69 74 65  estIndex)(sqlite
136b0 33 5f 76 74 61 62 20 2a 70 56 54 61 62 2c 20 73  3_vtab *pVTab, s
136c0 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66  qlite3_index_inf
136d0 6f 2a 29 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f  o*);..        //
136e0 2f 20 3c 2f 63 6f 64 65 3e 0d 0a 20 20 20 20 20  / </code>..     
136f0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20     /// <para>.. 
13700 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 53         /// The S
13710 51 4c 69 74 65 20 63 6f 72 65 20 63 6f 6d 6d 75  QLite core commu
13720 6e 69 63 61 74 65 73 20 77 69 74 68 20 74 68 65  nicates with the
13730 20 78 42 65 73 74 49 6e 64 65 78 20 6d 65 74 68   xBestIndex meth
13740 6f 64 20 62 79 20 66 69 6c 6c 69 6e 67 0d 0a 20  od by filling.. 
13750 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 20 63 65         /// in ce
13760 72 74 61 69 6e 20 66 69 65 6c 64 73 20 6f 66 20  rtain fields of 
13770 74 68 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65  the sqlite3_inde
13780 78 5f 69 6e 66 6f 20 73 74 72 75 63 74 75 72 65  x_info structure
13790 20 61 6e 64 20 70 61 73 73 69 6e 67 20 61 0d 0a   and passing a..
137a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 6f 69 6e          /// poin
137b0 74 65 72 20 74 6f 20 74 68 61 74 20 73 74 72 75  ter to that stru
137c0 63 74 75 72 65 20 69 6e 74 6f 20 78 42 65 73 74  cture into xBest
137d0 49 6e 64 65 78 20 61 73 20 74 68 65 20 73 65 63  Index as the sec
137e0 6f 6e 64 20 70 61 72 61 6d 65 74 65 72 2e 0d 0a  ond parameter...
137f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
13800 78 42 65 73 74 49 6e 64 65 78 20 6d 65 74 68 6f  xBestIndex metho
13810 64 20 66 69 6c 6c 73 20 6f 75 74 20 6f 74 68 65  d fills out othe
13820 72 20 66 69 65 6c 64 73 20 6f 66 20 74 68 69 73  r fields of this
13830 20 73 74 72 75 63 74 75 72 65 0d 0a 20 20 20 20   structure..    
13840 20 20 20 20 2f 2f 2f 20 77 68 69 63 68 20 66 6f      /// which fo
13850 72 6d 73 20 74 68 65 20 72 65 70 6c 79 2e 20 54  rms the reply. T
13860 68 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  he sqlite3_index
13870 5f 69 6e 66 6f 20 73 74 72 75 63 74 75 72 65 20  _info structure 
13880 6c 6f 6f 6b 73 20 6c 69 6b 65 0d 0a 20 20 20 20  looks like..    
13890 20 20 20 20 2f 2f 2f 20 74 68 69 73 3a 0d 0a 20      /// this:.. 
138a0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
138b0 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
138c0 3c 63 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20 20  <code>..        
138d0 2f 2f 2f 20 20 73 74 72 75 63 74 20 73 71 6c 69  ///  struct sqli
138e0 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 20 7b  te3_index_info {
138f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20  ..        ///   
13900 20 2f 2a 20 49 6e 70 75 74 73 20 2a 2f 0d 0a 20   /* Inputs */.. 
13910 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 63 6f         ///    co
13920 6e 73 74 20 69 6e 74 20 6e 43 6f 6e 73 74 72 61  nst int nConstra
13930 69 6e 74 3b 20 20 20 2f 2a 20 4e 75 6d 62 65 72  int;   /* Number
13940 20 6f 66 20 65 6e 74 72 69 65 73 20 69 6e 20 61   of entries in a
13950 43 6f 6e 73 74 72 61 69 6e 74 20 2a 2f 0d 0a 20  Constraint */.. 
13960 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 63 6f         ///    co
13970 6e 73 74 20 73 74 72 75 63 74 20 73 71 6c 69 74  nst struct sqlit
13980 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61  e3_index_constra
13990 69 6e 74 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f  int {..        /
139a0 2f 2f 20 20 20 20 20 20 20 69 6e 74 20 69 43 6f  //       int iCo
139b0 6c 75 6d 6e 3b 20 20 20 20 20 20 20 20 20 20 2f  lumn;          /
139c0 2a 20 43 6f 6c 75 6d 6e 20 6f 6e 20 6c 65 66 74  * Column on left
139d0 2d 68 61 6e 64 20 73 69 64 65 20 6f 66 0d 0a 20  -hand side of.. 
139e0 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20         ///      
139f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13a00 20 20 20 20 20 20 20 20 2a 20 63 6f 6e 73 74 72          * constr
13a10 61 69 6e 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20  aint */..       
13a20 20 2f 2f 2f 20 20 20 20 20 20 20 75 6e 73 69 67   ///       unsig
13a30 6e 65 64 20 63 68 61 72 20 6f 70 3b 20 20 20 20  ned char op;    
13a40 20 2f 2a 20 43 6f 6e 73 74 72 61 69 6e 74 20 6f   /* Constraint o
13a50 70 65 72 61 74 6f 72 20 2a 2f 0d 0a 20 20 20 20  perator */..    
13a60 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 75 6e      ///       un
13a70 73 69 67 6e 65 64 20 63 68 61 72 20 75 73 61 62  signed char usab
13a80 6c 65 3b 20 2f 2a 20 54 72 75 65 20 69 66 20 74  le; /* True if t
13a90 68 69 73 20 63 6f 6e 73 74 72 61 69 6e 74 20 69  his constraint i
13aa0 73 20 75 73 61 62 6c 65 20 2a 2f 0d 0a 20 20 20  s usable */..   
13ab0 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 69       ///       i
13ac0 6e 74 20 69 54 65 72 6d 4f 66 66 73 65 74 3b 20  nt iTermOffset; 
13ad0 20 20 20 20 20 2f 2a 20 55 73 65 64 20 69 6e 74       /* Used int
13ae0 65 72 6e 61 6c 6c 79 20 2d 20 78 42 65 73 74 49  ernally - xBestI
13af0 6e 64 65 78 20 73 68 6f 75 6c 64 0d 0a 20 20 20  ndex should..   
13b00 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20       ///        
13b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13b20 20 20 20 20 20 20 2a 20 69 67 6e 6f 72 65 20 2a        * ignore *
13b30 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20  /..        ///  
13b40 20 20 7d 20 2a 63 6f 6e 73 74 20 61 43 6f 6e 73    } *const aCons
13b50 74 72 61 69 6e 74 3b 20 20 20 20 2f 2a 20 54 61  traint;    /* Ta
13b60 62 6c 65 20 6f 66 20 57 48 45 52 45 20 63 6c 61  ble of WHERE cla
13b70 75 73 65 20 63 6f 6e 73 74 72 61 69 6e 74 73 20  use constraints 
13b80 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  */..        /// 
13b90 20 20 20 63 6f 6e 73 74 20 69 6e 74 20 6e 4f 72     const int nOr
13ba0 64 65 72 42 79 3b 20 20 20 20 20 20 2f 2a 20 4e  derBy;      /* N
13bb0 75 6d 62 65 72 20 6f 66 20 74 65 72 6d 73 20 69  umber of terms i
13bc0 6e 20 74 68 65 20 4f 52 44 45 52 20 42 59 0d 0a  n the ORDER BY..
13bd0 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20          ///     
13be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13bf0 20 20 20 20 20 20 20 20 20 2a 20 63 6c 61 75 73           * claus
13c00 65 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f  e */..        //
13c10 2f 20 20 20 20 63 6f 6e 73 74 20 73 74 72 75 63  /    const struc
13c20 74 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  t sqlite3_index_
13c30 6f 72 64 65 72 62 79 20 7b 0d 0a 20 20 20 20 20  orderby {..     
13c40 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 69 6e 74     ///       int
13c50 20 69 43 6f 6c 75 6d 6e 3b 20 20 20 20 20 20 20   iColumn;       
13c60 20 20 20 2f 2a 20 43 6f 6c 75 6d 6e 20 6e 75 6d     /* Column num
13c70 62 65 72 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  ber */..        
13c80 2f 2f 2f 20 20 20 20 20 20 20 75 6e 73 69 67 6e  ///       unsign
13c90 65 64 20 63 68 61 72 20 64 65 73 63 3b 20 20 20  ed char desc;   
13ca0 2f 2a 20 54 72 75 65 20 66 6f 72 20 44 45 53 43  /* True for DESC
13cb0 2e 20 20 46 61 6c 73 65 20 66 6f 72 20 41 53 43  .  False for ASC
13cc0 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f  . */..        //
13cd0 2f 20 20 20 20 7d 20 2a 63 6f 6e 73 74 20 61 4f  /    } *const aO
13ce0 72 64 65 72 42 79 3b 20 20 20 20 20 20 20 2f 2a  rderBy;       /*
13cf0 20 54 68 65 20 4f 52 44 45 52 20 42 59 20 63 6c   The ORDER BY cl
13d00 61 75 73 65 20 2a 2f 0d 0a 20 20 20 20 20 20 20  ause */..       
13d10 20 2f 2f 2f 20 20 20 20 2f 2a 20 4f 75 74 70 75   ///    /* Outpu
13d20 74 73 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f  ts */..        /
13d30 2f 2f 20 20 20 20 73 74 72 75 63 74 20 73 71 6c  //    struct sql
13d40 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74  ite3_index_const
13d50 72 61 69 6e 74 5f 75 73 61 67 65 20 7b 0d 0a 20  raint_usage {.. 
13d60 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20         ///      
13d70 69 6e 74 20 61 72 67 76 49 6e 64 65 78 3b 20 20  int argvIndex;  
13d80 20 20 20 20 20 20 20 2f 2a 20 69 66 20 67 72 65         /* if gre
13d90 61 74 65 72 20 74 68 61 6e 20 7a 65 72 6f 2c 20  ater than zero, 
13da0 63 6f 6e 73 74 72 61 69 6e 74 20 69 73 0d 0a 20  constraint is.. 
13db0 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20         ///      
13dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13dd0 20 20 20 20 20 20 20 20 2a 20 70 61 72 74 20 6f          * part o
13de0 66 20 61 72 67 76 20 74 6f 20 78 46 69 6c 74 65  f argv to xFilte
13df0 72 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f  r */..        //
13e00 2f 20 20 20 20 20 20 75 6e 73 69 67 6e 65 64 20  /      unsigned 
13e10 63 68 61 72 20 6f 6d 69 74 3b 20 20 20 20 2f 2a  char omit;    /*
13e20 20 44 6f 20 6e 6f 74 20 63 6f 64 65 20 61 20 74   Do not code a t
13e30 65 73 74 20 66 6f 72 20 74 68 69 73 0d 0a 20 20  est for this..  
13e40 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20        ///       
13e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13e60 20 20 20 20 20 20 20 2a 20 63 6f 6e 73 74 72 61         * constra
13e70 69 6e 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  int */..        
13e80 2f 2f 2f 20 20 20 20 7d 20 2a 63 6f 6e 73 74 20  ///    } *const 
13e90 61 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  aConstraintUsage
13ea0 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20  ;..        ///  
13eb0 20 20 69 6e 74 20 69 64 78 4e 75 6d 3b 20 20 20    int idxNum;   
13ec0 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 4e 75             /* Nu
13ed0 6d 62 65 72 20 75 73 65 64 20 74 6f 20 69 64 65  mber used to ide
13ee0 6e 74 69 66 79 20 74 68 65 20 69 6e 64 65 78 20  ntify the index 
13ef0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  */..        /// 
13f00 20 20 20 63 68 61 72 20 2a 69 64 78 53 74 72 3b     char *idxStr;
13f10 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 53              /* S
13f20 74 72 69 6e 67 2c 20 70 6f 73 73 69 62 6c 79 20  tring, possibly 
13f30 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 0d 0a 20  obtained from.. 
13f40 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20         ///      
13f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13f60 20 20 20 20 20 20 20 20 2a 20 73 71 6c 69 74 65          * sqlite
13f70 33 5f 6d 61 6c 6c 6f 63 28 29 20 2a 2f 0d 0a 20  3_malloc() */.. 
13f80 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 69 6e         ///    in
13f90 74 20 6e 65 65 64 54 6f 46 72 65 65 49 64 78 53  t needToFreeIdxS
13fa0 74 72 3b 20 20 20 20 2f 2a 20 46 72 65 65 20 69  tr;    /* Free i
13fb0 64 78 53 74 72 20 75 73 69 6e 67 20 73 71 6c 69  dxStr using sqli
13fc0 74 65 33 5f 66 72 65 65 28 29 20 69 66 0d 0a 20  te3_free() if.. 
13fd0 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20         ///      
13fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13ff0 20 20 20 20 20 20 20 20 2a 20 74 72 75 65 20 2a          * true *
14000 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20  /..        ///  
14010 20 20 69 6e 74 20 6f 72 64 65 72 42 79 43 6f 6e    int orderByCon
14020 73 75 6d 65 64 3b 20 20 20 20 20 2f 2a 20 54 72  sumed;     /* Tr
14030 75 65 20 69 66 20 6f 75 74 70 75 74 20 69 73 20  ue if output is 
14040 61 6c 72 65 61 64 79 20 6f 72 64 65 72 65 64 20  already ordered 
14050 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  */..        /// 
14060 20 20 20 64 6f 75 62 6c 65 20 65 73 74 69 6d 61     double estima
14070 74 65 64 43 6f 73 74 3b 20 20 20 20 2f 2a 20 45  tedCost;    /* E
14080 73 74 69 6d 61 74 65 64 20 63 6f 73 74 20 6f 66  stimated cost of
14090 20 75 73 69 6e 67 20 74 68 69 73 20 69 6e 64 65   using this inde
140a0 78 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f  x */..        //
140b0 2f 20 20 7d 3b 0d 0a 20 20 20 20 20 20 20 20 2f  /  };..        /
140c0 2f 2f 20 3c 2f 63 6f 64 65 3e 0d 0a 20 20 20 20  // </code>..    
140d0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a      /// <para>..
140e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 49 6e 20 61          /// In a
140f0 64 64 69 74 69 6f 6e 2c 20 74 68 65 72 65 20 61  ddition, there a
14100 72 65 20 73 6f 6d 65 20 64 65 66 69 6e 65 64 20  re some defined 
14110 63 6f 6e 73 74 61 6e 74 73 3a 0d 0a 20 20 20 20  constants:..    
14120 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d      /// </para>.
14130 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 63 6f  .        /// <co
14140 64 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de>..        ///
14150 20 20 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45    #define SQLITE
14160 5f 49 4e 44 45 58 5f 43 4f 4e 53 54 52 41 49 4e  _INDEX_CONSTRAIN
14170 54 5f 45 51 20 20 20 20 32 0d 0a 20 20 20 20 20  T_EQ    2..     
14180 20 20 20 2f 2f 2f 20 20 23 64 65 66 69 6e 65 20     ///  #define 
14190 53 51 4c 49 54 45 5f 49 4e 44 45 58 5f 43 4f 4e  SQLITE_INDEX_CON
141a0 53 54 52 41 49 4e 54 5f 47 54 20 20 20 20 34 0d  STRAINT_GT    4.
141b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 23 64  .        ///  #d
141c0 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4e 44  efine SQLITE_IND
141d0 45 58 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 4c 45  EX_CONSTRAINT_LE
141e0 20 20 20 20 38 0d 0a 20 20 20 20 20 20 20 20 2f      8..        /
141f0 2f 2f 20 20 23 64 65 66 69 6e 65 20 53 51 4c 49  //  #define SQLI
14200 54 45 5f 49 4e 44 45 58 5f 43 4f 4e 53 54 52 41  TE_INDEX_CONSTRA
14210 49 4e 54 5f 4c 54 20 20 20 20 31 36 0d 0a 20 20  INT_LT    16..  
14220 20 20 20 20 20 20 2f 2f 2f 20 20 23 64 65 66 69        ///  #defi
14230 6e 65 20 53 51 4c 49 54 45 5f 49 4e 44 45 58 5f  ne SQLITE_INDEX_
14240 43 4f 4e 53 54 52 41 49 4e 54 5f 47 45 20 20 20  CONSTRAINT_GE   
14250 20 33 32 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   32..        ///
14260 20 20 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45    #define SQLITE
14270 5f 49 4e 44 45 58 5f 43 4f 4e 53 54 52 41 49 4e  _INDEX_CONSTRAIN
14280 54 5f 4d 41 54 43 48 20 36 34 0d 0a 20 20 20 20  T_MATCH 64..    
14290 20 20 20 20 2f 2f 2f 20 3c 2f 63 6f 64 65 3e 0d      /// </code>.
142a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
142b0 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
142c0 20 54 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   The SQLite core
142d0 20 63 61 6c 6c 73 20 74 68 65 20 78 42 65 73 74   calls the xBest
142e0 49 6e 64 65 78 20 6d 65 74 68 6f 64 20 77 68 65  Index method whe
142f0 6e 20 69 74 20 69 73 20 63 6f 6d 70 69 6c 69 6e  n it is compilin
14300 67 20 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  g a..        ///
14310 20 71 75 65 72 79 20 74 68 61 74 20 69 6e 76 6f   query that invo
14320 6c 76 65 73 20 61 20 76 69 72 74 75 61 6c 20 74  lves a virtual t
14330 61 62 6c 65 2e 20 49 6e 20 6f 74 68 65 72 20 77  able. In other w
14340 6f 72 64 73 2c 20 53 51 4c 69 74 65 20 63 61 6c  ords, SQLite cal
14350 6c 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ls..        /// 
14360 74 68 69 73 20 6d 65 74 68 6f 64 20 77 68 65 6e  this method when
14370 20 69 74 20 69 73 20 72 75 6e 6e 69 6e 67 20 73   it is running s
14380 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 28 29  qlite3_prepare()
14390 20 6f 72 20 74 68 65 20 65 71 75 69 76 61 6c 65   or the equivale
143a0 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  nt...        ///
143b0 20 42 79 20 63 61 6c 6c 69 6e 67 20 74 68 69 73   By calling this
143c0 20 6d 65 74 68 6f 64 2c 20 74 68 65 20 53 51 4c   method, the SQL
143d0 69 74 65 20 63 6f 72 65 20 69 73 20 73 61 79 69  ite core is sayi
143e0 6e 67 20 74 6f 20 74 68 65 20 76 69 72 74 75 61  ng to the virtua
143f0 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  l..        /// t
14400 61 62 6c 65 20 74 68 61 74 20 69 74 20 6e 65 65  able that it nee
14410 64 73 20 74 6f 20 61 63 63 65 73 73 20 73 6f 6d  ds to access som
14420 65 20 73 75 62 73 65 74 20 6f 66 20 74 68 65 20  e subset of the 
14430 72 6f 77 73 20 69 6e 20 74 68 65 0d 0a 20 20 20  rows in the..   
14440 20 20 20 20 20 2f 2f 2f 20 76 69 72 74 75 61 6c       /// virtual
14450 20 74 61 62 6c 65 20 61 6e 64 20 69 74 20 77 61   table and it wa
14460 6e 74 73 20 74 6f 20 6b 6e 6f 77 20 74 68 65 20  nts to know the 
14470 6d 6f 73 74 20 65 66 66 69 63 69 65 6e 74 20 77  most efficient w
14480 61 79 20 74 6f 20 64 6f 0d 0a 20 20 20 20 20 20  ay to do..      
14490 20 20 2f 2f 2f 20 74 68 61 74 20 61 63 63 65 73    /// that acces
144a0 73 2e 20 54 68 65 20 78 42 65 73 74 49 6e 64 65  s. The xBestInde
144b0 78 20 6d 65 74 68 6f 64 20 72 65 70 6c 69 65 73  x method replies
144c0 20 77 69 74 68 20 69 6e 66 6f 72 6d 61 74 69 6f   with informatio
144d0 6e 20 74 68 61 74 0d 0a 20 20 20 20 20 20 20 20  n that..        
144e0 2f 2f 2f 20 74 68 65 20 53 51 4c 69 74 65 20 63  /// the SQLite c
144f0 6f 72 65 20 63 61 6e 20 74 68 65 6e 20 75 73 65  ore can then use
14500 20 74 6f 20 63 6f 6e 64 75 63 74 20 61 6e 20 65   to conduct an e
14510 66 66 69 63 69 65 6e 74 20 73 65 61 72 63 68 20  fficient search 
14520 6f 66 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  of the..        
14530 2f 2f 2f 20 76 69 72 74 75 61 6c 20 74 61 62 6c  /// virtual tabl
14540 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
14550 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
14560 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
14570 20 20 20 20 20 2f 2f 2f 20 57 68 69 6c 65 20 63       /// While c
14580 6f 6d 70 69 6c 69 6e 67 20 61 20 73 69 6e 67 6c  ompiling a singl
14590 65 20 53 51 4c 20 71 75 65 72 79 2c 20 74 68 65  e SQL query, the
145a0 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6d 69 67   SQLite core mig
145b0 68 74 20 63 61 6c 6c 0d 0a 20 20 20 20 20 20 20  ht call..       
145c0 20 2f 2f 2f 20 78 42 65 73 74 49 6e 64 65 78 20   /// xBestIndex 
145d0 6d 75 6c 74 69 70 6c 65 20 74 69 6d 65 73 20 77  multiple times w
145e0 69 74 68 20 64 69 66 66 65 72 65 6e 74 20 73 65  ith different se
145f0 74 74 69 6e 67 73 20 69 6e 0d 0a 20 20 20 20 20  ttings in..     
14600 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 69     /// sqlite3_i
14610 6e 64 65 78 5f 69 6e 66 6f 2e 20 54 68 65 20 53  ndex_info. The S
14620 51 4c 69 74 65 20 63 6f 72 65 20 77 69 6c 6c 20  QLite core will 
14630 74 68 65 6e 20 73 65 6c 65 63 74 20 74 68 65 0d  then select the.
14640 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6d  .        /// com
14650 62 69 6e 61 74 69 6f 6e 20 74 68 61 74 20 61 70  bination that ap
14660 70 65 61 72 73 20 74 6f 20 67 69 76 65 20 74 68  pears to give th
14670 65 20 62 65 73 74 20 70 65 72 66 6f 72 6d 61 6e  e best performan
14680 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ce...        ///
14690 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20   </para>..      
146a0 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20    /// <para>..  
146b0 20 20 20 20 20 20 2f 2f 2f 20 42 65 66 6f 72 65        /// Before
146c0 20 63 61 6c 6c 69 6e 67 20 74 68 69 73 20 6d 65   calling this me
146d0 74 68 6f 64 2c 20 74 68 65 20 53 51 4c 69 74 65  thod, the SQLite
146e0 20 63 6f 72 65 20 69 6e 69 74 69 61 6c 69 7a 65   core initialize
146f0 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 0d 0a 20  s an instance.. 
14700 20 20 20 20 20 20 20 2f 2f 2f 20 6f 66 20 74 68         /// of th
14710 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  e sqlite3_index_
14720 69 6e 66 6f 20 73 74 72 75 63 74 75 72 65 20 77  info structure w
14730 69 74 68 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  ith information 
14740 61 62 6f 75 74 20 74 68 65 0d 0a 20 20 20 20 20  about the..     
14750 20 20 20 2f 2f 2f 20 71 75 65 72 79 20 74 68 61     /// query tha
14760 74 20 69 74 20 69 73 20 63 75 72 72 65 6e 74 6c  t it is currentl
14770 79 20 74 72 79 69 6e 67 20 74 6f 20 70 72 6f 63  y trying to proc
14780 65 73 73 2e 20 54 68 69 73 20 69 6e 66 6f 72 6d  ess. This inform
14790 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 2f  ation..        /
147a0 2f 2f 20 64 65 72 69 76 65 73 20 6d 61 69 6e 6c  // derives mainl
147b0 79 20 66 72 6f 6d 20 74 68 65 20 57 48 45 52 45  y from the WHERE
147c0 20 63 6c 61 75 73 65 20 61 6e 64 20 4f 52 44 45   clause and ORDE
147d0 52 20 42 59 20 6f 72 20 47 52 4f 55 50 20 42 59  R BY or GROUP BY
147e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6c  ..        /// cl
147f0 61 75 73 65 73 20 6f 66 20 74 68 65 20 71 75 65  auses of the que
14800 72 79 2c 20 62 75 74 20 61 6c 73 6f 20 66 72 6f  ry, but also fro
14810 6d 20 61 6e 79 20 4f 4e 20 6f 72 20 55 53 49 4e  m any ON or USIN
14820 47 20 63 6c 61 75 73 65 73 20 69 66 20 74 68 65  G clauses if the
14830 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 71 75  ..        /// qu
14840 65 72 79 20 69 73 20 61 20 6a 6f 69 6e 2e 20 54  ery is a join. T
14850 68 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 74  he information t
14860 68 61 74 20 74 68 65 20 53 51 4c 69 74 65 20 63  hat the SQLite c
14870 6f 72 65 20 70 72 6f 76 69 64 65 73 20 74 6f 0d  ore provides to.
14880 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  .        /// the
14890 20 78 42 65 73 74 49 6e 64 65 78 20 6d 65 74 68   xBestIndex meth
148a0 6f 64 20 69 73 20 68 65 6c 64 20 69 6e 20 74 68  od is held in th
148b0 65 20 70 61 72 74 20 6f 66 20 74 68 65 20 73 74  e part of the st
148c0 72 75 63 74 75 72 65 20 74 68 61 74 20 69 73 0d  ructure that is.
148d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 61 72  .        /// mar
148e0 6b 65 64 20 61 73 20 22 49 6e 70 75 74 73 22 2e  ked as "Inputs".
148f0 20 54 68 65 20 22 4f 75 74 70 75 74 73 22 20 73   The "Outputs" s
14900 65 63 74 69 6f 6e 20 69 73 20 69 6e 69 74 69 61  ection is initia
14910 6c 69 7a 65 64 20 74 6f 20 7a 65 72 6f 2e 0d 0a  lized to zero...
14920 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
14930 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
14940 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
14950 20 2f 2f 2f 20 54 68 65 20 69 6e 66 6f 72 6d 61   /// The informa
14960 74 69 6f 6e 20 69 6e 20 74 68 65 20 73 71 6c 69  tion in the sqli
14970 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 20 73  te3_index_info s
14980 74 72 75 63 74 75 72 65 20 69 73 20 65 70 68 65  tructure is ephe
14990 6d 65 72 61 6c 0d 0a 20 20 20 20 20 20 20 20 2f  meral..        /
149a0 2f 2f 20 61 6e 64 20 6d 61 79 20 62 65 20 6f 76  // and may be ov
149b0 65 72 77 72 69 74 74 65 6e 20 6f 72 20 64 65 61  erwritten or dea
149c0 6c 6c 6f 63 61 74 65 64 20 61 73 20 73 6f 6f 6e  llocated as soon
149d0 20 61 73 20 74 68 65 20 78 42 65 73 74 49 6e 64   as the xBestInd
149e0 65 78 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ex..        /// 
149f0 6d 65 74 68 6f 64 20 72 65 74 75 72 6e 73 2e 20  method returns. 
14a00 49 66 20 74 68 65 20 78 42 65 73 74 49 6e 64 65  If the xBestInde
14a10 78 20 6d 65 74 68 6f 64 20 6e 65 65 64 73 20 74  x method needs t
14a20 6f 20 72 65 6d 65 6d 62 65 72 20 61 6e 79 20 70  o remember any p
14a30 61 72 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  art..        ///
14a40 20 6f 66 20 74 68 65 20 73 71 6c 69 74 65 33 5f   of the sqlite3_
14a50 69 6e 64 65 78 5f 69 6e 66 6f 20 73 74 72 75 63  index_info struc
14a60 74 75 72 65 2c 20 69 74 20 73 68 6f 75 6c 64 20  ture, it should 
14a70 6d 61 6b 65 20 61 20 63 6f 70 79 2e 20 43 61 72  make a copy. Car
14a80 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d  e..        /// m
14a90 75 73 74 20 62 65 20 74 61 6b 65 20 74 6f 20 73  ust be take to s
14aa0 74 6f 72 65 20 74 68 65 20 63 6f 70 79 20 69 6e  tore the copy in
14ab0 20 61 20 70 6c 61 63 65 20 77 68 65 72 65 20 69   a place where i
14ac0 74 20 77 69 6c 6c 20 62 65 0d 0a 20 20 20 20 20  t will be..     
14ad0 20 20 20 2f 2f 2f 20 64 65 61 6c 6c 6f 63 61 74     /// deallocat
14ae0 65 64 2c 20 73 75 63 68 20 61 73 20 69 6e 20 74  ed, such as in t
14af0 68 65 20 69 64 78 53 74 72 20 66 69 65 6c 64 20  he idxStr field 
14b00 77 69 74 68 20 6e 65 65 64 54 6f 46 72 65 65 49  with needToFreeI
14b10 64 78 53 74 72 20 73 65 74 0d 0a 20 20 20 20 20  dxStr set..     
14b20 20 20 20 2f 2f 2f 20 74 6f 20 31 2e 0d 0a 20 20     /// to 1...  
14b30 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
14b40 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
14b50 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
14b60 2f 2f 20 4e 6f 74 65 20 74 68 61 74 20 78 42 65  // Note that xBe
14b70 73 74 49 6e 64 65 78 20 77 69 6c 6c 20 61 6c 77  stIndex will alw
14b80 61 79 73 20 62 65 20 63 61 6c 6c 65 64 20 62 65  ays be called be
14b90 66 6f 72 65 20 78 46 69 6c 74 65 72 2c 20 73 69  fore xFilter, si
14ba0 6e 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  nce..        ///
14bb0 20 74 68 65 20 69 64 78 4e 75 6d 20 61 6e 64 20   the idxNum and 
14bc0 69 64 78 53 74 72 20 6f 75 74 70 75 74 73 20 66  idxStr outputs f
14bd0 72 6f 6d 20 78 42 65 73 74 49 6e 64 65 78 20 61  rom xBestIndex a
14be0 72 65 20 72 65 71 75 69 72 65 64 20 69 6e 70 75  re required inpu
14bf0 74 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ts..        /// 
14c00 74 6f 20 78 46 69 6c 74 65 72 2e 20 48 6f 77 65  to xFilter. Howe
14c10 76 65 72 2c 20 74 68 65 72 65 20 69 73 20 6e 6f  ver, there is no
14c20 20 67 75 61 72 61 6e 74 65 65 20 74 68 61 74 20   guarantee that 
14c30 78 46 69 6c 74 65 72 20 77 69 6c 6c 20 62 65 0d  xFilter will be.
14c40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 61 6c  .        /// cal
14c50 6c 65 64 20 66 6f 6c 6c 6f 77 69 6e 67 20 61 20  led following a 
14c60 73 75 63 63 65 73 73 66 75 6c 20 78 42 65 73 74  successful xBest
14c70 49 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20 20 20  Index...        
14c80 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20  /// </para>..   
14c90 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
14ca0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
14cb0 20 78 42 65 73 74 49 6e 64 65 78 20 6d 65 74 68   xBestIndex meth
14cc0 6f 64 20 69 73 20 72 65 71 75 69 72 65 64 20 66  od is required f
14cd0 6f 72 20 65 76 65 72 79 20 76 69 72 74 75 61 6c  or every virtual
14ce0 20 74 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20   table..        
14cf0 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  /// implementati
14d00 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  on...        ///
14d10 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20   </para>..      
14d20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20    /// <para>..  
14d30 20 20 20 20 20 20 2f 2f 2f 20 32 2e 33 2e 31 20        /// 2.3.1 
14d40 49 6e 70 75 74 73 0d 0a 20 20 20 20 20 20 20 20  Inputs..        
14d50 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20  /// </para>..   
14d60 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
14d70 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
14d80 20 6d 61 69 6e 20 74 68 69 6e 67 20 74 68 61 74   main thing that
14d90 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
14da0 20 69 73 20 74 72 79 69 6e 67 20 74 6f 20 63 6f   is trying to co
14db0 6d 6d 75 6e 69 63 61 74 65 20 74 6f 20 74 68 65  mmunicate to the
14dc0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 69  ..        /// vi
14dd0 72 74 75 61 6c 20 74 61 62 6c 65 20 69 73 20 74  rtual table is t
14de0 68 65 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 74  he constraints t
14df0 68 61 74 20 61 72 65 20 61 76 61 69 6c 61 62 6c  hat are availabl
14e00 65 20 74 6f 20 6c 69 6d 69 74 20 74 68 65 0d 0a  e to limit the..
14e10 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 75 6d 62          /// numb
14e20 65 72 20 6f 66 20 72 6f 77 73 20 74 68 61 74 20  er of rows that 
14e30 6e 65 65 64 20 74 6f 20 62 65 20 73 65 61 72 63  need to be searc
14e40 68 65 64 2e 20 54 68 65 20 61 43 6f 6e 73 74 72  hed. The aConstr
14e50 61 69 6e 74 5b 5d 20 61 72 72 61 79 0d 0a 20 20  aint[] array..  
14e60 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 74 61 69        /// contai
14e70 6e 73 20 6f 6e 65 20 65 6e 74 72 79 20 66 6f 72  ns one entry for
14e80 20 65 61 63 68 20 63 6f 6e 73 74 72 61 69 6e 74   each constraint
14e90 2e 20 54 68 65 72 65 20 77 69 6c 6c 20 62 65 20  . There will be 
14ea0 65 78 61 63 74 6c 79 0d 0a 20 20 20 20 20 20 20  exactly..       
14eb0 20 2f 2f 2f 20 6e 43 6f 6e 73 74 72 61 69 6e 74   /// nConstraint
14ec0 20 65 6e 74 72 69 65 73 20 69 6e 20 74 68 61 74   entries in that
14ed0 20 61 72 72 61 79 2e 0d 0a 20 20 20 20 20 20 20   array...       
14ee0 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
14ef0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
14f00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 45 61  ..        /// Ea
14f10 63 68 20 63 6f 6e 73 74 72 61 69 6e 74 20 77 69  ch constraint wi
14f20 6c 6c 20 63 6f 72 72 65 73 70 6f 6e 64 20 74 6f  ll correspond to
14f30 20 61 20 74 65 72 6d 20 69 6e 20 74 68 65 20 57   a term in the W
14f40 48 45 52 45 20 63 6c 61 75 73 65 20 6f 72 20 69  HERE clause or i
14f50 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61  n..        /// a
14f60 20 55 53 49 4e 47 20 6f 72 20 4f 4e 20 63 6c 61   USING or ON cla
14f70 75 73 65 20 74 68 61 74 20 69 73 20 6f 66 20 74  use that is of t
14f80 68 65 20 66 6f 72 6d 0d 0a 20 20 20 20 20 20 20  he form..       
14f90 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
14fa0 20 20 20 20 20 20 2f 2f 2f 20 3c 63 6f 64 65 3e        /// <code>
14fb0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20  ..        ///   
14fc0 20 20 63 6f 6c 75 6d 6e 20 4f 50 20 45 58 50 52    column OP EXPR
14fd0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
14fe0 63 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f  code>..        /
14ff0 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20  // <para>..     
15000 20 20 20 2f 2f 2f 20 57 68 65 72 65 20 22 63 6f     /// Where "co
15010 6c 75 6d 6e 22 20 69 73 20 61 20 63 6f 6c 75 6d  lumn" is a colum
15020 6e 20 69 6e 20 74 68 65 20 76 69 72 74 75 61 6c  n in the virtual
15030 20 74 61 62 6c 65 2c 20 4f 50 20 69 73 20 61 6e   table, OP is an
15040 20 6f 70 65 72 61 74 6f 72 0d 0a 20 20 20 20 20   operator..     
15050 20 20 20 2f 2f 2f 20 6c 69 6b 65 20 22 3d 22 20     /// like "=" 
15060 6f 72 20 22 26 6c 74 3b 22 2c 20 61 6e 64 20 45  or "&lt;", and E
15070 58 50 52 20 69 73 20 61 6e 20 61 72 62 69 74 72  XPR is an arbitr
15080 61 72 79 20 65 78 70 72 65 73 73 69 6f 6e 2e 20  ary expression. 
15090 53 6f 2c 20 66 6f 72 0d 0a 20 20 20 20 20 20 20  So, for..       
150a0 20 2f 2f 2f 20 65 78 61 6d 70 6c 65 2c 20 69 66   /// example, if
150b0 20 74 68 65 20 57 48 45 52 45 20 63 6c 61 75 73   the WHERE claus
150c0 65 20 63 6f 6e 74 61 69 6e 65 64 20 61 20 74 65  e contained a te
150d0 72 6d 20 6c 69 6b 65 20 74 68 69 73 3a 0d 0a 20  rm like this:.. 
150e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
150f0 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
15100 3c 63 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20 20  <code>..        
15110 2f 2f 2f 20 20 20 20 20 20 20 20 20 20 61 20 3d  ///          a =
15120 20 35 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20   5..        /// 
15130 3c 2f 63 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20  </code>..       
15140 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
15150 20 20 20 20 20 2f 2f 2f 20 54 68 65 6e 20 6f 6e       /// Then on
15160 65 20 6f 66 20 74 68 65 20 63 6f 6e 73 74 72 61  e of the constra
15170 69 6e 74 73 20 77 6f 75 6c 64 20 62 65 20 6f 6e  ints would be on
15180 20 74 68 65 20 22 61 22 20 63 6f 6c 75 6d 6e 20   the "a" column 
15190 77 69 74 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f  with..        //
151a0 2f 20 6f 70 65 72 61 74 6f 72 20 22 3d 22 20 61  / operator "=" a
151b0 6e 64 20 61 6e 20 65 78 70 72 65 73 73 69 6f 6e  nd an expression
151c0 20 6f 66 20 22 35 22 2e 20 43 6f 6e 73 74 72 61   of "5". Constra
151d0 69 6e 74 73 20 6e 65 65 64 20 6e 6f 74 20 68 61  ints need not ha
151e0 76 65 20 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ve a..        //
151f0 2f 20 6c 69 74 65 72 61 6c 20 72 65 70 72 65 73  / literal repres
15200 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20  entation of the 
15210 57 48 45 52 45 20 63 6c 61 75 73 65 2e 20 54 68  WHERE clause. Th
15220 65 20 71 75 65 72 79 20 6f 70 74 69 6d 69 7a 65  e query optimize
15230 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d  r..        /// m
15240 69 67 68 74 20 6d 61 6b 65 20 74 72 61 6e 73 66  ight make transf
15250 6f 72 6d 61 74 69 6f 6e 73 20 74 6f 20 74 68 65  ormations to the
15260 20 57 48 45 52 45 20 63 6c 61 75 73 65 20 69 6e   WHERE clause in
15270 20 6f 72 64 65 72 20 74 6f 20 65 78 74 72 61 63   order to extrac
15280 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61  t..        /// a
15290 73 20 6d 61 6e 79 20 63 6f 6e 73 74 72 61 69 6e  s many constrain
152a0 74 73 20 61 73 20 69 74 20 63 61 6e 2e 20 53 6f  ts as it can. So
152b0 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65 2c 20 69  , for example, i
152c0 66 20 74 68 65 20 57 48 45 52 45 20 63 6c 61 75  f the WHERE clau
152d0 73 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  se..        /// 
152e0 63 6f 6e 74 61 69 6e 65 64 20 73 6f 6d 65 74 68  contained someth
152f0 69 6e 67 20 6c 69 6b 65 20 74 68 69 73 3a 0d 0a  ing like this:..
15300 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
15310 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
15320 20 3c 63 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20   <code>..       
15330 20 2f 2f 2f 20 20 20 20 20 20 20 20 20 20 78 20   ///          x 
15340 42 45 54 57 45 45 4e 20 31 30 20 41 4e 44 20 31  BETWEEN 10 AND 1
15350 30 30 20 41 4e 44 20 39 39 39 26 67 74 3b 79 0d  00 AND 999&gt;y.
15360 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 63  .        /// </c
15370 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode>..        //
15380 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
15390 20 20 2f 2f 2f 20 54 68 65 20 71 75 65 72 79 20    /// The query 
153a0 6f 70 74 69 6d 69 7a 65 72 20 6d 69 67 68 74 20  optimizer might 
153b0 74 72 61 6e 73 6c 61 74 65 20 74 68 69 73 20 69  translate this i
153c0 6e 74 6f 20 74 68 72 65 65 20 73 65 70 61 72 61  nto three separa
153d0 74 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  te..        /// 
153e0 63 6f 6e 73 74 72 61 69 6e 74 73 3a 0d 0a 20 20  constraints:..  
153f0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
15400 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
15410 63 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f  code>..        /
15420 2f 2f 20 20 20 20 20 20 20 20 20 20 78 20 26 67  //          x &g
15430 74 3b 3d 20 31 30 0d 0a 20 20 20 20 20 20 20 20  t;= 10..        
15440 2f 2f 2f 20 20 20 20 20 20 20 20 20 20 78 20 26  ///          x &
15450 6c 74 3b 3d 20 31 30 30 0d 0a 20 20 20 20 20 20  lt;= 100..      
15460 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20 20 79    ///          y
15470 20 26 6c 74 3b 20 39 39 39 0d 0a 20 20 20 20 20   &lt; 999..     
15480 20 20 20 2f 2f 2f 20 3c 2f 63 6f 64 65 3e 0d 0a     /// </code>..
15490 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
154a0 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
154b0 46 6f 72 20 65 61 63 68 20 63 6f 6e 73 74 72 61  For each constra
154c0 69 6e 74 2c 20 74 68 65 20 61 43 6f 6e 73 74 72  int, the aConstr
154d0 61 69 6e 74 5b 5d 2e 69 43 6f 6c 75 6d 6e 20 66  aint[].iColumn f
154e0 69 65 6c 64 20 69 6e 64 69 63 61 74 65 73 0d 0a  ield indicates..
154f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 68 69 63          /// whic
15500 68 20 63 6f 6c 75 6d 6e 20 61 70 70 65 61 72 73  h column appears
15510 20 6f 6e 20 74 68 65 20 6c 65 66 74 2d 68 61 6e   on the left-han
15520 64 20 73 69 64 65 20 6f 66 20 74 68 65 20 63 6f  d side of the co
15530 6e 73 74 72 61 69 6e 74 2e 20 54 68 65 0d 0a 20  nstraint. The.. 
15540 20 20 20 20 20 20 20 2f 2f 2f 20 66 69 72 73 74         /// first
15550 20 63 6f 6c 75 6d 6e 20 6f 66 20 74 68 65 20 76   column of the v
15560 69 72 74 75 61 6c 20 74 61 62 6c 65 20 69 73 20  irtual table is 
15570 63 6f 6c 75 6d 6e 20 30 2e 20 54 68 65 20 72 6f  column 0. The ro
15580 77 69 64 20 6f 66 20 74 68 65 0d 0a 20 20 20 20  wid of the..    
15590 20 20 20 20 2f 2f 2f 20 76 69 72 74 75 61 6c 20      /// virtual 
155a0 74 61 62 6c 65 20 69 73 20 63 6f 6c 75 6d 6e 20  table is column 
155b0 2d 31 2e 20 54 68 65 20 61 43 6f 6e 73 74 72 61  -1. The aConstra
155c0 69 6e 74 5b 5d 2e 6f 70 20 66 69 65 6c 64 20 69  int[].op field i
155d0 6e 64 69 63 61 74 65 73 0d 0a 20 20 20 20 20 20  ndicates..      
155e0 20 20 2f 2f 2f 20 77 68 69 63 68 20 6f 70 65 72    /// which oper
155f0 61 74 6f 72 20 69 73 20 75 73 65 64 2e 20 54 68  ator is used. Th
15600 65 20 53 51 4c 49 54 45 5f 49 4e 44 45 58 5f 43  e SQLITE_INDEX_C
15610 4f 4e 53 54 52 41 49 4e 54 5f 2a 20 63 6f 6e 73  ONSTRAINT_* cons
15620 74 61 6e 74 73 20 6d 61 70 0d 0a 20 20 20 20 20  tants map..     
15630 20 20 20 2f 2f 2f 20 69 6e 74 65 67 65 72 20 63     /// integer c
15640 6f 6e 73 74 61 6e 74 73 20 69 6e 74 6f 20 6f 70  onstants into op
15650 65 72 61 74 6f 72 20 76 61 6c 75 65 73 2e 20 43  erator values. C
15660 6f 6c 75 6d 6e 73 20 6f 63 63 75 72 20 69 6e 20  olumns occur in 
15670 74 68 65 20 6f 72 64 65 72 0d 0a 20 20 20 20 20  the order..     
15680 20 20 20 2f 2f 2f 20 74 68 65 79 20 77 65 72 65     /// they were
15690 20 64 65 66 69 6e 65 64 20 62 79 20 74 68 65 20   defined by the 
156a0 63 61 6c 6c 20 74 6f 20 73 71 6c 69 74 65 33 5f  call to sqlite3_
156b0 64 65 63 6c 61 72 65 5f 76 74 61 62 28 29 20 69  declare_vtab() i
156c0 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  n the..        /
156d0 2f 2f 20 78 43 72 65 61 74 65 20 6f 72 20 78 43  // xCreate or xC
156e0 6f 6e 6e 65 63 74 20 6d 65 74 68 6f 64 2e 20 48  onnect method. H
156f0 69 64 64 65 6e 20 63 6f 6c 75 6d 6e 73 20 61 72  idden columns ar
15700 65 20 63 6f 75 6e 74 65 64 20 77 68 65 6e 0d 0a  e counted when..
15710 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 65 74 65          /// dete
15720 72 6d 69 6e 69 6e 67 20 74 68 65 20 63 6f 6c 75  rmining the colu
15730 6d 6e 20 69 6e 64 65 78 2e 0d 0a 20 20 20 20 20  mn index...     
15740 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a     /// </para>..
15750 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
15760 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
15770 54 68 65 20 61 43 6f 6e 73 74 72 61 69 6e 74 5b  The aConstraint[
15780 5d 20 61 72 72 61 79 20 63 6f 6e 74 61 69 6e 73  ] array contains
15790 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f   information abo
157a0 75 74 20 61 6c 6c 20 63 6f 6e 73 74 72 61 69 6e  ut all constrain
157b0 74 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ts..        /// 
157c0 74 68 61 74 20 61 70 70 6c 79 20 74 6f 20 74 68  that apply to th
157d0 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e  e virtual table.
157e0 20 42 75 74 20 73 6f 6d 65 20 6f 66 20 74 68 65   But some of the
157f0 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 6d 69 67   constraints mig
15800 68 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ht..        /// 
15810 6e 6f 74 20 62 65 20 75 73 61 62 6c 65 20 62 65  not be usable be
15820 63 61 75 73 65 20 6f 66 20 74 68 65 20 77 61 79  cause of the way
15830 20 74 61 62 6c 65 73 20 61 72 65 20 6f 72 64 65   tables are orde
15840 72 65 64 20 69 6e 20 61 20 6a 6f 69 6e 2e 20 54  red in a join. T
15850 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
15860 78 42 65 73 74 49 6e 64 65 78 20 6d 65 74 68 6f  xBestIndex metho
15870 64 20 6d 75 73 74 20 74 68 65 72 65 66 6f 72 65  d must therefore
15880 20 6f 6e 6c 79 20 63 6f 6e 73 69 64 65 72 20 63   only consider c
15890 6f 6e 73 74 72 61 69 6e 74 73 20 74 68 61 74 0d  onstraints that.
158a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 68 61 76  .        /// hav
158b0 65 20 61 6e 20 61 43 6f 6e 73 74 72 61 69 6e 74  e an aConstraint
158c0 5b 5d 2e 75 73 61 62 6c 65 20 66 6c 61 67 20 77  [].usable flag w
158d0 68 69 63 68 20 69 73 20 74 72 75 65 2e 0d 0a 20  hich is true... 
158e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
158f0 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
15900 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
15910 2f 2f 2f 20 49 6e 20 61 64 64 69 74 69 6f 6e 20  /// In addition 
15920 74 6f 20 57 48 45 52 45 20 63 6c 61 75 73 65 20  to WHERE clause 
15930 63 6f 6e 73 74 72 61 69 6e 74 73 2c 20 74 68 65  constraints, the
15940 20 53 51 4c 69 74 65 20 63 6f 72 65 20 61 6c 73   SQLite core als
15950 6f 20 74 65 6c 6c 73 0d 0a 20 20 20 20 20 20 20  o tells..       
15960 20 2f 2f 2f 20 74 68 65 20 78 42 65 73 74 49 6e   /// the xBestIn
15970 64 65 78 20 6d 65 74 68 6f 64 20 61 62 6f 75 74  dex method about
15980 20 74 68 65 20 4f 52 44 45 52 20 42 59 20 63 6c   the ORDER BY cl
15990 61 75 73 65 2e 20 28 49 6e 20 61 6e 20 61 67 67  ause. (In an agg
159a0 72 65 67 61 74 65 0d 0a 20 20 20 20 20 20 20 20  regate..        
159b0 2f 2f 2f 20 71 75 65 72 79 2c 20 74 68 65 20 53  /// query, the S
159c0 51 4c 69 74 65 20 63 6f 72 65 20 6d 69 67 68 74  QLite core might
159d0 20 70 75 74 20 69 6e 20 47 52 4f 55 50 20 42 59   put in GROUP BY
159e0 20 63 6c 61 75 73 65 20 69 6e 66 6f 72 6d 61 74   clause informat
159f0 69 6f 6e 20 69 6e 0d 0a 20 20 20 20 20 20 20 20  ion in..        
15a00 2f 2f 2f 20 70 6c 61 63 65 20 6f 66 20 74 68 65  /// place of the
15a10 20 4f 52 44 45 52 20 42 59 20 63 6c 61 75 73 65   ORDER BY clause
15a20 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2c 20 62 75   information, bu
15a30 74 20 74 68 69 73 20 66 61 63 74 20 73 68 6f 75  t this fact shou
15a40 6c 64 20 6e 6f 74 0d 0a 20 20 20 20 20 20 20 20  ld not..        
15a50 2f 2f 2f 20 6d 61 6b 65 20 61 6e 79 20 64 69 66  /// make any dif
15a60 66 65 72 65 6e 63 65 20 74 6f 20 74 68 65 20 78  ference to the x
15a70 42 65 73 74 49 6e 64 65 78 20 6d 65 74 68 6f 64  BestIndex method
15a80 2e 29 20 49 66 20 61 6c 6c 20 74 65 72 6d 73 20  .) If all terms 
15a90 6f 66 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  of the..        
15aa0 2f 2f 2f 20 4f 52 44 45 52 20 42 59 20 63 6c 61  /// ORDER BY cla
15ab0 75 73 65 20 61 72 65 20 63 6f 6c 75 6d 6e 73 20  use are columns 
15ac0 69 6e 20 74 68 65 20 76 69 72 74 75 61 6c 20 74  in the virtual t
15ad0 61 62 6c 65 2c 20 74 68 65 6e 20 6e 4f 72 64 65  able, then nOrde
15ae0 72 42 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  rBy..        ///
15af0 20 77 69 6c 6c 20 62 65 20 74 68 65 20 6e 75 6d   will be the num
15b00 62 65 72 20 6f 66 20 74 65 72 6d 73 20 69 6e 20  ber of terms in 
15b10 74 68 65 20 4f 52 44 45 52 20 42 59 20 63 6c 61  the ORDER BY cla
15b20 75 73 65 20 61 6e 64 20 74 68 65 0d 0a 20 20 20  use and the..   
15b30 20 20 20 20 20 2f 2f 2f 20 61 4f 72 64 65 72 42       /// aOrderB
15b40 79 5b 5d 20 61 72 72 61 79 20 77 69 6c 6c 20 69  y[] array will i
15b50 64 65 6e 74 69 66 79 20 74 68 65 20 63 6f 6c 75  dentify the colu
15b60 6d 6e 20 66 6f 72 20 65 61 63 68 20 74 65 72 6d  mn for each term
15b70 20 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20   in the..       
15b80 20 2f 2f 2f 20 6f 72 64 65 72 20 62 79 20 63 6c   /// order by cl
15b90 61 75 73 65 20 61 6e 64 20 77 68 65 74 68 65 72  ause and whether
15ba0 20 6f 72 20 6e 6f 74 20 74 68 61 74 20 63 6f 6c   or not that col
15bb0 75 6d 6e 20 69 73 20 41 53 43 20 6f 72 20 44 45  umn is ASC or DE
15bc0 53 43 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  SC...        ///
15bd0 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20   </para>..      
15be0 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20    /// <para>..  
15bf0 20 20 20 20 20 20 2f 2f 2f 20 32 2e 33 2e 32 20        /// 2.3.2 
15c00 4f 75 74 70 75 74 73 0d 0a 20 20 20 20 20 20 20  Outputs..       
15c10 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
15c20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
15c30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 47 69  ..        /// Gi
15c40 76 65 6e 20 61 6c 6c 20 6f 66 20 74 68 65 20 69  ven all of the i
15c50 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 76 65  nformation above
15c60 2c 20 74 68 65 20 6a 6f 62 20 6f 66 20 74 68 65  , the job of the
15c70 20 78 42 65 73 74 49 6e 64 65 78 0d 0a 20 20 20   xBestIndex..   
15c80 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 20       /// method 
15c90 69 74 20 74 6f 20 66 69 67 75 72 65 20 6f 75 74  it to figure out
15ca0 20 74 68 65 20 62 65 73 74 20 77 61 79 20 74 6f   the best way to
15cb0 20 73 65 61 72 63 68 20 74 68 65 20 76 69 72 74   search the virt
15cc0 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
15cd0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d      /// </para>.
15ce0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
15cf0 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
15d00 20 54 68 65 20 78 42 65 73 74 49 6e 64 65 78 20   The xBestIndex 
15d10 6d 65 74 68 6f 64 20 66 69 6c 6c 73 20 74 68 65  method fills the
15d20 20 69 64 78 4e 75 6d 20 61 6e 64 20 69 64 78 53   idxNum and idxS
15d30 74 72 20 66 69 65 6c 64 73 20 77 69 74 68 0d 0a  tr fields with..
15d40 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 66 6f          /// info
15d50 72 6d 61 74 69 6f 6e 20 74 68 61 74 20 63 6f 6d  rmation that com
15d60 6d 75 6e 69 63 61 74 65 73 20 61 6e 20 69 6e 64  municates an ind
15d70 65 78 69 6e 67 20 73 74 72 61 74 65 67 79 20 74  exing strategy t
15d80 6f 20 74 68 65 20 78 46 69 6c 74 65 72 0d 0a 20  o the xFilter.. 
15d90 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f         /// metho
15da0 64 2e 20 54 68 65 20 69 6e 66 6f 72 6d 61 74 69  d. The informati
15db0 6f 6e 20 69 6e 20 69 64 78 4e 75 6d 20 61 6e 64  on in idxNum and
15dc0 20 69 64 78 53 74 72 20 69 73 20 61 72 62 69 74   idxStr is arbit
15dd0 72 61 72 79 20 61 73 20 66 61 72 20 61 73 0d 0a  rary as far as..
15de0 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20          /// the 
15df0 53 51 4c 69 74 65 20 63 6f 72 65 20 69 73 20 63  SQLite core is c
15e00 6f 6e 63 65 72 6e 65 64 2e 20 54 68 65 20 53 51  oncerned. The SQ
15e10 4c 69 74 65 20 63 6f 72 65 20 6a 75 73 74 20 63  Lite core just c
15e20 6f 70 69 65 73 20 74 68 65 0d 0a 20 20 20 20 20  opies the..     
15e30 20 20 20 2f 2f 2f 20 69 6e 66 6f 72 6d 61 74 69     /// informati
15e40 6f 6e 20 74 68 72 6f 75 67 68 20 74 6f 20 74 68  on through to th
15e50 65 20 78 46 69 6c 74 65 72 20 6d 65 74 68 6f 64  e xFilter method
15e60 2e 20 41 6e 79 20 64 65 73 69 72 65 64 20 6d 65  . Any desired me
15e70 61 6e 69 6e 67 20 63 61 6e 0d 0a 20 20 20 20 20  aning can..     
15e80 20 20 20 2f 2f 2f 20 62 65 20 61 73 73 69 67 6e     /// be assign
15e90 65 64 20 74 6f 20 69 64 78 4e 75 6d 20 61 6e 64  ed to idxNum and
15ea0 20 69 64 78 53 74 72 20 61 73 20 6c 6f 6e 67 20   idxStr as long 
15eb0 61 73 20 78 42 65 73 74 49 6e 64 65 78 20 61 6e  as xBestIndex an
15ec0 64 20 78 46 69 6c 74 65 72 0d 0a 20 20 20 20 20  d xFilter..     
15ed0 20 20 20 2f 2f 2f 20 61 67 72 65 65 20 6f 6e 20     /// agree on 
15ee0 77 68 61 74 20 74 68 61 74 20 6d 65 61 6e 69 6e  what that meanin
15ef0 67 20 69 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  g is...        /
15f00 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20  // </para>..    
15f10 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a      /// <para>..
15f20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
15f30 69 64 78 53 74 72 20 76 61 6c 75 65 20 6d 61 79  idxStr value may
15f40 20 62 65 20 61 20 73 74 72 69 6e 67 20 6f 62 74   be a string obt
15f50 61 69 6e 65 64 20 66 72 6f 6d 20 61 6e 20 53 51  ained from an SQ
15f60 4c 69 74 65 20 6d 65 6d 6f 72 79 0d 0a 20 20 20  Lite memory..   
15f70 20 20 20 20 20 2f 2f 2f 20 61 6c 6c 6f 63 61 74       /// allocat
15f80 69 6f 6e 20 66 75 6e 63 74 69 6f 6e 20 73 75 63  ion function suc
15f90 68 20 61 73 20 73 71 6c 69 74 65 33 5f 6d 70 72  h as sqlite3_mpr
15fa0 69 6e 74 66 28 29 2e 20 49 66 20 74 68 69 73 20  intf(). If this 
15fb0 69 73 20 74 68 65 20 63 61 73 65 2c 0d 0a 20 20  is the case,..  
15fc0 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 6e 20 74        /// then t
15fd0 68 65 20 6e 65 65 64 54 6f 46 72 65 65 49 64 78  he needToFreeIdx
15fe0 53 74 72 20 66 6c 61 67 20 6d 75 73 74 20 62 65  Str flag must be
15ff0 20 73 65 74 20 74 6f 20 74 72 75 65 20 73 6f 20   set to true so 
16000 74 68 61 74 20 74 68 65 0d 0a 20 20 20 20 20 20  that the..      
16010 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 63 6f 72    /// SQLite cor
16020 65 20 77 69 6c 6c 20 6b 6e 6f 77 20 74 6f 20 63  e will know to c
16030 61 6c 6c 20 73 71 6c 69 74 65 33 5f 66 72 65 65  all sqlite3_free
16040 28 29 20 6f 6e 20 74 68 61 74 20 73 74 72 69 6e  () on that strin
16050 67 20 77 68 65 6e 20 69 74 0d 0a 20 20 20 20 20  g when it..     
16060 20 20 20 2f 2f 2f 20 68 61 73 20 66 69 6e 69 73     /// has finis
16070 68 65 64 20 77 69 74 68 20 69 74 2c 20 61 6e 64  hed with it, and
16080 20 74 68 75 73 20 61 76 6f 69 64 20 61 20 6d 65   thus avoid a me
16090 6d 6f 72 79 20 6c 65 61 6b 2e 0d 0a 20 20 20 20  mory leak...    
160a0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d      /// </para>.
160b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
160c0 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
160d0 20 49 66 20 74 68 65 20 76 69 72 74 75 61 6c 20   If the virtual 
160e0 74 61 62 6c 65 20 77 69 6c 6c 20 6f 75 74 70 75  table will outpu
160f0 74 20 72 6f 77 73 20 69 6e 20 74 68 65 20 6f 72  t rows in the or
16100 64 65 72 20 73 70 65 63 69 66 69 65 64 20 62 79  der specified by
16110 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
16120 2f 20 4f 52 44 45 52 20 42 59 20 63 6c 61 75 73  / ORDER BY claus
16130 65 2c 20 74 68 65 6e 20 74 68 65 20 6f 72 64 65  e, then the orde
16140 72 42 79 43 6f 6e 73 75 6d 65 64 20 66 6c 61 67  rByConsumed flag
16150 20 6d 61 79 20 62 65 20 73 65 74 20 74 6f 20 74   may be set to t
16160 72 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rue...        //
16170 2f 20 49 66 20 74 68 65 20 6f 75 74 70 75 74 20  / If the output 
16180 69 73 20 6e 6f 74 20 61 75 74 6f 6d 61 74 69 63  is not automatic
16190 61 6c 6c 79 20 69 6e 20 74 68 65 20 63 6f 72 72  ally in the corr
161a0 65 63 74 20 6f 72 64 65 72 20 74 68 65 6e 0d 0a  ect order then..
161b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 72 64 65          /// orde
161c0 72 42 79 43 6f 6e 73 75 6d 65 64 20 6d 75 73 74  rByConsumed must
161d0 20 62 65 20 6c 65 66 74 20 69 6e 20 69 74 73 20   be left in its 
161e0 64 65 66 61 75 6c 74 20 66 61 6c 73 65 20 73 65  default false se
161f0 74 74 69 6e 67 2e 20 54 68 69 73 0d 0a 20 20 20  tting. This..   
16200 20 20 20 20 20 2f 2f 2f 20 77 69 6c 6c 20 69 6e       /// will in
16210 64 69 63 61 74 65 20 74 6f 20 74 68 65 20 53 51  dicate to the SQ
16220 4c 69 74 65 20 63 6f 72 65 20 74 68 61 74 20 69  Lite core that i
16230 74 20 77 69 6c 6c 20 6e 65 65 64 20 74 6f 20 64  t will need to d
16240 6f 20 61 20 73 65 70 61 72 61 74 65 0d 0a 20 20  o a separate..  
16250 20 20 20 20 20 20 2f 2f 2f 20 73 6f 72 74 69 6e        /// sortin
16260 67 20 70 61 73 73 20 6f 76 65 72 20 74 68 65 20  g pass over the 
16270 64 61 74 61 20 61 66 74 65 72 20 69 74 20 63 6f  data after it co
16280 6d 65 73 20 6f 75 74 20 6f 66 20 74 68 65 20 76  mes out of the v
16290 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20  irtual table... 
162a0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
162b0 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
162c0 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
162d0 2f 2f 2f 20 54 68 65 20 65 73 74 69 6d 61 74 65  /// The estimate
162e0 64 43 6f 73 74 20 66 69 65 6c 64 20 73 68 6f 75  dCost field shou
162f0 6c 64 20 62 65 20 73 65 74 20 74 6f 20 74 68 65  ld be set to the
16300 20 65 73 74 69 6d 61 74 65 64 20 6e 75 6d 62 65   estimated numbe
16310 72 20 6f 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f  r of..        //
16320 2f 20 64 69 73 6b 20 61 63 63 65 73 73 20 6f 70  / disk access op
16330 65 72 61 74 69 6f 6e 73 20 72 65 71 75 69 72 65  erations require
16340 64 20 74 6f 20 65 78 65 63 75 74 65 20 74 68 69  d to execute thi
16350 73 20 71 75 65 72 79 20 61 67 61 69 6e 73 74 20  s query against 
16360 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
16370 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 20   virtual table. 
16380 54 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  The SQLite core 
16390 77 69 6c 6c 20 6f 66 74 65 6e 20 63 61 6c 6c 20  will often call 
163a0 78 42 65 73 74 49 6e 64 65 78 20 6d 75 6c 74 69  xBestIndex multi
163b0 70 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ple..        ///
163c0 20 74 69 6d 65 73 20 77 69 74 68 20 64 69 66 66   times with diff
163d0 65 72 65 6e 74 20 63 6f 6e 73 74 72 61 69 6e 74  erent constraint
163e0 73 2c 20 6f 62 74 61 69 6e 20 6d 75 6c 74 69 70  s, obtain multip
163f0 6c 65 20 63 6f 73 74 20 65 73 74 69 6d 61 74 65  le cost estimate
16400 73 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s,..        /// 
16410 74 68 65 6e 20 63 68 6f 6f 73 65 20 74 68 65 20  then choose the 
16420 71 75 65 72 79 20 70 6c 61 6e 20 74 68 61 74 20  query plan that 
16430 67 69 76 65 73 20 74 68 65 20 6c 6f 77 65 73 74  gives the lowest
16440 20 65 73 74 69 6d 61 74 65 2e 0d 0a 20 20 20 20   estimate...    
16450 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d      /// </para>.
16460 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
16470 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
16480 20 54 68 65 20 61 43 6f 6e 73 74 72 61 69 6e 74   The aConstraint
16490 55 73 61 67 65 5b 5d 20 61 72 72 61 79 20 63 6f  Usage[] array co
164a0 6e 74 61 69 6e 73 20 6f 6e 65 20 65 6c 65 6d 65  ntains one eleme
164b0 6e 74 20 66 6f 72 20 65 61 63 68 20 6f 66 20 74  nt for each of t
164c0 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
164d0 6e 43 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e 73  nConstraint cons
164e0 74 72 61 69 6e 74 73 20 69 6e 20 74 68 65 20 69  traints in the i
164f0 6e 70 75 74 73 20 73 65 63 74 69 6f 6e 20 6f 66  nputs section of
16500 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
16510 2f 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  / sqlite3_index_
16520 69 6e 66 6f 20 73 74 72 75 63 74 75 72 65 2e 20  info structure. 
16530 54 68 65 20 61 43 6f 6e 73 74 72 61 69 6e 74 55  The aConstraintU
16540 73 61 67 65 5b 5d 20 61 72 72 61 79 20 69 73 20  sage[] array is 
16550 75 73 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  used..        //
16560 2f 20 62 79 20 78 42 65 73 74 49 6e 64 65 78 20  / by xBestIndex 
16570 74 6f 20 74 65 6c 6c 20 74 68 65 20 63 6f 72 65  to tell the core
16580 20 68 6f 77 20 69 74 20 69 73 20 75 73 69 6e 67   how it is using
16590 20 74 68 65 20 63 6f 6e 73 74 72 61 69 6e 74 73   the constraints
165a0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
165b0 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
165c0 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
165d0 20 20 20 20 2f 2f 2f 20 54 68 65 20 78 42 65 73      /// The xBes
165e0 74 49 6e 64 65 78 20 6d 65 74 68 6f 64 20 6d 61  tIndex method ma
165f0 79 20 73 65 74 20 61 43 6f 6e 73 74 72 61 69 6e  y set aConstrain
16600 74 55 73 61 67 65 5b 5d 2e 61 72 67 76 49 6e 64  tUsage[].argvInd
16610 65 78 20 65 6e 74 72 69 65 73 0d 0a 20 20 20 20  ex entries..    
16620 20 20 20 20 2f 2f 2f 20 74 6f 20 76 61 6c 75 65      /// to value
16630 73 20 67 72 65 61 74 65 72 20 74 68 61 6e 20 6f  s greater than o
16640 6e 65 2e 20 45 78 61 63 74 6c 79 20 6f 6e 65 20  ne. Exactly one 
16650 65 6e 74 72 79 20 73 68 6f 75 6c 64 20 62 65 20  entry should be 
16660 73 65 74 20 74 6f 20 31 2c 0d 0a 20 20 20 20 20  set to 1,..     
16670 20 20 20 2f 2f 2f 20 61 6e 6f 74 68 65 72 20 74     /// another t
16680 6f 20 32 2c 20 61 6e 6f 74 68 65 72 20 74 6f 20  o 2, another to 
16690 33 2c 20 61 6e 64 20 73 6f 20 66 6f 72 74 68 20  3, and so forth 
166a0 75 70 20 74 6f 20 61 73 20 6d 61 6e 79 20 6f 72  up to as many or
166b0 20 61 73 20 66 65 77 20 61 73 0d 0a 20 20 20 20   as few as..    
166c0 20 20 20 20 2f 2f 2f 20 74 68 65 20 78 42 65 73      /// the xBes
166d0 74 49 6e 64 65 78 20 6d 65 74 68 6f 64 20 77 61  tIndex method wa
166e0 6e 74 73 2e 20 54 68 65 20 45 58 50 52 20 6f 66  nts. The EXPR of
166f0 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e 64 69   the correspondi
16700 6e 67 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ng..        /// 
16710 63 6f 6e 73 74 72 61 69 6e 74 73 20 77 69 6c 6c  constraints will
16720 20 74 68 65 6e 20 62 65 20 70 61 73 73 65 64 20   then be passed 
16730 69 6e 20 61 73 20 74 68 65 20 61 72 67 76 5b 5d  in as the argv[]
16740 20 70 61 72 61 6d 65 74 65 72 73 20 74 6f 0d 0a   parameters to..
16750 20 20 20 20 20 20 20 20 2f 2f 2f 20 78 46 69 6c          /// xFil
16760 74 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ter...        //
16770 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20  / </para>..     
16780 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20     /// <para>.. 
16790 20 20 20 20 20 20 20 2f 2f 2f 20 46 6f 72 20 65         /// For e
167a0 78 61 6d 70 6c 65 2c 20 69 66 20 74 68 65 20 61  xample, if the a
167b0 43 6f 6e 73 74 72 61 69 6e 74 5b 33 5d 2e 61 72  Constraint[3].ar
167c0 67 76 49 6e 64 65 78 20 69 73 20 73 65 74 20 74  gvIndex is set t
167d0 6f 20 31 2c 20 74 68 65 6e 20 77 68 65 6e 0d 0a  o 1, then when..
167e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 78 46 69 6c          /// xFil
167f0 74 65 72 20 69 73 20 63 61 6c 6c 65 64 2c 20 74  ter is called, t
16800 68 65 20 61 72 67 76 5b 30 5d 20 70 61 73 73 65  he argv[0] passe
16810 64 20 74 6f 20 78 46 69 6c 74 65 72 20 77 69 6c  d to xFilter wil
16820 6c 20 68 61 76 65 20 74 68 65 20 45 58 50 52 0d  l have the EXPR.
16830 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c  .        /// val
16840 75 65 20 6f 66 20 74 68 65 20 61 43 6f 6e 73 74  ue of the aConst
16850 72 61 69 6e 74 5b 33 5d 20 63 6f 6e 73 74 72 61  raint[3] constra
16860 69 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  int...        //
16870 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20  / </para>..     
16880 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20     /// <para>.. 
16890 20 20 20 20 20 20 20 2f 2f 2f 20 42 79 20 64 65         /// By de
168a0 66 61 75 6c 74 2c 20 74 68 65 20 53 51 4c 69 74  fault, the SQLit
168b0 65 20 63 6f 72 65 20 64 6f 75 62 6c 65 20 63 68  e core double ch
168c0 65 63 6b 73 20 61 6c 6c 20 63 6f 6e 73 74 72 61  ecks all constra
168d0 69 6e 74 73 20 6f 6e 20 65 61 63 68 0d 0a 20 20  ints on each..  
168e0 20 20 20 20 20 20 2f 2f 2f 20 72 6f 77 20 6f 66        /// row of
168f0 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
16900 6c 65 20 74 68 61 74 20 69 74 20 72 65 63 65 69  le that it recei
16910 76 65 73 2e 20 49 66 20 73 75 63 68 20 61 20 63  ves. If such a c
16920 68 65 63 6b 20 69 73 0d 0a 20 20 20 20 20 20 20  heck is..       
16930 20 2f 2f 2f 20 72 65 64 75 6e 64 61 6e 74 2c 20   /// redundant, 
16940 74 68 65 20 78 42 65 73 74 46 69 6c 74 65 72 20  the xBestFilter 
16950 6d 65 74 68 6f 64 20 63 61 6e 20 73 75 70 70 72  method can suppr
16960 65 73 73 20 74 68 61 74 20 64 6f 75 62 6c 65 2d  ess that double-
16970 63 68 65 63 6b 20 62 79 0d 0a 20 20 20 20 20 20  check by..      
16980 20 20 2f 2f 2f 20 73 65 74 74 69 6e 67 20 61 43    /// setting aC
16990 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 5b 5d  onstraintUsage[]
169a0 2e 6f 6d 69 74 2e 0d 0a 20 20 20 20 20 20 20 20  .omit...        
169b0 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20  /// </para>..   
169c0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
169d0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
169e0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
169f0 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  tab">..        /
16a00 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f  // The native po
16a10 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c  inter to the sql
16a20 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65  ite3_vtab derive
16a30 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20  d structure...  
16a40 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
16a50 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
16a60 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 49 6e  <param name="pIn
16a70 64 65 78 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  dex">..        /
16a80 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f  // The native po
16a90 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c  inter to the sql
16aa0 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 20  ite3_index_info 
16ab0 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20  structure...    
16ac0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
16ad0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
16ae0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
16af0 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20   /// A standard 
16b00 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f  SQLite return co
16b10 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de...        ///
16b20 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
16b30 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72       SQLiteError
16b40 43 6f 64 65 20 78 42 65 73 74 49 6e 64 65 78 28  Code xBestIndex(
16b50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
16b60 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
16b70 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
16b80 70 49 6e 64 65 78 0d 0a 20 20 20 20 20 20 20 20  pIndex..        
16b90 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20      );....      
16ba0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
16bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
16bf0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
16c00 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
16c10 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
16c20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20  /// This method 
16c30 72 65 6c 65 61 73 65 73 20 61 20 63 6f 6e 6e 65  releases a conne
16c40 63 74 69 6f 6e 20 74 6f 20 61 20 76 69 72 74 75  ction to a virtu
16c50 61 6c 20 74 61 62 6c 65 2e 20 4f 6e 6c 79 20 74  al table. Only t
16c60 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
16c70 73 71 6c 69 74 65 33 5f 76 74 61 62 20 6f 62 6a  sqlite3_vtab obj
16c80 65 63 74 20 69 73 20 64 65 73 74 72 6f 79 65 64  ect is destroyed
16c90 2e 20 54 68 65 20 76 69 72 74 75 61 6c 20 74 61  . The virtual ta
16ca0 62 6c 65 20 69 73 20 6e 6f 74 0d 0a 20 20 20 20  ble is not..    
16cb0 20 20 20 20 2f 2f 2f 20 64 65 73 74 72 6f 79 65      /// destroye
16cc0 64 20 61 6e 64 20 61 6e 79 20 62 61 63 6b 69 6e  d and any backin
16cd0 67 20 73 74 6f 72 65 20 61 73 73 6f 63 69 61 74  g store associat
16ce0 65 64 20 77 69 74 68 20 74 68 65 20 76 69 72 74  ed with the virt
16cf0 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20 20  ual table..     
16d00 20 20 20 2f 2f 2f 20 70 65 72 73 69 73 74 73 2e     /// persists.
16d10 20 54 68 69 73 20 6d 65 74 68 6f 64 20 75 6e 64   This method und
16d20 6f 65 73 20 74 68 65 20 77 6f 72 6b 20 6f 66 20  oes the work of 
16d30 78 43 6f 6e 6e 65 63 74 2e 0d 0a 20 20 20 20 20  xConnect...     
16d40 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a     /// </para>..
16d50 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
16d60 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
16d70 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 61  This method is a
16d80 20 64 65 73 74 72 75 63 74 6f 72 20 66 6f 72 20   destructor for 
16d90 61 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20  a connection to 
16da0 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c  the virtual tabl
16db0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
16dc0 43 6f 6e 74 72 61 73 74 20 74 68 69 73 20 6d 65  Contrast this me
16dd0 74 68 6f 64 20 77 69 74 68 20 78 44 65 73 74 72  thod with xDestr
16de0 6f 79 2e 20 54 68 65 20 78 44 65 73 74 72 6f 79  oy. The xDestroy
16df0 20 69 73 20 61 20 64 65 73 74 72 75 63 74 6f 72   is a destructor
16e00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 66 6f  ..        /// fo
16e10 72 20 74 68 65 20 65 6e 74 69 72 65 20 76 69 72  r the entire vir
16e20 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20  tual table...   
16e30 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
16e40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
16e50 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
16e60 2f 20 54 68 65 20 78 44 69 73 63 6f 6e 6e 65 63  / The xDisconnec
16e70 74 20 6d 65 74 68 6f 64 20 69 73 20 72 65 71 75  t method is requ
16e80 69 72 65 64 20 66 6f 72 20 65 76 65 72 79 20 76  ired for every v
16e90 69 72 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20  irtual table..  
16ea0 20 20 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d        /// implem
16eb0 65 6e 74 61 74 69 6f 6e 2c 20 74 68 6f 75 67 68  entation, though
16ec0 20 69 74 20 69 73 20 61 63 63 65 70 74 61 62 6c   it is acceptabl
16ed0 65 20 66 6f 72 20 74 68 65 20 78 44 69 73 63 6f  e for the xDisco
16ee0 6e 6e 65 63 74 20 61 6e 64 0d 0a 20 20 20 20 20  nnect and..     
16ef0 20 20 20 2f 2f 2f 20 78 44 65 73 74 72 6f 79 20     /// xDestroy 
16f00 6d 65 74 68 6f 64 73 20 74 6f 20 62 65 20 74 68  methods to be th
16f10 65 20 73 61 6d 65 20 66 75 6e 63 74 69 6f 6e 20  e same function 
16f20 69 66 20 74 68 61 74 20 6d 61 6b 65 73 20 73 65  if that makes se
16f30 6e 73 65 20 66 6f 72 0d 0a 20 20 20 20 20 20 20  nse for..       
16f40 20 2f 2f 2f 20 74 68 65 20 70 61 72 74 69 63 75   /// the particu
16f50 6c 61 72 20 76 69 72 74 75 61 6c 20 74 61 62 6c  lar virtual tabl
16f60 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
16f70 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
16f80 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
16f90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
16fa0 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22  ram name="pVtab"
16fb0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
16fc0 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
16fd0 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33  r to the sqlite3
16fe0 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74  _vtab derived st
16ff0 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  ructure...      
17000 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
17010 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
17020 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
17030 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51  // A standard SQ
17040 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65  Lite return code
17050 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
17060 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
17070 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f     SQLiteErrorCo
17080 64 65 20 78 44 69 73 63 6f 6e 6e 65 63 74 28 0d  de xDisconnect(.
17090 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
170a0 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 20  Ptr pVtab..     
170b0 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20         );....   
170c0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
170d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
170e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
170f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
17110 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
17120 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
17130 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20  // <para>..     
17140 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68     /// This meth
17150 6f 64 20 72 65 6c 65 61 73 65 73 20 61 20 63 6f  od releases a co
17160 6e 6e 65 63 74 69 6f 6e 20 74 6f 20 61 20 76 69  nnection to a vi
17170 72 74 75 61 6c 20 74 61 62 6c 65 2c 20 6a 75 73  rtual table, jus
17180 74 20 6c 69 6b 65 20 74 68 65 0d 0a 20 20 20 20  t like the..    
17190 20 20 20 20 2f 2f 2f 20 78 44 69 73 63 6f 6e 6e      /// xDisconn
171a0 65 63 74 20 6d 65 74 68 6f 64 2c 20 61 6e 64 20  ect method, and 
171b0 69 74 20 61 6c 73 6f 20 64 65 73 74 72 6f 79 73  it also destroys
171c0 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20   the underlying 
171d0 74 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f  table..        /
171e0 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  // implementatio
171f0 6e 2e 20 54 68 69 73 20 6d 65 74 68 6f 64 20 75  n. This method u
17200 6e 64 6f 65 73 20 74 68 65 20 77 6f 72 6b 20 6f  ndoes the work o
17210 66 20 78 43 72 65 61 74 65 2e 0d 0a 20 20 20 20  f xCreate...    
17220 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d      /// </para>.
17230 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
17240 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
17250 20 54 68 65 20 78 44 69 73 63 6f 6e 6e 65 63 74   The xDisconnect
17260 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65   method is calle
17270 64 20 77 68 65 6e 65 76 65 72 20 61 20 64 61 74  d whenever a dat
17280 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
17290 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68  ..        /// th
172a0 61 74 20 75 73 65 73 20 61 20 76 69 72 74 75 61  at uses a virtua
172b0 6c 20 74 61 62 6c 65 20 69 73 20 63 6c 6f 73 65  l table is close
172c0 64 2e 20 54 68 65 20 78 44 65 73 74 72 6f 79 20  d. The xDestroy 
172d0 6d 65 74 68 6f 64 20 69 73 20 6f 6e 6c 79 0d 0a  method is only..
172e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 61 6c 6c          /// call
172f0 65 64 20 77 68 65 6e 20 61 20 44 52 4f 50 20 54  ed when a DROP T
17300 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 20 69  ABLE statement i
17310 73 20 65 78 65 63 75 74 65 64 20 61 67 61 69 6e  s executed again
17320 73 74 20 74 68 65 20 76 69 72 74 75 61 6c 0d 0a  st the virtual..
17330 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 61 62 6c          /// tabl
17340 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
17350 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
17360 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
17370 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 78 44 65       /// The xDe
17380 73 74 72 6f 79 20 6d 65 74 68 6f 64 20 69 73 20  stroy method is 
17390 72 65 71 75 69 72 65 64 20 66 6f 72 20 65 76 65  required for eve
173a0 72 79 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  ry virtual table
173b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6d  ..        /// im
173c0 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2c 20 74 68  plementation, th
173d0 6f 75 67 68 20 69 74 20 69 73 20 61 63 63 65 70  ough it is accep
173e0 74 61 62 6c 65 20 66 6f 72 20 74 68 65 20 78 44  table for the xD
173f0 69 73 63 6f 6e 6e 65 63 74 20 61 6e 64 0d 0a 20  isconnect and.. 
17400 20 20 20 20 20 20 20 2f 2f 2f 20 78 44 65 73 74         /// xDest
17410 72 6f 79 20 6d 65 74 68 6f 64 73 20 74 6f 20 62  roy methods to b
17420 65 20 74 68 65 20 73 61 6d 65 20 66 75 6e 63 74  e the same funct
17430 69 6f 6e 20 69 66 20 74 68 61 74 20 6d 61 6b 65  ion if that make
17440 73 20 73 65 6e 73 65 20 66 6f 72 0d 0a 20 20 20  s sense for..   
17450 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 70 61 72       /// the par
17460 74 69 63 75 6c 61 72 20 76 69 72 74 75 61 6c 20  ticular virtual 
17470 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20  table...        
17480 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20  /// </para>..   
17490 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
174a0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
174b0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
174c0 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  tab">..        /
174d0 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f  // The native po
174e0 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c  inter to the sql
174f0 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65  ite3_vtab derive
17500 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20  d structure...  
17510 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
17520 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
17530 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
17540 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72     /// A standar
17550 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20  d SQLite return 
17560 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  code...        /
17570 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
17580 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72         SQLiteErr
17590 6f 72 43 6f 64 65 20 78 44 65 73 74 72 6f 79 28  orCode xDestroy(
175a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
175b0 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20  tPtr pVtab..    
175c0 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20          );....  
175d0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
175e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
175f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
17620 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
17630 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
17640 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
17650 20 20 20 20 2f 2f 2f 20 54 68 65 20 78 4f 70 65      /// The xOpe
17660 6e 20 6d 65 74 68 6f 64 20 63 72 65 61 74 65 73  n method creates
17670 20 61 20 6e 65 77 20 63 75 72 73 6f 72 20 75 73   a new cursor us
17680 65 64 20 66 6f 72 20 61 63 63 65 73 73 69 6e 67  ed for accessing
17690 20 28 72 65 61 64 0d 0a 20 20 20 20 20 20 20 20   (read..        
176a0 2f 2f 2f 20 61 6e 64 2f 6f 72 20 77 72 69 74 69  /// and/or writi
176b0 6e 67 29 20 61 20 76 69 72 74 75 61 6c 20 74 61  ng) a virtual ta
176c0 62 6c 65 2e 20 41 20 73 75 63 63 65 73 73 66 75  ble. A successfu
176d0 6c 20 69 6e 76 6f 63 61 74 69 6f 6e 20 6f 66 20  l invocation of 
176e0 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  this..        //
176f0 2f 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20 61 6c  / method will al
17700 6c 6f 63 61 74 65 20 74 68 65 20 6d 65 6d 6f 72  locate the memor
17710 79 20 66 6f 72 20 74 68 65 20 73 71 6c 69 74 65  y for the sqlite
17720 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 28 6f  3_vtab_cursor (o
17730 72 20 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  r a..        ///
17740 20 73 75 62 63 6c 61 73 73 29 2c 20 69 6e 69 74   subclass), init
17750 69 61 6c 69 7a 65 20 74 68 65 20 6e 65 77 20 6f  ialize the new o
17760 62 6a 65 63 74 2c 20 61 6e 64 20 6d 61 6b 65 20  bject, and make 
17770 2a 70 70 43 75 72 73 6f 72 20 70 6f 69 6e 74 20  *ppCursor point 
17780 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  to..        /// 
17790 74 68 65 20 6e 65 77 20 6f 62 6a 65 63 74 2e 20  the new object. 
177a0 54 68 65 20 73 75 63 63 65 73 73 66 75 6c 20 63  The successful c
177b0 61 6c 6c 20 74 68 65 6e 20 72 65 74 75 72 6e 73  all then returns
177c0 20 53 51 4c 49 54 45 5f 4f 4b 2e 0d 0a 20 20 20   SQLITE_OK...   
177d0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
177e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
177f0 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
17800 2f 20 46 6f 72 20 65 76 65 72 79 20 73 75 63 63  / For every succ
17810 65 73 73 66 75 6c 20 63 61 6c 6c 20 74 6f 20 74  essful call to t
17820 68 69 73 20 6d 65 74 68 6f 64 2c 20 74 68 65 20  his method, the 
17830 53 51 4c 69 74 65 20 63 6f 72 65 20 77 69 6c 6c  SQLite core will
17840 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 61  ..        /// la
17850 74 65 72 20 69 6e 76 6f 6b 65 20 74 68 65 20 78  ter invoke the x
17860 43 6c 6f 73 65 20 6d 65 74 68 6f 64 20 74 6f 20  Close method to 
17870 64 65 73 74 72 6f 79 20 74 68 65 20 61 6c 6c 6f  destroy the allo
17880 63 61 74 65 64 20 63 75 72 73 6f 72 2e 0d 0a 20  cated cursor... 
17890 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
178a0 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
178b0 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
178c0 2f 2f 2f 20 54 68 65 20 78 4f 70 65 6e 20 6d 65  /// The xOpen me
178d0 74 68 6f 64 20 6e 65 65 64 20 6e 6f 74 20 69 6e  thod need not in
178e0 69 74 69 61 6c 69 7a 65 20 74 68 65 20 70 56 74  itialize the pVt
178f0 61 62 20 66 69 65 6c 64 20 6f 66 20 74 68 65 0d  ab field of the.
17900 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c  .        /// sql
17910 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72  ite3_vtab_cursor
17920 20 73 74 72 75 63 74 75 72 65 2e 20 54 68 65 20   structure. The 
17930 53 51 4c 69 74 65 20 63 6f 72 65 20 77 69 6c 6c  SQLite core will
17940 20 74 61 6b 65 20 63 61 72 65 20 6f 66 0d 0a 20   take care of.. 
17950 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 61 74 20         /// that 
17960 63 68 6f 72 65 20 61 75 74 6f 6d 61 74 69 63 61  chore automatica
17970 6c 6c 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  lly...        //
17980 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20  / </para>..     
17990 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20     /// <para>.. 
179a0 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 76 69 72         /// A vir
179b0 74 75 61 6c 20 74 61 62 6c 65 20 69 6d 70 6c 65  tual table imple
179c0 6d 65 6e 74 61 74 69 6f 6e 20 6d 75 73 74 20 62  mentation must b
179d0 65 20 61 62 6c 65 20 74 6f 20 73 75 70 70 6f 72  e able to suppor
179e0 74 20 61 6e 20 61 72 62 69 74 72 61 72 79 0d 0a  t an arbitrary..
179f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 75 6d 62          /// numb
17a00 65 72 20 6f 66 20 73 69 6d 75 6c 74 61 6e 65 6f  er of simultaneo
17a10 75 73 6c 79 20 6f 70 65 6e 20 63 75 72 73 6f 72  usly open cursor
17a20 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s...        /// 
17a30 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
17a40 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
17a50 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 69 6e       /// When in
17a60 69 74 69 61 6c 6c 79 20 6f 70 65 6e 65 64 2c 20  itially opened, 
17a70 74 68 65 20 63 75 72 73 6f 72 20 69 73 20 69 6e  the cursor is in
17a80 20 61 6e 20 75 6e 64 65 66 69 6e 65 64 20 73 74   an undefined st
17a90 61 74 65 2e 20 54 68 65 0d 0a 20 20 20 20 20 20  ate. The..      
17aa0 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 63 6f 72    /// SQLite cor
17ab0 65 20 77 69 6c 6c 20 69 6e 76 6f 6b 65 20 74 68  e will invoke th
17ac0 65 20 78 46 69 6c 74 65 72 20 6d 65 74 68 6f 64  e xFilter method
17ad0 20 6f 6e 20 74 68 65 20 63 75 72 73 6f 72 20 70   on the cursor p
17ae0 72 69 6f 72 20 74 6f 0d 0a 20 20 20 20 20 20 20  rior to..       
17af0 20 2f 2f 2f 20 61 6e 79 20 61 74 74 65 6d 70 74   /// any attempt
17b00 20 74 6f 20 70 6f 73 69 74 69 6f 6e 20 6f 72 20   to position or 
17b10 72 65 61 64 20 66 72 6f 6d 20 74 68 65 20 63 75  read from the cu
17b20 72 73 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f  rsor...        /
17b30 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20  // </para>..    
17b40 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a      /// <para>..
17b50 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
17b60 78 4f 70 65 6e 20 6d 65 74 68 6f 64 20 69 73 20  xOpen method is 
17b70 72 65 71 75 69 72 65 64 20 66 6f 72 20 65 76 65  required for eve
17b80 72 79 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  ry virtual table
17b90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6d  ..        /// im
17ba0 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d 0a 20  plementation... 
17bb0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
17bc0 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
17bd0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
17be0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
17bf0 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20  ame="pVtab">..  
17c00 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
17c10 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
17c20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62  the sqlite3_vtab
17c30 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75   derived structu
17c40 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
17c50 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
17c60 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
17c70 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20  me="pCursor">.. 
17c80 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20         /// Upon 
17c90 73 75 63 63 65 73 73 2c 20 74 68 69 73 20 70 61  success, this pa
17ca0 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20  rameter must be 
17cb0 6d 6f 64 69 66 69 65 64 20 74 6f 20 70 6f 69 6e  modified to poin
17cc0 74 20 74 6f 20 74 68 65 20 6e 65 77 6c 79 0d 0a  t to the newly..
17cd0 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 72 65 61          /// crea
17ce0 74 65 64 20 6e 61 74 69 76 65 20 73 71 6c 69 74  ted native sqlit
17cf0 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 64  e3_vtab_cursor d
17d00 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65  erived structure
17d10 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
17d20 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
17d30 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
17d40 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74          /// A st
17d50 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65  andard SQLite re
17d60 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20  turn code...    
17d70 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
17d80 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69  s>..        SQLi
17d90 74 65 45 72 72 6f 72 43 6f 64 65 20 78 4f 70 65  teErrorCode xOpe
17da0 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n(..            
17db0 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
17dc0 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 49             ref I
17dd0 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20  ntPtr pCursor.. 
17de0 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d             );...
17df0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
17e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e40 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
17e50 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
17e60 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20     /// <para>.. 
17e70 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 78         /// The x
17e80 43 6c 6f 73 65 20 6d 65 74 68 6f 64 20 63 6c 6f  Close method clo
17e90 73 65 73 20 61 20 63 75 72 73 6f 72 20 70 72 65  ses a cursor pre
17ea0 76 69 6f 75 73 6c 79 20 6f 70 65 6e 65 64 20 62  viously opened b
17eb0 79 20 78 4f 70 65 6e 2e 20 54 68 65 0d 0a 20 20  y xOpen. The..  
17ec0 20 20 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74 65        /// SQLite
17ed0 20 63 6f 72 65 20 77 69 6c 6c 20 61 6c 77 61 79   core will alway
17ee0 73 20 63 61 6c 6c 20 78 43 6c 6f 73 65 20 6f 6e  s call xClose on
17ef0 63 65 20 66 6f 72 20 65 61 63 68 20 63 75 72 73  ce for each curs
17f00 6f 72 20 6f 70 65 6e 65 64 0d 0a 20 20 20 20 20  or opened..     
17f10 20 20 20 2f 2f 2f 20 75 73 69 6e 67 20 78 4f 70     /// using xOp
17f20 65 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  en...        ///
17f30 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20   </para>..      
17f40 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20    /// <para>..  
17f50 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d        /// This m
17f60 65 74 68 6f 64 20 6d 75 73 74 20 72 65 6c 65 61  ethod must relea
17f70 73 65 20 61 6c 6c 20 72 65 73 6f 75 72 63 65 73  se all resources
17f80 20 61 6c 6c 6f 63 61 74 65 64 20 62 79 20 74 68   allocated by th
17f90 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  e..        /// c
17fa0 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 78 4f 70  orresponding xOp
17fb0 65 6e 20 63 61 6c 6c 2e 20 54 68 65 20 72 6f 75  en call. The rou
17fc0 74 69 6e 65 20 77 69 6c 6c 20 6e 6f 74 20 62 65  tine will not be
17fd0 20 63 61 6c 6c 65 64 20 61 67 61 69 6e 20 65 76   called again ev
17fe0 65 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  en..        /// 
17ff0 69 66 20 69 74 20 72 65 74 75 72 6e 73 20 61 6e  if it returns an
18000 20 65 72 72 6f 72 2e 20 54 68 65 20 53 51 4c 69   error. The SQLi
18010 74 65 20 63 6f 72 65 20 77 69 6c 6c 20 6e 6f 74  te core will not
18020 20 75 73 65 20 74 68 65 0d 0a 20 20 20 20 20 20   use the..      
18030 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 76 74    /// sqlite3_vt
18040 61 62 5f 63 75 72 73 6f 72 20 61 67 61 69 6e 20  ab_cursor again 
18050 61 66 74 65 72 20 69 74 20 68 61 73 20 62 65 65  after it has bee
18060 6e 20 63 6c 6f 73 65 64 2e 0d 0a 20 20 20 20 20  n closed...     
18070 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a     /// </para>..
18080 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
18090 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
180a0 54 68 65 20 78 43 6c 6f 73 65 20 6d 65 74 68 6f  The xClose metho
180b0 64 20 69 73 20 72 65 71 75 69 72 65 64 20 66 6f  d is required fo
180c0 72 20 65 76 65 72 79 20 76 69 72 74 75 61 6c 20  r every virtual 
180d0 74 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f  table..        /
180e0 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  // implementatio
180f0 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  n...        /// 
18100 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
18110 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
18120 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
18130 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f  ram name="pCurso
18140 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  r">..        ///
18150 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e   The native poin
18160 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74  ter to the sqlit
18170 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 64  e3_vtab_cursor d
18180 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65  erived structure
18190 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
181a0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
181b0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
181c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74          /// A st
181d0 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65  andard SQLite re
181e0 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20  turn code...    
181f0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
18200 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69  s>..        SQLi
18210 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6c 6f  teErrorCode xClo
18220 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se(..           
18230 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d   IntPtr pCursor.
18240 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d  .            );.
18250 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
18260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
182a0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
182b0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
182c0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
182d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
182e0 73 20 6d 65 74 68 6f 64 20 62 65 67 69 6e 73 20  s method begins 
182f0 61 20 73 65 61 72 63 68 20 6f 66 20 61 20 76 69  a search of a vi
18300 72 74 75 61 6c 20 74 61 62 6c 65 2e 20 54 68 65  rtual table. The
18310 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 0d   first argument.
18320 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 73 20  .        /// is 
18330 61 20 63 75 72 73 6f 72 20 6f 70 65 6e 65 64 20  a cursor opened 
18340 62 79 20 78 4f 70 65 6e 2e 20 54 68 65 20 6e 65  by xOpen. The ne
18350 78 74 20 74 77 6f 20 61 72 67 75 6d 65 6e 74 20  xt two argument 
18360 64 65 66 69 6e 65 20 61 0d 0a 20 20 20 20 20 20  define a..      
18370 20 20 2f 2f 2f 20 70 61 72 74 69 63 75 6c 61 72    /// particular
18380 20 73 65 61 72 63 68 20 69 6e 64 65 78 20 70 72   search index pr
18390 65 76 69 6f 75 73 6c 79 20 63 68 6f 73 65 6e 20  eviously chosen 
183a0 62 79 20 78 42 65 73 74 49 6e 64 65 78 2e 20 54  by xBestIndex. T
183b0 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
183c0 73 70 65 63 69 66 69 63 20 6d 65 61 6e 69 6e 67  specific meaning
183d0 73 20 6f 66 20 69 64 78 4e 75 6d 20 61 6e 64 20  s of idxNum and 
183e0 69 64 78 53 74 72 20 61 72 65 20 75 6e 69 6d 70  idxStr are unimp
183f0 6f 72 74 61 6e 74 20 61 73 20 6c 6f 6e 67 20 61  ortant as long a
18400 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 78  s..        /// x
18410 46 69 6c 74 65 72 20 61 6e 64 20 78 42 65 73 74  Filter and xBest
18420 49 6e 64 65 78 20 61 67 72 65 65 20 6f 6e 20 77  Index agree on w
18430 68 61 74 20 74 68 61 74 20 6d 65 61 6e 69 6e 67  hat that meaning
18440 20 69 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f   is...        //
18450 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20  / </para>..     
18460 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20     /// <para>.. 
18470 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 78         /// The x
18480 42 65 73 74 49 6e 64 65 78 20 66 75 6e 63 74 69  BestIndex functi
18490 6f 6e 20 6d 61 79 20 68 61 76 65 20 72 65 71 75  on may have requ
184a0 65 73 74 65 64 20 74 68 65 20 76 61 6c 75 65 73  ested the values
184b0 20 6f 66 20 63 65 72 74 61 69 6e 0d 0a 20 20 20   of certain..   
184c0 20 20 20 20 20 2f 2f 2f 20 65 78 70 72 65 73 73       /// express
184d0 69 6f 6e 73 20 75 73 69 6e 67 20 74 68 65 20 61  ions using the a
184e0 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 5b  ConstraintUsage[
184f0 5d 2e 61 72 67 76 49 6e 64 65 78 20 76 61 6c 75  ].argvIndex valu
18500 65 73 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20  es of the..     
18510 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 69     /// sqlite3_i
18520 6e 64 65 78 5f 69 6e 66 6f 20 73 74 72 75 63 74  ndex_info struct
18530 75 72 65 2e 20 54 68 6f 73 65 20 76 61 6c 75 65  ure. Those value
18540 73 20 61 72 65 20 70 61 73 73 65 64 20 74 6f 20  s are passed to 
18550 78 46 69 6c 74 65 72 0d 0a 20 20 20 20 20 20 20  xFilter..       
18560 20 2f 2f 2f 20 75 73 69 6e 67 20 74 68 65 20 61   /// using the a
18570 72 67 63 20 61 6e 64 20 61 72 67 76 20 70 61 72  rgc and argv par
18580 61 6d 65 74 65 72 73 2e 0d 0a 20 20 20 20 20 20  ameters...      
18590 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
185a0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
185b0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 49  >..        /// I
185c0 66 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  f the virtual ta
185d0 62 6c 65 20 63 6f 6e 74 61 69 6e 73 20 6f 6e 65  ble contains one
185e0 20 6f 72 20 6d 6f 72 65 20 72 6f 77 73 20 74 68   or more rows th
185f0 61 74 20 6d 61 74 63 68 20 74 68 65 0d 0a 20 20  at match the..  
18600 20 20 20 20 20 20 2f 2f 2f 20 73 65 61 72 63 68        /// search
18610 20 63 72 69 74 65 72 69 61 2c 20 74 68 65 6e 20   criteria, then 
18620 74 68 65 20 63 75 72 73 6f 72 20 6d 75 73 74 20  the cursor must 
18630 62 65 20 6c 65 66 74 20 70 6f 69 6e 74 20 61 74  be left point at
18640 20 74 68 65 20 66 69 72 73 74 0d 0a 20 20 20 20   the first..    
18650 20 20 20 20 2f 2f 2f 20 72 6f 77 2e 20 53 75 62      /// row. Sub
18660 73 65 71 75 65 6e 74 20 63 61 6c 6c 73 20 74 6f  sequent calls to
18670 20 78 45 6f 66 20 6d 75 73 74 20 72 65 74 75 72   xEof must retur
18680 6e 20 66 61 6c 73 65 20 28 7a 65 72 6f 29 2e 20  n false (zero). 
18690 49 66 20 74 68 65 72 65 0d 0a 20 20 20 20 20 20  If there..      
186a0 20 20 2f 2f 2f 20 61 72 65 20 6e 6f 20 72 6f 77    /// are no row
186b0 73 20 6d 61 74 63 68 2c 20 74 68 65 6e 20 74 68  s match, then th
186c0 65 20 63 75 72 73 6f 72 20 6d 75 73 74 20 62 65  e cursor must be
186d0 20 6c 65 66 74 20 69 6e 20 61 20 73 74 61 74 65   left in a state
186e0 20 74 68 61 74 0d 0a 20 20 20 20 20 20 20 20 2f   that..        /
186f0 2f 2f 20 77 69 6c 6c 20 63 61 75 73 65 20 74 68  // will cause th
18700 65 20 78 45 6f 66 20 74 6f 20 72 65 74 75 72 6e  e xEof to return
18710 20 74 72 75 65 20 28 6e 6f 6e 2d 7a 65 72 6f 29   true (non-zero)
18720 2e 20 54 68 65 20 53 51 4c 69 74 65 20 65 6e 67  . The SQLite eng
18730 69 6e 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ine..        ///
18740 20 77 69 6c 6c 20 75 73 65 20 74 68 65 20 78 43   will use the xC
18750 6f 6c 75 6d 6e 20 61 6e 64 20 78 52 6f 77 69 64  olumn and xRowid
18760 20 6d 65 74 68 6f 64 73 20 74 6f 20 61 63 63 65   methods to acce
18770 73 73 20 74 68 61 74 20 72 6f 77 20 63 6f 6e 74  ss that row cont
18780 65 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ent...        //
18790 2f 20 54 68 65 20 78 4e 65 78 74 20 6d 65 74 68  / The xNext meth
187a0 6f 64 20 77 69 6c 6c 20 62 65 20 75 73 65 64 20  od will be used 
187b0 74 6f 20 61 64 76 61 6e 63 65 20 74 6f 20 74 68  to advance to th
187c0 65 20 6e 65 78 74 20 72 6f 77 2e 0d 0a 20 20 20  e next row...   
187d0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
187e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
187f0 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
18800 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 6d 75  / This method mu
18810 73 74 20 72 65 74 75 72 6e 20 53 51 4c 49 54 45  st return SQLITE
18820 5f 4f 4b 20 69 66 20 73 75 63 63 65 73 73 66 75  _OK if successfu
18830 6c 2c 20 6f 72 20 61 6e 20 73 71 6c 69 74 65 20  l, or an sqlite 
18840 65 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f  error..        /
18850 2f 2f 20 63 6f 64 65 20 69 66 20 61 6e 20 65 72  // code if an er
18860 72 6f 72 20 6f 63 63 75 72 73 2e 0d 0a 20 20 20  ror occurs...   
18870 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
18880 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
18890 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
188a0 2f 20 54 68 65 20 78 46 69 6c 74 65 72 20 6d 65  / The xFilter me
188b0 74 68 6f 64 20 69 73 20 72 65 71 75 69 72 65 64  thod is required
188c0 20 66 6f 72 20 65 76 65 72 79 20 76 69 72 74 75   for every virtu
188d0 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20 20 20  al table..      
188e0 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74 61    /// implementa
188f0 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  tion...        /
18900 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20  // </para>..    
18910 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
18920 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
18930 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75  <param name="pCu
18940 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20  rsor">..        
18950 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70  /// The native p
18960 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71  ointer to the sq
18970 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f  lite3_vtab_curso
18980 72 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74  r derived struct
18990 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
189a0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
189b0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
189c0 61 6d 65 3d 22 69 64 78 4e 75 6d 22 3e 0d 0a 20  ame="idxNum">.. 
189d0 20 20 20 20 20 20 20 2f 2f 2f 20 4e 75 6d 62 65         /// Numbe
189e0 72 20 75 73 65 64 20 74 6f 20 68 65 6c 70 20 69  r used to help i
189f0 64 65 6e 74 69 66 79 20 74 68 65 20 73 65 6c 65  dentify the sele
18a00 63 74 65 64 20 69 6e 64 65 78 2e 0d 0a 20 20 20  cted index...   
18a10 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
18a20 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
18a30 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 64 78 53  param name="idxS
18a40 74 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tr">..        //
18a50 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69  / The native poi
18a60 6e 74 65 72 20 74 6f 20 74 68 65 20 55 54 46 2d  nter to the UTF-
18a70 38 20 65 6e 63 6f 64 65 64 20 73 74 72 69 6e 67  8 encoded string
18a80 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 0d   containing the.
18a90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72  .        /// str
18aa0 69 6e 67 20 75 73 65 64 20 74 6f 20 68 65 6c 70  ing used to help
18ab0 20 69 64 65 6e 74 69 66 79 20 74 68 65 20 73 65   identify the se
18ac0 6c 65 63 74 65 64 20 69 6e 64 65 78 2e 0d 0a 20  lected index... 
18ad0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
18ae0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
18af0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72   <param name="ar
18b00 67 63 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  gc">..        //
18b10 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  / The number of 
18b20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 73 20  native pointers 
18b30 74 6f 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  to sqlite3_value
18b40 20 73 74 72 75 63 74 75 72 65 73 20 73 70 65 63   structures spec
18b50 69 66 69 65 64 0d 0a 20 20 20 20 20 20 20 20 2f  ified..        /
18b60 2f 2f 20 69 6e 20 3c 70 61 72 61 6d 72 65 66 20  // in <paramref 
18b70 6e 61 6d 65 3d 22 61 72 67 76 22 20 2f 3e 2e 0d  name="argv" />..
18b80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
18b90 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
18ba0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
18bb0 61 72 67 76 22 3e 0d 0a 20 20 20 20 20 20 20 20  argv">..        
18bc0 2f 2f 2f 20 41 6e 20 61 72 72 61 79 20 6f 66 20  /// An array of 
18bd0 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 73 20  native pointers 
18be0 74 6f 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  to sqlite3_value
18bf0 20 73 74 72 75 63 74 75 72 65 73 20 63 6f 6e 74   structures cont
18c00 61 69 6e 69 6e 67 0d 0a 20 20 20 20 20 20 20 20  aining..        
18c10 2f 2f 2f 20 66 69 6c 74 65 72 69 6e 67 20 63 72  /// filtering cr
18c20 69 74 65 72 69 61 20 66 6f 72 20 74 68 65 20 73  iteria for the s
18c30 65 6c 65 63 74 65 64 20 69 6e 64 65 78 2e 0d 0a  elected index...
18c40 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
18c50 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
18c60 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
18c70 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64       /// A stand
18c80 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72  ard SQLite retur
18c90 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  n code...       
18ca0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
18cb0 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45  .        SQLiteE
18cc0 72 72 6f 72 43 6f 64 65 20 78 46 69 6c 74 65 72  rrorCode xFilter
18cd0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  (..            I
18ce0 6e 74 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a  ntPtr pCursor,..
18cf0 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
18d00 69 64 78 4e 75 6d 2c 0d 0a 20 20 20 20 20 20 20  idxNum,..       
18d10 20 20 20 20 20 49 6e 74 50 74 72 20 69 64 78 53       IntPtr idxS
18d20 74 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tr,..           
18d30 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20   int argc,..    
18d40 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 61          IntPtr a
18d50 72 67 76 0d 0a 20 20 20 20 20 20 20 20 20 20 20  rgv..           
18d60 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   );....        /
18d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18db0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
18dc0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
18dd0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
18de0 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
18df0 20 54 68 65 20 78 4e 65 78 74 20 6d 65 74 68 6f   The xNext metho
18e00 64 20 61 64 76 61 6e 63 65 73 20 61 20 76 69 72  d advances a vir
18e10 74 75 61 6c 20 74 61 62 6c 65 20 63 75 72 73 6f  tual table curso
18e20 72 20 74 6f 20 74 68 65 20 6e 65 78 74 20 72 6f  r to the next ro
18e30 77 20 6f 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f  w of..        //
18e40 2f 20 61 20 72 65 73 75 6c 74 20 73 65 74 20 69  / a result set i
18e50 6e 69 74 69 61 74 65 64 20 62 79 20 78 46 69 6c  nitiated by xFil
18e60 74 65 72 2e 20 49 66 20 74 68 65 20 63 75 72 73  ter. If the curs
18e70 6f 72 20 69 73 20 61 6c 72 65 61 64 79 0d 0a 20  or is already.. 
18e80 20 20 20 20 20 20 20 2f 2f 2f 20 70 6f 69 6e 74         /// point
18e90 69 6e 67 20 61 74 20 74 68 65 20 6c 61 73 74 20  ing at the last 
18ea0 72 6f 77 20 77 68 65 6e 20 74 68 69 73 20 72 6f  row when this ro
18eb0 75 74 69 6e 65 20 69 73 20 63 61 6c 6c 65 64 2c  utine is called,
18ec0 20 74 68 65 6e 20 74 68 65 0d 0a 20 20 20 20 20   then the..     
18ed0 20 20 20 2f 2f 2f 20 63 75 72 73 6f 72 20 6e 6f     /// cursor no
18ee0 20 6c 6f 6e 67 65 72 20 70 6f 69 6e 74 73 20 74   longer points t
18ef0 6f 20 76 61 6c 69 64 20 64 61 74 61 20 61 6e 64  o valid data and
18f00 20 61 20 73 75 62 73 65 71 75 65 6e 74 20 63 61   a subsequent ca
18f10 6c 6c 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20  ll to the..     
18f20 20 20 20 2f 2f 2f 20 78 45 6f 66 20 6d 65 74 68     /// xEof meth
18f30 6f 64 20 6d 75 73 74 20 72 65 74 75 72 6e 20 74  od must return t
18f40 72 75 65 20 28 6e 6f 6e 2d 7a 65 72 6f 29 2e 20  rue (non-zero). 
18f50 49 66 20 74 68 65 20 63 75 72 73 6f 72 20 69 73  If the cursor is
18f60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 75  ..        /// su
18f70 63 63 65 73 73 66 75 6c 6c 79 20 61 64 76 61 6e  ccessfully advan
18f80 63 65 64 20 74 6f 20 61 6e 6f 74 68 65 72 20 72  ced to another r
18f90 6f 77 20 6f 66 20 63 6f 6e 74 65 6e 74 2c 20 74  ow of content, t
18fa0 68 65 6e 20 73 75 62 73 65 71 75 65 6e 74 0d 0a  hen subsequent..
18fb0 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 61 6c 6c          /// call
18fc0 73 20 74 6f 20 78 45 6f 66 20 6d 75 73 74 20 72  s to xEof must r
18fd0 65 74 75 72 6e 20 66 61 6c 73 65 20 28 7a 65 72  eturn false (zer
18fe0 6f 29 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  o)...        ///
18ff0 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20   </para>..      
19000 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20    /// <para>..  
19010 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d        /// This m
19020 65 74 68 6f 64 20 6d 75 73 74 20 72 65 74 75 72  ethod must retur
19030 6e 20 53 51 4c 49 54 45 5f 4f 4b 20 69 66 20 73  n SQLITE_OK if s
19040 75 63 63 65 73 73 66 75 6c 2c 20 6f 72 20 61 6e  uccessful, or an
19050 20 73 71 6c 69 74 65 20 65 72 72 6f 72 0d 0a 20   sqlite error.. 
19060 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 64 65 20         /// code 
19070 69 66 20 61 6e 20 65 72 72 6f 72 20 6f 63 63 75  if an error occu
19080 72 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  rs...        ///
19090 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20   </para>..      
190a0 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20    /// <para>..  
190b0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 78 4e        /// The xN
190c0 65 78 74 20 6d 65 74 68 6f 64 20 69 73 20 72 65  ext method is re
190d0 71 75 69 72 65 64 20 66 6f 72 20 65 76 65 72 79  quired for every
190e0 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 0d 0a   virtual table..
190f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6d 70 6c          /// impl
19100 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20 20  ementation...   
19110 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
19120 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
19130 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
19140 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
19150 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20  e="pCursor">..  
19160 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
19170 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
19180 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62  the sqlite3_vtab
19190 5f 63 75 72 73 6f 72 20 64 65 72 69 76 65 64 20  _cursor derived 
191a0 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20  structure...    
191b0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
191c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
191d0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
191e0 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20   /// A standard 
191f0 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f  SQLite return co
19200 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de...        ///
19210 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
19220 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72       SQLiteError
19230 43 6f 64 65 20 78 4e 65 78 74 28 0d 0a 20 20 20  Code xNext(..   
19240 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
19250 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20  pCursor..       
19260 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20       );....     
19270 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
19280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
192a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
192b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
192c0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
192d0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
192e0 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
192f0 20 2f 2f 2f 20 54 68 65 20 78 45 6f 66 20 6d 65   /// The xEof me
19300 74 68 6f 64 20 6d 75 73 74 20 72 65 74 75 72 6e  thod must return
19310 20 66 61 6c 73 65 20 28 7a 65 72 6f 29 20 69 66   false (zero) if
19320 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 63   the specified c
19330 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f  ursor..        /
19340 2f 2f 20 63 75 72 72 65 6e 74 6c 79 20 70 6f 69  // currently poi
19350 6e 74 73 20 74 6f 20 61 20 76 61 6c 69 64 20 72  nts to a valid r
19360 6f 77 20 6f 66 20 64 61 74 61 2c 20 6f 72 20 74  ow of data, or t
19370 72 75 65 20 28 6e 6f 6e 2d 7a 65 72 6f 29 0d 0a  rue (non-zero)..
19380 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 74 68 65          /// othe
19390 72 77 69 73 65 2e 20 54 68 69 73 20 6d 65 74 68  rwise. This meth
193a0 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 62 79 20  od is called by 
193b0 74 68 65 20 53 51 4c 20 65 6e 67 69 6e 65 20 69  the SQL engine i
193c0 6d 6d 65 64 69 61 74 65 6c 79 0d 0a 20 20 20 20  mmediately..    
193d0 20 20 20 20 2f 2f 2f 20 61 66 74 65 72 20 65 61      /// after ea
193e0 63 68 20 78 46 69 6c 74 65 72 20 61 6e 64 20 78  ch xFilter and x
193f0 4e 65 78 74 20 69 6e 76 6f 63 61 74 69 6f 6e 2e  Next invocation.
19400 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
19410 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
19420 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20  // <para>..     
19430 20 20 20 2f 2f 2f 20 54 68 65 20 78 45 6f 66 20     /// The xEof 
19440 6d 65 74 68 6f 64 20 69 73 20 72 65 71 75 69 72  method is requir
19450 65 64 20 66 6f 72 20 65 76 65 72 79 20 76 69 72  ed for every vir
19460 74 75 61 6c 20 74 61 62 6c 65 20 69 6d 70 6c 65  tual table imple
19470 6d 65 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20  mentation...    
19480 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d      /// </para>.
19490 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
194a0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
194b0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
194c0 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20  ="pCursor">..   
194d0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
194e0 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  ive pointer to t
194f0 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f  he sqlite3_vtab_
19500 63 75 72 73 6f 72 20 64 65 72 69 76 65 64 20 73  cursor derived s
19510 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20  tructure...     
19520 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
19530 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
19540 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
19550 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
19560 6e 6f 20 6d 6f 72 65 20 72 6f 77 73 20 61 72 65  no more rows are
19570 20 61 76 61 69 6c 61 62 6c 65 3b 20 7a 65 72 6f   available; zero
19580 20 6f 74 68 65 72 77 69 73 65 2e 0d 0a 20 20 20   otherwise...   
19590 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
195a0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ns>..        int
195b0 20 78 45 6f 66 28 0d 0a 20 20 20 20 20 20 20 20   xEof(..        
195c0 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73      IntPtr pCurs
195d0 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  or..            
195e0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  );....        //
195f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19630 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
19640 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
19650 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
19660 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
19670 54 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  The SQLite core 
19680 69 6e 76 6f 6b 65 73 20 74 68 69 73 20 6d 65 74  invokes this met
19690 68 6f 64 20 69 6e 20 6f 72 64 65 72 20 74 6f 20  hod in order to 
196a0 66 69 6e 64 20 74 68 65 20 76 61 6c 75 65 20 66  find the value f
196b0 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  or..        /// 
196c0 74 68 65 20 4e 2d 74 68 20 63 6f 6c 75 6d 6e 20  the N-th column 
196d0 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 72  of the current r
196e0 6f 77 2e 20 4e 20 69 73 20 7a 65 72 6f 2d 62 61  ow. N is zero-ba
196f0 73 65 64 20 73 6f 20 74 68 65 20 66 69 72 73 74  sed so the first
19700 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f  ..        /// co
19710 6c 75 6d 6e 20 69 73 20 6e 75 6d 62 65 72 65 64  lumn is numbered
19720 20 30 2e 20 54 68 65 20 78 43 6f 6c 75 6d 6e 20   0. The xColumn 
19730 6d 65 74 68 6f 64 20 6d 61 79 20 72 65 74 75 72  method may retur
19740 6e 20 69 74 73 20 72 65 73 75 6c 74 20 62 61 63  n its result bac
19750 6b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  k..        /// t
19760 6f 20 53 51 4c 69 74 65 20 75 73 69 6e 67 20 6f  o SQLite using o
19770 6e 65 20 6f 66 20 74 68 65 20 66 6f 6c 6c 6f 77  ne of the follow
19780 69 6e 67 20 69 6e 74 65 72 66 61 63 65 3a 0d 0a  ing interface:..
19790 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
197a0 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
197b0 20 3c 63 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20   <code>..       
197c0 20 2f 2f 2f 20 20 20 20 20 73 71 6c 69 74 65 33   ///     sqlite3
197d0 5f 72 65 73 75 6c 74 5f 62 6c 6f 62 28 29 0d 0a  _result_blob()..
197e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20          ///     
197f0 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 64  sqlite3_result_d
19800 6f 75 62 6c 65 28 29 0d 0a 20 20 20 20 20 20 20  ouble()..       
19810 20 2f 2f 2f 20 20 20 20 20 73 71 6c 69 74 65 33   ///     sqlite3
19820 5f 72 65 73 75 6c 74 5f 69 6e 74 28 29 0d 0a 20  _result_int().. 
19830 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 73         ///     s
19840 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e  qlite3_result_in
19850 74 36 34 28 29 0d 0a 20 20 20 20 20 20 20 20 2f  t64()..        /
19860 2f 2f 20 20 20 20 20 73 71 6c 69 74 65 33 5f 72  //     sqlite3_r
19870 65 73 75 6c 74 5f 6e 75 6c 6c 28 29 0d 0a 20 20  esult_null()..  
19880 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 73 71        ///     sq
19890 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 74 65 78  lite3_result_tex
198a0 74 28 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  t()..        ///
198b0 20 20 20 20 20 73 71 6c 69 74 65 33 5f 72 65 73       sqlite3_res
198c0 75 6c 74 5f 74 65 78 74 31 36 28 29 0d 0a 20 20  ult_text16()..  
198d0 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 73 71        ///     sq
198e0 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 74 65 78  lite3_result_tex
198f0 74 31 36 6c 65 28 29 0d 0a 20 20 20 20 20 20 20  t16le()..       
19900 20 2f 2f 2f 20 20 20 20 20 73 71 6c 69 74 65 33   ///     sqlite3
19910 5f 72 65 73 75 6c 74 5f 74 65 78 74 31 36 62 65  _result_text16be
19920 28 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ()..        /// 
19930 20 20 20 20 73 71 6c 69 74 65 33 5f 72 65 73 75      sqlite3_resu
19940 6c 74 5f 7a 65 72 6f 62 6c 6f 62 28 29 0d 0a 20  lt_zeroblob().. 
19950 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 63 6f 64         /// </cod
19960 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e>..        /// 
19970 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
19980 2f 2f 2f 20 49 66 20 74 68 65 20 78 43 6f 6c 75  /// If the xColu
19990 6d 6e 20 6d 65 74 68 6f 64 20 69 6d 70 6c 65 6d  mn method implem
199a0 65 6e 74 61 74 69 6f 6e 20 63 61 6c 6c 73 20 6e  entation calls n
199b0 6f 6e 65 20 6f 66 20 74 68 65 20 66 75 6e 63 74  one of the funct
199c0 69 6f 6e 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ions..        //
199d0 2f 20 61 62 6f 76 65 2c 20 74 68 65 6e 20 74 68  / above, then th
199e0 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 63  e value of the c
199f0 6f 6c 75 6d 6e 20 64 65 66 61 75 6c 74 73 20 74  olumn defaults t
19a00 6f 20 61 6e 20 53 51 4c 20 4e 55 4c 4c 2e 0d 0a  o an SQL NULL...
19a10 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
19a20 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
19a30 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
19a40 20 2f 2f 2f 20 54 6f 20 72 61 69 73 65 20 61 6e   /// To raise an
19a50 20 65 72 72 6f 72 2c 20 74 68 65 20 78 43 6f 6c   error, the xCol
19a60 75 6d 6e 20 6d 65 74 68 6f 64 20 73 68 6f 75 6c  umn method shoul
19a70 64 20 75 73 65 20 6f 6e 65 20 6f 66 20 74 68 65  d use one of the
19a80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 72 65  ..        /// re
19a90 73 75 6c 74 5f 74 65 78 74 28 29 20 6d 65 74 68  sult_text() meth
19aa0 6f 64 73 20 74 6f 20 73 65 74 20 74 68 65 20 65  ods to set the e
19ab0 72 72 6f 72 20 6d 65 73 73 61 67 65 20 74 65 78  rror message tex
19ac0 74 2c 20 74 68 65 6e 20 72 65 74 75 72 6e 20 61  t, then return a
19ad0 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61  n..        /// a
19ae0 70 70 72 6f 70 72 69 61 74 65 20 65 72 72 6f 72  ppropriate error
19af0 20 63 6f 64 65 2e 20 54 68 65 20 78 43 6f 6c 75   code. The xColu
19b00 6d 6e 20 6d 65 74 68 6f 64 20 6d 75 73 74 20 72  mn method must r
19b10 65 74 75 72 6e 20 53 51 4c 49 54 45 5f 4f 4b 20  eturn SQLITE_OK 
19b20 6f 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  on..        /// 
19b30 73 75 63 63 65 73 73 2e 0d 0a 20 20 20 20 20 20  success...      
19b40 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
19b50 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
19b60 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
19b70 68 65 20 78 43 6f 6c 75 6d 6e 20 6d 65 74 68 6f  he xColumn metho
19b80 64 20 69 73 20 72 65 71 75 69 72 65 64 20 66 6f  d is required fo
19b90 72 20 65 76 65 72 79 20 76 69 72 74 75 61 6c 20  r every virtual 
19ba0 74 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f  table..        /
19bb0 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  // implementatio
19bc0 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  n...        /// 
19bd0 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
19be0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
19bf0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
19c00 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f  ram name="pCurso
19c10 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  r">..        ///
19c20 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e   The native poin
19c30 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74  ter to the sqlit
19c40 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 64  e3_vtab_cursor d
19c50 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65  erived structure
19c60 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
19c70 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
19c80 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
19c90 3d 22 70 43 6f 6e 74 65 78 74 22 3e 0d 0a 20 20  ="pContext">..  
19ca0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
19cb0 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
19cc0 74 68 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 74  the sqlite3_cont
19cd0 65 78 74 20 73 74 72 75 63 74 75 72 65 20 74 6f  ext structure to
19ce0 20 62 65 20 75 73 65 64 0d 0a 20 20 20 20 20 20   be used..      
19cf0 20 20 2f 2f 2f 20 66 6f 72 20 72 65 74 75 72 6e    /// for return
19d00 69 6e 67 20 74 68 65 20 73 70 65 63 69 66 69 65  ing the specifie
19d10 64 20 63 6f 6c 75 6d 6e 20 76 61 6c 75 65 20 74  d column value t
19d20 6f 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  o the SQLite cor
19d30 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c  e..        /// l
19d40 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20  ibrary...       
19d50 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
19d60 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
19d70 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78 22 3e 0d  m name="index">.
19d80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
19d90 20 7a 65 72 6f 2d 62 61 73 65 64 20 69 6e 64 65   zero-based inde
19da0 78 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20  x corresponding 
19db0 74 6f 20 74 68 65 20 63 6f 6c 75 6d 6e 20 63 6f  to the column co
19dc0 6e 74 61 69 6e 69 6e 67 20 74 68 65 0d 0a 20 20  ntaining the..  
19dd0 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 20        /// value 
19de0 74 6f 20 62 65 20 72 65 74 75 72 6e 65 64 2e 0d  to be returned..
19df0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
19e00 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
19e10 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
19e20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e        /// A stan
19e30 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75  dard SQLite retu
19e40 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  rn code...      
19e50 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
19e60 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65  ..        SQLite
19e70 45 72 72 6f 72 43 6f 64 65 20 78 43 6f 6c 75 6d  ErrorCode xColum
19e80 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n(..            
19e90 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 2c 0d  IntPtr pCursor,.
19ea0 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
19eb0 50 74 72 20 70 43 6f 6e 74 65 78 74 2c 0d 0a 20  Ptr pContext,.. 
19ec0 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69             int i
19ed0 6e 64 65 78 0d 0a 20 20 20 20 20 20 20 20 20 20  ndex..          
19ee0 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    );....        
19ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19f30 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
19f40 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
19f50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
19f60 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
19f70 2f 20 41 20 73 75 63 63 65 73 73 66 75 6c 20 69  / A successful i
19f80 6e 76 6f 63 61 74 69 6f 6e 20 6f 66 20 74 68 69  nvocation of thi
19f90 73 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20 63 61  s method will ca
19fa0 75 73 65 20 2a 70 52 6f 77 69 64 20 74 6f 20 62  use *pRowid to b
19fb0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 66  e..        /// f
19fc0 69 6c 6c 65 64 20 77 69 74 68 20 74 68 65 20 72  illed with the r
19fd0 6f 77 69 64 20 6f 66 20 72 6f 77 20 74 68 61 74  owid of row that
19fe0 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
19ff0 6c 65 20 63 75 72 73 6f 72 20 70 43 75 72 20 69  le cursor pCur i
1a000 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  s..        /// c
1a010 75 72 72 65 6e 74 6c 79 20 70 6f 69 6e 74 69 6e  urrently pointin
1a020 67 20 61 74 2e 20 54 68 69 73 20 6d 65 74 68 6f  g at. This metho
1a030 64 20 72 65 74 75 72 6e 73 20 53 51 4c 49 54 45  d returns SQLITE
1a040 5f 4f 4b 20 6f 6e 20 73 75 63 63 65 73 73 2e 20  _OK on success. 
1a050 49 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  It..        /// 
1a060 72 65 74 75 72 6e 73 20 61 6e 20 61 70 70 72 6f  returns an appro
1a070 70 72 69 61 74 65 20 65 72 72 6f 72 20 63 6f 64  priate error cod
1a080 65 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20  e on failure... 
1a090 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1a0a0 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
1a0b0 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
1a0c0 2f 2f 2f 20 54 68 65 20 78 52 6f 77 69 64 20 6d  /// The xRowid m
1a0d0 65 74 68 6f 64 20 69 73 20 72 65 71 75 69 72 65  ethod is require
1a0e0 64 20 66 6f 72 20 65 76 65 72 79 20 76 69 72 74  d for every virt
1a0f0 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20 20  ual table..     
1a100 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74     /// implement
1a110 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ation...        
1a120 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20  /// </para>..   
1a130 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1a140 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1a150 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43   <param name="pC
1a160 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20  ursor">..       
1a170 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
1a180 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73  pointer to the s
1a190 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73  qlite3_vtab_curs
1a1a0 6f 72 20 64 65 72 69 76 65 64 20 73 74 72 75 63  or derived struc
1a1b0 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ture...        /
1a1c0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1a1d0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1a1e0 6e 61 6d 65 3d 22 72 6f 77 49 64 22 3e 0d 0a 20  name="rowId">.. 
1a1f0 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20         /// Upon 
1a200 73 75 63 63 65 73 73 2c 20 74 68 69 73 20 70 61  success, this pa
1a210 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20  rameter must be 
1a220 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74  modified to cont
1a230 61 69 6e 20 74 68 65 20 75 6e 69 71 75 65 0d 0a  ain the unique..
1a240 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65          /// inte
1a250 67 65 72 20 72 6f 77 20 69 64 65 6e 74 69 66 69  ger row identifi
1a260 65 72 20 66 6f 72 20 74 68 65 20 63 75 72 72 65  er for the curre
1a270 6e 74 20 72 6f 77 20 66 6f 72 20 74 68 65 20 73  nt row for the s
1a280 70 65 63 69 66 69 65 64 20 63 75 72 73 6f 72 2e  pecified cursor.
1a290 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1a2a0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1a2b0 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
1a2c0 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61         /// A sta
1a2d0 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74  ndard SQLite ret
1a2e0 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  urn code...     
1a2f0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
1a300 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  >..        SQLit
1a310 65 45 72 72 6f 72 43 6f 64 65 20 78 52 6f 77 49  eErrorCode xRowI
1a320 64 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d(..            
1a330 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 2c 0d  IntPtr pCursor,.
1a340 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66  .            ref
1a350 20 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a 20 20 20   long rowId..   
1a360 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20           );.... 
1a370 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1a380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a3a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a3b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1a3c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1a3d0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1a3e0 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
1a3f0 20 20 20 20 20 2f 2f 2f 20 41 6c 6c 20 63 68 61       /// All cha
1a400 6e 67 65 73 20 74 6f 20 61 20 76 69 72 74 75 61  nges to a virtua
1a410 6c 20 74 61 62 6c 65 20 61 72 65 20 6d 61 64 65  l table are made
1a420 20 75 73 69 6e 67 20 74 68 65 20 78 55 70 64 61   using the xUpda
1a430 74 65 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  te method...    
1a440 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6f 6e 65      /// This one
1a450 20 6d 65 74 68 6f 64 20 63 61 6e 20 62 65 20 75   method can be u
1a460 73 65 64 20 74 6f 20 69 6e 73 65 72 74 2c 20 64  sed to insert, d
1a470 65 6c 65 74 65 2c 20 6f 72 20 75 70 64 61 74 65  elete, or update
1a480 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1a490 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
1a4a0 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
1a4b0 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 72 67 63      /// The argc
1a4c0 20 70 61 72 61 6d 65 74 65 72 20 73 70 65 63 69   parameter speci
1a4d0 66 69 65 73 20 74 68 65 20 6e 75 6d 62 65 72 20  fies the number 
1a4e0 6f 66 20 65 6e 74 72 69 65 73 20 69 6e 20 74 68  of entries in th
1a4f0 65 20 61 72 67 76 0d 0a 20 20 20 20 20 20 20 20  e argv..        
1a500 2f 2f 2f 20 61 72 72 61 79 2e 20 54 68 65 20 76  /// array. The v
1a510 61 6c 75 65 20 6f 66 20 61 72 67 63 20 77 69 6c  alue of argc wil
1a520 6c 20 62 65 20 31 20 66 6f 72 20 61 20 70 75 72  l be 1 for a pur
1a530 65 20 64 65 6c 65 74 65 20 6f 70 65 72 61 74 69  e delete operati
1a540 6f 6e 20 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f  on or..        /
1a550 2f 2f 20 4e 2b 32 20 66 6f 72 20 61 6e 20 69 6e  // N+2 for an in
1a560 73 65 72 74 20 6f 72 20 72 65 70 6c 61 63 65 20  sert or replace 
1a570 6f 72 20 75 70 64 61 74 65 20 77 68 65 72 65 20  or update where 
1a580 4e 20 69 73 20 74 68 65 20 6e 75 6d 62 65 72 20  N is the number 
1a590 6f 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  of..        /// 
1a5a0 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20 74  columns in the t
1a5b0 61 62 6c 65 2e 20 49 6e 20 74 68 65 20 70 72 65  able. In the pre
1a5c0 76 69 6f 75 73 20 73 65 6e 74 65 6e 63 65 2c 20  vious sentence, 
1a5d0 4e 20 69 6e 63 6c 75 64 65 73 20 61 6e 79 0d 0a  N includes any..
1a5e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 68 69 64 64          /// hidd
1a5f0 65 6e 20 63 6f 6c 75 6d 6e 73 2e 0d 0a 20 20 20  en columns...   
1a600 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
1a610 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1a620 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
1a630 2f 20 45 76 65 72 79 20 61 72 67 76 20 65 6e 74  / Every argv ent
1a640 72 79 20 77 69 6c 6c 20 68 61 76 65 20 61 20 6e  ry will have a n
1a650 6f 6e 2d 4e 55 4c 4c 20 76 61 6c 75 65 20 69 6e  on-NULL value in
1a660 20 43 20 62 75 74 20 6d 61 79 20 63 6f 6e 74 61   C but may conta
1a670 69 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  in..        /// 
1a680 74 68 65 20 53 51 4c 20 76 61 6c 75 65 20 4e 55  the SQL value NU
1a690 4c 4c 2e 20 49 6e 20 6f 74 68 65 72 20 77 6f 72  LL. In other wor
1a6a0 64 73 2c 20 69 74 20 69 73 20 61 6c 77 61 79 73  ds, it is always
1a6b0 20 74 72 75 65 20 74 68 61 74 0d 0a 20 20 20 20   true that..    
1a6c0 20 20 20 20 2f 2f 2f 20 61 72 67 76 5b 69 5d 21      /// argv[i]!
1a6d0 3d 30 20 66 6f 72 20 69 20 62 65 74 77 65 65 6e  =0 for i between
1a6e0 20 30 20 61 6e 64 20 61 72 67 63 2d 31 2e 20 48   0 and argc-1. H
1a6f0 6f 77 65 76 65 72 2c 20 69 74 20 6d 69 67 68 74  owever, it might
1a700 20 62 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20   be the..       
1a710 20 2f 2f 2f 20 63 61 73 65 20 74 68 61 74 20 73   /// case that s
1a720 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 79 70  qlite3_value_typ
1a730 65 28 61 72 67 76 5b 69 5d 29 3d 3d 53 51 4c 49  e(argv[i])==SQLI
1a740 54 45 5f 4e 55 4c 4c 2e 0d 0a 20 20 20 20 20 20  TE_NULL...      
1a750 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
1a760 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1a770 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1a780 68 65 20 61 72 67 76 5b 30 5d 20 70 61 72 61 6d  he argv[0] param
1a790 65 74 65 72 20 69 73 20 74 68 65 20 72 6f 77 69  eter is the rowi
1a7a0 64 20 6f 66 20 61 20 72 6f 77 20 69 6e 20 74 68  d of a row in th
1a7b0 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 0d  e virtual table.
1a7c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20  .        /// to 
1a7d0 62 65 20 64 65 6c 65 74 65 64 2e 20 49 66 20 61  be deleted. If a
1a7e0 72 67 76 5b 30 5d 20 69 73 20 61 6e 20 53 51 4c  rgv[0] is an SQL
1a7f0 20 4e 55 4c 4c 2c 20 74 68 65 6e 20 6e 6f 20 64   NULL, then no d
1a800 65 6c 65 74 69 6f 6e 20 6f 63 63 75 72 73 2e 0d  eletion occurs..
1a810 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1a820 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
1a830 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
1a840 20 20 2f 2f 2f 20 54 68 65 20 61 72 67 76 5b 31    /// The argv[1
1a850 5d 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 74  ] parameter is t
1a860 68 65 20 72 6f 77 69 64 20 6f 66 20 61 20 6e 65  he rowid of a ne
1a870 77 20 72 6f 77 20 74 6f 20 62 65 20 69 6e 73 65  w row to be inse
1a880 72 74 65 64 20 69 6e 74 6f 0d 0a 20 20 20 20 20  rted into..     
1a890 20 20 20 2f 2f 2f 20 74 68 65 20 76 69 72 74 75     /// the virtu
1a8a0 61 6c 20 74 61 62 6c 65 2e 20 49 66 20 61 72 67  al table. If arg
1a8b0 76 5b 31 5d 20 69 73 20 61 6e 20 53 51 4c 20 4e  v[1] is an SQL N
1a8c0 55 4c 4c 2c 20 74 68 65 6e 20 74 68 65 0d 0a 20  ULL, then the.. 
1a8d0 20 20 20 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65         /// imple
1a8e0 6d 65 6e 74 61 74 69 6f 6e 20 6d 75 73 74 20 63  mentation must c
1a8f0 68 6f 6f 73 65 20 61 20 72 6f 77 69 64 20 66 6f  hoose a rowid fo
1a900 72 20 74 68 65 20 6e 65 77 6c 79 20 69 6e 73 65  r the newly inse
1a910 72 74 65 64 20 72 6f 77 2e 0d 0a 20 20 20 20 20  rted row...     
1a920 20 20 20 2f 2f 2f 20 53 75 62 73 65 71 75 65 6e     /// Subsequen
1a930 74 20 61 72 67 76 5b 5d 20 65 6e 74 72 69 65 73  t argv[] entries
1a940 20 63 6f 6e 74 61 69 6e 20 76 61 6c 75 65 73 20   contain values 
1a950 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e 73 20 6f  of the columns o
1a960 66 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  f the..        /
1a970 2f 2f 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  // virtual table
1a980 2c 20 69 6e 20 74 68 65 20 6f 72 64 65 72 20 74  , in the order t
1a990 68 61 74 20 74 68 65 20 63 6f 6c 75 6d 6e 73 20  hat the columns 
1a9a0 77 65 72 65 20 64 65 63 6c 61 72 65 64 2e 20 54  were declared. T
1a9b0 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
1a9c0 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e  number of column
1a9d0 73 20 77 69 6c 6c 20 6d 61 74 63 68 20 74 68 65  s will match the
1a9e0 20 74 61 62 6c 65 20 64 65 63 6c 61 72 61 74 69   table declarati
1a9f0 6f 6e 20 74 68 61 74 20 74 68 65 0d 0a 20 20 20  on that the..   
1aa00 20 20 20 20 20 2f 2f 2f 20 78 43 6f 6e 6e 65 63       /// xConnec
1aa10 74 20 6f 72 20 78 43 72 65 61 74 65 20 6d 65 74  t or xCreate met
1aa20 68 6f 64 20 6d 61 64 65 20 75 73 69 6e 67 20 74  hod made using t
1aa30 68 65 20 73 71 6c 69 74 65 33 5f 64 65 63 6c 61  he sqlite3_decla
1aa40 72 65 5f 76 74 61 62 28 29 0d 0a 20 20 20 20 20  re_vtab()..     
1aa50 20 20 20 2f 2f 2f 20 63 61 6c 6c 2e 20 41 6c 6c     /// call. All
1aa60 20 68 69 64 64 65 6e 20 63 6f 6c 75 6d 6e 73 20   hidden columns 
1aa70 61 72 65 20 69 6e 63 6c 75 64 65 64 2e 0d 0a 20  are included... 
1aa80 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1aa90 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
1aaa0 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
1aab0 2f 2f 2f 20 57 68 65 6e 20 64 6f 69 6e 67 20 61  /// When doing a
1aac0 6e 20 69 6e 73 65 72 74 20 77 69 74 68 6f 75 74  n insert without
1aad0 20 61 20 72 6f 77 69 64 20 28 61 72 67 63 3e 31   a rowid (argc>1
1aae0 2c 20 61 72 67 76 5b 31 5d 20 69 73 20 61 6e 20  , argv[1] is an 
1aaf0 53 51 4c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  SQL..        ///
1ab00 20 4e 55 4c 4c 29 2c 20 74 68 65 20 69 6d 70 6c   NULL), the impl
1ab10 65 6d 65 6e 74 61 74 69 6f 6e 20 6d 75 73 74 20  ementation must 
1ab20 73 65 74 20 2a 70 52 6f 77 69 64 20 74 6f 20 74  set *pRowid to t
1ab30 68 65 20 72 6f 77 69 64 20 6f 66 20 74 68 65 0d  he rowid of the.
1ab40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 65 77  .        /// new
1ab50 6c 79 20 69 6e 73 65 72 74 65 64 20 72 6f 77 3b  ly inserted row;
1ab60 20 74 68 69 73 20 77 69 6c 6c 20 62 65 63 6f 6d   this will becom
1ab70 65 20 74 68 65 20 76 61 6c 75 65 20 72 65 74 75  e the value retu
1ab80 72 6e 65 64 20 62 79 20 74 68 65 0d 0a 20 20 20  rned by the..   
1ab90 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33       /// sqlite3
1aba0 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77  _last_insert_row
1abb0 69 64 28 29 20 66 75 6e 63 74 69 6f 6e 2e 20 53  id() function. S
1abc0 65 74 74 69 6e 67 20 74 68 69 73 20 76 61 6c 75  etting this valu
1abd0 65 20 69 6e 20 61 6c 6c 20 74 68 65 0d 0a 20 20  e in all the..  
1abe0 20 20 20 20 20 20 2f 2f 2f 20 6f 74 68 65 72 20        /// other 
1abf0 63 61 73 65 73 20 69 73 20 61 20 68 61 72 6d 6c  cases is a harml
1ac00 65 73 73 20 6e 6f 2d 6f 70 3b 20 74 68 65 20 53  ess no-op; the S
1ac10 51 4c 69 74 65 20 65 6e 67 69 6e 65 20 69 67 6e  QLite engine ign
1ac20 6f 72 65 73 20 74 68 65 0d 0a 20 20 20 20 20 20  ores the..      
1ac30 20 20 2f 2f 2f 20 2a 70 52 6f 77 69 64 20 72 65    /// *pRowid re
1ac40 74 75 72 6e 20 76 61 6c 75 65 20 69 66 20 61 72  turn value if ar
1ac50 67 63 3d 3d 31 20 6f 72 20 61 72 67 76 5b 31 5d  gc==1 or argv[1]
1ac60 20 69 73 20 6e 6f 74 20 61 6e 20 53 51 4c 20 4e   is not an SQL N
1ac70 55 4c 4c 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ULL...        //
1ac80 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20  / </para>..     
1ac90 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20     /// <para>.. 
1aca0 20 20 20 20 20 20 20 2f 2f 2f 20 45 61 63 68 20         /// Each 
1acb0 63 61 6c 6c 20 74 6f 20 78 55 70 64 61 74 65 20  call to xUpdate 
1acc0 77 69 6c 6c 20 66 61 6c 6c 20 69 6e 74 6f 20 6f  will fall into o
1acd0 6e 65 20 6f 66 20 63 61 73 65 73 20 73 68 6f 77  ne of cases show
1ace0 6e 20 62 65 6c 6f 77 2e 20 4e 6f 74 65 0d 0a 20  n below. Note.. 
1acf0 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 61 74 20         /// that 
1ad00 72 65 66 65 72 65 6e 63 65 73 20 74 6f 20 61 72  references to ar
1ad10 67 76 5b 69 5d 20 6d 65 61 6e 20 74 68 65 20 53  gv[i] mean the S
1ad20 51 4c 20 76 61 6c 75 65 20 68 65 6c 64 20 77 69  QL value held wi
1ad30 74 68 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20  thin the..      
1ad40 20 20 2f 2f 2f 20 61 72 67 76 5b 69 5d 20 6f 62    /// argv[i] ob
1ad50 6a 65 63 74 2c 20 6e 6f 74 20 74 68 65 20 61 72  ject, not the ar
1ad60 67 76 5b 69 5d 20 6f 62 6a 65 63 74 20 69 74 73  gv[i] object its
1ad70 65 6c 66 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  elf...        //
1ad80 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20  / </para>..     
1ad90 20 20 20 2f 2f 2f 20 3c 63 6f 64 65 3e 0d 0a 20     /// <code>.. 
1ada0 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 61         ///     a
1adb0 72 67 63 20 3d 20 31 0d 0a 20 20 20 20 20 20 20  rgc = 1..       
1adc0 20 2f 2f 2f 20 3c 2f 63 6f 64 65 3e 0d 0a 20 20   /// </code>..  
1add0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
1ade0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20  ..        ///   
1adf0 20 20 20 20 20 20 54 68 65 20 73 69 6e 67 6c 65        The single
1ae00 20 72 6f 77 20 77 69 74 68 20 72 6f 77 69 64 20   row with rowid 
1ae10 65 71 75 61 6c 20 74 6f 20 61 72 67 76 5b 30 5d  equal to argv[0]
1ae20 20 69 73 20 64 65 6c 65 74 65 64 2e 20 4e 6f 0d   is deleted. No.
1ae30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20  .        ///    
1ae40 20 20 20 20 20 69 6e 73 65 72 74 20 6f 63 63 75       insert occu
1ae50 72 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  rs...        ///
1ae60 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20   </para>..      
1ae70 20 20 2f 2f 2f 20 3c 63 6f 64 65 3e 0d 0a 20 20    /// <code>..  
1ae80 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 61 72        ///     ar
1ae90 67 63 20 3e 20 31 0d 0a 20 20 20 20 20 20 20 20  gc > 1..        
1aea0 2f 2f 2f 20 20 20 20 20 61 72 67 76 5b 30 5d 20  ///     argv[0] 
1aeb0 3d 20 4e 55 4c 4c 0d 0a 20 20 20 20 20 20 20 20  = NULL..        
1aec0 2f 2f 2f 20 3c 2f 63 6f 64 65 3e 0d 0a 20 20 20  /// </code>..   
1aed0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
1aee0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20  .        ///    
1aef0 20 20 20 20 20 41 20 6e 65 77 20 72 6f 77 20 69       A new row i
1af00 73 20 69 6e 73 65 72 74 65 64 20 77 69 74 68 20  s inserted with 
1af10 61 20 72 6f 77 69 64 20 61 72 67 76 5b 31 5d 20  a rowid argv[1] 
1af20 61 6e 64 20 63 6f 6c 75 6d 6e 0d 0a 20 20 20 20  and column..    
1af30 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20      ///         
1af40 76 61 6c 75 65 73 20 69 6e 20 61 72 67 76 5b 32  values in argv[2
1af50 5d 20 61 6e 64 20 66 6f 6c 6c 6f 77 69 6e 67 2e  ] and following.
1af60 20 49 66 20 61 72 67 76 5b 31 5d 20 69 73 20 61   If argv[1] is a
1af70 6e 20 53 51 4c 20 4e 55 4c 4c 2c 0d 0a 20 20 20  n SQL NULL,..   
1af80 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20       ///        
1af90 20 74 68 65 20 61 20 6e 65 77 20 75 6e 69 71 75   the a new uniqu
1afa0 65 20 72 6f 77 69 64 20 69 73 20 67 65 6e 65 72  e rowid is gener
1afb0 61 74 65 64 20 61 75 74 6f 6d 61 74 69 63 61 6c  ated automatical
1afc0 6c 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ly...        ///
1afd0 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20   </para>..      
1afe0 20 20 2f 2f 2f 20 3c 63 6f 64 65 3e 0d 0a 20 20    /// <code>..  
1aff0 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 61 72        ///     ar
1b000 67 63 20 3e 20 31 0d 0a 20 20 20 20 20 20 20 20  gc > 1..        
1b010 2f 2f 2f 20 20 20 20 20 61 72 67 76 5b 30 5d 20  ///     argv[0] 
1b020 3f 20 4e 55 4c 4c 0d 0a 20 20 20 20 20 20 20 20  ? NULL..        
1b030 2f 2f 2f 20 20 20 20 20 61 72 67 76 5b 30 5d 20  ///     argv[0] 
1b040 3d 20 61 72 67 76 5b 31 5d 0d 0a 20 20 20 20 20  = argv[1]..     
1b050 20 20 20 2f 2f 2f 20 3c 2f 63 6f 64 65 3e 0d 0a     /// </code>..
1b060 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1b070 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
1b080 20 20 20 20 20 20 20 20 54 68 65 20 72 6f 77 20          The row 
1b090 77 69 74 68 20 72 6f 77 69 64 20 61 72 67 76 5b  with rowid argv[
1b0a0 30 5d 20 69 73 20 75 70 64 61 74 65 64 20 77 69  0] is updated wi
1b0b0 74 68 20 6e 65 77 20 76 61 6c 75 65 73 20 69 6e  th new values in
1b0c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20  ..        ///   
1b0d0 20 20 20 20 20 20 61 72 67 76 5b 32 5d 20 61 6e        argv[2] an
1b0e0 64 20 66 6f 6c 6c 6f 77 69 6e 67 20 70 61 72 61  d following para
1b0f0 6d 65 74 65 72 73 2e 0d 0a 20 20 20 20 20 20 20  meters...       
1b100 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
1b110 20 20 20 20 20 20 2f 2f 2f 20 3c 63 6f 64 65 3e        /// <code>
1b120 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20  ..        ///   
1b130 20 20 61 72 67 63 20 3e 20 31 0d 0a 20 20 20 20    argc > 1..    
1b140 20 20 20 20 2f 2f 2f 20 20 20 20 20 61 72 67 76      ///     argv
1b150 5b 30 5d 20 3f 20 4e 55 4c 4c 0d 0a 20 20 20 20  [0] ? NULL..    
1b160 20 20 20 20 2f 2f 2f 20 20 20 20 20 61 72 67 76      ///     argv
1b170 5b 30 5d 20 3f 20 61 72 67 76 5b 31 5d 0d 0a 20  [0] ? argv[1].. 
1b180 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 63 6f 64         /// </cod
1b190 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e>..        /// 
1b1a0 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
1b1b0 2f 2f 2f 20 20 20 20 20 20 20 20 20 54 68 65 20  ///         The 
1b1c0 72 6f 77 20 77 69 74 68 20 72 6f 77 69 64 20 61  row with rowid a
1b1d0 72 67 76 5b 30 5d 20 69 73 20 75 70 64 61 74 65  rgv[0] is update
1b1e0 64 20 77 69 74 68 20 72 6f 77 69 64 20 61 72 67  d with rowid arg
1b1f0 76 5b 31 5d 0d 0a 20 20 20 20 20 20 20 20 2f 2f  v[1]..        //
1b200 2f 20 20 20 20 20 20 20 20 20 61 6e 64 20 6e 65  /         and ne
1b210 77 20 76 61 6c 75 65 73 20 69 6e 20 61 72 67 76  w values in argv
1b220 5b 32 5d 20 61 6e 64 20 66 6f 6c 6c 6f 77 69 6e  [2] and followin
1b230 67 20 70 61 72 61 6d 65 74 65 72 73 2e 20 54 68  g parameters. Th
1b240 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  is..        /// 
1b250 20 20 20 20 20 20 20 20 77 69 6c 6c 20 6f 63 63          will occ
1b260 75 72 20 77 68 65 6e 20 61 6e 20 53 51 4c 20 73  ur when an SQL s
1b270 74 61 74 65 6d 65 6e 74 20 75 70 64 61 74 65 73  tatement updates
1b280 20 61 20 72 6f 77 69 64 2c 20 61 73 20 69 6e 0d   a rowid, as in.
1b290 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20  .        ///    
1b2a0 20 20 20 20 20 74 68 65 20 73 74 61 74 65 6d 65       the stateme
1b2b0 6e 74 3a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  nt:..        ///
1b2c0 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20   </para>..      
1b2d0 20 20 2f 2f 2f 20 3c 63 6f 64 65 3e 0d 0a 20 20    /// <code>..  
1b2e0 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20        ///       
1b2f0 20 20 20 20 20 20 55 50 44 41 54 45 20 74 61 62        UPDATE tab
1b300 6c 65 20 53 45 54 20 72 6f 77 69 64 3d 72 6f 77  le SET rowid=row
1b310 69 64 2b 31 20 57 48 45 52 45 20 2e 2e 2e 3b 0d  id+1 WHERE ...;.
1b320 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 63  .        /// </c
1b330 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode>..        //
1b340 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
1b350 20 20 2f 2f 2f 20 54 68 65 20 78 55 70 64 61 74    /// The xUpdat
1b360 65 20 6d 65 74 68 6f 64 20 6d 75 73 74 20 72 65  e method must re
1b370 74 75 72 6e 20 53 51 4c 49 54 45 5f 4f 4b 20 69  turn SQLITE_OK i
1b380 66 20 61 6e 64 20 6f 6e 6c 79 20 69 66 20 69 74  f and only if it
1b390 20 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   is..        ///
1b3a0 20 73 75 63 63 65 73 73 66 75 6c 2e 20 49 66 20   successful. If 
1b3b0 61 20 66 61 69 6c 75 72 65 20 6f 63 63 75 72 73  a failure occurs
1b3c0 2c 20 74 68 65 20 78 55 70 64 61 74 65 20 6d 75  , the xUpdate mu
1b3d0 73 74 20 72 65 74 75 72 6e 20 61 6e 0d 0a 20 20  st return an..  
1b3e0 20 20 20 20 20 20 2f 2f 2f 20 61 70 70 72 6f 70        /// approp
1b3f0 72 69 61 74 65 20 65 72 72 6f 72 20 63 6f 64 65  riate error code
1b400 2e 20 4f 6e 20 61 20 66 61 69 6c 75 72 65 2c 20  . On a failure, 
1b410 74 68 65 20 70 56 54 61 62 2d 3e 7a 45 72 72 4d  the pVTab->zErrM
1b420 73 67 20 65 6c 65 6d 65 6e 74 0d 0a 20 20 20 20  sg element..    
1b430 20 20 20 20 2f 2f 2f 20 6d 61 79 20 6f 70 74 69      /// may opti
1b440 6f 6e 61 6c 6c 79 20 62 65 20 72 65 70 6c 61 63  onally be replac
1b450 65 64 20 77 69 74 68 20 65 72 72 6f 72 20 6d 65  ed with error me
1b460 73 73 61 67 65 20 74 65 78 74 20 73 74 6f 72 65  ssage text store
1b470 64 20 69 6e 20 6d 65 6d 6f 72 79 0d 0a 20 20 20  d in memory..   
1b480 20 20 20 20 20 2f 2f 2f 20 61 6c 6c 6f 63 61 74       /// allocat
1b490 65 64 20 66 72 6f 6d 20 53 51 4c 69 74 65 20 75  ed from SQLite u
1b4a0 73 69 6e 67 20 66 75 6e 63 74 69 6f 6e 73 20 73  sing functions s
1b4b0 75 63 68 20 61 73 20 73 71 6c 69 74 65 33 5f 6d  uch as sqlite3_m
1b4c0 70 72 69 6e 74 66 28 29 20 6f 72 0d 0a 20 20 20  printf() or..   
1b4d0 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33       /// sqlite3
1b4e0 5f 6d 61 6c 6c 6f 63 28 29 2e 0d 0a 20 20 20 20  _malloc()...    
1b4f0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d      /// </para>.
1b500 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1b510 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
1b520 20 49 66 20 74 68 65 20 78 55 70 64 61 74 65 20   If the xUpdate 
1b530 6d 65 74 68 6f 64 20 76 69 6f 6c 61 74 65 73 20  method violates 
1b540 73 6f 6d 65 20 63 6f 6e 73 74 72 61 69 6e 74 20  some constraint 
1b550 6f 66 20 74 68 65 20 76 69 72 74 75 61 6c 20 74  of the virtual t
1b560 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  able..        //
1b570 2f 20 28 69 6e 63 6c 75 64 69 6e 67 2c 20 62 75  / (including, bu
1b580 74 20 6e 6f 74 20 6c 69 6d 69 74 65 64 20 74 6f  t not limited to
1b590 2c 20 61 74 74 65 6d 70 74 69 6e 67 20 74 6f 20  , attempting to 
1b5a0 73 74 6f 72 65 20 61 20 76 61 6c 75 65 20 6f 66  store a value of
1b5b0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
1b5c0 2f 20 77 72 6f 6e 67 20 64 61 74 61 74 79 70 65  / wrong datatype
1b5d0 2c 20 61 74 74 65 6d 70 74 69 6e 67 20 74 6f 20  , attempting to 
1b5e0 73 74 6f 72 65 20 61 20 76 61 6c 75 65 20 74 68  store a value th
1b5f0 61 74 20 69 73 20 74 6f 6f 20 6c 61 72 67 65 20  at is too large 
1b600 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  or..        /// 
1b610 74 6f 6f 20 73 6d 61 6c 6c 2c 20 6f 72 20 61 74  too small, or at
1b620 74 65 6d 70 74 69 6e 67 20 74 6f 20 63 68 61 6e  tempting to chan
1b630 67 65 20 61 20 72 65 61 64 2d 6f 6e 6c 79 20 76  ge a read-only v
1b640 61 6c 75 65 29 20 74 68 65 6e 20 74 68 65 0d 0a  alue) then the..
1b650 20 20 20 20 20 20 20 20 2f 2f 2f 20 78 55 70 64          /// xUpd
1b660 61 74 65 20 6d 75 73 74 20 66 61 69 6c 20 77 69  ate must fail wi
1b670 74 68 20 61 6e 20 61 70 70 72 6f 70 72 69 61 74  th an appropriat
1b680 65 20 65 72 72 6f 72 20 63 6f 64 65 2e 0d 0a 20  e error code... 
1b690 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1b6a0 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
1b6b0 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
1b6c0 2f 2f 2f 20 54 68 65 72 65 20 6d 69 67 68 74 20  /// There might 
1b6d0 62 65 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 73  be one or more s
1b6e0 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73  qlite3_vtab_curs
1b6f0 6f 72 20 6f 62 6a 65 63 74 73 20 6f 70 65 6e 20  or objects open 
1b700 61 6e 64 20 69 6e 0d 0a 20 20 20 20 20 20 20 20  and in..        
1b710 2f 2f 2f 20 75 73 65 20 6f 6e 20 74 68 65 20 76  /// use on the v
1b720 69 72 74 75 61 6c 20 74 61 62 6c 65 20 69 6e 73  irtual table ins
1b730 74 61 6e 63 65 20 61 6e 64 20 70 65 72 68 61 70  tance and perhap
1b740 73 20 65 76 65 6e 20 6f 6e 20 74 68 65 20 72 6f  s even on the ro
1b750 77 20 6f 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f  w of..        //
1b760 2f 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  / the virtual ta
1b770 62 6c 65 20 77 68 65 6e 20 74 68 65 20 78 55 70  ble when the xUp
1b780 64 61 74 65 20 6d 65 74 68 6f 64 20 69 73 20 69  date method is i
1b790 6e 76 6f 6b 65 64 2e 20 54 68 65 0d 0a 20 20 20  nvoked. The..   
1b7a0 20 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65       /// impleme
1b7b0 6e 74 61 74 69 6f 6e 20 6f 66 20 78 55 70 64 61  ntation of xUpda
1b7c0 74 65 20 6d 75 73 74 20 62 65 20 70 72 65 70 61  te must be prepa
1b7d0 72 65 64 20 66 6f 72 20 61 74 74 65 6d 70 74 73  red for attempts
1b7e0 20 74 6f 20 64 65 6c 65 74 65 0d 0a 20 20 20 20   to delete..    
1b7f0 20 20 20 20 2f 2f 2f 20 6f 72 20 6d 6f 64 69 66      /// or modif
1b800 79 20 72 6f 77 73 20 6f 66 20 74 68 65 20 74 61  y rows of the ta
1b810 62 6c 65 20 6f 75 74 20 66 72 6f 6d 20 6f 74 68  ble out from oth
1b820 65 72 20 65 78 69 73 74 69 6e 67 20 63 75 72 73  er existing curs
1b830 6f 72 73 2e 20 49 66 20 74 68 65 0d 0a 20 20 20  ors. If the..   
1b840 20 20 20 20 20 2f 2f 2f 20 76 69 72 74 75 61 6c       /// virtual
1b850 20 74 61 62 6c 65 20 63 61 6e 6e 6f 74 20 61 63   table cannot ac
1b860 63 6f 6d 6d 6f 64 61 74 65 20 73 75 63 68 20 63  commodate such c
1b870 68 61 6e 67 65 73 2c 20 74 68 65 20 78 55 70 64  hanges, the xUpd
1b880 61 74 65 20 6d 65 74 68 6f 64 0d 0a 20 20 20 20  ate method..    
1b890 20 20 20 20 2f 2f 2f 20 6d 75 73 74 20 72 65 74      /// must ret
1b8a0 75 72 6e 20 61 6e 20 65 72 72 6f 72 20 63 6f 64  urn an error cod
1b8b0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
1b8c0 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
1b8d0 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
1b8e0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 78 55 70       /// The xUp
1b8f0 64 61 74 65 20 6d 65 74 68 6f 64 20 69 73 20 6f  date method is o
1b900 70 74 69 6f 6e 61 6c 2e 20 49 66 20 74 68 65 20  ptional. If the 
1b910 78 55 70 64 61 74 65 20 70 6f 69 6e 74 65 72 20  xUpdate pointer 
1b920 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  in the..        
1b930 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75  /// sqlite3_modu
1b940 6c 65 20 66 6f 72 20 61 20 76 69 72 74 75 61 6c  le for a virtual
1b950 20 74 61 62 6c 65 20 69 73 20 61 20 4e 55 4c 4c   table is a NULL
1b960 20 70 6f 69 6e 74 65 72 2c 20 74 68 65 6e 20 74   pointer, then t
1b970 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
1b980 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 69 73  virtual table is
1b990 20 72 65 61 64 2d 6f 6e 6c 79 2e 0d 0a 20 20 20   read-only...   
1b9a0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
1b9b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1b9c0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1b9d0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1b9e0 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20  e="pVtab">..    
1b9f0 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
1ba00 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
1ba10 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64  e sqlite3_vtab d
1ba20 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65  erived structure
1ba30 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1ba40 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1ba50 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1ba60 3d 22 61 72 67 63 22 3e 0d 0a 20 20 20 20 20 20  ="argc">..      
1ba70 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72    /// The number
1ba80 20 6f 66 20 6e 65 77 20 6f 72 20 6d 6f 64 69 66   of new or modif
1ba90 69 65 64 20 63 6f 6c 75 6d 6e 20 76 61 6c 75 65  ied column value
1baa0 73 20 63 6f 6e 74 61 69 6e 65 64 20 69 6e 0d 0a  s contained in..
1bab0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1bac0 61 6d 72 65 66 20 6e 61 6d 65 3d 22 61 72 67 76  amref name="argv
1bad0 22 20 2f 3e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  " />...        /
1bae0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1baf0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1bb00 6e 61 6d 65 3d 22 61 72 67 76 22 3e 0d 0a 20 20  name="argv">..  
1bb10 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 72        /// The ar
1bb20 72 61 79 20 6f 66 20 6e 61 74 69 76 65 20 70 6f  ray of native po
1bb30 69 6e 74 65 72 73 20 74 6f 20 73 71 6c 69 74 65  inters to sqlite
1bb40 33 5f 76 61 6c 75 65 20 73 74 72 75 63 74 75 72  3_value structur
1bb50 65 73 20 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20  es containing.. 
1bb60 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 6e         /// the n
1bb70 65 77 20 6f 72 20 6d 6f 64 69 66 69 65 64 20 63  ew or modified c
1bb80 6f 6c 75 6d 6e 20 76 61 6c 75 65 73 2c 20 69 66  olumn values, if
1bb90 20 61 6e 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f   any...        /
1bba0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1bbb0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1bbc0 6e 61 6d 65 3d 22 72 6f 77 49 64 22 3e 0d 0a 20  name="rowId">.. 
1bbd0 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20         /// Upon 
1bbe0 73 75 63 63 65 73 73 2c 20 74 68 69 73 20 70 61  success, this pa
1bbf0 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20  rameter must be 
1bc00 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74  modified to cont
1bc10 61 69 6e 20 74 68 65 20 75 6e 69 71 75 65 0d 0a  ain the unique..
1bc20 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65          /// inte
1bc30 67 65 72 20 72 6f 77 20 69 64 65 6e 74 69 66 69  ger row identifi
1bc40 65 72 20 66 6f 72 20 74 68 65 20 72 6f 77 20 74  er for the row t
1bc50 68 61 74 20 77 61 73 20 69 6e 73 65 72 74 65 64  hat was inserted
1bc60 2c 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20 20  , if any...     
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 55 70 64 61 74 65 28 0d 0a 20 20  ode xUpdate(..  
1bd00 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
1bd10 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20   pVtab,..       
1bd20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a       int argc,..
1bd30 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
1bd40 74 72 20 61 72 67 76 2c 0d 0a 20 20 20 20 20 20  tr argv,..      
1bd50 20 20 20 20 20 20 72 65 66 20 6c 6f 6e 67 20 72        ref long r
1bd60 6f 77 49 64 0d 0a 20 20 20 20 20 20 20 20 20 20  owId..          
1bd70 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    );....        
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 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bda0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bdb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bdc0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1bdd0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1bde0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1bdf0 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
1be00 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 62 65  / This method be
1be10 67 69 6e 73 20 61 20 74 72 61 6e 73 61 63 74 69  gins a transacti
1be20 6f 6e 20 6f 6e 20 61 20 76 69 72 74 75 61 6c 20  on on a virtual 
1be30 74 61 62 6c 65 2e 20 54 68 69 73 20 69 73 20 6d  table. This is m
1be40 65 74 68 6f 64 0d 0a 20 20 20 20 20 20 20 20 2f  ethod..        /
1be50 2f 2f 20 69 73 20 6f 70 74 69 6f 6e 61 6c 2e 20  // is optional. 
1be60 54 68 65 20 78 42 65 67 69 6e 20 70 6f 69 6e 74  The xBegin point
1be70 65 72 20 6f 66 20 73 71 6c 69 74 65 33 5f 6d 6f  er of sqlite3_mo
1be80 64 75 6c 65 20 6d 61 79 20 62 65 20 4e 55 4c 4c  dule may be NULL
1be90 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1bea0 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
1beb0 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
1bec0 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74      /// This met
1bed0 68 6f 64 20 69 73 20 61 6c 77 61 79 73 20 66 6f  hod is always fo
1bee0 6c 6c 6f 77 65 64 20 62 79 20 6f 6e 65 20 63 61  llowed by one ca
1bef0 6c 6c 20 74 6f 20 65 69 74 68 65 72 20 74 68 65  ll to either the
1bf00 20 78 43 6f 6d 6d 69 74 20 6f 72 0d 0a 20 20 20   xCommit or..   
1bf10 20 20 20 20 20 2f 2f 2f 20 78 52 6f 6c 6c 62 61       /// xRollba
1bf20 63 6b 20 6d 65 74 68 6f 64 2e 20 56 69 72 74 75  ck method. Virtu
1bf30 61 6c 20 74 61 62 6c 65 20 74 72 61 6e 73 61 63  al table transac
1bf40 74 69 6f 6e 73 20 64 6f 20 6e 6f 74 20 6e 65 73  tions do not nes
1bf50 74 2c 20 73 6f 20 74 68 65 0d 0a 20 20 20 20 20  t, so the..     
1bf60 20 20 20 2f 2f 2f 20 78 42 65 67 69 6e 20 6d 65     /// xBegin me
1bf70 74 68 6f 64 20 77 69 6c 6c 20 6e 6f 74 20 62 65  thod will not be
1bf80 20 69 6e 76 6f 6b 65 64 20 6d 6f 72 65 20 74 68   invoked more th
1bf90 61 6e 20 6f 6e 63 65 20 6f 6e 20 61 20 73 69 6e  an once on a sin
1bfa0 67 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  gle..        ///
1bfb0 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 77   virtual table w
1bfc0 69 74 68 6f 75 74 20 61 6e 20 69 6e 74 65 72 76  ithout an interv
1bfd0 65 6e 69 6e 67 20 63 61 6c 6c 20 74 6f 20 65 69  ening call to ei
1bfe0 74 68 65 72 20 78 43 6f 6d 6d 69 74 20 6f 72 0d  ther xCommit or.
1bff0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 78 52 6f  .        /// xRo
1c000 6c 6c 62 61 63 6b 2e 20 4d 75 6c 74 69 70 6c 65  llback. Multiple
1c010 20 63 61 6c 6c 73 20 74 6f 20 6f 74 68 65 72 20   calls to other 
1c020 6d 65 74 68 6f 64 73 20 63 61 6e 20 61 6e 64 20  methods can and 
1c030 6c 69 6b 65 6c 79 20 77 69 6c 6c 0d 0a 20 20 20  likely will..   
1c040 20 20 20 20 20 2f 2f 2f 20 6f 63 63 75 72 20 69       /// occur i
1c050 6e 20 62 65 74 77 65 65 6e 20 74 68 65 20 78 42  n between the xB
1c060 65 67 69 6e 20 61 6e 64 20 74 68 65 20 63 6f 72  egin and the cor
1c070 72 65 73 70 6f 6e 64 69 6e 67 20 78 43 6f 6d 6d  responding xComm
1c080 69 74 20 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f  it or..        /
1c090 2f 2f 20 78 52 6f 6c 6c 62 61 63 6b 2e 0d 0a 20  // xRollback... 
1c0a0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1c0b0 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
1c0c0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1c0d0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1c0e0 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20  ame="pVtab">..  
1c0f0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
1c100 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
1c110 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62  the sqlite3_vtab
1c120 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75   derived structu
1c130 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
1c140 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1c150 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
1c160 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20  ..        /// A 
1c170 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20  standard SQLite 
1c180 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20  return code...  
1c190 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
1c1a0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51  rns>..        SQ
1c1b0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 42  LiteErrorCode xB
1c1c0 65 67 69 6e 28 0d 0a 20 20 20 20 20 20 20 20 20  egin(..         
1c1d0 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d     IntPtr pVtab.
1c1e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d  .            );.
1c1f0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1c200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c240 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
1c250 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1c260 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
1c270 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
1c280 73 20 6d 65 74 68 6f 64 20 73 69 67 6e 61 6c 73  s method signals
1c290 20 74 68 65 20 73 74 61 72 74 20 6f 66 20 61 20   the start of a 
1c2a0 74 77 6f 2d 70 68 61 73 65 20 63 6f 6d 6d 69 74  two-phase commit
1c2b0 20 6f 6e 20 61 20 76 69 72 74 75 61 6c 0d 0a 20   on a virtual.. 
1c2c0 20 20 20 20 20 20 20 2f 2f 2f 20 74 61 62 6c 65         /// table
1c2d0 2e 20 54 68 69 73 20 69 73 20 6d 65 74 68 6f 64  . This is method
1c2e0 20 69 73 20 6f 70 74 69 6f 6e 61 6c 2e 20 54 68   is optional. Th
1c2f0 65 20 78 53 79 6e 63 20 70 6f 69 6e 74 65 72 20  e xSync pointer 
1c300 6f 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  of..        /// 
1c310 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6d  sqlite3_module m
1c320 61 79 20 62 65 20 4e 55 4c 4c 2e 0d 0a 20 20 20  ay be NULL...   
1c330 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
1c340 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1c350 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
1c360 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73  / This method is
1c370 20 6f 6e 6c 79 20 69 6e 76 6f 6b 65 64 20 61 66   only invoked af
1c380 74 65 72 20 63 61 6c 6c 20 74 6f 20 74 68 65 20  ter call to the 
1c390 78 42 65 67 69 6e 20 6d 65 74 68 6f 64 20 61 6e  xBegin method an
1c3a0 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70  d..        /// p
1c3b0 72 69 6f 72 20 74 6f 20 61 6e 20 78 43 6f 6d 6d  rior to an xComm
1c3c0 69 74 20 6f 72 20 78 52 6f 6c 6c 62 61 63 6b 2e  it or xRollback.
1c3d0 20 49 6e 20 6f 72 64 65 72 20 74 6f 20 69 6d 70   In order to imp
1c3e0 6c 65 6d 65 6e 74 20 74 77 6f 2d 70 68 61 73 65  lement two-phase
1c3f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f  ..        /// co
1c400 6d 6d 69 74 2c 20 74 68 65 20 78 53 79 6e 63 20  mmit, the xSync 
1c410 6d 65 74 68 6f 64 20 6f 6e 20 61 6c 6c 20 76 69  method on all vi
1c420 72 74 75 61 6c 20 74 61 62 6c 65 73 20 69 73 20  rtual tables is 
1c430 69 6e 76 6f 6b 65 64 20 70 72 69 6f 72 20 74 6f  invoked prior to
1c440 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e  ..        /// in
1c450 76 6f 6b 69 6e 67 20 74 68 65 20 78 43 6f 6d 6d  voking the xComm
1c460 69 74 20 6d 65 74 68 6f 64 20 6f 6e 20 61 6e 79  it method on any
1c470 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 20   virtual table. 
1c480 49 66 20 61 6e 79 20 6f 66 20 74 68 65 0d 0a 20  If any of the.. 
1c490 20 20 20 20 20 20 20 2f 2f 2f 20 78 53 79 6e 63         /// xSync
1c4a0 20 6d 65 74 68 6f 64 73 20 66 61 69 6c 2c 20 74   methods fail, t
1c4b0 68 65 20 65 6e 74 69 72 65 20 74 72 61 6e 73 61  he entire transa
1c4c0 63 74 69 6f 6e 20 69 73 20 72 6f 6c 6c 65 64 20  ction is rolled 
1c4d0 62 61 63 6b 2e 0d 0a 20 20 20 20 20 20 20 20 2f  back...        /
1c4e0 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20  // </para>..    
1c4f0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1c500 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1c510 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74  <param name="pVt
1c520 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ab">..        //
1c530 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69  / The native poi
1c540 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69  nter to the sqli
1c550 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64  te3_vtab derived
1c560 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
1c570 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
1c580 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1c590 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1c5a0 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64    /// A standard
1c5b0 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63   SQLite return c
1c5c0 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode...        //
1c5d0 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
1c5e0 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f        SQLiteErro
1c5f0 72 43 6f 64 65 20 78 53 79 6e 63 28 0d 0a 20 20  rCode xSync(..  
1c600 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
1c610 20 70 56 74 61 62 0d 0a 20 20 20 20 20 20 20 20   pVtab..        
1c620 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20      );....      
1c630 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1c640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c670 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1c680 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
1c690 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1c6a0 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
1c6b0 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20  /// This method 
1c6c0 63 61 75 73 65 73 20 61 20 76 69 72 74 75 61 6c  causes a virtual
1c6d0 20 74 61 62 6c 65 20 74 72 61 6e 73 61 63 74 69   table transacti
1c6e0 6f 6e 20 74 6f 20 63 6f 6d 6d 69 74 2e 20 54 68  on to commit. Th
1c6f0 69 73 20 69 73 0d 0a 20 20 20 20 20 20 20 20 2f  is is..        /
1c700 2f 2f 20 6d 65 74 68 6f 64 20 69 73 20 6f 70 74  // method is opt
1c710 69 6f 6e 61 6c 2e 20 54 68 65 20 78 43 6f 6d 6d  ional. The xComm
1c720 69 74 20 70 6f 69 6e 74 65 72 20 6f 66 20 73 71  it pointer of sq
1c730 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6d 61 79  lite3_module may
1c740 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   be..        ///
1c750 20 4e 55 4c 4c 2e 0d 0a 20 20 20 20 20 20 20 20   NULL...        
1c760 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20  /// </para>..   
1c770 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
1c780 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 63  .        /// A c
1c790 61 6c 6c 20 74 6f 20 74 68 69 73 20 6d 65 74 68  all to this meth
1c7a0 6f 64 20 61 6c 77 61 79 73 20 66 6f 6c 6c 6f 77  od always follow
1c7b0 73 20 61 20 70 72 69 6f 72 20 63 61 6c 6c 20 74  s a prior call t
1c7c0 6f 20 78 42 65 67 69 6e 20 61 6e 64 0d 0a 20 20  o xBegin and..  
1c7d0 20 20 20 20 20 20 2f 2f 2f 20 78 53 79 6e 63 2e        /// xSync.
1c7e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1c7f0 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
1c800 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1c810 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1c820 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d  m name="pVtab">.
1c830 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1c840 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
1c850 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76  to the sqlite3_v
1c860 74 61 62 20 64 65 72 69 76 65 64 20 73 74 72 75  tab derived stru
1c870 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  cture...        
1c880 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1c890 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
1c8a0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
1c8b0 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69   A standard SQLi
1c8c0 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d  te return code..
1c8d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
1c8e0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1c8f0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1c900 20 78 43 6f 6d 6d 69 74 28 0d 0a 20 20 20 20 20   xCommit(..     
1c910 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
1c920 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tab..           
1c930 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   );....        /
1c940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c980 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1c990 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1c9a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1c9b0 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
1c9c0 20 54 68 69 73 20 6d 65 74 68 6f 64 20 63 61 75   This method cau
1c9d0 73 65 73 20 61 20 76 69 72 74 75 61 6c 20 74 61  ses a virtual ta
1c9e0 62 6c 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  ble transaction 
1c9f0 74 6f 20 72 6f 6c 6c 62 61 63 6b 2e 20 54 68 69  to rollback. Thi
1ca00 73 20 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  s is..        //
1ca10 2f 20 6d 65 74 68 6f 64 20 69 73 20 6f 70 74 69  / method is opti
1ca20 6f 6e 61 6c 2e 20 54 68 65 20 78 52 6f 6c 6c 62  onal. The xRollb
1ca30 61 63 6b 20 70 6f 69 6e 74 65 72 20 6f 66 20 73  ack pointer of s
1ca40 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6d 61  qlite3_module ma
1ca50 79 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  y be..        //
1ca60 2f 20 4e 55 4c 4c 2e 0d 0a 20 20 20 20 20 20 20  / NULL...       
1ca70 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
1ca80 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
1ca90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20  ..        /// A 
1caa0 63 61 6c 6c 20 74 6f 20 74 68 69 73 20 6d 65 74  call to this met
1cab0 68 6f 64 20 61 6c 77 61 79 73 20 66 6f 6c 6c 6f  hod always follo
1cac0 77 73 20 61 20 70 72 69 6f 72 20 63 61 6c 6c 20  ws a prior call 
1cad0 74 6f 20 78 42 65 67 69 6e 2e 0d 0a 20 20 20 20  to xBegin...    
1cae0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d      /// </para>.
1caf0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
1cb00 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1cb10 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1cb20 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20  ="pVtab">..     
1cb30 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
1cb40 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
1cb50 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65   sqlite3_vtab de
1cb60 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2e  rived structure.
1cb70 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1cb80 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1cb90 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
1cba0 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61         /// A sta
1cbb0 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74  ndard SQLite ret
1cbc0 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  urn code...     
1cbd0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
1cbe0 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  >..        SQLit
1cbf0 65 45 72 72 6f 72 43 6f 64 65 20 78 52 6f 6c 6c  eErrorCode xRoll
1cc00 62 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 20  back(..         
1cc10 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d     IntPtr pVtab.
1cc20 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d  .            );.
1cc30 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1cc40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cc50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cc60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cc70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cc80 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
1cc90 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1cca0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
1ccb0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
1ccc0 73 20 6d 65 74 68 6f 64 20 70 72 6f 76 69 64 65  s method provide
1ccd0 73 20 6e 6f 74 69 66 69 63 61 74 69 6f 6e 20 74  s notification t
1cce0 68 61 74 20 74 68 65 20 76 69 72 74 75 61 6c 20  hat the virtual 
1ccf0 74 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f  table..        /
1cd00 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  // implementatio
1cd10 6e 20 74 68 61 74 20 74 68 65 20 76 69 72 74 75  n that the virtu
1cd20 61 6c 20 74 61 62 6c 65 20 77 69 6c 6c 20 62 65  al table will be
1cd30 20 67 69 76 65 6e 20 61 20 6e 65 77 20 6e 61 6d   given a new nam
1cd40 65 2e 20 49 66 0d 0a 20 20 20 20 20 20 20 20 2f  e. If..        /
1cd50 2f 2f 20 74 68 69 73 20 6d 65 74 68 6f 64 20 72  // this method r
1cd60 65 74 75 72 6e 73 20 53 51 4c 49 54 45 5f 4f 4b  eturns SQLITE_OK
1cd70 20 74 68 65 6e 20 53 51 4c 69 74 65 20 72 65 6e   then SQLite ren
1cd80 61 6d 65 73 20 74 68 65 20 74 61 62 6c 65 2e 20  ames the table. 
1cd90 49 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  If..        /// 
1cda0 74 68 69 73 20 6d 65 74 68 6f 64 20 72 65 74 75  this method retu
1cdb0 72 6e 73 20 61 6e 20 65 72 72 6f 72 20 63 6f 64  rns an error cod
1cdc0 65 20 74 68 65 6e 20 74 68 65 20 72 65 6e 61 6d  e then the renam
1cdd0 69 6e 67 20 69 73 20 70 72 65 76 65 6e 74 65 64  ing is prevented
1cde0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1cdf0 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
1ce00 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
1ce10 20 20 20 20 2f 2f 2f 20 54 68 65 20 78 52 65 6e      /// The xRen
1ce20 61 6d 65 20 6d 65 74 68 6f 64 20 69 73 20 72 65  ame method is re
1ce30 71 75 69 72 65 64 20 66 6f 72 20 65 76 65 72 79  quired for every
1ce40 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 0d 0a   virtual table..
1ce50 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6d 70 6c          /// impl
1ce60 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20 20  ementation...   
1ce70 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
1ce80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1ce90 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1cea0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1ceb0 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20  e="pVtab">..    
1cec0 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
1ced0 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
1cee0 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64  e sqlite3_vtab d
1cef0 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65  erived structure
1cf00 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1cf10 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1cf20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1cf30 3d 22 6e 41 72 67 22 3e 0d 0a 20 20 20 20 20 20  ="nArg">..      
1cf40 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72    /// The number
1cf50 20 6f 66 20 61 72 67 75 6d 65 6e 74 73 20 74 6f   of arguments to
1cf60 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 62 65   the function be
1cf70 69 6e 67 20 73 6f 75 67 68 74 2e 0d 0a 20 20 20  ing sought...   
1cf80 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
1cf90 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1cfa0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 7a 4e 61 6d  param name="zNam
1cfb0 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
1cfc0 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   The name of the
1cfd0 20 66 75 6e 63 74 69 6f 6e 20 62 65 69 6e 67 20   function being 
1cfe0 73 6f 75 67 68 74 2e 0d 0a 20 20 20 20 20 20 20  sought...       
1cff0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1d000 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1d010 6d 20 6e 61 6d 65 3d 22 63 61 6c 6c 62 61 63 6b  m name="callback
1d020 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
1d030 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68  Upon success, th
1d040 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73  is parameter mus
1d050 74 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f  t be modified to
1d060 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20   contain the..  
1d070 20 20 20 20 20 20 2f 2f 2f 20 64 65 6c 65 67 61        /// delega
1d080 74 65 20 72 65 73 70 6f 6e 73 69 62 6c 65 20 66  te responsible f
1d090 6f 72 20 69 6d 70 6c 65 6d 65 6e 74 69 6e 67 20  or implementing 
1d0a0 74 68 65 20 73 70 65 63 69 66 69 65 64 20 66 75  the specified fu
1d0b0 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  nction...       
1d0c0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1d0d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1d0e0 6d 20 6e 61 6d 65 3d 22 70 43 6c 69 65 6e 74 44  m name="pClientD
1d0f0 61 74 61 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ata">..        /
1d100 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c  // Upon success,
1d110 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20   this parameter 
1d120 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64  must be modified
1d130 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d   to contain the.
1d140 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 61 74  .        /// nat
1d150 69 76 65 20 75 73 65 72 2d 64 61 74 61 20 70 6f  ive user-data po
1d160 69 6e 74 65 72 20 61 73 73 6f 63 69 61 74 65 64  inter associated
1d170 20 77 69 74 68 0d 0a 20 20 20 20 20 20 20 20 2f   with..        /
1d180 2f 2f 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d  // <paramref nam
1d190 65 3d 22 63 61 6c 6c 62 61 63 6b 22 20 2f 3e 2e  e="callback" />.
1d1a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1d1b0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1d1c0 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
1d1d0 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a         /// Non-z
1d1e0 65 72 6f 20 69 66 20 74 68 65 20 73 70 65 63 69  ero if the speci
1d1f0 66 69 65 64 20 66 75 6e 63 74 69 6f 6e 20 77 61  fied function wa
1d200 73 20 66 6f 75 6e 64 3b 20 7a 65 72 6f 20 6f 74  s found; zero ot
1d210 68 65 72 77 69 73 65 2e 0d 0a 20 20 20 20 20 20  herwise...      
1d220 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
1d230 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 78 46  ..        int xF
1d240 69 6e 64 46 75 6e 63 74 69 6f 6e 28 0d 0a 20 20  indFunction(..  
1d250 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
1d260 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20   pVtab,..       
1d270 20 20 20 20 20 69 6e 74 20 6e 41 72 67 2c 0d 0a       int nArg,..
1d280 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
1d290 74 72 20 7a 4e 61 6d 65 2c 0d 0a 20 20 20 20 20  tr zName,..     
1d2a0 20 20 20 20 20 20 20 72 65 66 20 53 51 4c 69 74         ref SQLit
1d2b0 65 43 61 6c 6c 62 61 63 6b 20 63 61 6c 6c 62 61  eCallback callba
1d2c0 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ck,..           
1d2d0 20 72 65 66 20 49 6e 74 50 74 72 20 70 43 6c 69   ref IntPtr pCli
1d2e0 65 6e 74 44 61 74 61 0d 0a 20 20 20 20 20 20 20  entData..       
1d2f0 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20       );....     
1d300 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1d310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1d350 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
1d360 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1d370 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
1d380 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64   /// This method
1d390 20 70 72 6f 76 69 64 65 73 20 6e 6f 74 69 66 69   provides notifi
1d3a0 63 61 74 69 6f 6e 20 74 68 61 74 20 74 68 65 20  cation that the 
1d3b0 76 69 72 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20  virtual table.. 
1d3c0 20 20 20 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65         /// imple
1d3d0 6d 65 6e 74 61 74 69 6f 6e 20 74 68 61 74 20 74  mentation that t
1d3e0 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
1d3f0 20 77 69 6c 6c 20 62 65 20 67 69 76 65 6e 20 61   will be given a
1d400 20 6e 65 77 20 6e 61 6d 65 2e 20 49 66 0d 0a 20   new name. If.. 
1d410 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 69 73 20         /// this 
1d420 6d 65 74 68 6f 64 20 72 65 74 75 72 6e 73 20 53  method returns S
1d430 51 4c 49 54 45 5f 4f 4b 20 74 68 65 6e 20 53 51  QLITE_OK then SQ
1d440 4c 69 74 65 20 72 65 6e 61 6d 65 73 20 74 68 65  Lite renames the
1d450 20 74 61 62 6c 65 2e 20 49 66 0d 0a 20 20 20 20   table. If..    
1d460 20 20 20 20 2f 2f 2f 20 74 68 69 73 20 6d 65 74      /// this met
1d470 68 6f 64 20 72 65 74 75 72 6e 73 20 61 6e 20 65  hod returns an e
1d480 72 72 6f 72 20 63 6f 64 65 20 74 68 65 6e 20 74  rror code then t
1d490 68 65 20 72 65 6e 61 6d 69 6e 67 20 69 73 20 70  he renaming is p
1d4a0 72 65 76 65 6e 74 65 64 2e 0d 0a 20 20 20 20 20  revented...     
1d4b0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a     /// </para>..
1d4c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1d4d0 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
1d4e0 54 68 65 20 78 52 65 6e 61 6d 65 20 6d 65 74 68  The xRename meth
1d4f0 6f 64 20 69 73 20 72 65 71 75 69 72 65 64 20 66  od is required f
1d500 6f 72 20 65 76 65 72 79 20 76 69 72 74 75 61 6c  or every virtual
1d510 20 74 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20   table..        
1d520 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  /// implementati
1d530 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  on...        ///
1d540 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20   </para>..      
1d550 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1d560 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1d570 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62  aram name="pVtab
1d580 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
1d590 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  The native point
1d5a0 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65  er to the sqlite
1d5b0 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73  3_vtab derived s
1d5c0 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20  tructure...     
1d5d0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1d5e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1d5f0 72 61 6d 20 6e 61 6d 65 3d 22 7a 4e 65 77 22 3e  ram name="zNew">
1d600 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1d610 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
1d620 20 74 6f 20 74 68 65 20 55 54 46 2d 38 20 65 6e   to the UTF-8 en
1d630 63 6f 64 65 64 20 73 74 72 69 6e 67 20 63 6f 6e  coded string con
1d640 74 61 69 6e 69 6e 67 20 74 68 65 20 6e 65 77 0d  taining the new.
1d650 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 61 6d  .        /// nam
1d660 65 20 66 6f 72 20 74 68 65 20 76 69 72 74 75 61  e for the virtua
1d670 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  l table...      
1d680 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
1d690 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
1d6a0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
1d6b0 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51  // A standard SQ
1d6c0 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65  Lite return code
1d6d0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1d6e0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
1d6f0 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f     SQLiteErrorCo
1d700 64 65 20 78 52 65 6e 61 6d 65 28 0d 0a 20 20 20  de xRename(..   
1d710 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
1d720 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20  pVtab,..        
1d730 20 20 20 20 49 6e 74 50 74 72 20 7a 4e 65 77 0d      IntPtr zNew.
1d740 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d  .            );.
1d750 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1d760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d7a0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
1d7b0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1d7c0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
1d7d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1d7e0 73 65 20 6d 65 74 68 6f 64 73 20 70 72 6f 76 69  se methods provi
1d7f0 64 65 20 74 68 65 20 76 69 72 74 75 61 6c 20 74  de the virtual t
1d800 61 62 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74  able implementat
1d810 69 6f 6e 20 61 6e 0d 0a 20 20 20 20 20 20 20 20  ion an..        
1d820 2f 2f 2f 20 6f 70 70 6f 72 74 75 6e 69 74 79 20  /// opportunity 
1d830 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 6e 65 73  to implement nes
1d840 74 65 64 20 74 72 61 6e 73 61 63 74 69 6f 6e 73  ted transactions
1d850 2e 20 54 68 65 79 20 61 72 65 20 61 6c 77 61 79  . They are alway
1d860 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f  s..        /// o
1d870 70 74 69 6f 6e 61 6c 20 61 6e 64 20 77 69 6c 6c  ptional and will
1d880 20 6f 6e 6c 79 20 62 65 20 63 61 6c 6c 65 64 20   only be called 
1d890 69 6e 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f  in SQLite versio
1d8a0 6e 20 33 2e 37 2e 37 20 61 6e 64 20 6c 61 74 65  n 3.7.7 and late
1d8b0 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
1d8c0 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
1d8d0 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
1d8e0 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 78 53       /// When xS
1d8f0 61 76 65 70 6f 69 6e 74 28 58 2c 4e 29 20 69 73  avepoint(X,N) is
1d900 20 69 6e 76 6f 6b 65 64 2c 20 74 68 61 74 20 69   invoked, that i
1d910 73 20 61 20 73 69 67 6e 61 6c 20 74 6f 20 74 68  s a signal to th
1d920 65 20 76 69 72 74 75 61 6c 0d 0a 20 20 20 20 20  e virtual..     
1d930 20 20 20 2f 2f 2f 20 74 61 62 6c 65 20 58 20 74     /// table X t
1d940 68 61 74 20 69 74 20 73 68 6f 75 6c 64 20 73 61  hat it should sa
1d950 76 65 20 69 74 73 20 63 75 72 72 65 6e 74 20 73  ve its current s
1d960 74 61 74 65 20 61 73 20 73 61 76 65 70 6f 69 6e  tate as savepoin
1d970 74 20 4e 2e 20 41 0d 0a 20 20 20 20 20 20 20 20  t N. A..        
1d980 2f 2f 2f 20 73 75 62 73 65 71 75 65 6e 74 20 63  /// subsequent c
1d990 61 6c 6c 20 74 6f 20 78 52 6f 6c 6c 62 61 63 6b  all to xRollback
1d9a0 54 6f 28 58 2c 52 29 20 6d 65 61 6e 73 20 74 68  To(X,R) means th
1d9b0 61 74 20 74 68 65 20 73 74 61 74 65 20 6f 66 20  at the state of 
1d9c0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
1d9d0 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 73   virtual table s
1d9e0 68 6f 75 6c 64 20 72 65 74 75 72 6e 20 74 6f 20  hould return to 
1d9f0 77 68 61 74 20 69 74 20 77 61 73 20 77 68 65 6e  what it was when
1da00 20 78 53 61 76 65 70 6f 69 6e 74 28 58 2c 52 29   xSavepoint(X,R)
1da10 20 77 61 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f   was..        //
1da20 2f 20 6c 61 73 74 20 63 61 6c 6c 65 64 2e 20 54  / last called. T
1da30 68 65 20 63 61 6c 6c 20 74 6f 20 78 52 6f 6c 6c  he call to xRoll
1da40 62 61 63 6b 54 6f 28 58 2c 52 29 20 77 69 6c 6c  backTo(X,R) will
1da50 20 69 6e 76 61 6c 69 64 61 74 65 20 61 6c 6c 0d   invalidate all.
1da60 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 61 76  .        /// sav
1da70 65 70 6f 69 6e 74 73 20 77 69 74 68 20 4e 3e 52  epoints with N>R
1da80 3b 20 6e 6f 6e 65 20 6f 66 20 74 68 65 20 69 6e  ; none of the in
1da90 76 61 6c 69 64 65 64 20 73 61 76 65 70 6f 69 6e  valided savepoin
1daa0 74 73 20 77 69 6c 6c 20 62 65 0d 0a 20 20 20 20  ts will be..    
1dab0 20 20 20 20 2f 2f 2f 20 72 6f 6c 6c 65 64 20 62      /// rolled b
1dac0 61 63 6b 20 6f 72 20 72 65 6c 65 61 73 65 64 20  ack or released 
1dad0 77 69 74 68 6f 75 74 20 66 69 72 73 74 20 62 65  without first be
1dae0 69 6e 67 20 72 65 69 6e 69 74 69 61 6c 69 7a 65  ing reinitialize
1daf0 64 20 62 79 20 61 20 63 61 6c 6c 0d 0a 20 20 20  d by a call..   
1db00 20 20 20 20 20 2f 2f 2f 20 74 6f 20 78 53 61 76       /// to xSav
1db10 65 70 6f 69 6e 74 28 29 2e 20 41 20 63 61 6c 6c  epoint(). A call
1db20 20 74 6f 20 78 52 65 6c 65 61 73 65 28 58 2c 4d   to xRelease(X,M
1db30 29 20 69 6e 76 61 6c 69 64 61 74 65 73 20 61 6c  ) invalidates al
1db40 6c 20 73 61 76 65 70 6f 69 6e 74 73 0d 0a 20 20  l savepoints..  
1db50 20 20 20 20 20 20 2f 2f 2f 20 77 68 65 72 65 20        /// where 
1db60 4e 3e 3d 4d 2e 0d 0a 20 20 20 20 20 20 20 20 2f  N>=M...        /
1db70 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20  // </para>..    
1db80 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a      /// <para>..
1db90 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 65          /// None
1dba0 20 6f 66 20 74 68 65 20 78 53 61 76 65 70 6f 69   of the xSavepoi
1dbb0 6e 74 28 29 2c 20 78 52 65 6c 65 61 73 65 28 29  nt(), xRelease()
1dbc0 2c 20 6f 72 20 78 52 6f 6c 6c 62 61 63 6b 54 6f  , or xRollbackTo
1dbd0 28 29 20 6d 65 74 68 6f 64 73 20 77 69 6c 6c 0d  () methods will.
1dbe0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 65 76 65  .        /// eve
1dbf0 72 20 62 65 20 63 61 6c 6c 65 64 20 65 78 63 65  r be called exce
1dc00 70 74 20 69 6e 20 62 65 74 77 65 65 6e 20 63 61  pt in between ca
1dc10 6c 6c 73 20 74 6f 20 78 42 65 67 69 6e 28 29 20  lls to xBegin() 
1dc20 61 6e 64 20 65 69 74 68 65 72 0d 0a 20 20 20 20  and either..    
1dc30 20 20 20 20 2f 2f 2f 20 78 43 6f 6d 6d 69 74 28      /// xCommit(
1dc40 29 20 6f 72 20 78 52 6f 6c 6c 62 61 63 6b 28 29  ) or xRollback()
1dc50 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1dc60 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
1dc70 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1dc80 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1dc90 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e  am name="pVtab">
1dca0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1dcb0 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
1dcc0 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
1dcd0 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74 72  vtab derived str
1dce0 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ucture...       
1dcf0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1dd00 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1dd10 6d 20 6e 61 6d 65 3d 22 69 53 61 76 65 70 6f 69  m name="iSavepoi
1dd20 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nt">..        //
1dd30 2f 20 54 68 69 73 20 69 73 20 61 6e 20 69 6e 74  / This is an int
1dd40 65 67 65 72 20 69 64 65 6e 74 69 66 69 65 72 20  eger identifier 
1dd50 75 6e 64 65 72 20 77 68 69 63 68 20 74 68 65 20  under which the 
1dd60 74 68 65 20 63 75 72 72 65 6e 74 20 73 74 61 74  the current stat
1dd70 65 20 6f 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f  e of..        //
1dd80 2f 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  / the virtual ta
1dd90 62 6c 65 20 73 68 6f 75 6c 64 20 62 65 20 73 61  ble should be sa
1dda0 76 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ved...        //
1ddb0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1ddc0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
1ddd0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
1dde0 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
1ddf0 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
1de00 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
1de10 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53  urns>..        S
1de20 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
1de30 53 61 76 65 70 6f 69 6e 74 28 0d 0a 20 20 20 20  Savepoint(..    
1de40 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
1de50 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20  Vtab,..         
1de60 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69 6e     int iSavepoin
1de70 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  t..            )
1de80 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
1de90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1deb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ded0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1dee0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1def0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1df00 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1df10 68 65 73 65 20 6d 65 74 68 6f 64 73 20 70 72 6f  hese methods pro
1df20 76 69 64 65 20 74 68 65 20 76 69 72 74 75 61 6c  vide the virtual
1df30 20 74 61 62 6c 65 20 69 6d 70 6c 65 6d 65 6e 74   table implement
1df40 61 74 69 6f 6e 20 61 6e 0d 0a 20 20 20 20 20 20  ation an..      
1df50 20 20 2f 2f 2f 20 6f 70 70 6f 72 74 75 6e 69 74    /// opportunit
1df60 79 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 6e  y to implement n
1df70 65 73 74 65 64 20 74 72 61 6e 73 61 63 74 69 6f  ested transactio
1df80 6e 73 2e 20 54 68 65 79 20 61 72 65 20 61 6c 77  ns. They are alw
1df90 61 79 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ays..        ///
1dfa0 20 6f 70 74 69 6f 6e 61 6c 20 61 6e 64 20 77 69   optional and wi
1dfb0 6c 6c 20 6f 6e 6c 79 20 62 65 20 63 61 6c 6c 65  ll only be calle
1dfc0 64 20 69 6e 20 53 51 4c 69 74 65 20 76 65 72 73  d in SQLite vers
1dfd0 69 6f 6e 20 33 2e 37 2e 37 20 61 6e 64 20 6c 61  ion 3.7.7 and la
1dfe0 74 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ter...        //
1dff0 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20  / </para>..     
1e000 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20     /// <para>.. 
1e010 20 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20         /// When 
1e020 78 53 61 76 65 70 6f 69 6e 74 28 58 2c 4e 29 20  xSavepoint(X,N) 
1e030 69 73 20 69 6e 76 6f 6b 65 64 2c 20 74 68 61 74  is invoked, that
1e040 20 69 73 20 61 20 73 69 67 6e 61 6c 20 74 6f 20   is a signal to 
1e050 74 68 65 20 76 69 72 74 75 61 6c 0d 0a 20 20 20  the virtual..   
1e060 20 20 20 20 20 2f 2f 2f 20 74 61 62 6c 65 20 58       /// table X
1e070 20 74 68 61 74 20 69 74 20 73 68 6f 75 6c 64 20   that it should 
1e080 73 61 76 65 20 69 74 73 20 63 75 72 72 65 6e 74  save its current
1e090 20 73 74 61 74 65 20 61 73 20 73 61 76 65 70 6f   state as savepo
1e0a0 69 6e 74 20 4e 2e 20 41 0d 0a 20 20 20 20 20 20  int N. A..      
1e0b0 20 20 2f 2f 2f 20 73 75 62 73 65 71 75 65 6e 74    /// subsequent
1e0c0 20 63 61 6c 6c 20 74 6f 20 78 52 6f 6c 6c 62 61   call to xRollba
1e0d0 63 6b 54 6f 28 58 2c 52 29 20 6d 65 61 6e 73 20  ckTo(X,R) means 
1e0e0 74 68 61 74 20 74 68 65 20 73 74 61 74 65 20 6f  that the state o
1e0f0 66 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  f the..        /
1e100 2f 2f 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  // virtual table
1e110 20 73 68 6f 75 6c 64 20 72 65 74 75 72 6e 20 74   should return t
1e120 6f 20 77 68 61 74 20 69 74 20 77 61 73 20 77 68  o what it was wh
1e130 65 6e 20 78 53 61 76 65 70 6f 69 6e 74 28 58 2c  en xSavepoint(X,
1e140 52 29 20 77 61 73 0d 0a 20 20 20 20 20 20 20 20  R) was..        
1e150 2f 2f 2f 20 6c 61 73 74 20 63 61 6c 6c 65 64 2e  /// last called.
1e160 20 54 68 65 20 63 61 6c 6c 20 74 6f 20 78 52 6f   The call to xRo
1e170 6c 6c 62 61 63 6b 54 6f 28 58 2c 52 29 20 77 69  llbackTo(X,R) wi
1e180 6c 6c 20 69 6e 76 61 6c 69 64 61 74 65 20 61 6c  ll invalidate al
1e190 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  l..        /// s
1e1a0 61 76 65 70 6f 69 6e 74 73 20 77 69 74 68 20 4e  avepoints with N
1e1b0 3e 52 3b 20 6e 6f 6e 65 20 6f 66 20 74 68 65 20  >R; none of the 
1e1c0 69 6e 76 61 6c 69 64 65 64 20 73 61 76 65 70 6f  invalided savepo
1e1d0 69 6e 74 73 20 77 69 6c 6c 20 62 65 0d 0a 20 20  ints will be..  
1e1e0 20 20 20 20 20 20 2f 2f 2f 20 72 6f 6c 6c 65 64        /// rolled
1e1f0 20 62 61 63 6b 20 6f 72 20 72 65 6c 65 61 73 65   back or release
1e200 64 20 77 69 74 68 6f 75 74 20 66 69 72 73 74 20  d without first 
1e210 62 65 69 6e 67 20 72 65 69 6e 69 74 69 61 6c 69  being reinitiali
1e220 7a 65 64 20 62 79 20 61 20 63 61 6c 6c 0d 0a 20  zed by a call.. 
1e230 20 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20 78 53         /// to xS
1e240 61 76 65 70 6f 69 6e 74 28 29 2e 20 41 20 63 61  avepoint(). A ca
1e250 6c 6c 20 74 6f 20 78 52 65 6c 65 61 73 65 28 58  ll to xRelease(X
1e260 2c 4d 29 20 69 6e 76 61 6c 69 64 61 74 65 73 20  ,M) invalidates 
1e270 61 6c 6c 20 73 61 76 65 70 6f 69 6e 74 73 0d 0a  all savepoints..
1e280 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 68 65 72          /// wher
1e290 65 20 4e 3e 3d 4d 2e 0d 0a 20 20 20 20 20 20 20  e N>=M...       
1e2a0 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
1e2b0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
1e2c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  ..        /// No
1e2d0 6e 65 20 6f 66 20 74 68 65 20 78 53 61 76 65 70  ne of the xSavep
1e2e0 6f 69 6e 74 28 29 2c 20 78 52 65 6c 65 61 73 65  oint(), xRelease
1e2f0 28 29 2c 20 6f 72 20 78 52 6f 6c 6c 62 61 63 6b  (), or xRollback
1e300 54 6f 28 29 20 6d 65 74 68 6f 64 73 20 77 69 6c  To() methods wil
1e310 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 65  l..        /// e
1e320 76 65 72 20 62 65 20 63 61 6c 6c 65 64 20 65 78  ver be called ex
1e330 63 65 70 74 20 69 6e 20 62 65 74 77 65 65 6e 20  cept in between 
1e340 63 61 6c 6c 73 20 74 6f 20 78 42 65 67 69 6e 28  calls to xBegin(
1e350 29 20 61 6e 64 20 65 69 74 68 65 72 0d 0a 20 20  ) and either..  
1e360 20 20 20 20 20 20 2f 2f 2f 20 78 43 6f 6d 6d 69        /// xCommi
1e370 74 28 29 20 6f 72 20 78 52 6f 6c 6c 62 61 63 6b  t() or xRollback
1e380 28 29 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ()...        ///
1e390 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20   </para>..      
1e3a0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1e3b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1e3c0 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62  aram name="pVtab
1e3d0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
1e3e0 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  The native point
1e3f0 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65  er to the sqlite
1e400 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73  3_vtab derived s
1e410 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20  tructure...     
1e420 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1e430 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1e440 72 61 6d 20 6e 61 6d 65 3d 22 69 53 61 76 65 70  ram name="iSavep
1e450 6f 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20  oint">..        
1e460 2f 2f 2f 20 54 68 69 73 20 69 73 20 61 6e 20 69  /// This is an i
1e470 6e 74 65 67 65 72 20 75 73 65 64 20 74 6f 20 69  nteger used to i
1e480 6e 64 69 63 61 74 65 20 74 68 61 74 20 61 6e 79  ndicate that any
1e490 20 73 61 76 65 64 20 73 74 61 74 65 73 20 77 69   saved states wi
1e4a0 74 68 20 61 6e 0d 0a 20 20 20 20 20 20 20 20 2f  th an..        /
1e4b0 2f 2f 20 69 64 65 6e 74 69 66 69 65 72 20 67 72  // identifier gr
1e4c0 65 61 74 65 72 20 74 68 61 6e 20 6f 72 20 65 71  eater than or eq
1e4d0 75 61 6c 20 74 6f 20 74 68 69 73 20 73 68 6f 75  ual to this shou
1e4e0 6c 64 20 62 65 20 64 65 6c 65 74 65 64 20 62 79  ld be deleted by
1e4f0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
1e500 2f 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e  / virtual table.
1e510 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1e520 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1e530 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
1e540 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61         /// A sta
1e550 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74  ndard SQLite ret
1e560 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  urn code...     
1e570 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
1e580 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  >..        SQLit
1e590 65 45 72 72 6f 72 43 6f 64 65 20 78 52 65 6c 65  eErrorCode xRele
1e5a0 61 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ase(..          
1e5b0 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d    IntPtr pVtab,.
1e5c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
1e5d0 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20   iSavepoint..   
1e5e0 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20           );.... 
1e5f0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1e600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1e640 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1e650 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1e660 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
1e670 20 20 20 20 20 2f 2f 2f 20 54 68 65 73 65 20 6d       /// These m
1e680 65 74 68 6f 64 73 20 70 72 6f 76 69 64 65 20 74  ethods provide t
1e690 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
1e6a0 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20   implementation 
1e6b0 61 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  an..        /// 
1e6c0 6f 70 70 6f 72 74 75 6e 69 74 79 20 74 6f 20 69  opportunity to i
1e6d0 6d 70 6c 65 6d 65 6e 74 20 6e 65 73 74 65 64 20  mplement nested 
1e6e0 74 72 61 6e 73 61 63 74 69 6f 6e 73 2e 20 54 68  transactions. Th
1e6f0 65 79 20 61 72 65 20 61 6c 77 61 79 73 0d 0a 20  ey are always.. 
1e700 20 20 20 20 20 20 20 2f 2f 2f 20 6f 70 74 69 6f         /// optio
1e710 6e 61 6c 20 61 6e 64 20 77 69 6c 6c 20 6f 6e 6c  nal and will onl
1e720 79 20 62 65 20 63 61 6c 6c 65 64 20 69 6e 20 53  y be called in S
1e730 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 20 33 2e  QLite version 3.
1e740 37 2e 37 20 61 6e 64 20 6c 61 74 65 72 2e 0d 0a  7.7 and later...
1e750 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1e760 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
1e770 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
1e780 20 2f 2f 2f 20 57 68 65 6e 20 78 53 61 76 65 70   /// When xSavep
1e790 6f 69 6e 74 28 58 2c 4e 29 20 69 73 20 69 6e 76  oint(X,N) is inv
1e7a0 6f 6b 65 64 2c 20 74 68 61 74 20 69 73 20 61 20  oked, that is a 
1e7b0 73 69 67 6e 61 6c 20 74 6f 20 74 68 65 20 76 69  signal to the vi
1e7c0 72 74 75 61 6c 0d 0a 20 20 20 20 20 20 20 20 2f  rtual..        /
1e7d0 2f 2f 20 74 61 62 6c 65 20 58 20 74 68 61 74 20  // table X that 
1e7e0 69 74 20 73 68 6f 75 6c 64 20 73 61 76 65 20 69  it should save i
1e7f0 74 73 20 63 75 72 72 65 6e 74 20 73 74 61 74 65  ts current state
1e800 20 61 73 20 73 61 76 65 70 6f 69 6e 74 20 4e 2e   as savepoint N.
1e810 20 41 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20   A..        /// 
1e820 73 75 62 73 65 71 75 65 6e 74 20 63 61 6c 6c 20  subsequent call 
1e830 74 6f 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 58  to xRollbackTo(X
1e840 2c 52 29 20 6d 65 61 6e 73 20 74 68 61 74 20 74  ,R) means that t
1e850 68 65 20 73 74 61 74 65 20 6f 66 20 74 68 65 0d  he state of the.
1e860 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 69 72  .        /// vir
1e870 74 75 61 6c 20 74 61 62 6c 65 20 73 68 6f 75 6c  tual table shoul
1e880 64 20 72 65 74 75 72 6e 20 74 6f 20 77 68 61 74  d return to what
1e890 20 69 74 20 77 61 73 20 77 68 65 6e 20 78 53 61   it was when xSa
1e8a0 76 65 70 6f 69 6e 74 28 58 2c 52 29 20 77 61 73  vepoint(X,R) was
1e8b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 61  ..        /// la
1e8c0 73 74 20 63 61 6c 6c 65 64 2e 20 54 68 65 20 63  st called. The c
1e8d0 61 6c 6c 20 74 6f 20 78 52 6f 6c 6c 62 61 63 6b  all to xRollback
1e8e0 54 6f 28 58 2c 52 29 20 77 69 6c 6c 20 69 6e 76  To(X,R) will inv
1e8f0 61 6c 69 64 61 74 65 20 61 6c 6c 0d 0a 20 20 20  alidate all..   
1e900 20 20 20 20 20 2f 2f 2f 20 73 61 76 65 70 6f 69       /// savepoi
1e910 6e 74 73 20 77 69 74 68 20 4e 3e 52 3b 20 6e 6f  nts with N>R; no
1e920 6e 65 20 6f 66 20 74 68 65 20 69 6e 76 61 6c 69  ne of the invali
1e930 64 65 64 20 73 61 76 65 70 6f 69 6e 74 73 20 77  ded savepoints w
1e940 69 6c 6c 20 62 65 0d 0a 20 20 20 20 20 20 20 20  ill be..        
1e950 2f 2f 2f 20 72 6f 6c 6c 65 64 20 62 61 63 6b 20  /// rolled back 
1e960 6f 72 20 72 65 6c 65 61 73 65 64 20 77 69 74 68  or released with
1e970 6f 75 74 20 66 69 72 73 74 20 62 65 69 6e 67 20  out first being 
1e980 72 65 69 6e 69 74 69 61 6c 69 7a 65 64 20 62 79  reinitialized by
1e990 20 61 20 63 61 6c 6c 0d 0a 20 20 20 20 20 20 20   a call..       
1e9a0 20 2f 2f 2f 20 74 6f 20 78 53 61 76 65 70 6f 69   /// to xSavepoi
1e9b0 6e 74 28 29 2e 20 41 20 63 61 6c 6c 20 74 6f 20  nt(). A call to 
1e9c0 78 52 65 6c 65 61 73 65 28 58 2c 4d 29 20 69 6e  xRelease(X,M) in
1e9d0 76 61 6c 69 64 61 74 65 73 20 61 6c 6c 20 73 61  validates all sa
1e9e0 76 65 70 6f 69 6e 74 73 0d 0a 20 20 20 20 20 20  vepoints..      
1e9f0 20 20 2f 2f 2f 20 77 68 65 72 65 20 4e 3e 3d 4d    /// where N>=M
1ea00 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1ea10 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
1ea20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
1ea30 20 20 20 20 2f 2f 2f 20 4e 6f 6e 65 20 6f 66 20      /// None of 
1ea40 74 68 65 20 78 53 61 76 65 70 6f 69 6e 74 28 29  the xSavepoint()
1ea50 2c 20 78 52 65 6c 65 61 73 65 28 29 2c 20 6f 72  , xRelease(), or
1ea60 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 29 20 6d   xRollbackTo() m
1ea70 65 74 68 6f 64 73 20 77 69 6c 6c 0d 0a 20 20 20  ethods will..   
1ea80 20 20 20 20 20 2f 2f 2f 20 65 76 65 72 20 62 65       /// ever be
1ea90 20 63 61 6c 6c 65 64 20 65 78 63 65 70 74 20 69   called except i
1eaa0 6e 20 62 65 74 77 65 65 6e 20 63 61 6c 6c 73 20  n between calls 
1eab0 74 6f 20 78 42 65 67 69 6e 28 29 20 61 6e 64 20  to xBegin() and 
1eac0 65 69 74 68 65 72 0d 0a 20 20 20 20 20 20 20 20  either..        
1ead0 2f 2f 2f 20 78 43 6f 6d 6d 69 74 28 29 20 6f 72  /// xCommit() or
1eae0 20 78 52 6f 6c 6c 62 61 63 6b 28 29 2e 0d 0a 20   xRollback()... 
1eaf0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1eb00 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
1eb10 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1eb20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1eb30 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20  ame="pVtab">..  
1eb40 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
1eb50 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
1eb60 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62  the sqlite3_vtab
1eb70 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75   derived structu
1eb80 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
1eb90 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1eba0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1ebb0 6d 65 3d 22 69 53 61 76 65 70 6f 69 6e 74 22 3e  me="iSavepoint">
1ebc0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1ebd0 69 73 20 69 73 20 61 6e 20 69 6e 74 65 67 65 72  is is an integer
1ebe0 20 69 64 65 6e 74 69 66 69 65 72 20 75 73 65 64   identifier used
1ebf0 20 74 6f 20 73 70 65 63 69 66 79 20 61 20 73 70   to specify a sp
1ec00 65 63 69 66 69 63 20 73 61 76 65 64 0d 0a 20 20  ecific saved..  
1ec10 20 20 20 20 20 20 2f 2f 2f 20 73 74 61 74 65 20        /// state 
1ec20 66 6f 72 20 74 68 65 20 76 69 72 74 75 61 6c 20  for the virtual 
1ec30 74 61 62 6c 65 20 66 6f 72 20 69 74 20 74 6f 20  table for it to 
1ec40 72 65 73 74 6f 72 65 20 69 74 73 65 6c 66 20 62  restore itself b
1ec50 61 63 6b 20 74 6f 2c 20 77 68 69 63 68 0d 0a 20  ack to, which.. 
1ec60 20 20 20 20 20 20 20 2f 2f 2f 20 73 68 6f 75 6c         /// shoul
1ec70 64 20 61 6c 73 6f 20 68 61 76 65 20 74 68 65 20  d also have the 
1ec80 65 66 66 65 63 74 20 6f 66 20 64 65 6c 65 74 69  effect of deleti
1ec90 6e 67 20 61 6c 6c 20 73 61 76 65 64 20 73 74 61  ng all saved sta
1eca0 74 65 73 20 77 69 74 68 20 61 6e 0d 0a 20 20 20  tes with an..   
1ecb0 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65 67 65 72       /// integer
1ecc0 20 69 64 65 6e 74 69 66 69 65 72 20 67 72 65 61   identifier grea
1ecd0 74 65 72 20 74 68 61 6e 20 74 68 69 73 20 6f 6e  ter than this on
1ece0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
1ecf0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
1ed00 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
1ed10 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73  .        /// A s
1ed20 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72  tandard SQLite r
1ed30 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20  eturn code...   
1ed40 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
1ed50 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c  ns>..        SQL
1ed60 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52 6f  iteErrorCode xRo
1ed70 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20 20 20 20 20  llbackTo(..     
1ed80 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
1ed90 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  tab,..          
1eda0 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69 6e 74    int iSavepoint
1edb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b  ..            );
1edc0 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e  ..    }..    #en
1edd0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
1ede0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1edf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ee00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ee10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ee20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1ee30 20 20 23 72 65 67 69 6f 6e 20 49 53 51 4c 69 74    #region ISQLit
1ee40 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 20 49  eManagedModule I
1ee50 6e 74 65 72 66 61 63 65 0d 0a 20 20 20 20 2f 2f  nterface..    //
1ee60 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1ee70 20 2f 2f 2f 20 54 68 69 73 20 69 6e 74 65 72 66   /// This interf
1ee80 61 63 65 20 72 65 70 72 65 73 65 6e 74 73 20 61  ace represents a
1ee90 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 69   virtual table i
1eea0 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 77 72  mplementation wr
1eeb0 69 74 74 65 6e 20 69 6e 0d 0a 20 20 20 20 2f 2f  itten in..    //
1eec0 2f 20 6d 61 6e 61 67 65 64 20 63 6f 64 65 2e 0d  / managed code..
1eed0 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
1eee0 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  ry>..    public 
1eef0 69 6e 74 65 72 66 61 63 65 20 49 53 51 4c 69 74  interface ISQLit
1ef00 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 0d 0a  eManagedModule..
1ef10 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f      {..        /
1ef20 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
1ef30 20 20 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e        /// Return
1ef40 73 20 6e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68  s non-zero if th
1ef50 65 20 73 63 68 65 6d 61 20 66 6f 72 20 74 68 65  e schema for the
1ef60 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 68   virtual table h
1ef70 61 73 20 62 65 65 6e 0d 0a 20 20 20 20 20 20 20  as been..       
1ef80 20 2f 2f 2f 20 64 65 63 6c 61 72 65 64 2e 0d 0a   /// declared...
1ef90 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
1efa0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1efb0 62 6f 6f 6c 20 44 65 63 6c 61 72 65 64 20 7b 20  bool Declared { 
1efc0 67 65 74 3b 20 7d 0d 0a 0d 0a 20 20 20 20 20 20  get; }....      
1efd0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1efe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f010 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1f020 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
1f030 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1f040 52 65 74 75 72 6e 73 20 74 68 65 20 6e 61 6d 65  Returns the name
1f050 20 6f 66 20 74 68 65 20 6d 6f 64 75 6c 65 20 61   of the module a
1f060 73 20 69 74 20 77 61 73 20 72 65 67 69 73 74 65  s it was registe
1f070 72 65 64 20 77 69 74 68 20 74 68 65 20 53 51 4c  red with the SQL
1f080 69 74 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ite..        ///
1f090 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a   core library...
1f0a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
1f0b0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1f0c0 73 74 72 69 6e 67 20 4e 61 6d 65 20 7b 20 67 65  string Name { ge
1f0d0 74 3b 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20  t; }....        
1f0e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f0f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f120 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1f130 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1f140 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1f150 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c  is method is cal
1f160 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20  led in response 
1f170 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
1f180 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
1f190 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
1f1a0 6c 65 2e 78 43 72 65 61 74 65 22 20 2f 3e 20 6d  le.xCreate" /> m
1f1b0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
1f1c0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1f1d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1f1e0 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63 74  am name="connect
1f1f0 69 6f 6e 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ion">..        /
1f200 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
1f210 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  ="SQLiteConnecti
1f220 6f 6e 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  on" /> object in
1f230 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65  stance associate
1f240 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20 20 20  d with..        
1f250 2f 2f 2f 20 74 68 65 20 76 69 72 74 75 61 6c 20  /// the virtual 
1f260 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20  table...        
1f270 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1f280 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1f290 20 6e 61 6d 65 3d 22 70 43 6c 69 65 6e 74 44 61   name="pClientDa
1f2a0 74 61 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ta">..        //
1f2b0 2f 20 54 68 65 20 6e 61 74 69 76 65 20 75 73 65  / The native use
1f2c0 72 2d 64 61 74 61 20 70 6f 69 6e 74 65 72 20 61  r-data pointer a
1f2d0 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
1f2e0 68 69 73 20 6d 6f 64 75 6c 65 2c 20 61 73 20 69  his module, as i
1f2f0 74 20 77 61 73 0d 0a 20 20 20 20 20 20 20 20 2f  t was..        /
1f300 2f 2f 20 70 72 6f 76 69 64 65 64 20 74 6f 20 74  // provided to t
1f310 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c  he SQLite core l
1f320 69 62 72 61 72 79 20 77 68 65 6e 20 74 68 65 20  ibrary when the 
1f330 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 69 6e  native module in
1f340 73 74 61 6e 63 65 0d 0a 20 20 20 20 20 20 20 20  stance..        
1f350 2f 2f 2f 20 77 61 73 20 63 72 65 61 74 65 64 2e  /// was created.
1f360 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1f370 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1f380 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1f390 22 61 72 67 75 6d 65 6e 74 73 22 3e 0d 0a 20 20  "arguments">..  
1f3a0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 6f        /// The mo
1f3b0 64 75 6c 65 20 6e 61 6d 65 2c 20 64 61 74 61 62  dule name, datab
1f3c0 61 73 65 20 6e 61 6d 65 2c 20 76 69 72 74 75 61  ase name, virtua
1f3d0 6c 20 74 61 62 6c 65 20 6e 61 6d 65 2c 20 61 6e  l table name, an
1f3e0 64 20 61 6c 6c 20 6f 74 68 65 72 0d 0a 20 20 20  d all other..   
1f3f0 20 20 20 20 20 2f 2f 2f 20 61 72 67 75 6d 65 6e       /// argumen
1f400 74 73 20 70 61 73 73 65 64 20 74 6f 20 74 68 65  ts passed to the
1f410 20 43 52 45 41 54 45 20 56 49 52 54 55 41 4c 20   CREATE VIRTUAL 
1f420 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 2e  TABLE statement.
1f430 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1f440 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1f450 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1f460 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20  "table">..      
1f470 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65    /// Upon succe
1f480 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74  ss, this paramet
1f490 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66  er must be modif
1f4a0 69 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74  ied to contain t
1f4b0 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
1f4c0 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
1f4d0 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f  eVirtualTable" /
1f4e0 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
1f4f0 65 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  e associated wit
1f500 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  h..        /// t
1f510 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
1f520 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1f530 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1f540 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1f550 3d 22 65 72 72 6f 72 22 3e 0d 0a 20 20 20 20 20  ="error">..     
1f560 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 66 61 69 6c     /// Upon fail
1f570 75 72 65 2c 20 74 68 69 73 20 70 61 72 61 6d 65  ure, this parame
1f580 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69  ter must be modi
1f590 66 69 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20  fied to contain 
1f5a0 61 6e 20 65 72 72 6f 72 0d 0a 20 20 20 20 20 20  an error..      
1f5b0 20 20 2f 2f 2f 20 6d 65 73 73 61 67 65 2e 0d 0a    /// message...
1f5c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1f5d0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
1f5e0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
1f5f0 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64       /// A stand
1f600 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72  ard SQLite retur
1f610 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  n code...       
1f620 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
1f630 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45  .        SQLiteE
1f640 72 72 6f 72 43 6f 64 65 20 43 72 65 61 74 65 28  rrorCode Create(
1f650 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
1f660 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 63  LiteConnection c
1f670 6f 6e 6e 65 63 74 69 6f 6e 2c 20 20 2f 2a 20 69  onnection,  /* i
1f680 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
1f690 20 20 49 6e 74 50 74 72 20 70 43 6c 69 65 6e 74    IntPtr pClient
1f6a0 44 61 74 61 2c 20 20 20 20 20 20 20 20 20 20 20  Data,           
1f6b0 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
1f6c0 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 61        string[] a
1f6d0 72 67 75 6d 65 6e 74 73 2c 20 20 20 20 20 20 20  rguments,       
1f6e0 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20      /* in */..  
1f6f0 20 20 20 20 20 20 20 20 20 20 72 65 66 20 53 51            ref SQ
1f700 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
1f710 20 74 61 62 6c 65 2c 20 2f 2a 20 6f 75 74 20 2a   table, /* out *
1f720 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  /..            r
1f730 65 66 20 73 74 72 69 6e 67 20 65 72 72 6f 72 20  ef string error 
1f740 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20               /* 
1f750 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  out */..        
1f760 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20      );....      
1f770 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1f780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f7a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f7b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1f7c0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
1f7d0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1f7e0 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63  This method is c
1f7f0 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73  alled in respons
1f800 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  e to the..      
1f810 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
1f820 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
1f830 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 22 20 2f  dule.xConnect" /
1f840 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
1f850 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1f860 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1f870 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 6e  param name="conn
1f880 65 63 74 69 6f 6e 22 3e 0d 0a 20 20 20 20 20 20  ection">..      
1f890 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
1f8a0 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65  ref="SQLiteConne
1f8b0 63 74 69 6f 6e 22 20 2f 3e 20 6f 62 6a 65 63 74  ction" /> object
1f8c0 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69   instance associ
1f8d0 61 74 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20  ated with..     
1f8e0 20 20 20 2f 2f 2f 20 74 68 65 20 76 69 72 74 75     /// the virtu
1f8f0 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20  al table...     
1f900 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1f910 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1f920 72 61 6d 20 6e 61 6d 65 3d 22 70 43 6c 69 65 6e  ram name="pClien
1f930 74 44 61 74 61 22 3e 0d 0a 20 20 20 20 20 20 20  tData">..       
1f940 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
1f950 75 73 65 72 2d 64 61 74 61 20 70 6f 69 6e 74 65  user-data pointe
1f960 72 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  r associated wit
1f970 68 20 74 68 69 73 20 6d 6f 64 75 6c 65 2c 20 61  h this module, a
1f980 73 20 69 74 20 77 61 73 0d 0a 20 20 20 20 20 20  s it was..      
1f990 20 20 2f 2f 2f 20 70 72 6f 76 69 64 65 64 20 74    /// provided t
1f9a0 6f 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  o the SQLite cor
1f9b0 65 20 6c 69 62 72 61 72 79 20 77 68 65 6e 20 74  e library when t
1f9c0 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65  he native module
1f9d0 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20 20   instance..     
1f9e0 20 20 20 2f 2f 2f 20 77 61 73 20 63 72 65 61 74     /// was creat
1f9f0 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
1fa00 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1fa10 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1fa20 6d 65 3d 22 61 72 67 75 6d 65 6e 74 73 22 3e 0d  me="arguments">.
1fa30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1fa40 20 6d 6f 64 75 6c 65 20 6e 61 6d 65 2c 20 64 61   module name, da
1fa50 74 61 62 61 73 65 20 6e 61 6d 65 2c 20 76 69 72  tabase name, vir
1fa60 74 75 61 6c 20 74 61 62 6c 65 20 6e 61 6d 65 2c  tual table name,
1fa70 20 61 6e 64 20 61 6c 6c 20 6f 74 68 65 72 0d 0a   and all other..
1fa80 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 72 67 75          /// argu
1fa90 6d 65 6e 74 73 20 70 61 73 73 65 64 20 74 6f 20  ments passed to 
1faa0 74 68 65 20 43 52 45 41 54 45 20 56 49 52 54 55  the CREATE VIRTU
1fab0 41 4c 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65  AL TABLE stateme
1fac0 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  nt...        ///
1fad0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1fae0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1faf0 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20  me="table">..   
1fb00 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75       /// Upon su
1fb10 63 63 65 73 73 2c 20 74 68 69 73 20 70 61 72 61  ccess, this para
1fb20 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f  meter must be mo
1fb30 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74 61 69  dified to contai
1fb40 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  n the..        /
1fb50 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  // <see cref="SQ
1fb60 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
1fb70 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
1fb80 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 20  ance associated 
1fb90 77 69 74 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f  with..        //
1fba0 2f 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  / the virtual ta
1fbb0 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
1fbc0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1fbd0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1fbe0 61 6d 65 3d 22 65 72 72 6f 72 22 3e 0d 0a 20 20  ame="error">..  
1fbf0 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 66        /// Upon f
1fc00 61 69 6c 75 72 65 2c 20 74 68 69 73 20 70 61 72  ailure, this par
1fc10 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d  ameter must be m
1fc20 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74 61  odified to conta
1fc30 69 6e 20 61 6e 20 65 72 72 6f 72 0d 0a 20 20 20  in an error..   
1fc40 20 20 20 20 20 2f 2f 2f 20 6d 65 73 73 61 67 65       /// message
1fc50 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1fc60 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1fc70 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
1fc80 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74          /// A st
1fc90 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65  andard SQLite re
1fca0 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20  turn code...    
1fcb0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
1fcc0 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69  s>..        SQLi
1fcd0 74 65 45 72 72 6f 72 43 6f 64 65 20 43 6f 6e 6e  teErrorCode Conn
1fce0 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ect(..          
1fcf0 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69    SQLiteConnecti
1fd00 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 20  on connection,  
1fd10 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
1fd20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 6c        IntPtr pCl
1fd30 69 65 6e 74 44 61 74 61 2c 20 20 20 20 20 20 20  ientData,       
1fd40 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20      /* in */..  
1fd50 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
1fd60 5b 5d 20 61 72 67 75 6d 65 6e 74 73 2c 20 20 20  [] arguments,   
1fd70 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f          /* in */
1fd80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
1fd90 66 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  f SQLiteVirtualT
1fda0 61 62 6c 65 20 74 61 62 6c 65 2c 20 2f 2a 20 6f  able table, /* o
1fdb0 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ut */..         
1fdc0 20 20 20 72 65 66 20 73 74 72 69 6e 67 20 65 72     ref string er
1fdd0 72 6f 72 20 20 20 20 20 20 20 20 20 20 20 20 20  ror             
1fde0 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20   /* out */..    
1fdf0 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20          );....  
1fe00 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1fe10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fe20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fe30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fe40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1fe50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
1fe60 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1fe70 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20  /// This method 
1fe80 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73  is called in res
1fe90 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20  ponse to the..  
1fea0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
1feb0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
1fec0 76 65 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e  veModule.xBestIn
1fed0 64 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  dex" /> method..
1fee0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
1fef0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1ff00 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1ff10 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20  ="table">..     
1ff20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
1ff30 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74  cref="SQLiteVirt
1ff40 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a  ualTable" /> obj
1ff50 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73  ect instance ass
1ff60 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20  ociated..       
1ff70 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20 76   /// with this v
1ff80 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20  irtual table... 
1ff90 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1ffa0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1ffb0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e   <param name="in
1ffc0 64 65 78 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  dex">..        /
1ffd0 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
1ffe0 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 22 20 2f  ="SQLiteIndex" /
1fff0 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
20000 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 6c 6c  e containing all
20010 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
20020 2f 20 64 61 74 61 20 66 6f 72 20 74 68 65 20 69  / data for the i
20030 6e 70 75 74 73 20 61 6e 64 20 6f 75 74 70 75 74  nputs and output
20040 73 20 72 65 6c 61 74 69 6e 67 20 74 6f 20 69 6e  s relating to in
20050 64 65 78 20 73 65 6c 65 63 74 69 6f 6e 2e 0d 0a  dex selection...
20060 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
20070 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
20080 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
20090 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64       /// A stand
200a0 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72  ard SQLite retur
200b0 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  n code...       
200c0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
200d0 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45  .        SQLiteE
200e0 72 72 6f 72 43 6f 64 65 20 42 65 73 74 49 6e 64  rrorCode BestInd
200f0 65 78 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ex(..           
20100 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
20110 62 6c 65 20 74 61 62 6c 65 2c 20 2f 2a 20 69 6e  ble table, /* in
20120 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
20130 20 53 51 4c 69 74 65 49 6e 64 65 78 20 69 6e 64   SQLiteIndex ind
20140 65 78 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e  ex         /* in
20150 2c 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20  , out */..      
20160 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20        );....    
20170 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
20180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
201a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
201b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
201c0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
201d0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
201e0 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73  / This method is
201f0 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f   called in respo
20200 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20  nse to the..    
20210 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
20220 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
20230 4d 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65  Module.xDisconne
20240 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  ct" /> method...
20250 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
20260 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
20270 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
20280 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20  "table">..      
20290 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
202a0 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75  ref="SQLiteVirtu
202b0 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65  alTable" /> obje
202c0 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f  ct instance asso
202d0 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20  ciated..        
202e0 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20 76 69  /// with this vi
202f0 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20  rtual table...  
20300 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
20310 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
20320 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
20330 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72     /// A standar
20340 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20  d SQLite return 
20350 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  code...        /
20360 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
20370 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72         SQLiteErr
20380 6f 72 43 6f 64 65 20 44 69 73 63 6f 6e 6e 65 63  orCode Disconnec
20390 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
203a0 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
203b0 6c 65 20 74 61 62 6c 65 20 2f 2a 20 69 6e 20 2a  le table /* in *
203c0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  /..            )
203d0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
203e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
203f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20420 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
20430 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
20440 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
20450 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64  method is called
20460 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20   in response to 
20470 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
20480 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
20490 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
204a0 78 44 65 73 74 72 6f 79 22 20 2f 3e 20 6d 65 74  xDestroy" /> met
204b0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
204c0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
204d0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
204e0 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a   name="table">..
204f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
20500 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
20510 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f  eVirtualTable" /
20520 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
20530 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20  e associated..  
20540 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74        /// with t
20550 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c  his virtual tabl
20560 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
20570 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
20580 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
20590 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73  .        /// A s
205a0 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72  tandard SQLite r
205b0 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20  eturn code...   
205c0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
205d0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c  ns>..        SQL
205e0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 44 65 73  iteErrorCode Des
205f0 74 72 6f 79 28 0d 0a 20 20 20 20 20 20 20 20 20  troy(..         
20600 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c     SQLiteVirtual
20610 54 61 62 6c 65 20 74 61 62 6c 65 20 2f 2a 20 69  Table table /* i
20620 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
20630 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    );....        
20640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20680 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
20690 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
206a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
206b0 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c  is method is cal
206c0 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20  led in response 
206d0 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
206e0 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
206f0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
20700 6c 65 2e 78 4f 70 65 6e 22 20 2f 3e 20 6d 65 74  le.xOpen" /> met
20710 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
20720 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
20730 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
20740 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a   name="table">..
20750 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
20760 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
20770 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f  eVirtualTable" /
20780 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
20790 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20  e associated..  
207a0 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74        /// with t
207b0 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c  his virtual tabl
207c0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
207d0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
207e0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
207f0 65 3d 22 63 75 72 73 6f 72 22 3e 0d 0a 20 20 20  e="cursor">..   
20800 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75       /// Upon su
20810 63 63 65 73 73 2c 20 74 68 69 73 20 70 61 72 61  ccess, this para
20820 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f  meter must be mo
20830 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74 61 69  dified to contai
20840 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  n the..        /
20850 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  // <see cref="SQ
20860 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
20870 43 75 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65 63  Cursor" /> objec
20880 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63  t instance assoc
20890 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f  iated..        /
208a0 2f 2f 20 77 69 74 68 20 74 68 65 20 6e 65 77 6c  // with the newl
208b0 79 20 6f 70 65 6e 65 64 20 76 69 72 74 75 61 6c  y opened virtual
208c0 20 74 61 62 6c 65 20 63 75 72 73 6f 72 2e 0d 0a   table cursor...
208d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
208e0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
208f0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
20900 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64       /// A stand
20910 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72  ard SQLite retur
20920 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  n code...       
20930 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
20940 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45  .        SQLiteE
20950 72 72 6f 72 43 6f 64 65 20 4f 70 65 6e 28 0d 0a  rrorCode Open(..
20960 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
20970 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74  teVirtualTable t
20980 61 62 6c 65 2c 20 20 20 20 20 20 20 20 20 20 20  able,           
20990 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
209a0 20 20 20 20 20 20 72 65 66 20 53 51 4c 69 74 65        ref SQLite
209b0 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73  VirtualTableCurs
209c0 6f 72 20 63 75 72 73 6f 72 20 2f 2a 20 6f 75 74  or cursor /* out
209d0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
209e0 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   );....        /
209f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20a30 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
20a40 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
20a50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
20a60 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c  s method is call
20a70 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74  ed in response t
20a80 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  o the..        /
20a90 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  // <see cref="IS
20aa0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
20ab0 65 2e 78 43 6c 6f 73 65 22 20 2f 3e 20 6d 65 74  e.xClose" /> met
20ac0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
20ad0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
20ae0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
20af0 20 6e 61 6d 65 3d 22 63 75 72 73 6f 72 22 3e 0d   name="cursor">.
20b00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
20b10 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
20b20 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75  teVirtualTableCu
20b30 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20  rsor" /> object 
20b40 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20 20 20  instance..      
20b50 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64    /// associated
20b60 20 77 69 74 68 20 74 68 65 20 70 72 65 76 69 6f   with the previo
20b70 75 73 6c 79 20 6f 70 65 6e 65 64 20 76 69 72 74  usly opened virt
20b80 75 61 6c 20 74 61 62 6c 65 20 63 75 72 73 6f 72  ual table cursor
20b90 20 74 6f 20 62 65 0d 0a 20 20 20 20 20 20 20 20   to be..        
20ba0 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20 20 20 20 20  /// used...     
20bb0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
20bc0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
20bd0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
20be0 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53  /// A standard S
20bf0 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64  QLite return cod
20c00 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
20c10 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
20c20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43      SQLiteErrorC
20c30 6f 64 65 20 43 6c 6f 73 65 28 0d 0a 20 20 20 20  ode Close(..    
20c40 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69          SQLiteVi
20c50 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72  rtualTableCursor
20c60 20 63 75 72 73 6f 72 20 2f 2a 20 69 6e 20 2a 2f   cursor /* in */
20c70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b  ..            );
20c80 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
20c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20cd0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
20ce0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
20cf0 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d        /// This m
20d00 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20  ethod is called 
20d10 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74  in response to t
20d20 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
20d30 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
20d40 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
20d50 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f  Filter" /> metho
20d60 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
20d70 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
20d80 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
20d90 61 6d 65 3d 22 63 75 72 73 6f 72 22 3e 0d 0a 20  ame="cursor">.. 
20da0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
20db0 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
20dc0 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73  VirtualTableCurs
20dd0 6f 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  or" /> object in
20de0 73 74 61 6e 63 65 0d 0a 20 20 20 20 20 20 20 20  stance..        
20df0 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77  /// associated w
20e00 69 74 68 20 74 68 65 20 70 72 65 76 69 6f 75 73  ith the previous
20e10 6c 79 20 6f 70 65 6e 65 64 20 76 69 72 74 75 61  ly opened virtua
20e20 6c 20 74 61 62 6c 65 20 63 75 72 73 6f 72 20 74  l table cursor t
20e30 6f 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  o be..        //
20e40 2f 20 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 20  / used...       
20e50 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
20e60 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
20e70 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78 4e 75 6d  m name="indexNum
20e80 62 65 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ber">..        /
20e90 2f 2f 20 4e 75 6d 62 65 72 20 75 73 65 64 20 74  // Number used t
20ea0 6f 20 68 65 6c 70 20 69 64 65 6e 74 69 66 79 20  o help identify 
20eb0 74 68 65 20 73 65 6c 65 63 74 65 64 20 69 6e 64  the selected ind
20ec0 65 78 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ex...        ///
20ed0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
20ee0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
20ef0 6d 65 3d 22 69 6e 64 65 78 53 74 72 69 6e 67 22  me="indexString"
20f00 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53  >..        /// S
20f10 74 72 69 6e 67 20 75 73 65 64 20 74 6f 20 68 65  tring used to he
20f20 6c 70 20 69 64 65 6e 74 69 66 79 20 74 68 65 20  lp identify the 
20f30 73 65 6c 65 63 74 65 64 20 69 6e 64 65 78 2e 0d  selected index..
20f40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
20f50 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
20f60 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
20f70 76 61 6c 75 65 73 22 3e 0d 0a 20 20 20 20 20 20  values">..      
20f80 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 73    /// The values
20f90 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74   corresponding t
20fa0 6f 20 65 61 63 68 20 63 6f 6c 75 6d 6e 20 69 6e  o each column in
20fb0 20 74 68 65 20 73 65 6c 65 63 74 65 64 20 69 6e   the selected in
20fc0 64 65 78 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  dex...        //
20fd0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
20fe0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
20ff0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
21000 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
21010 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
21020 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
21030 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53  urns>..        S
21040 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 46  QLiteErrorCode F
21050 69 6c 74 65 72 28 0d 0a 20 20 20 20 20 20 20 20  ilter(..        
21060 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61      SQLiteVirtua
21070 6c 54 61 62 6c 65 43 75 72 73 6f 72 20 63 75 72  lTableCursor cur
21080 73 6f 72 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  sor, /* in */.. 
21090 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69             int i
210a0 6e 64 65 78 4e 75 6d 62 65 72 2c 20 20 20 20 20  ndexNumber,     
210b0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69              /* i
210c0 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
210d0 20 20 73 74 72 69 6e 67 20 69 6e 64 65 78 53 74    string indexSt
210e0 72 69 6e 67 2c 20 20 20 20 20 20 20 20 20 20 20  ring,           
210f0 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20     /* in */..   
21100 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56           SQLiteV
21110 61 6c 75 65 5b 5d 20 76 61 6c 75 65 73 20 20 20  alue[] values   
21120 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20            /* in 
21130 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
21140 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  );....        //
21150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21190 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
211a0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
211b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
211c0 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65   method is calle
211d0 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f  d in response to
211e0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
211f0 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  / <see cref="ISQ
21200 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
21210 2e 78 4e 65 78 74 22 20 2f 3e 20 6d 65 74 68 6f  .xNext" /> metho
21220 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
21230 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
21240 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
21250 61 6d 65 3d 22 63 75 72 73 6f 72 22 3e 0d 0a 20  ame="cursor">.. 
21260 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
21270 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
21280 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73  VirtualTableCurs
21290 6f 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  or" /> object in
212a0 73 74 61 6e 63 65 0d 0a 20 20 20 20 20 20 20 20  stance..        
212b0 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77  /// associated w
212c0 69 74 68 20 74 68 65 20 70 72 65 76 69 6f 75 73  ith the previous
212d0 6c 79 20 6f 70 65 6e 65 64 20 76 69 72 74 75 61  ly opened virtua
212e0 6c 20 74 61 62 6c 65 20 63 75 72 73 6f 72 20 74  l table cursor t
212f0 6f 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  o be..        //
21300 2f 20 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 20  / used...       
21310 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
21320 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
21330 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
21340 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c  / A standard SQL
21350 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e  ite return code.
21360 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
21370 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
21380 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64    SQLiteErrorCod
21390 65 20 4e 65 78 74 28 0d 0a 20 20 20 20 20 20 20  e Next(..       
213a0 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75       SQLiteVirtu
213b0 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 20 63 75  alTableCursor cu
213c0 72 73 6f 72 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  rsor /* in */.. 
213d0 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d             );...
213e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
213f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21430 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
21440 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
21450 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68     /// This meth
21460 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20  od is called in 
21470 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d  response to the.
21480 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
21490 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
214a0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 45 6f 66  ativeModule.xEof
214b0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
214c0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
214d0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
214e0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63  / <param name="c
214f0 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20  ursor">..       
21500 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
21510 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61  ef="SQLiteVirtua
21520 6c 54 61 62 6c 65 43 75 72 73 6f 72 22 20 2f 3e  lTableCursor" />
21530 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
21540 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 73  ..        /// as
21550 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
21560 65 20 70 72 65 76 69 6f 75 73 6c 79 20 6f 70 65  e previously ope
21570 6e 65 64 20 76 69 72 74 75 61 6c 20 74 61 62 6c  ned virtual tabl
21580 65 20 63 75 72 73 6f 72 20 74 6f 20 62 65 0d 0a  e cursor to be..
21590 20 20 20 20 20 20 20 20 2f 2f 2f 20 75 73 65 64          /// used
215a0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
215b0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
215c0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
215d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d          /// Non-
215e0 7a 65 72 6f 20 69 66 20 6e 6f 20 6d 6f 72 65 20  zero if no more 
215f0 72 6f 77 73 20 61 72 65 20 61 76 61 69 6c 61 62  rows are availab
21600 6c 65 3b 20 7a 65 72 6f 20 6f 74 68 65 72 77 69  le; zero otherwi
21610 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  se...        ///
21620 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
21630 20 20 20 20 20 62 6f 6f 6c 20 45 6f 66 28 0d 0a       bool Eof(..
21640 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
21650 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75  teVirtualTableCu
21660 72 73 6f 72 20 63 75 72 73 6f 72 20 2f 2a 20 69  rsor cursor /* i
21670 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
21680 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    );....        
21690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
216a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
216b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
216c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
216d0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
216e0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
216f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
21700 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c  is method is cal
21710 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20  led in response 
21720 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
21730 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
21740 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
21750 6c 65 2e 78 43 6f 6c 75 6d 6e 22 20 2f 3e 20 6d  le.xColumn" /> m
21760 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
21770 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
21780 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
21790 61 6d 20 6e 61 6d 65 3d 22 63 75 72 73 6f 72 22  am name="cursor"
217a0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
217b0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
217c0 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
217d0 43 75 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65 63  Cursor" /> objec
217e0 74 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20  t instance..    
217f0 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74      /// associat
21800 65 64 20 77 69 74 68 20 74 68 65 20 70 72 65 76  ed with the prev
21810 69 6f 75 73 6c 79 20 6f 70 65 6e 65 64 20 76 69  iously opened vi
21820 72 74 75 61 6c 20 74 61 62 6c 65 20 63 75 72 73  rtual table curs
21830 6f 72 20 74 6f 20 62 65 0d 0a 20 20 20 20 20 20  or to be..      
21840 20 20 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20 20 20    /// used...   
21850 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
21860 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
21870 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 74  param name="cont
21880 65 78 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ext">..        /
21890 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
218a0 3d 22 53 51 4c 69 74 65 43 6f 6e 74 65 78 74 22  ="SQLiteContext"
218b0 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
218c0 6e 63 65 20 74 6f 20 62 65 20 75 73 65 64 20 66  nce to be used f
218d0 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  or..        /// 
218e0 72 65 74 75 72 6e 69 6e 67 20 74 68 65 20 73 70  returning the sp
218f0 65 63 69 66 69 65 64 20 63 6f 6c 75 6d 6e 20 76  ecified column v
21900 61 6c 75 65 20 74 6f 20 74 68 65 20 53 51 4c 69  alue to the SQLi
21910 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e  te core library.
21920 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
21930 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
21940 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
21950 22 69 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20 20  "index">..      
21960 20 20 2f 2f 2f 20 54 68 65 20 7a 65 72 6f 2d 62    /// The zero-b
21970 61 73 65 64 20 69 6e 64 65 78 20 63 6f 72 72 65  ased index corre
21980 73 70 6f 6e 64 69 6e 67 20 74 6f 20 74 68 65 20  sponding to the 
21990 63 6f 6c 75 6d 6e 20 63 6f 6e 74 61 69 6e 69 6e  column containin
219a0 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  g the..        /
219b0 2f 2f 20 76 61 6c 75 65 20 74 6f 20 62 65 20 72  // value to be r
219c0 65 74 75 72 6e 65 64 2e 0d 0a 20 20 20 20 20 20  eturned...      
219d0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
219e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
219f0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
21a00 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51  // A standard SQ
21a10 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65  Lite return code
21a20 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
21a30 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
21a40 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f     SQLiteErrorCo
21a50 64 65 20 43 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20  de Column(..    
21a60 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69          SQLiteVi
21a70 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72  rtualTableCursor
21a80 20 63 75 72 73 6f 72 2c 20 2f 2a 20 69 6e 20 2a   cursor, /* in *
21a90 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  /..            S
21aa0 51 4c 69 74 65 43 6f 6e 74 65 78 74 20 63 6f 6e  QLiteContext con
21ab0 74 65 78 74 2c 20 20 20 20 20 20 20 20 20 20 20  text,           
21ac0 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
21ad0 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65 78 20        int index 
21ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21af0 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d         /* in */.
21b00 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d  .            );.
21b10 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
21b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21b60 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
21b70 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
21b80 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65       /// This me
21b90 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69  thod is called i
21ba0 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68  n response to th
21bb0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
21bc0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
21bd0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52  eNativeModule.xR
21be0 6f 77 49 64 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  owId" /> method.
21bf0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
21c00 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
21c10 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
21c20 65 3d 22 63 75 72 73 6f 72 22 3e 0d 0a 20 20 20  e="cursor">..   
21c30 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
21c40 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69  e cref="SQLiteVi
21c50 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72  rtualTableCursor
21c60 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
21c70 61 6e 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ance..        //
21c80 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  / associated wit
21c90 68 20 74 68 65 20 70 72 65 76 69 6f 75 73 6c 79  h the previously
21ca0 20 6f 70 65 6e 65 64 20 76 69 72 74 75 61 6c 20   opened virtual 
21cb0 74 61 62 6c 65 20 63 75 72 73 6f 72 20 74 6f 20  table cursor to 
21cc0 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  be..        /// 
21cd0 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  used...        /
21ce0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
21cf0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
21d00 6e 61 6d 65 3d 22 72 6f 77 49 64 22 3e 0d 0a 20  name="rowId">.. 
21d10 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20         /// Upon 
21d20 73 75 63 63 65 73 73 2c 20 74 68 69 73 20 70 61  success, this pa
21d30 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20  rameter must be 
21d40 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74  modified to cont
21d50 61 69 6e 20 74 68 65 20 75 6e 69 71 75 65 0d 0a  ain the unique..
21d60 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65          /// inte
21d70 67 65 72 20 72 6f 77 20 69 64 65 6e 74 69 66 69  ger row identifi
21d80 65 72 20 66 6f 72 20 74 68 65 20 63 75 72 72 65  er for the curre
21d90 6e 74 20 72 6f 77 20 66 6f 72 20 74 68 65 20 73  nt row for the s
21da0 70 65 63 69 66 69 65 64 20 63 75 72 73 6f 72 2e  pecified cursor.
21db0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
21dc0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
21dd0 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
21de0 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61         /// A sta
21df0 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74  ndard SQLite ret
21e00 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  urn code...     
21e10 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
21e20 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  >..        SQLit
21e30 65 45 72 72 6f 72 43 6f 64 65 20 52 6f 77 49 64  eErrorCode RowId
21e40 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
21e50 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
21e60 65 43 75 72 73 6f 72 20 63 75 72 73 6f 72 2c 20  eCursor cursor, 
21e70 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
21e80 20 20 20 20 20 20 72 65 66 20 6c 6f 6e 67 20 72        ref long r
21e90 6f 77 49 64 20 20 20 20 20 20 20 20 20 20 20 20  owId            
21ea0 20 20 20 20 20 20 20 2f 2a 20 6f 75 74 20 2a 2f         /* out */
21eb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b  ..            );
21ec0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
21ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21f10 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
21f20 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
21f30 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d        /// This m
21f40 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20  ethod is called 
21f50 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74  in response to t
21f60 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
21f70 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
21f80 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
21f90 55 70 64 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f  Update" /> metho
21fa0 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
21fb0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
21fc0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
21fd0 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20  ame="table">..  
21fe0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
21ff0 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56  ee cref="SQLiteV
22000 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20  irtualTable" /> 
22010 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
22020 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20  associated..    
22030 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69      /// with thi
22040 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e  s virtual table.
22050 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
22060 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
22070 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
22080 22 76 61 6c 75 65 73 22 3e 0d 0a 20 20 20 20 20  "values">..     
22090 20 20 20 2f 2f 2f 20 54 68 65 20 61 72 72 61 79     /// The array
220a0 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53   of <see cref="S
220b0 51 4c 69 74 65 56 61 6c 75 65 22 20 2f 3e 20 6f  QLiteValue" /> o
220c0 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 73 20  bject instances 
220d0 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20 20 20  containing..    
220e0 20 20 20 20 2f 2f 2f 20 74 68 65 20 6e 65 77 20      /// the new 
220f0 6f 72 20 6d 6f 64 69 66 69 65 64 20 63 6f 6c 75  or modified colu
22100 6d 6e 20 76 61 6c 75 65 73 2c 20 69 66 20 61 6e  mn values, if an
22110 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y...        /// 
22120 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
22130 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
22140 65 3d 22 72 6f 77 49 64 22 3e 0d 0a 20 20 20 20  e="rowId">..    
22150 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63      /// Upon suc
22160 63 65 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d  cess, this param
22170 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64  eter must be mod
22180 69 66 69 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e  ified to contain
22190 20 74 68 65 20 75 6e 69 71 75 65 0d 0a 20 20 20   the unique..   
221a0 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65 67 65 72       /// integer
221b0 20 72 6f 77 20 69 64 65 6e 74 69 66 69 65 72 20   row identifier 
221c0 66 6f 72 20 74 68 65 20 72 6f 77 20 74 68 61 74  for the row that
221d0 20 77 61 73 20 69 6e 73 65 72 74 65 64 2c 20 69   was inserted, i
221e0 66 20 61 6e 79 2e 0d 0a 20 20 20 20 20 20 20 20  f any...        
221f0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
22200 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
22210 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
22220 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69   A standard SQLi
22230 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d  te return code..
22240 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
22250 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
22260 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
22270 20 55 70 64 61 74 65 28 0d 0a 20 20 20 20 20 20   Update(..      
22280 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74        SQLiteVirt
22290 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c 20  ualTable table, 
222a0 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
222b0 20 20 20 20 20 20 53 51 4c 69 74 65 56 61 6c 75        SQLiteValu
222c0 65 5b 5d 20 76 61 6c 75 65 73 2c 20 20 20 20 20  e[] values,     
222d0 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
222e0 20 20 20 20 20 20 72 65 66 20 6c 6f 6e 67 20 72        ref long r
222f0 6f 77 49 64 20 20 20 20 20 20 20 20 20 20 20 20  owId            
22300 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20  /* out */..     
22310 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20         );....   
22320 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
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 0d 0a 0d 0a  ////////////....
22370 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
22380 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
22390 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69  // This method i
223a0 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70  s called in resp
223b0 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20  onse to the..   
223c0 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
223d0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
223e0 65 4d 6f 64 75 6c 65 2e 78 42 65 67 69 6e 22 20  eModule.xBegin" 
223f0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
22400 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
22410 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
22420 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62  <param name="tab
22430 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  le">..        //
22440 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
22450 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  "SQLiteVirtualTa
22460 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  ble" /> object i
22470 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74  nstance associat
22480 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
22490 77 69 74 68 20 74 68 69 73 20 76 69 72 74 75 61  with this virtua
224a0 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  l table...      
224b0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
224c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
224d0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
224e0 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51  // A standard SQ
224f0 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65  Lite return code
22500 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
22510 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
22520 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f     SQLiteErrorCo
22530 64 65 20 42 65 67 69 6e 28 0d 0a 20 20 20 20 20  de Begin(..     
22540 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72         SQLiteVir
22550 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 20  tualTable table 
22560 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
22570 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20        );....    
22580 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
22590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
225a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
225b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
225c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
225d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
225e0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
225f0 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73  / This method is
22600 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f   called in respo
22610 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20  nse to the..    
22620 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
22630 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
22640 4d 6f 64 75 6c 65 2e 78 53 79 6e 63 22 20 2f 3e  Module.xSync" />
22650 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
22660 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
22670 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
22680 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65  aram name="table
22690 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
226a0 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
226b0 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
226c0 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  e" /> object ins
226d0 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64  tance associated
226e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69  ..        /// wi
226f0 74 68 20 74 68 69 73 20 76 69 72 74 75 61 6c 20  th this virtual 
22700 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20  table...        
22710 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
22720 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
22730 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
22740 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69   A standard SQLi
22750 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d  te return code..
22760 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
22770 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
22780 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
22790 20 53 79 6e 63 28 0d 0a 20 20 20 20 20 20 20 20   Sync(..        
227a0 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61      SQLiteVirtua
227b0 6c 54 61 62 6c 65 20 74 61 62 6c 65 20 2f 2a 20  lTable table /* 
227c0 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
227d0 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20     );....       
227e0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
227f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22820 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
22830 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
22840 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
22850 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61  his method is ca
22860 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65  lled in response
22870 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20   to the..       
22880 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
22890 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
228a0 75 6c 65 2e 78 43 6f 6d 6d 69 74 22 20 2f 3e 20  ule.xCommit" /> 
228b0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
228c0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
228d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
228e0 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22  ram name="table"
228f0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
22900 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
22910 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
22920 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
22930 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d  ance associated.
22940 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74  .        /// wit
22950 68 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74  h this virtual t
22960 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  able...        /
22970 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
22980 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
22990 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
229a0 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74  A standard SQLit
229b0 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a  e return code...
229c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
229d0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
229e0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
229f0 43 6f 6d 6d 69 74 28 0d 0a 20 20 20 20 20 20 20  Commit(..       
22a00 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75       SQLiteVirtu
22a10 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 20 2f 2a  alTable table /*
22a20 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
22a30 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20      );....      
22a40 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
22a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
22a90 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
22aa0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
22ab0 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63  This method is c
22ac0 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73  alled in respons
22ad0 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  e to the..      
22ae0 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
22af0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
22b00 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 22 20  dule.xRollback" 
22b10 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
22b20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
22b30 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
22b40 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62  <param name="tab
22b50 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  le">..        //
22b60 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
22b70 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  "SQLiteVirtualTa
22b80 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  ble" /> object i
22b90 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74  nstance associat
22ba0 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
22bb0 77 69 74 68 20 74 68 69 73 20 76 69 72 74 75 61  with this virtua
22bc0 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  l table...      
22bd0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
22be0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
22bf0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
22c00 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51  // A standard SQ
22c10 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65  Lite return code
22c20 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
22c30 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
22c40 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f     SQLiteErrorCo
22c50 64 65 20 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20  de Rollback(..  
22c60 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
22c70 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62  VirtualTable tab
22c80 6c 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20  le /* in */..   
22c90 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20           );.... 
22ca0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
22cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
22cf0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
22d00 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
22d10 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64   /// This method
22d20 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65   is called in re
22d30 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20  sponse to the.. 
22d40 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
22d50 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
22d60 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46  iveModule.xFindF
22d70 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6d 65 74 68  unction" /> meth
22d80 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  od...        ///
22d90 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
22da0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
22db0 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20  name="table">.. 
22dc0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
22dd0 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
22de0 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e  VirtualTable" />
22df0 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
22e00 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20   associated..   
22e10 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68       /// with th
22e20 69 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  is virtual table
22e30 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
22e40 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
22e50 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
22e60 3d 22 61 72 67 75 6d 65 6e 74 43 6f 75 6e 74 22  ="argumentCount"
22e70 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
22e80 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 61 72 67  he number of arg
22e90 75 6d 65 6e 74 73 20 74 6f 20 74 68 65 20 66 75  uments to the fu
22ea0 6e 63 74 69 6f 6e 20 62 65 69 6e 67 20 73 6f 75  nction being sou
22eb0 67 68 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ght...        //
22ec0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
22ed0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
22ee0 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20 20  ame="name">..   
22ef0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d       /// The nam
22f00 65 20 6f 66 20 74 68 65 20 66 75 6e 63 74 69 6f  e of the functio
22f10 6e 20 62 65 69 6e 67 20 73 6f 75 67 68 74 2e 0d  n being sought..
22f20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
22f30 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
22f40 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
22f50 66 75 6e 63 74 69 6f 6e 22 3e 0d 0a 20 20 20 20  function">..    
22f60 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63      /// Upon suc
22f70 63 65 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d  cess, this param
22f80 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64  eter must be mod
22f90 69 66 69 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e  ified to contain
22fa0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
22fb0 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  / <see cref="SQL
22fc0 69 74 65 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20  iteFunction" /> 
22fd0 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
22fe0 72 65 73 70 6f 6e 73 69 62 6c 65 20 66 6f 72 0d  responsible for.
22ff0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6d 70  .        /// imp
23000 6c 65 6d 65 6e 74 69 6e 67 20 74 68 65 20 73 70  lementing the sp
23010 65 63 69 66 69 65 64 20 66 75 6e 63 74 69 6f 6e  ecified function
23020 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
23030 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
23040 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
23050 3d 22 70 43 6c 69 65 6e 74 44 61 74 61 22 3e 0d  ="pClientData">.
23060 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f  .        /// Upo
23070 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69 73 20  n success, this 
23080 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62  parameter must b
23090 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f  e modified to co
230a0 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20 20 20 20  ntain the..     
230b0 20 20 20 2f 2f 2f 20 6e 61 74 69 76 65 20 75 73     /// native us
230c0 65 72 2d 64 61 74 61 20 70 6f 69 6e 74 65 72 20  er-data pointer 
230d0 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 0d  associated with.
230e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
230f0 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 66 75 6e  ramref name="fun
23100 63 74 69 6f 6e 22 20 2f 3e 2e 0d 0a 20 20 20 20  ction" />...    
23110 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
23120 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
23130 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
23140 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66   /// Non-zero if
23150 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 66   the specified f
23160 75 6e 63 74 69 6f 6e 20 77 61 73 20 66 6f 75 6e  unction was foun
23170 64 3b 20 7a 65 72 6f 20 6f 74 68 65 72 77 69 73  d; zero otherwis
23180 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
23190 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
231a0 20 20 20 20 62 6f 6f 6c 20 46 69 6e 64 46 75 6e      bool FindFun
231b0 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20  ction(..        
231c0 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61      SQLiteVirtua
231d0 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c 20 20 20  lTable table,   
231e0 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
231f0 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 75 6d         int argum
23200 65 6e 74 43 6f 75 6e 74 2c 20 20 20 20 20 20 20  entCount,       
23210 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20      /* in */..  
23220 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
23230 20 6e 61 6d 65 2c 20 20 20 20 20 20 20 20 20 20   name,          
23240 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d         /* in */.
23250 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66  .            ref
23260 20 53 51 4c 69 74 65 46 75 6e 63 74 69 6f 6e 20   SQLiteFunction 
23270 66 75 6e 63 74 69 6f 6e 2c 20 2f 2a 20 6f 75 74  function, /* out
23280 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
23290 20 72 65 66 20 49 6e 74 50 74 72 20 70 43 6c 69   ref IntPtr pCli
232a0 65 6e 74 44 61 74 61 20 20 20 20 20 20 20 2f 2a  entData       /*
232b0 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20   out */..       
232c0 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20       );....     
232d0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
232e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
232f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
23320 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
23330 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
23340 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20   This method is 
23350 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e  called in respon
23360 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20  se to the..     
23370 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
23380 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
23390 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65 22 20 2f  odule.xRename" /
233a0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
233b0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
233c0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
233d0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c  param name="tabl
233e0 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
233f0 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
23400 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
23410 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  le" /> object in
23420 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65  stance associate
23430 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77  d..        /// w
23440 69 74 68 20 74 68 69 73 20 76 69 72 74 75 61 6c  ith this virtual
23450 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20   table...       
23460 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
23470 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
23480 6d 20 6e 61 6d 65 3d 22 6e 65 77 4e 61 6d 65 22  m name="newName"
23490 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
234a0 68 65 20 6e 65 77 20 6e 61 6d 65 20 66 6f 72 20  he new name for 
234b0 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c  the virtual tabl
234c0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
234d0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
234e0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
234f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73  .        /// A s
23500 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72  tandard SQLite r
23510 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20  eturn code...   
23520 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
23530 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c  ns>..        SQL
23540 69 74 65 45 72 72 6f 72 43 6f 64 65 20 52 65 6e  iteErrorCode Ren
23550 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ame(..          
23560 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54    SQLiteVirtualT
23570 61 62 6c 65 20 74 61 62 6c 65 2c 20 2f 2a 20 69  able table, /* i
23580 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
23590 20 20 73 74 72 69 6e 67 20 6e 65 77 4e 61 6d 65    string newName
235a0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69              /* i
235b0 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
235c0 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    );....        
235d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
235e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20  ///////....     
23620 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
23630 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
23640 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c  is method is cal
23650 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20  led in response 
23660 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
23670 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
23680 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
23690 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74 22 20 2f  le.xSavepoint" /
236a0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
236b0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
236c0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
236d0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c  param name="tabl
236e0 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
236f0 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
23700 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
23710 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  le" /> object in
23720 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65  stance associate
23730 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77  d..        /// w
23740 69 74 68 20 74 68 69 73 20 76 69 72 74 75 61 6c  ith this virtual
23750 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20   table...       
23760 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
23770 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
23780 6d 20 6e 61 6d 65 3d 22 73 61 76 65 70 6f 69 6e  m name="savepoin
23790 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  t">..        ///
237a0 20 54 68 69 73 20 69 73 20 61 6e 20 69 6e 74 65   This is an inte
237b0 67 65 72 20 69 64 65 6e 74 69 66 69 65 72 20 75  ger identifier u
237c0 6e 64 65 72 20 77 68 69 63 68 20 74 68 65 20 74  nder which the t
237d0 68 65 20 63 75 72 72 65 6e 74 20 73 74 61 74 65  he current state
237e0 20 6f 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   of..        ///
237f0 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
23800 6c 65 20 73 68 6f 75 6c 64 20 62 65 20 73 61 76  le should be sav
23810 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
23820 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
23830 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
23840 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20  ..        /// A 
23850 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20  standard SQLite 
23860 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20  return code...  
23870 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
23880 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51  rns>..        SQ
23890 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 53 61  LiteErrorCode Sa
238a0 76 65 70 6f 69 6e 74 28 0d 0a 20 20 20 20 20 20  vepoint(..      
238b0 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74        SQLiteVirt
238c0 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c 20  ualTable table, 
238d0 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
238e0 20 20 20 20 20 20 69 6e 74 20 73 61 76 65 70 6f        int savepo
238f0 69 6e 74 20 20 20 20 20 20 20 20 20 20 20 20 20  int             
23900 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
23910 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20        );....    
23920 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
23930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23940 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20  ///////////.... 
23970 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
23980 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
23990 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73  / This method is
239a0 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f   called in respo
239b0 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20  nse to the..    
239c0 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
239d0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
239e0 4d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73 65 22  Module.xRelease"
239f0 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
23a00 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
23a10 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
23a20 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61   <param name="ta
23a30 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ble">..        /
23a40 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
23a50 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  ="SQLiteVirtualT
23a60 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20  able" /> object 
23a70 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61  instance associa
23a80 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ted..        ///
23a90 20 77 69 74 68 20 74 68 69 73 20 76 69 72 74 75   with this virtu
23aa0 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20  al table...     
23ab0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
23ac0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
23ad0 72 61 6d 20 6e 61 6d 65 3d 22 73 61 76 65 70 6f  ram name="savepo
23ae0 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  int">..        /
23af0 2f 2f 20 54 68 69 73 20 69 73 20 61 6e 20 69 6e  // This is an in
23b00 74 65 67 65 72 20 75 73 65 64 20 74 6f 20 69 6e  teger used to in
23b10 64 69 63 61 74 65 20 74 68 61 74 20 61 6e 79 20  dicate that any 
23b20 73 61 76 65 64 20 73 74 61 74 65 73 20 77 69 74  saved states wit
23b30 68 20 61 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  h an..        //
23b40 2f 20 69 64 65 6e 74 69 66 69 65 72 20 67 72 65  / identifier gre
23b50 61 74 65 72 20 74 68 61 6e 20 6f 72 20 65 71 75  ater than or equ
23b60 61 6c 20 74 6f 20 74 68 69 73 20 73 68 6f 75 6c  al to this shoul
23b70 64 20 62 65 20 64 65 6c 65 74 65 64 20 62 79 20  d be deleted by 
23b80 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
23b90 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d   virtual table..
23ba0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
23bb0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
23bc0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
23bd0 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e        /// A stan
23be0 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75  dard SQLite retu
23bf0 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  rn code...      
23c00 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
23c10 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65  ..        SQLite
23c20 45 72 72 6f 72 43 6f 64 65 20 52 65 6c 65 61 73  ErrorCode Releas
23c30 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
23c40 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
23c50 6c 65 20 74 61 62 6c 65 2c 20 2f 2a 20 69 6e 20  le table, /* in 
23c60 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
23c70 69 6e 74 20 73 61 76 65 70 6f 69 6e 74 20 20 20  int savepoint   
23c80 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20            /* in 
23c90 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
23ca0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23cf0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
23d00 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
23d10 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
23d20 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65   method is calle
23d30 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f  d in response to
23d40 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
23d50 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  / <see cref="ISQ
23d60 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
23d70 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 22 20 2f 3e  .xRollbackTo" />
23d80 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
23d90 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
23da0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
23db0 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65  aram name="table
23dc0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
23dd0 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
23de0 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
23df0 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  e" /> object ins
23e00 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64  tance associated
23e10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69  ..        /// wi
23e20 74 68 20 74 68 69 73 20 76 69 72 74 75 61 6c 20  th this virtual 
23e30 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20  table...        
23e40 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
23e50 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
23e60 20 6e 61 6d 65 3d 22 73 61 76 65 70 6f 69 6e 74   name="savepoint
23e70 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
23e80 54 68 69 73 20 69 73 20 61 6e 20 69 6e 74 65 67  This is an integ
23e90 65 72 20 69 64 65 6e 74 69 66 69 65 72 20 75 73  er identifier us
23ea0 65 64 20 74 6f 20 73 70 65 63 69 66 79 20 61 20  ed to specify a 
23eb0 73 70 65 63 69 66 69 63 20 73 61 76 65 64 0d 0a  specific saved..
23ec0 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 61 74          /// stat
23ed0 65 20 66 6f 72 20 74 68 65 20 76 69 72 74 75 61  e for the virtua
23ee0 6c 20 74 61 62 6c 65 20 66 6f 72 20 69 74 20 74  l table for it t
23ef0 6f 20 72 65 73 74 6f 72 65 20 69 74 73 65 6c 66  o restore itself
23f00 20 62 61 63 6b 20 74 6f 2c 20 77 68 69 63 68 0d   back to, which.
23f10 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 68 6f  .        /// sho
23f20 75 6c 64 20 61 6c 73 6f 20 68 61 76 65 20 74 68  uld also have th
23f30 65 20 65 66 66 65 63 74 20 6f 66 20 64 65 6c 65  e effect of dele
23f40 74 69 6e 67 20 61 6c 6c 20 73 61 76 65 64 20 73  ting all saved s
23f50 74 61 74 65 73 20 77 69 74 68 20 61 6e 0d 0a 20  tates with an.. 
23f60 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65 67         /// integ
23f70 65 72 20 69 64 65 6e 74 69 66 69 65 72 20 67 72  er identifier gr
23f80 65 61 74 65 72 20 74 68 61 6e 20 74 68 69 73 20  eater than this 
23f90 6f 6e 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  one...        //
23fa0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
23fb0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
23fc0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
23fd0 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
23fe0 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
23ff0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
24000 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53  urns>..        S
24010 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 52  QLiteErrorCode R
24020 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20 20 20 20  ollbackTo(..    
24030 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69          SQLiteVi
24040 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65  rtualTable table
24050 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20  , /* in */..    
24060 20 20 20 20 20 20 20 20 69 6e 74 20 73 61 76 65          int save
24070 70 6f 69 6e 74 20 20 20 20 20 20 20 20 20 20 20  point           
24080 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
24090 20 20 20 20 20 20 20 20 29 3b 0d 0a 20 20 20 20          );..    
240a0 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  }..    #endregio
240b0 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  n....    ///////
240c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
240d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
240e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
240f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24100 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
24110 69 6f 6e 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79  ion SQLiteMemory
24120 20 53 74 61 74 69 63 20 43 6c 61 73 73 0d 0a 20   Static Class.. 
24130 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
24140 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63  ..    /// This c
24150 6c 61 73 73 20 63 6f 6e 74 61 69 6e 73 20 73 74  lass contains st
24160 61 74 69 63 20 6d 65 74 68 6f 64 73 20 74 68 61  atic methods tha
24170 74 20 61 72 65 20 75 73 65 64 20 74 6f 20 61 6c  t are used to al
24180 6c 6f 63 61 74 65 2c 0d 0a 20 20 20 20 2f 2f 2f  locate,..    ///
24190 20 6d 61 6e 69 70 75 6c 61 74 65 2c 20 61 6e 64   manipulate, and
241a0 20 66 72 65 65 20 6e 61 74 69 76 65 20 6d 65 6d   free native mem
241b0 6f 72 79 20 70 72 6f 76 69 64 65 64 20 62 79 20  ory provided by 
241c0 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
241d0 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 2f 2f  library...    //
241e0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
241f0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
24200 63 20 63 6c 61 73 73 20 53 51 4c 69 74 65 4d 65  c class SQLiteMe
24210 6d 6f 72 79 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  mory..    {..   
24220 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69       #region Pri
24230 76 61 74 65 20 44 61 74 61 0d 0a 23 69 66 20 54  vate Data..#if T
24240 52 41 43 4b 5f 4d 45 4d 4f 52 59 5f 42 59 54 45  RACK_MEMORY_BYTE
24250 53 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  S..        /// <
24260 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
24270 20 20 2f 2f 2f 20 54 68 69 73 20 6f 62 6a 65 63    /// This objec
24280 74 20 69 6e 73 74 61 6e 63 65 20 69 73 20 75 73  t instance is us
24290 65 64 20 74 6f 20 73 79 6e 63 68 72 6f 6e 69 7a  ed to synchroniz
242a0 65 20 61 63 63 65 73 73 20 74 6f 20 74 68 65 20  e access to the 
242b0 6f 74 68 65 72 0d 0a 20 20 20 20 20 20 20 20 2f  other..        /
242c0 2f 2f 20 73 74 61 74 69 63 20 66 69 65 6c 64 73  // static fields
242d0 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73 2e 0d   of this class..
242e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
242f0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
24300 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
24310 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74 20  object syncRoot 
24320 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d  = new object();.
24330 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
24340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24380 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
24390 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
243a0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 74 6f 74       /// The tot
243b0 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20 6f 75 74  al number of out
243c0 73 74 61 6e 64 69 6e 67 20 6d 65 6d 6f 72 79 20  standing memory 
243d0 62 79 74 65 73 20 61 6c 6c 6f 63 61 74 65 64 20  bytes allocated 
243e0 62 79 20 74 68 69 73 0d 0a 20 20 20 20 20 20 20  by this..       
243f0 20 2f 2f 2f 20 63 6c 61 73 73 20 75 73 69 6e 67   /// class using
24400 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
24410 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20   library...     
24420 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
24430 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
24440 74 65 20 73 74 61 74 69 63 20 69 6e 74 20 62 79  te static int by
24450 74 65 73 41 6c 6c 6f 63 61 74 65 64 3b 0d 0a 0d  tesAllocated;...
24460 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
244a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
244b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
244c0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
244d0 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61 78 69 6d     /// The maxim
244e0 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20 6f 75 74  um number of out
244f0 73 74 61 6e 64 69 6e 67 20 6d 65 6d 6f 72 79 20  standing memory 
24500 62 79 74 65 73 20 65 76 65 72 20 61 6c 6c 6f 63  bytes ever alloc
24510 61 74 65 64 20 62 79 0d 0a 20 20 20 20 20 20 20  ated by..       
24520 20 2f 2f 2f 20 74 68 69 73 20 63 6c 61 73 73 20   /// this class 
24530 75 73 69 6e 67 20 74 68 65 20 53 51 4c 69 74 65  using the SQLite
24540 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a   core library...
24550 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
24560 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
24570 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 69  private static i
24580 6e 74 20 6d 61 78 69 6d 75 6d 42 79 74 65 73 41  nt maximumBytesA
24590 6c 6c 6f 63 61 74 65 64 3b 0d 0a 23 65 6e 64 69  llocated;..#endi
245a0 66 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  f..        #endr
245b0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
245c0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
245d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
245e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
245f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24600 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
24610 20 20 20 20 23 72 65 67 69 6f 6e 20 4d 65 6d 6f      #region Memo
24620 72 79 20 41 6c 6c 6f 63 61 74 69 6f 6e 20 48 65  ry Allocation He
24630 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20  lper Methods..  
24640 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
24650 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
24660 20 41 6c 6c 6f 63 61 74 65 73 20 61 74 20 6c 65   Allocates at le
24670 61 73 74 20 74 68 65 20 73 70 65 63 69 66 69 65  ast the specifie
24680 64 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65  d number of byte
24690 73 20 6f 66 20 6e 61 74 69 76 65 20 6d 65 6d 6f  s of native memo
246a0 72 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ry..        /// 
246b0 76 69 61 20 74 68 65 20 53 51 4c 69 74 65 20 63  via the SQLite c
246c0 6f 72 65 20 6c 69 62 72 61 72 79 20 73 71 6c 69  ore library sqli
246d0 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 20 66 75 6e  te3_malloc() fun
246e0 63 74 69 6f 6e 20 61 6e 64 20 72 65 74 75 72 6e  ction and return
246f0 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  s..        /// t
24700 68 65 20 72 65 73 75 6c 74 69 6e 67 20 6e 61 74  he resulting nat
24710 69 76 65 20 70 6f 69 6e 74 65 72 2e 0d 0a 20 20  ive pointer...  
24720 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
24730 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
24740 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73  / <param name="s
24750 69 7a 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ize">..        /
24760 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66  // The number of
24770 20 62 79 74 65 73 20 74 6f 20 61 6c 6c 6f 63 61   bytes to alloca
24780 74 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  te...        ///
24790 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
247a0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
247b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
247c0 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
247d0 20 74 68 61 74 20 70 6f 69 6e 74 73 20 74 6f 20   that points to 
247e0 61 20 62 6c 6f 63 6b 20 6f 66 20 6d 65 6d 6f 72  a block of memor
247f0 79 20 6f 66 20 61 74 20 6c 65 61 73 74 20 74 68  y of at least th
24800 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  e..        /// s
24810 70 65 63 69 66 69 65 64 20 73 69 7a 65 20 2d 4f  pecified size -O
24820 52 2d 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  R- <see cref="In
24830 74 50 74 72 2e 5a 65 72 6f 22 20 2f 3e 20 69 66  tPtr.Zero" /> if
24840 20 74 68 65 20 6d 65 6d 6f 72 79 20 63 6f 75 6c   the memory coul
24850 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e  d..        /// n
24860 6f 74 20 62 65 20 61 6c 6c 6f 63 61 74 65 64 2e  ot be allocated.
24870 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
24880 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
24890 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
248a0 49 6e 74 50 74 72 20 41 6c 6c 6f 63 61 74 65 28  IntPtr Allocate(
248b0 69 6e 74 20 73 69 7a 65 29 0d 0a 20 20 20 20 20  int size)..     
248c0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
248d0 20 20 49 6e 74 50 74 72 20 70 4d 65 6d 6f 72 79    IntPtr pMemory
248e0 20 3d 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d   = UnsafeNativeM
248f0 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d  ethods.sqlite3_m
24900 61 6c 6c 6f 63 28 73 69 7a 65 29 3b 0d 0a 0d 0a  alloc(size);....
24910 23 69 66 20 54 52 41 43 4b 5f 4d 45 4d 4f 52 59  #if TRACK_MEMORY
24920 5f 42 59 54 45 53 0d 0a 20 20 20 20 20 20 20 20  _BYTES..        
24930 20 20 20 20 69 66 20 28 70 4d 65 6d 6f 72 79 20      if (pMemory 
24940 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  != IntPtr.Zero).
24950 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
24960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24970 69 6e 74 20 62 6c 6f 63 6b 53 69 7a 65 20 3d 20  int blockSize = 
24980 53 69 7a 65 28 70 4d 65 6d 6f 72 79 29 3b 0d 0a  Size(pMemory);..
24990 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
249a0 20 20 69 66 20 28 62 6c 6f 63 6b 53 69 7a 65 20    if (blockSize 
249b0 3e 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20  > 0)..          
249c0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
249d0 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
249e0 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20  k (syncRoot)..  
249f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24a00 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
24a10 20 20 20 20 20 20 20 20 20 20 20 20 20 62 79 74               byt
24a20 65 73 41 6c 6c 6f 63 61 74 65 64 20 2b 3d 20 62  esAllocated += b
24a30 6c 6f 63 6b 53 69 7a 65 3b 0d 0a 0d 0a 20 20 20  lockSize;....   
24a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24a50 20 20 20 20 20 69 66 20 28 62 79 74 65 73 41 6c       if (bytesAl
24a60 6c 6f 63 61 74 65 64 20 3e 20 6d 61 78 69 6d 75  located > maximu
24a70 6d 42 79 74 65 73 41 6c 6c 6f 63 61 74 65 64 29  mBytesAllocated)
24a80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 61                ma
24aa0 78 69 6d 75 6d 42 79 74 65 73 41 6c 6c 6f 63 61  ximumBytesAlloca
24ab0 74 65 64 20 3d 20 62 79 74 65 73 41 6c 6c 6f 63  ted = bytesAlloc
24ac0 61 74 65 64 3b 0d 0a 20 20 20 20 20 20 20 20 20  ated;..         
24ad0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
24ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
24af0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
24b00 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
24b10 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 4d 65        return pMe
24b20 6d 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 7d  mory;..        }
24b30 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
24b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24b80 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
24b90 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
24ba0 20 20 20 20 20 20 2f 2f 2f 20 47 65 74 73 20 61        /// Gets a
24bb0 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 61  nd returns the a
24bc0 63 74 75 61 6c 20 73 69 7a 65 20 6f 66 20 74 68  ctual size of th
24bd0 65 20 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f  e specified memo
24be0 72 79 20 62 6c 6f 63 6b 20 74 68 61 74 0d 0a 20  ry block that.. 
24bf0 20 20 20 20 20 20 20 2f 2f 2f 20 77 61 73 20 70         /// was p
24c00 72 65 76 69 6f 75 73 6c 79 20 6f 62 74 61 69 6e  reviously obtain
24c10 65 64 20 66 72 6f 6d 20 74 68 65 20 3c 73 65 65  ed from the <see
24c20 20 63 72 65 66 3d 22 41 6c 6c 6f 63 61 74 65 22   cref="Allocate"
24c30 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
24c40 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
24c50 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
24c60 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 4d   <param name="pM
24c70 65 6d 6f 72 79 22 3e 0d 0a 20 20 20 20 20 20 20  emory">..       
24c80 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
24c90 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 6d  pointer to the m
24ca0 65 6d 6f 72 79 20 62 6c 6f 63 6b 20 70 72 65 76  emory block prev
24cb0 69 6f 75 73 6c 79 20 6f 62 74 61 69 6e 65 64 20  iously obtained 
24cc0 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20 20  from the..      
24cd0 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
24ce0 22 41 6c 6c 6f 63 61 74 65 22 20 2f 3e 20 6d 65  "Allocate" /> me
24cf0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  thod...        /
24d00 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
24d10 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
24d20 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
24d30 54 68 65 20 61 63 74 75 61 6c 20 73 69 7a 65 2c  The actual size,
24d40 20 69 6e 20 62 79 74 65 73 2c 20 6f 66 20 74 68   in bytes, of th
24d50 65 20 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b 20 73  e memory block s
24d60 70 65 63 69 66 69 65 64 20 76 69 61 20 74 68 65  pecified via the
24d70 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 61  ..        /// na
24d80 74 69 76 65 20 70 6f 69 6e 74 65 72 2e 0d 0a 20  tive pointer... 
24d90 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
24da0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
24db0 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6e 74  ublic static int
24dc0 20 53 69 7a 65 28 49 6e 74 50 74 72 20 70 4d 65   Size(IntPtr pMe
24dd0 6d 6f 72 79 29 0d 0a 20 20 20 20 20 20 20 20 7b  mory)..        {
24de0 0d 0a 23 69 66 20 21 53 51 4c 49 54 45 5f 53 54  ..#if !SQLITE_ST
24df0 41 4e 44 41 52 44 0d 0a 20 20 20 20 20 20 20 20  ANDARD..        
24e00 20 20 20 20 72 65 74 75 72 6e 20 55 6e 73 61 66      return Unsaf
24e10 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
24e20 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 5f 73 69  qlite3_malloc_si
24e30 7a 65 5f 69 6e 74 65 72 6f 70 28 70 4d 65 6d 6f  ze_interop(pMemo
24e40 72 79 29 3b 0d 0a 23 65 6c 69 66 20 54 52 41 43  ry);..#elif TRAC
24e50 4b 5f 4d 45 4d 4f 52 59 5f 42 59 54 45 53 0d 0a  K_MEMORY_BYTES..
24e60 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
24e70 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 48              // H
24e80 41 43 4b 3a 20 4f 6b 2c 20 77 65 20 63 61 6e 6e  ACK: Ok, we cann
24e90 6f 74 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65  ot determine the
24ea0 20 73 69 7a 65 20 6f 66 20 74 68 65 20 6d 65 6d   size of the mem
24eb0 6f 72 79 20 62 6c 6f 63 6b 3b 0d 0a 20 20 20 20  ory block;..    
24ec0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
24ed0 20 74 68 65 72 65 66 6f 72 65 2c 20 6a 75 73 74   therefore, just
24ee0 20 74 72 61 63 6b 20 6e 75 6d 62 65 72 20 6f 66   track number of
24ef0 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 20 69 6e 73   allocations ins
24f00 74 65 61 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  tead...         
24f10 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
24f20 20 20 20 72 65 74 75 72 6e 20 28 70 4d 65 6d 6f     return (pMemo
24f30 72 79 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  ry != IntPtr.Zer
24f40 6f 29 20 3f 20 31 20 3a 20 30 3b 0d 0a 23 65 6c  o) ? 1 : 0;..#el
24f50 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
24f60 72 65 74 75 72 6e 20 30 3b 0d 0a 23 65 6e 64 69  return 0;..#endi
24f70 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
24f80 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
24f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
24fd0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
24fe0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
24ff0 20 20 2f 2f 2f 20 46 72 65 65 73 20 61 20 6d 65    /// Frees a me
25000 6d 6f 72 79 20 62 6c 6f 63 6b 20 70 72 65 76 69  mory block previ
25010 6f 75 73 6c 79 20 6f 62 74 61 69 6e 65 64 20 66  ously obtained f
25020 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20 20 20  rom the..       
25030 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
25040 41 6c 6c 6f 63 61 74 65 22 20 2f 3e 20 6d 65 74  Allocate" /> met
25050 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
25060 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
25070 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
25080 20 6e 61 6d 65 3d 22 70 4d 65 6d 6f 72 79 22 3e   name="pMemory">
25090 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
250a0 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
250b0 20 74 6f 20 74 68 65 20 6d 65 6d 6f 72 79 20 62   to the memory b
250c0 6c 6f 63 6b 20 70 72 65 76 69 6f 75 73 6c 79 20  lock previously 
250d0 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 74 68  obtained from th
250e0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
250f0 73 65 65 20 63 72 65 66 3d 22 41 6c 6c 6f 63 61  see cref="Alloca
25100 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  te" /> method...
25110 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
25120 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ram>..        pu
25130 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69 64  blic static void
25140 20 46 72 65 65 28 49 6e 74 50 74 72 20 70 4d 65   Free(IntPtr pMe
25150 6d 6f 72 79 29 0d 0a 20 20 20 20 20 20 20 20 7b  mory)..        {
25160 0d 0a 23 69 66 20 54 52 41 43 4b 5f 4d 45 4d 4f  ..#if TRACK_MEMO
25170 52 59 5f 42 59 54 45 53 0d 0a 20 20 20 20 20 20  RY_BYTES..      
25180 20 20 20 20 20 20 69 66 20 28 70 4d 65 6d 6f 72        if (pMemor
25190 79 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  y != IntPtr.Zero
251a0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
251b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
251c0 20 20 69 6e 74 20 62 6c 6f 63 6b 53 69 7a 65 20    int blockSize 
251d0 3d 20 53 69 7a 65 28 70 4d 65 6d 6f 72 79 29 3b  = Size(pMemory);
251e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
251f0 20 20 20 20 69 66 20 28 62 6c 6f 63 6b 53 69 7a      if (blockSiz
25200 65 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 20 20  e > 0)..        
25210 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
25220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
25230 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 0d 0a  ock (syncRoot)..
25240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25250 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
25260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
25270 79 74 65 73 41 6c 6c 6f 63 61 74 65 64 20 2d 3d  ytesAllocated -=
25280 20 62 6c 6f 63 6b 53 69 7a 65 3b 0d 0a 20 20 20   blockSize;..   
25290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
252a0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
252b0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
252c0 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a     }..#endif....
252d0 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
252e0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
252f0 73 71 6c 69 74 65 33 5f 66 72 65 65 28 70 4d 65  sqlite3_free(pMe
25300 6d 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20 20 20  mory);..        
25310 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
25320 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20  egion..    }..  
25330 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
25340 20 20 20 20 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 2f 2f 2f 2f 2f  ////////////////
25380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
25390 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53  ...    #region S
253a0 51 4c 69 74 65 53 74 72 69 6e 67 20 53 74 61 74  QLiteString Stat
253b0 69 63 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f  ic Class..    //
253c0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
253d0 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20   /// This class 
253e0 63 6f 6e 74 61 69 6e 73 20 73 74 61 74 69 63 20  contains static 
253f0 6d 65 74 68 6f 64 73 20 74 68 61 74 20 61 72 65  methods that are
25400 20 75 73 65 64 20 74 6f 20 64 65 61 6c 20 77 69   used to deal wi
25410 74 68 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 2f  th native..    /
25420 2f 2f 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20  // UTF-8 string 
25430 70 6f 69 6e 74 65 72 73 20 74 6f 20 62 65 20 75  pointers to be u
25440 73 65 64 20 77 69 74 68 20 74 68 65 20 53 51 4c  sed with the SQL
25450 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
25460 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
25470 6d 61 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72  mary>..    inter
25480 6e 61 6c 20 73 74 61 74 69 63 20 63 6c 61 73 73  nal static class
25490 20 53 51 4c 69 74 65 53 74 72 69 6e 67 0d 0a 20   SQLiteString.. 
254a0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72     {..        #r
254b0 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43 6f  egion Private Co
254c0 6e 73 74 61 6e 74 73 0d 0a 20 20 20 20 20 20 20  nstants..       
254d0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
254e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
254f0 20 69 73 20 74 68 65 20 6d 61 78 69 6d 75 6d 20   is the maximum 
25500 70 6f 73 73 69 62 6c 65 20 6c 65 6e 67 74 68 20  possible length 
25510 66 6f 72 20 74 68 65 20 6e 61 74 69 76 65 20 55  for the native U
25520 54 46 2d 38 20 65 6e 63 6f 64 65 64 0d 0a 20 20  TF-8 encoded..  
25530 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 69 6e 67        /// string
25540 73 20 75 73 65 64 20 77 69 74 68 20 74 68 65 20  s used with the 
25550 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
25560 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary...        //
25570 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
25580 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
25590 61 74 69 63 20 69 6e 74 20 54 68 69 72 74 79 42  atic int ThirtyB
255a0 69 74 73 20 3d 20 30 78 33 66 66 66 66 66 66 66  its = 0x3fffffff
255b0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
255c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
255d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
255e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
255f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25600 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
25610 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
25620 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
25630 69 73 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  is the <see cref
25640 3d 22 45 6e 63 6f 64 69 6e 67 22 20 2f 3e 20 6f  ="Encoding" /> o
25650 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 75  bject instance u
25660 73 65 64 20 74 6f 20 68 61 6e 64 6c 65 0d 0a 20  sed to handle.. 
25670 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 76 65         /// conve
25680 72 73 69 6f 6e 73 20 66 72 6f 6d 2f 74 6f 20 55  rsions from/to U
25690 54 46 2d 38 2e 0d 0a 20 20 20 20 20 20 20 20 2f  TF-8...        /
256a0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
256b0 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73         private s
256c0 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 45  tatic readonly E
256d0 6e 63 6f 64 69 6e 67 20 55 74 66 38 45 6e 63 6f  ncoding Utf8Enco
256e0 64 69 6e 67 20 3d 20 45 6e 63 6f 64 69 6e 67 2e  ding = Encoding.
256f0 55 54 46 38 3b 0d 0a 20 20 20 20 20 20 20 20 23  UTF8;..        #
25700 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
25710 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
25760 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
25770 55 54 46 2d 38 20 45 6e 63 6f 64 69 6e 67 20 48  UTF-8 Encoding H
25780 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20  elper Methods.. 
25790 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
257a0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
257b0 2f 20 43 6f 6e 76 65 72 74 73 20 74 68 65 20 73  / Converts the s
257c0 70 65 63 69 66 69 65 64 20 6d 61 6e 61 67 65 64  pecified managed
257d0 20 73 74 72 69 6e 67 20 69 6e 74 6f 20 74 68 65   string into the
257e0 20 55 54 46 2d 38 20 65 6e 63 6f 64 69 6e 67 20   UTF-8 encoding 
257f0 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  and..        ///
25800 20 72 65 74 75 72 6e 73 20 74 68 65 20 61 72 72   returns the arr
25810 61 79 20 6f 66 20 62 79 74 65 73 20 63 6f 6e 74  ay of bytes cont
25820 61 69 6e 69 6e 67 20 69 74 73 20 72 65 70 72 65  aining its repre
25830 73 65 6e 74 61 74 69 6f 6e 20 69 6e 20 74 68 61  sentation in tha
25840 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 65  t..        /// e
25850 6e 63 6f 64 69 6e 67 2e 0d 0a 20 20 20 20 20 20  ncoding...      
25860 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
25870 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
25880 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65  aram name="value
25890 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
258a0 54 68 65 20 6d 61 6e 61 67 65 64 20 73 74 72 69  The managed stri
258b0 6e 67 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a  ng to convert...
258c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
258d0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
258e0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
258f0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 72 72       /// The arr
25900 61 79 20 6f 66 20 62 79 74 65 73 20 63 6f 6e 74  ay of bytes cont
25910 61 69 6e 69 6e 67 20 74 68 65 20 72 65 70 72 65  aining the repre
25920 73 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65  sentation of the
25930 20 6d 61 6e 61 67 65 64 0d 0a 20 20 20 20 20 20   managed..      
25940 20 20 2f 2f 2f 20 73 74 72 69 6e 67 20 69 6e 20    /// string in 
25950 74 68 65 20 55 54 46 2d 38 20 65 6e 63 6f 64 69  the UTF-8 encodi
25960 6e 67 20 6f 72 20 6e 75 6c 6c 20 75 70 6f 6e 20  ng or null upon 
25970 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20  failure...      
25980 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
25990 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
259a0 20 73 74 61 74 69 63 20 62 79 74 65 5b 5d 20 47   static byte[] G
259b0 65 74 55 74 66 38 42 79 74 65 73 46 72 6f 6d 53  etUtf8BytesFromS
259c0 74 72 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20  tring(..        
259d0 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75 65      string value
259e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
259f0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
25a00 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75          if (valu
25a10 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
25a20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
25a30 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20  rn null;....    
25a40 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 55          return U
25a50 74 66 38 45 6e 63 6f 64 69 6e 67 2e 47 65 74 42  tf8Encoding.GetB
25a60 79 74 65 73 28 76 61 6c 75 65 29 3b 0d 0a 20 20  ytes(value);..  
25a70 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
25a80 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
25a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
25ad0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
25ae0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
25af0 20 43 6f 6e 76 65 72 74 73 20 74 68 65 20 73 70   Converts the sp
25b00 65 63 69 66 69 65 64 20 61 72 72 61 79 20 6f 66  ecified array of
25b10 20 62 79 74 65 73 20 72 65 70 72 65 73 65 6e 74   bytes represent
25b20 69 6e 67 20 61 20 73 74 72 69 6e 67 20 69 6e 20  ing a string in 
25b30 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
25b40 20 55 54 46 2d 38 20 65 6e 63 6f 64 69 6e 67 20   UTF-8 encoding 
25b50 61 6e 64 20 72 65 74 75 72 6e 73 20 61 20 6d 61  and returns a ma
25b60 6e 61 67 65 64 20 73 74 72 69 6e 67 2e 0d 0a 20  naged string... 
25b70 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
25b80 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
25b90 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
25ba0 62 79 74 65 73 22 3e 0d 0a 20 20 20 20 20 20 20  bytes">..       
25bb0 20 2f 2f 2f 20 54 68 65 20 61 72 72 61 79 20 6f   /// The array o
25bc0 66 20 62 79 74 65 73 20 74 6f 20 63 6f 6e 76 65  f bytes to conve
25bd0 72 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  rt...        ///
25be0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
25bf0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
25c00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
25c10 65 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67  e managed string
25c20 20 6f 72 20 6e 75 6c 6c 20 75 70 6f 6e 20 66 61   or null upon fa
25c30 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  ilure...        
25c40 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
25c50 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
25c60 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74  tatic string Get
25c70 53 74 72 69 6e 67 46 72 6f 6d 55 74 66 38 42 79  StringFromUtf8By
25c80 74 65 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20  tes(..          
25c90 20 20 62 79 74 65 5b 5d 20 62 79 74 65 73 0d 0a    byte[] bytes..
25ca0 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
25cb0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
25cc0 20 20 20 20 20 20 69 66 20 28 62 79 74 65 73 20        if (bytes 
25cd0 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
25ce0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
25cf0 20 6e 75 6c 6c 3b 0d 0a 0d 0a 23 69 66 20 21 50   null;....#if !P
25d00 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
25d10 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
25d20 20 20 20 20 20 20 72 65 74 75 72 6e 20 55 74 66        return Utf
25d30 38 45 6e 63 6f 64 69 6e 67 2e 47 65 74 53 74 72  8Encoding.GetStr
25d40 69 6e 67 28 62 79 74 65 73 29 3b 0d 0a 23 65 6c  ing(bytes);..#el
25d50 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
25d60 72 65 74 75 72 6e 20 55 74 66 38 45 6e 63 6f 64  return Utf8Encod
25d70 69 6e 67 2e 47 65 74 53 74 72 69 6e 67 28 62 79  ing.GetString(by
25d80 74 65 73 2c 20 30 2c 20 62 79 74 65 73 2e 4c 65  tes, 0, bytes.Le
25d90 6e 67 74 68 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ngth);..#endif..
25da0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
25db0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
25dc0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
25dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25e10 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
25e20 69 6f 6e 20 55 54 46 2d 38 20 53 74 72 69 6e 67  ion UTF-8 String
25e30 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d   Helper Methods.
25e40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
25e50 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
25e60 2f 2f 2f 20 50 72 6f 62 65 73 20 61 20 6e 61 74  /// Probes a nat
25e70 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 61  ive pointer to a
25e80 20 73 74 72 69 6e 67 20 69 6e 20 74 68 65 20 55   string in the U
25e90 54 46 2d 38 20 65 6e 63 6f 64 69 6e 67 20 66 6f  TF-8 encoding fo
25ea0 72 20 69 74 73 0d 0a 20 20 20 20 20 20 20 20 2f  r its..        /
25eb0 2f 2f 20 74 65 72 6d 69 6e 61 74 69 6e 67 20 4e  // terminating N
25ec0 55 4c 20 63 68 61 72 61 63 74 65 72 2c 20 77 69  UL character, wi
25ed0 74 68 69 6e 20 74 68 65 20 73 70 65 63 69 66 69  thin the specifi
25ee0 65 64 20 6c 65 6e 67 74 68 20 6c 69 6d 69 74 2e  ed length limit.
25ef0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
25f00 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
25f10 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
25f20 65 3d 22 70 56 61 6c 75 65 22 3e 0d 0a 20 20 20  e="pValue">..   
25f30 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
25f40 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69 6e 61 74  ive NUL-terminat
25f50 65 64 20 73 74 72 69 6e 67 20 70 6f 69 6e 74 65  ed string pointe
25f60 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
25f70 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
25f80 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
25f90 65 3d 22 6c 69 6d 69 74 22 3e 0d 0a 20 20 20 20  e="limit">..    
25fa0 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61 78 69      /// The maxi
25fb0 6d 75 6d 20 6c 65 6e 67 74 68 20 6f 66 20 74 68  mum length of th
25fc0 65 20 6e 61 74 69 76 65 20 73 74 72 69 6e 67 2c  e native string,
25fd0 20 69 6e 20 62 79 74 65 73 2e 0d 0a 20 20 20 20   in bytes...    
25fe0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
25ff0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
26000 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
26010 20 2f 2f 2f 20 54 68 65 20 6c 65 6e 67 74 68 20   /// The length 
26020 6f 66 20 74 68 65 20 6e 61 74 69 76 65 20 73 74  of the native st
26030 72 69 6e 67 2c 20 69 6e 20 62 79 74 65 73 20 2d  ring, in bytes -
26040 4f 52 2d 20 7a 65 72 6f 20 69 66 20 74 68 65 20  OR- zero if the 
26050 6c 65 6e 67 74 68 0d 0a 20 20 20 20 20 20 20 20  length..        
26060 2f 2f 2f 20 63 6f 75 6c 64 20 6e 6f 74 20 62 65  /// could not be
26070 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20   determined...  
26080 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
26090 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  rns>..        pu
260a0 62 6c 69 63 20 73 74 61 74 69 63 20 69 6e 74 20  blic static int 
260b0 50 72 6f 62 65 46 6f 72 55 74 66 38 42 79 74 65  ProbeForUtf8Byte
260c0 4c 65 6e 67 74 68 28 0d 0a 20 20 20 20 20 20 20  Length(..       
260d0 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 61 6c       IntPtr pVal
260e0 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue,..           
260f0 20 69 6e 74 20 6c 69 6d 69 74 0d 0a 20 20 20 20   int limit..    
26100 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
26110 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
26120 20 20 69 6e 74 20 6c 65 6e 67 74 68 20 3d 20 30    int length = 0
26130 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
26140 20 69 66 20 28 28 70 56 61 6c 75 65 20 21 3d 20   if ((pValue != 
26150 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20 26 26 20  IntPtr.Zero) && 
26160 28 6c 69 6d 69 74 20 3e 20 30 29 29 0d 0a 20 20  (limit > 0))..  
26170 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
26180 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 0d               do.
26190 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
261a0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
261b0 20 20 20 20 20 20 20 20 69 66 20 28 4d 61 72 73          if (Mars
261c0 68 61 6c 2e 52 65 61 64 42 79 74 65 28 70 56 61  hal.ReadByte(pVa
261d0 6c 75 65 2c 20 6c 65 6e 67 74 68 29 20 3d 3d 20  lue, length) == 
261e0 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  0)..            
261f0 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61              brea
26200 6b 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  k;....          
26210 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 65            if (le
26220 6e 67 74 68 20 3e 3d 20 6c 69 6d 69 74 29 0d 0a  ngth >= limit)..
26230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26240 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a          break;..
26250 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26260 20 20 20 20 20 20 6c 65 6e 67 74 68 2b 2b 3b 0d        length++;.
26270 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26280 20 7d 20 77 68 69 6c 65 20 28 74 72 75 65 29 3b   } while (true);
26290 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
262a0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
262b0 65 74 75 72 6e 20 6c 65 6e 67 74 68 3b 0d 0a 20  eturn length;.. 
262c0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
262d0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
262e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
262f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
26320 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
26330 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
26340 2f 20 43 6f 6e 76 65 72 74 73 20 74 68 65 20 73  / Converts the s
26350 70 65 63 69 66 69 65 64 20 6e 61 74 69 76 65 20  pecified native 
26360 4e 55 4c 2d 74 65 72 6d 69 6e 61 74 65 64 20 55  NUL-terminated U
26370 54 46 2d 38 20 73 74 72 69 6e 67 20 70 6f 69 6e  TF-8 string poin
26380 74 65 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ter..        ///
26390 20 69 6e 74 6f 20 61 20 6d 61 6e 61 67 65 64 20   into a managed 
263a0 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  string...       
263b0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
263c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
263d0 72 61 6d 20 6e 61 6d 65 3d 22 70 56 61 6c 75 65  ram name="pValue
263e0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
263f0 54 68 65 20 6e 61 74 69 76 65 20 4e 55 4c 2d 74  The native NUL-t
26400 65 72 6d 69 6e 61 74 65 64 20 55 54 46 2d 38 20  erminated UTF-8 
26410 73 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 2e 0d  string pointer..
26420 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
26430 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
26440 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
26450 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61        /// The ma
26460 6e 61 67 65 64 20 73 74 72 69 6e 67 20 6f 72 20  naged string or 
26470 6e 75 6c 6c 20 75 70 6f 6e 20 66 61 69 6c 75 72  null upon failur
26480 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
26490 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
264a0 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
264b0 63 20 73 74 72 69 6e 67 20 53 74 72 69 6e 67 46  c string StringF
264c0 72 6f 6d 55 74 66 38 49 6e 74 50 74 72 28 0d 0a  romUtf8IntPtr(..
264d0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
264e0 74 72 20 70 56 61 6c 75 65 0d 0a 20 20 20 20 20  tr pValue..     
264f0 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
26500 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
26510 20 72 65 74 75 72 6e 20 53 74 72 69 6e 67 46 72   return StringFr
26520 6f 6d 55 74 66 38 49 6e 74 50 74 72 28 70 56 61  omUtf8IntPtr(pVa
26530 6c 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  lue,..          
26540 20 20 20 20 20 20 50 72 6f 62 65 46 6f 72 55 74        ProbeForUt
26550 66 38 42 79 74 65 4c 65 6e 67 74 68 28 70 56 61  f8ByteLength(pVa
26560 6c 75 65 2c 20 54 68 69 72 74 79 42 69 74 73 29  lue, ThirtyBits)
26570 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  );..        }...
26580 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
26590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
265a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
265b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
265c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
265d0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
265e0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
265f0 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20     /// Converts 
26600 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6e 61  the specified na
26610 74 69 76 65 20 55 54 46 2d 38 20 73 74 72 69 6e  tive UTF-8 strin
26620 67 20 70 6f 69 6e 74 65 72 20 6f 66 20 74 68 65  g pointer of the
26630 20 73 70 65 63 69 66 69 65 64 0d 0a 20 20 20 20   specified..    
26640 20 20 20 20 2f 2f 2f 20 6c 65 6e 67 74 68 20 69      /// length i
26650 6e 74 6f 20 61 20 6d 61 6e 61 67 65 64 20 73 74  nto a managed st
26660 72 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ring...        /
26670 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
26680 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
26690 6d 20 6e 61 6d 65 3d 22 70 56 61 6c 75 65 22 3e  m name="pValue">
266a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
266b0 65 20 6e 61 74 69 76 65 20 55 54 46 2d 38 20 73  e native UTF-8 s
266c0 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 2e 0d 0a  tring pointer...
266d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
266e0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
266f0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c  / <param name="l
26700 65 6e 67 74 68 22 3e 0d 0a 20 20 20 20 20 20 20  ength">..       
26710 20 2f 2f 2f 20 54 68 65 20 6c 65 6e 67 74 68 20   /// The length 
26720 6f 66 20 74 68 65 20 6e 61 74 69 76 65 20 73 74  of the native st
26730 72 69 6e 67 2c 20 69 6e 20 62 79 74 65 73 2e 0d  ring, in bytes..
26740 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
26750 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
26760 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
26770 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61        /// The ma
26780 6e 61 67 65 64 20 73 74 72 69 6e 67 20 6f 72 20  naged string or 
26790 6e 75 6c 6c 20 75 70 6f 6e 20 66 61 69 6c 75 72  null upon failur
267a0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
267b0 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
267c0 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
267d0 63 20 73 74 72 69 6e 67 20 53 74 72 69 6e 67 46  c string StringF
267e0 72 6f 6d 55 74 66 38 49 6e 74 50 74 72 28 0d 0a  romUtf8IntPtr(..
267f0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
26800 74 72 20 70 56 61 6c 75 65 2c 0d 0a 20 20 20 20  tr pValue,..    
26810 20 20 20 20 20 20 20 20 69 6e 74 20 6c 65 6e 67          int leng
26820 74 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  th..            
26830 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
26840 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 56            if (pV
26850 61 6c 75 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  alue == IntPtr.Z
26860 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
26870 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
26880 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  l;....          
26890 20 20 69 66 20 28 6c 65 6e 67 74 68 20 3e 20 30    if (length > 0
268a0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
268b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
268c0 20 20 62 79 74 65 5b 5d 20 62 79 74 65 73 20 3d    byte[] bytes =
268d0 20 6e 65 77 20 62 79 74 65 5b 6c 65 6e 67 74 68   new byte[length
268e0 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  ];....          
268f0 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 43 6f        Marshal.Co
26900 70 79 28 70 56 61 6c 75 65 2c 20 62 79 74 65 73  py(pValue, bytes
26910 2c 20 30 2c 20 6c 65 6e 67 74 68 29 3b 0d 0a 0d  , 0, length);...
26920 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26930 20 72 65 74 75 72 6e 20 47 65 74 53 74 72 69 6e   return GetStrin
26940 67 46 72 6f 6d 55 74 66 38 42 79 74 65 73 28 62  gFromUtf8Bytes(b
26950 79 74 65 73 29 3b 0d 0a 20 20 20 20 20 20 20 20  ytes);..        
26960 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
26970 20 20 20 20 20 72 65 74 75 72 6e 20 53 74 72 69       return Stri
26980 6e 67 2e 45 6d 70 74 79 3b 0d 0a 20 20 20 20 20  ng.Empty;..     
26990 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
269a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
269b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
269c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
269d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
269e0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
269f0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
26a00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f  ..        /// Co
26a10 6e 76 65 72 74 73 20 74 68 65 20 73 70 65 63 69  nverts the speci
26a20 66 69 65 64 20 6d 61 6e 61 67 65 64 20 73 74 72  fied managed str
26a30 69 6e 67 20 69 6e 74 6f 20 61 20 6e 61 74 69 76  ing into a nativ
26a40 65 20 4e 55 4c 2d 74 65 72 6d 69 6e 61 74 65 64  e NUL-terminated
26a50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 54  ..        /// UT
26a60 46 2d 38 20 73 74 72 69 6e 67 20 70 6f 69 6e 74  F-8 string point
26a70 65 72 20 75 73 69 6e 67 20 6d 65 6d 6f 72 79 20  er using memory 
26a80 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 74 68  obtained from th
26a90 65 20 53 51 4c 69 74 65 20 63 6f 72 65 0d 0a 20  e SQLite core.. 
26aa0 20 20 20 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61         /// libra
26ab0 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry...        ///
26ac0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
26ad0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
26ae0 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20  name="value">.. 
26af0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d         /// The m
26b00 61 6e 61 67 65 64 20 73 74 72 69 6e 67 20 74 6f  anaged string to
26b10 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20   convert...     
26b20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
26b30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
26b40 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
26b50 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 4e  /// The native N
26b60 55 4c 2d 74 65 72 6d 69 6e 61 74 65 64 20 55 54  UL-terminated UT
26b70 46 2d 38 20 73 74 72 69 6e 67 20 70 6f 69 6e 74  F-8 string point
26b80 65 72 20 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f  er or..        /
26b90 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  // <see cref="In
26ba0 74 50 74 72 2e 5a 65 72 6f 22 20 2f 3e 20 75 70  tPtr.Zero" /> up
26bb0 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20  on failure...   
26bc0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
26bd0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ns>..        pub
26be0 6c 69 63 20 73 74 61 74 69 63 20 49 6e 74 50 74  lic static IntPt
26bf0 72 20 55 74 66 38 49 6e 74 50 74 72 46 72 6f 6d  r Utf8IntPtrFrom
26c00 53 74 72 69 6e 67 28 0d 0a 20 20 20 20 20 20 20  String(..       
26c10 20 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75       string valu
26c20 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  e..            )
26c30 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
26c40 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c           if (val
26c50 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ue == null)..   
26c60 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
26c70 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  urn IntPtr.Zero;
26c80 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
26c90 49 6e 74 50 74 72 20 72 65 73 75 6c 74 20 3d 20  IntPtr result = 
26ca0 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
26cb0 20 20 20 20 20 20 20 20 20 20 62 79 74 65 5b 5d            byte[]
26cc0 20 62 79 74 65 73 20 3d 20 47 65 74 55 74 66 38   bytes = GetUtf8
26cd0 42 79 74 65 73 46 72 6f 6d 53 74 72 69 6e 67 28  BytesFromString(
26ce0 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  value);....     
26cf0 20 20 20 20 20 20 20 69 66 20 28 62 79 74 65 73         if (bytes
26d00 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
26d10 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
26d20 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  n IntPtr.Zero;..
26d30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
26d40 74 20 6c 65 6e 67 74 68 20 3d 20 62 79 74 65 73  t length = bytes
26d50 2e 4c 65 6e 67 74 68 3b 0d 0a 0d 0a 20 20 20 20  .Length;....    
26d60 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d          result =
26d70 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 41 6c   SQLiteMemory.Al
26d80 6c 6f 63 61 74 65 28 6c 65 6e 67 74 68 20 2b 20  locate(length + 
26d90 31 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  1);....         
26da0 20 20 20 69 66 20 28 72 65 73 75 6c 74 20 3d 3d     if (result ==
26db0 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
26dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
26dd0 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72  eturn IntPtr.Zer
26de0 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  o;....          
26df0 20 20 4d 61 72 73 68 61 6c 2e 43 6f 70 79 28 62    Marshal.Copy(b
26e00 79 74 65 73 2c 20 30 2c 20 72 65 73 75 6c 74 2c  ytes, 0, result,
26e10 20 6c 65 6e 67 74 68 29 3b 0d 0a 20 20 20 20 20   length);..     
26e20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 57         Marshal.W
26e30 72 69 74 65 42 79 74 65 28 72 65 73 75 6c 74 2c  riteByte(result,
26e40 20 6c 65 6e 67 74 68 2c 20 30 29 3b 0d 0a 0d 0a   length, 0);....
26e50 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
26e60 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20  rn result;..    
26e70 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
26e80 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
26e90 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
26ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
26ee0 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
26ef0 55 54 46 2d 38 20 53 74 72 69 6e 67 20 41 72 72  UTF-8 String Arr
26f00 61 79 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64  ay Helper Method
26f10 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
26f20 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
26f30 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61    /// Converts a
26f40 20 6c 6f 67 69 63 61 6c 20 61 72 72 61 79 20 6f   logical array o
26f50 66 20 6e 61 74 69 76 65 20 4e 55 4c 2d 74 65 72  f native NUL-ter
26f60 6d 69 6e 61 74 65 64 20 55 54 46 2d 38 20 73 74  minated UTF-8 st
26f70 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ring..        //
26f80 2f 20 70 6f 69 6e 74 65 72 73 20 69 6e 74 6f 20  / pointers into 
26f90 61 6e 20 61 72 72 61 79 20 6f 66 20 6d 61 6e 61  an array of mana
26fa0 67 65 64 20 73 74 72 69 6e 67 73 2e 0d 0a 20 20  ged strings...  
26fb0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
26fc0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
26fd0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61  / <param name="a
26fe0 72 67 63 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  rgc">..        /
26ff0 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66  // The number of
27000 20 65 6c 65 6d 65 6e 74 73 20 69 6e 20 74 68 65   elements in the
27010 20 6c 6f 67 69 63 61 6c 20 61 72 72 61 79 20 6f   logical array o
27020 66 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20  f native..      
27030 20 20 2f 2f 2f 20 4e 55 4c 2d 74 65 72 6d 69 6e    /// NUL-termin
27040 61 74 65 64 20 55 54 46 2d 38 20 73 74 72 69 6e  ated UTF-8 strin
27050 67 20 70 6f 69 6e 74 65 72 73 2e 0d 0a 20 20 20  g pointers...   
27060 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
27070 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
27080 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 76  param name="argv
27090 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
270a0 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  The native point
270b0 65 72 20 74 6f 20 74 68 65 20 6c 6f 67 69 63 61  er to the logica
270c0 6c 20 61 72 72 61 79 20 6f 66 20 6e 61 74 69 76  l array of nativ
270d0 65 20 4e 55 4c 2d 74 65 72 6d 69 6e 61 74 65 64  e NUL-terminated
270e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 54  ..        /// UT
270f0 46 2d 38 20 73 74 72 69 6e 67 20 70 6f 69 6e 74  F-8 string point
27100 65 72 73 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d  ers to convert..
27110 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
27120 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
27130 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
27140 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 72        /// The ar
27150 72 61 79 20 6f 66 20 6d 61 6e 61 67 65 64 20 73  ray of managed s
27160 74 72 69 6e 67 73 20 6f 72 20 6e 75 6c 6c 20 75  trings or null u
27170 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20  pon failure...  
27180 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
27190 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  rns>..        pu
271a0 62 6c 69 63 20 73 74 61 74 69 63 20 73 74 72 69  blic static stri
271b0 6e 67 5b 5d 20 53 74 72 69 6e 67 41 72 72 61 79  ng[] StringArray
271c0 46 72 6f 6d 55 74 66 38 53 69 7a 65 41 6e 64 49  FromUtf8SizeAndI
271d0 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20  ntPtr(..        
271e0 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20      int argc,.. 
271f0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
27200 72 20 61 72 67 76 0d 0a 20 20 20 20 20 20 20 20  r argv..        
27210 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
27220 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
27230 20 28 61 72 67 63 20 3c 20 30 29 0d 0a 20 20 20   (argc < 0)..   
27240 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
27250 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  urn null;....   
27260 20 20 20 20 20 20 20 20 20 69 66 20 28 61 72 67           if (arg
27270 76 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  v == IntPtr.Zero
27280 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
27290 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
272a0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  ...            s
272b0 74 72 69 6e 67 5b 5d 20 72 65 73 75 6c 74 20 3d  tring[] result =
272c0 20 6e 65 77 20 73 74 72 69 6e 67 5b 61 72 67 63   new string[argc
272d0 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  ];....          
272e0 20 20 66 6f 72 20 28 69 6e 74 20 69 6e 64 65 78    for (int index
272f0 20 3d 20 30 2c 20 6f 66 66 73 65 74 20 3d 20 30   = 0, offset = 0
27300 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
27310 20 20 20 20 20 20 20 69 6e 64 65 78 20 3c 20 72         index < r
27320 65 73 75 6c 74 2e 4c 65 6e 67 74 68 3b 0d 0a 20  esult.Length;.. 
27330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27340 20 20 20 69 6e 64 65 78 2b 2b 2c 20 6f 66 66 73     index++, offs
27350 65 74 20 2b 3d 20 49 6e 74 50 74 72 2e 53 69 7a  et += IntPtr.Siz
27360 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e)..            
27370 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
27380 20 20 20 49 6e 74 50 74 72 20 70 41 72 67 20 3d     IntPtr pArg =
27390 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52   SQLiteMarshal.R
273a0 65 61 64 49 6e 74 50 74 72 28 61 72 67 76 2c 20  eadIntPtr(argv, 
273b0 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20  offset);....    
273c0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75              resu
273d0 6c 74 5b 69 6e 64 65 78 5d 20 3d 20 28 70 41 72  lt[index] = (pAr
273e0 67 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  g != IntPtr.Zero
273f0 29 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) ?..           
27400 20 20 20 20 20 20 20 20 20 53 74 72 69 6e 67 46           StringF
27410 72 6f 6d 55 74 66 38 49 6e 74 50 74 72 28 70 41  romUtf8IntPtr(pA
27420 72 67 29 20 3a 20 6e 75 6c 6c 3b 0d 0a 20 20 20  rg) : null;..   
27430 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
27440 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
27450 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20   result;..      
27460 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
27470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
274a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
274b0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
274c0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
274d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e  .        /// Con
274e0 76 65 72 74 73 20 61 6e 20 61 72 72 61 79 20 6f  verts an array o
274f0 66 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67  f managed string
27500 73 20 69 6e 74 6f 20 61 6e 20 61 72 72 61 79 20  s into an array 
27510 6f 66 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20  of native..     
27520 20 20 20 2f 2f 2f 20 4e 55 4c 2d 74 65 72 6d 69     /// NUL-termi
27530 6e 61 74 65 64 20 55 54 46 2d 38 20 73 74 72 69  nated UTF-8 stri
27540 6e 67 20 70 6f 69 6e 74 65 72 73 2e 0d 0a 20 20  ng pointers...  
27550 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
27560 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
27570 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76  / <param name="v
27580 61 6c 75 65 73 22 3e 0d 0a 20 20 20 20 20 20 20  alues">..       
27590 20 2f 2f 2f 20 54 68 65 20 61 72 72 61 79 20 6f   /// The array o
275a0 66 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67  f managed string
275b0 73 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20  s to convert... 
275c0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
275d0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
275e0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
275f0 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 72 72 61      /// The arra
27600 79 20 6f 66 20 6e 61 74 69 76 65 20 4e 55 4c 2d  y of native NUL-
27610 74 65 72 6d 69 6e 61 74 65 64 20 55 54 46 2d 38  terminated UTF-8
27620 20 73 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 73   string pointers
27630 20 6f 72 20 6e 75 6c 6c 0d 0a 20 20 20 20 20 20   or null..      
27640 20 20 2f 2f 2f 20 75 70 6f 6e 20 66 61 69 6c 75    /// upon failu
27650 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
27660 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
27670 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
27680 69 63 20 49 6e 74 50 74 72 5b 5d 20 55 74 66 38  ic IntPtr[] Utf8
27690 49 6e 74 50 74 72 41 72 72 61 79 46 72 6f 6d 53  IntPtrArrayFromS
276a0 74 72 69 6e 67 41 72 72 61 79 28 0d 0a 20 20 20  tringArray(..   
276b0 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b           string[
276c0 5d 20 76 61 6c 75 65 73 0d 0a 20 20 20 20 20 20  ] values..      
276d0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
276e0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
276f0 69 66 20 28 76 61 6c 75 65 73 20 3d 3d 20 6e 75  if (values == nu
27700 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
27710 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
27720 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
27730 20 49 6e 74 50 74 72 5b 5d 20 72 65 73 75 6c 74   IntPtr[] result
27740 20 3d 20 6e 65 77 20 49 6e 74 50 74 72 5b 76 61   = new IntPtr[va
27750 6c 75 65 73 2e 4c 65 6e 67 74 68 5d 3b 0d 0a 0d  lues.Length];...
27760 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72  .            for
27770 20 28 69 6e 74 20 69 6e 64 65 78 20 3d 20 30 3b   (int index = 0;
27780 20 69 6e 64 65 78 20 3c 20 72 65 73 75 6c 74 2e   index < result.
27790 4c 65 6e 67 74 68 3b 20 69 6e 64 65 78 2b 2b 29  Length; index++)
277a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
277b0 20 20 72 65 73 75 6c 74 5b 69 6e 64 65 78 5d 20    result[index] 
277c0 3d 20 55 74 66 38 49 6e 74 50 74 72 46 72 6f 6d  = Utf8IntPtrFrom
277d0 53 74 72 69 6e 67 28 76 61 6c 75 65 73 5b 69 6e  String(values[in
277e0 64 65 78 5d 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  dex]);....      
277f0 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73        return res
27800 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ult;..        }.
27810 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
27820 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20  ion..    }..    
27830 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
27840 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
27850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
27890 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c  .    #region SQL
278a0 69 74 65 42 79 74 65 73 20 53 74 61 74 69 63 20  iteBytes Static 
278b0 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c  Class..    /// <
278c0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
278d0 2f 20 54 68 69 73 20 63 6c 61 73 73 20 63 6f 6e  / This class con
278e0 74 61 69 6e 73 20 73 74 61 74 69 63 20 6d 65 74  tains static met
278f0 68 6f 64 73 20 74 68 61 74 20 61 72 65 20 75 73  hods that are us
27900 65 64 20 74 6f 20 64 65 61 6c 20 77 69 74 68 20  ed to deal with 
27910 6e 61 74 69 76 65 0d 0a 20 20 20 20 2f 2f 2f 20  native..    /// 
27920 70 6f 69 6e 74 65 72 73 20 74 6f 20 6d 65 6d 6f  pointers to memo
27930 72 79 20 62 6c 6f 63 6b 73 20 74 68 61 74 20 6c  ry blocks that l
27940 6f 67 69 63 61 6c 6c 79 20 63 6f 6e 74 61 69 6e  ogically contain
27950 20 61 72 72 61 79 73 20 6f 66 20 62 79 74 65 73   arrays of bytes
27960 20 74 6f 20 62 65 0d 0a 20 20 20 20 2f 2f 2f 20   to be..    /// 
27970 75 73 65 64 20 77 69 74 68 20 74 68 65 20 53 51  used with the SQ
27980 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
27990 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  y...    /// </su
279a0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65  mmary>..    inte
279b0 72 6e 61 6c 20 73 74 61 74 69 63 20 63 6c 61 73  rnal static clas
279c0 73 20 53 51 4c 69 74 65 42 79 74 65 73 0d 0a 20  s SQLiteBytes.. 
279d0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72     {..        #r
279e0 65 67 69 6f 6e 20 42 79 74 65 20 41 72 72 61 79  egion Byte Array
279f0 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d   Helper Methods.
27a00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
27a10 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
27a20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 6e  /// Converts a n
27a30 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
27a40 20 61 20 6c 6f 67 69 63 61 6c 20 61 72 72 61 79   a logical array
27a50 20 6f 66 20 62 79 74 65 73 20 6f 66 20 74 68 65   of bytes of the
27a60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 70  ..        /// sp
27a70 65 63 69 66 69 65 64 20 6c 65 6e 67 74 68 20 69  ecified length i
27a80 6e 74 6f 20 61 20 6d 61 6e 61 67 65 64 20 62 79  nto a managed by
27a90 74 65 20 61 72 72 61 79 2e 0d 0a 20 20 20 20 20  te array...     
27aa0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
27ab0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
27ac0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 61 6c  param name="pVal
27ad0 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ue">..        //
27ae0 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69  / The native poi
27af0 6e 74 65 72 20 74 6f 20 74 68 65 20 6c 6f 67 69  nter to the logi
27b00 63 61 6c 20 61 72 72 61 79 20 6f 66 20 62 79 74  cal array of byt
27b10 65 73 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a  es to convert...
27b20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
27b30 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
27b40 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c  / <param name="l
27b50 65 6e 67 74 68 22 3e 0d 0a 20 20 20 20 20 20 20  ength">..       
27b60 20 2f 2f 2f 20 54 68 65 20 6c 65 6e 67 74 68 2c   /// The length,
27b70 20 69 6e 20 62 79 74 65 73 2c 20 6f 66 20 74 68   in bytes, of th
27b80 65 20 6c 6f 67 69 63 61 6c 20 61 72 72 61 79 20  e logical array 
27b90 6f 66 20 62 79 74 65 73 20 74 6f 20 63 6f 6e 76  of bytes to conv
27ba0 65 72 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ert...        //
27bb0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
27bc0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
27bd0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
27be0 68 65 20 6d 61 6e 61 67 65 64 20 62 79 74 65 20  he managed byte 
27bf0 61 72 72 61 79 20 6f 72 20 6e 75 6c 6c 20 75 70  array or null up
27c00 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20  on failure...   
27c10 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
27c20 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ns>..        pub
27c30 6c 69 63 20 73 74 61 74 69 63 20 62 79 74 65 5b  lic static byte[
27c40 5d 20 46 72 6f 6d 49 6e 74 50 74 72 28 0d 0a 20  ] FromIntPtr(.. 
27c50 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
27c60 72 20 70 56 61 6c 75 65 2c 0d 0a 20 20 20 20 20  r pValue,..     
27c70 20 20 20 20 20 20 20 69 6e 74 20 6c 65 6e 67 74         int lengt
27c80 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  h..            )
27c90 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
27ca0 20 20 20 20 20 20 20 20 20 69 66 20 28 70 56 61           if (pVa
27cb0 6c 75 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  lue == IntPtr.Ze
27cc0 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
27cd0 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
27ce0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
27cf0 20 69 66 20 28 6c 65 6e 67 74 68 20 3d 3d 20 30   if (length == 0
27d00 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
27d10 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20 62 79     return new by
27d20 74 65 5b 30 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20  te[0];....      
27d30 20 20 20 20 20 20 62 79 74 65 5b 5d 20 72 65 73        byte[] res
27d40 75 6c 74 20 3d 20 6e 65 77 20 62 79 74 65 5b 6c  ult = new byte[l
27d50 65 6e 67 74 68 5d 3b 0d 0a 0d 0a 20 20 20 20 20  ength];....     
27d60 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 43         Marshal.C
27d70 6f 70 79 28 70 56 61 6c 75 65 2c 20 72 65 73 75  opy(pValue, resu
27d80 6c 74 2c 20 30 2c 20 6c 65 6e 67 74 68 29 3b 0d  lt, 0, length);.
27d90 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
27da0 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20  eturn result;.. 
27db0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
27dc0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
27dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
27e10 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
27e20 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
27e30 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 6d 61 6e  / Converts a man
27e40 61 67 65 64 20 62 79 74 65 20 61 72 72 61 79 20  aged byte array 
27e50 69 6e 74 6f 20 61 20 6e 61 74 69 76 65 20 70 6f  into a native po
27e60 69 6e 74 65 72 20 74 6f 20 61 20 6c 6f 67 69 63  inter to a logic
27e70 61 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  al..        /// 
27e80 61 72 72 61 79 20 6f 66 20 62 79 74 65 73 2e 0d  array of bytes..
27e90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
27ea0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
27eb0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
27ec0 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20  ="value">..     
27ed0 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67     /// The manag
27ee0 65 64 20 62 79 74 65 20 61 72 72 61 79 20 74 6f  ed byte array to
27ef0 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20   convert...     
27f00 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
27f10 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
27f20 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
27f30 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70  /// The native p
27f40 6f 69 6e 74 65 72 20 74 6f 20 61 20 6c 6f 67 69  ointer to a logi
27f50 63 61 6c 20 62 79 74 65 20 61 72 72 61 79 20 6f  cal byte array o
27f60 72 20 6e 75 6c 6c 20 75 70 6f 6e 20 66 61 69 6c  r null upon fail
27f70 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
27f80 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
27f90 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
27fa0 74 69 63 20 49 6e 74 50 74 72 20 54 6f 49 6e 74  tic IntPtr ToInt
27fb0 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Ptr(..          
27fc0 20 20 62 79 74 65 5b 5d 20 76 61 6c 75 65 0d 0a    byte[] value..
27fd0 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
27fe0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
27ff0 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20        if (value 
28000 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
28010 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
28020 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d   IntPtr.Zero;...
28030 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
28040 20 6c 65 6e 67 74 68 20 3d 20 76 61 6c 75 65 2e   length = value.
28050 4c 65 6e 67 74 68 3b 0d 0a 0d 0a 20 20 20 20 20  Length;....     
28060 20 20 20 20 20 20 20 69 66 20 28 6c 65 6e 67 74         if (lengt
28070 68 20 3d 3d 20 30 29 0d 0a 20 20 20 20 20 20 20  h == 0)..       
28080 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
28090 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a  IntPtr.Zero;....
280a0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
280b0 74 72 20 72 65 73 75 6c 74 20 3d 20 53 51 4c 69  tr result = SQLi
280c0 74 65 4d 65 6d 6f 72 79 2e 41 6c 6c 6f 63 61 74  teMemory.Allocat
280d0 65 28 6c 65 6e 67 74 68 29 3b 0d 0a 0d 0a 20 20  e(length);....  
280e0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 72 65            if (re
280f0 73 75 6c 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  sult == IntPtr.Z
28100 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
28110 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74        return Int
28120 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20  Ptr.Zero;....   
28130 20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c           Marshal
28140 2e 43 6f 70 79 28 76 61 6c 75 65 2c 20 30 2c 20  .Copy(value, 0, 
28150 72 65 73 75 6c 74 2c 20 6c 65 6e 67 74 68 29 3b  result, length);
28160 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
28170 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a  return result;..
28180 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
28190 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20     #endregion.. 
281a0 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65     }..    #endre
281b0 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  gion....    ////
281c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
281d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
281e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
281f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28200 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23  ///////....    #
28210 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 4d 61 72  region SQLiteMar
28220 73 68 61 6c 20 53 74 61 74 69 63 20 43 6c 61 73  shal Static Clas
28230 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  s..    /// <summ
28240 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
28250 69 73 20 63 6c 61 73 73 20 63 6f 6e 74 61 69 6e  is class contain
28260 73 20 73 74 61 74 69 63 20 6d 65 74 68 6f 64 73  s static methods
28270 20 74 68 61 74 20 61 72 65 20 75 73 65 64 20 74   that are used t
28280 6f 20 70 65 72 66 6f 72 6d 20 73 65 76 65 72 61  o perform severa
28290 6c 0d 0a 20 20 20 20 2f 2f 2f 20 6c 6f 77 2d 6c  l..    /// low-l
282a0 65 76 65 6c 20 64 61 74 61 20 6d 61 72 73 68 61  evel data marsha
282b0 6c 6c 69 6e 67 20 74 61 73 6b 73 20 62 65 74 77  lling tasks betw
282c0 65 65 6e 20 6e 61 74 69 76 65 20 61 6e 64 20 6d  een native and m
282d0 61 6e 61 67 65 64 20 63 6f 64 65 2e 0d 0a 20 20  anaged code...  
282e0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
282f0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
28300 74 61 74 69 63 20 63 6c 61 73 73 20 53 51 4c 69  tatic class SQLi
28310 74 65 4d 61 72 73 68 61 6c 0d 0a 20 20 20 20 7b  teMarshal..    {
28320 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
28330 6e 20 49 6e 74 50 74 72 20 48 65 6c 70 65 72 20  n IntPtr Helper 
28340 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20  Methods..       
28350 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
28360 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65 74 75          /// Retu
28370 72 6e 73 20 61 20 6e 65 77 20 3c 73 65 65 20 63  rns a new <see c
28380 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20  ref="IntPtr" /> 
28390 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
283a0 62 61 73 65 64 20 6f 6e 20 74 68 65 0d 0a 20 20  based on the..  
283b0 20 20 20 20 20 20 2f 2f 2f 20 73 70 65 63 69 66        /// specif
283c0 69 65 64 20 3c 73 65 65 20 63 72 65 66 3d 22 49  ied <see cref="I
283d0 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74  ntPtr" /> object
283e0 20 69 6e 73 74 61 6e 63 65 20 61 6e 64 20 61 6e   instance and an
283f0 20 69 6e 74 65 67 65 72 0d 0a 20 20 20 20 20 20   integer..      
28400 20 20 2f 2f 2f 20 6f 66 66 73 65 74 2e 0d 0a 20    /// offset... 
28410 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
28420 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
28430 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
28440 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20 20 20 20  pointer">..     
28450 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
28460 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e  cref="IntPtr" />
28470 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
28480 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 74 68   representing th
28490 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20 20 20  e base..        
284a0 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74  /// memory locat
284b0 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ion...        //
284c0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
284d0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
284e0 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d 0a 20  ame="offset">.. 
284f0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 69         /// The i
28500 6e 74 65 67 65 72 20 6f 66 66 73 65 74 20 66 72  nteger offset fr
28510 6f 6d 20 74 68 65 20 62 61 73 65 20 6d 65 6d 6f  om the base memo
28520 72 79 20 6c 6f 63 61 74 69 6f 6e 20 74 68 61 74  ry location that
28530 20 74 68 65 20 6e 65 77 0d 0a 20 20 20 20 20 20   the new..      
28540 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
28550 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65  "IntPtr" /> obje
28560 63 74 20 69 6e 73 74 61 6e 63 65 20 73 68 6f 75  ct instance shou
28570 6c 64 20 70 6f 69 6e 74 20 74 6f 2e 0d 0a 20 20  ld point to...  
28580 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
28590 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
285a0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
285b0 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65 77 20 3c     /// The new <
285c0 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72  see cref="IntPtr
285d0 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
285e0 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ance...        /
285f0 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
28600 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
28610 61 74 69 63 20 49 6e 74 50 74 72 20 49 6e 74 50  atic IntPtr IntP
28620 74 72 46 6f 72 4f 66 66 73 65 74 28 0d 0a 20 20  trForOffset(..  
28630 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
28640 20 70 6f 69 6e 74 65 72 2c 0d 0a 20 20 20 20 20   pointer,..     
28650 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66 73 65         int offse
28660 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  t..            )
28670 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
28680 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
28690 6e 65 77 20 49 6e 74 50 74 72 28 70 6f 69 6e 74  new IntPtr(point
286a0 65 72 2e 54 6f 49 6e 74 36 34 28 29 20 2b 20 6f  er.ToInt64() + o
286b0 66 66 73 65 74 29 3b 0d 0a 20 20 20 20 20 20 20  ffset);..       
286c0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
286d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
286e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
286f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28710 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
28720 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
28730 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 6f 75 6e          /// Roun
28740 64 73 20 75 70 20 61 6e 20 69 6e 74 65 67 65 72  ds up an integer
28750 20 73 69 7a 65 20 74 6f 20 74 68 65 20 6e 65 78   size to the nex
28760 74 20 6d 75 6c 74 69 70 6c 65 20 6f 66 20 74 68  t multiple of th
28770 65 20 61 6c 69 67 6e 6d 65 6e 74 2e 0d 0a 20 20  e alignment...  
28780 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
28790 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
287a0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73  / <param name="s
287b0 69 7a 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ize">..        /
287c0 2f 2f 20 54 68 65 20 73 69 7a 65 2c 20 69 6e 20  // The size, in 
287d0 62 79 74 65 73 2c 20 74 6f 20 62 65 20 72 6f 75  bytes, to be rou
287e0 6e 64 65 64 20 75 70 2e 0d 0a 20 20 20 20 20 20  nded up...      
287f0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
28800 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
28810 61 6d 20 6e 61 6d 65 3d 22 61 6c 69 67 6e 6d 65  am name="alignme
28820 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nt">..        //
28830 2f 20 54 68 65 20 72 65 71 75 69 72 65 64 20 61  / The required a
28840 6c 69 67 6e 6d 65 6e 74 20 66 6f 72 20 74 68 65  lignment for the
28850 20 72 65 74 75 72 6e 20 76 61 6c 75 65 2e 0d 0a   return value...
28860 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
28870 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
28880 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
28890 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 69 7a       /// The siz
288a0 65 2c 20 69 6e 20 62 79 74 65 73 2c 20 72 6f 75  e, in bytes, rou
288b0 6e 64 65 64 20 75 70 20 74 6f 20 74 68 65 20 6e  nded up to the n
288c0 65 78 74 20 6d 75 6c 74 69 70 6c 65 20 6f 66 20  ext multiple of 
288d0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
288e0 20 61 6c 69 67 6e 6d 65 6e 74 2e 20 20 54 68 69   alignment.  Thi
288f0 73 20 76 61 6c 75 65 20 6d 61 79 20 65 6e 64 20  s value may end 
28900 75 70 20 62 65 69 6e 67 20 74 68 65 20 73 61 6d  up being the sam
28910 65 20 61 73 20 74 68 65 20 6f 72 69 67 69 6e 61  e as the origina
28920 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  l..        /// s
28930 69 7a 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ize...        //
28940 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
28950 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
28960 74 69 63 20 69 6e 74 20 52 6f 75 6e 64 55 70 28  tic int RoundUp(
28970 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
28980 74 20 73 69 7a 65 2c 0d 0a 20 20 20 20 20 20 20  t size,..       
28990 20 20 20 20 20 69 6e 74 20 61 6c 69 67 6e 6d 65       int alignme
289a0 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  nt..            
289b0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
289c0 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 61 6c            int al
289d0 69 67 6e 6d 65 6e 74 4d 69 6e 75 73 4f 6e 65 20  ignmentMinusOne 
289e0 3d 20 61 6c 69 67 6e 6d 65 6e 74 20 2d 20 31 3b  = alignment - 1;
289f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
28a00 74 75 72 6e 20 28 28 73 69 7a 65 20 2b 20 61 6c  turn ((size + al
28a10 69 67 6e 6d 65 6e 74 4d 69 6e 75 73 4f 6e 65 29  ignmentMinusOne)
28a20 20 26 20 7e 61 6c 69 67 6e 6d 65 6e 74 4d 69 6e   & ~alignmentMin
28a30 75 73 4f 6e 65 29 3b 0d 0a 20 20 20 20 20 20 20  usOne);..       
28a40 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
28a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a90 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
28aa0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
28ab0 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65          /// Dete
28ac0 72 6d 69 6e 65 73 20 74 68 65 20 6f 66 66 73 65  rmines the offse
28ad0 74 2c 20 69 6e 20 62 79 74 65 73 2c 20 6f 66 20  t, in bytes, of 
28ae0 74 68 65 20 6e 65 78 74 20 73 74 72 75 63 74 75  the next structu
28af0 72 65 20 6d 65 6d 62 65 72 2e 0d 0a 20 20 20 20  re member...    
28b00 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
28b10 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
28b20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 66 66  <param name="off
28b30 73 65 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  set">..        /
28b40 2f 2f 20 54 68 65 20 6f 66 66 73 65 74 2c 20 69  // The offset, i
28b50 6e 20 62 79 74 65 73 2c 20 6f 66 20 74 68 65 20  n bytes, of the 
28b60 63 75 72 72 65 6e 74 20 73 74 72 75 63 74 75 72  current structur
28b70 65 20 6d 65 6d 62 65 72 2e 0d 0a 20 20 20 20 20  e member...     
28b80 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
28b90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
28ba0 72 61 6d 20 6e 61 6d 65 3d 22 73 69 7a 65 22 3e  ram name="size">
28bb0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
28bc0 65 20 73 69 7a 65 2c 20 69 6e 20 62 79 74 65 73  e size, in bytes
28bd0 2c 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74  , of the current
28be0 20 73 74 72 75 63 74 75 72 65 20 6d 65 6d 62 65   structure membe
28bf0 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
28c00 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
28c10 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
28c20 65 3d 22 61 6c 69 67 6e 6d 65 6e 74 22 3e 0d 0a  e="alignment">..
28c30 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
28c40 61 6c 69 67 6e 6d 65 6e 74 2c 20 69 6e 20 62 79  alignment, in by
28c50 74 65 73 2c 20 6f 66 20 74 68 65 20 6e 65 78 74  tes, of the next
28c60 20 73 74 72 75 63 74 75 72 65 20 6d 65 6d 62 65   structure membe
28c70 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
28c80 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
28c90 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
28ca0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
28cb0 20 6f 66 66 73 65 74 2c 20 69 6e 20 62 79 74 65   offset, in byte
28cc0 73 2c 20 6f 66 20 74 68 65 20 6e 65 78 74 20 73  s, of the next s
28cd0 74 72 75 63 74 75 72 65 20 6d 65 6d 62 65 72 2e  tructure member.
28ce0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
28cf0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
28d00 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
28d10 69 6e 74 20 4e 65 78 74 4f 66 66 73 65 74 4f 66  int NextOffsetOf
28d20 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  (..            i
28d30 6e 74 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20  nt offset,..    
28d40 20 20 20 20 20 20 20 20 69 6e 74 20 73 69 7a 65          int size
28d50 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ,..            i
28d60 6e 74 20 61 6c 69 67 6e 6d 65 6e 74 0d 0a 20 20  nt alignment..  
28d70 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
28d80 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
28d90 20 20 20 20 72 65 74 75 72 6e 20 52 6f 75 6e 64      return Round
28da0 55 70 28 6f 66 66 73 65 74 20 2b 20 73 69 7a 65  Up(offset + size
28db0 2c 20 61 6c 69 67 6e 6d 65 6e 74 29 3b 0d 0a 20  , alignment);.. 
28dc0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
28dd0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
28de0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
28df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
28e30 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
28e40 6f 6e 20 4d 61 72 73 68 61 6c 20 52 65 61 64 20  on Marshal Read 
28e50 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a  Helper Methods..
28e60 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
28e70 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
28e80 2f 2f 20 52 65 61 64 73 20 61 20 3c 73 65 65 20  // Reads a <see 
28e90 63 72 65 66 3d 22 49 6e 74 33 32 22 20 2f 3e 20  cref="Int32" /> 
28ea0 76 61 6c 75 65 20 66 72 6f 6d 20 74 68 65 20 73  value from the s
28eb0 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72 79 0d  pecified memory.
28ec0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 6f 63  .        /// loc
28ed0 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ation...        
28ee0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
28ef0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
28f00 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74 65 72  am name="pointer
28f10 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
28f20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  The <see cref="I
28f30 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74  ntPtr" /> object
28f40 20 69 6e 73 74 61 6e 63 65 20 72 65 70 72 65 73   instance repres
28f50 65 6e 74 69 6e 67 20 74 68 65 20 62 61 73 65 0d  enting the base.
28f60 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 6d  .        /// mem
28f70 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20  ory location... 
28f80 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
28f90 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
28fa0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 66   <param name="of
28fb0 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20 20 20  fset">..        
28fc0 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67 65 72 20  /// The integer 
28fd0 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68 65 20  offset from the 
28fe0 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f 63 61  base memory loca
28ff0 74 69 6f 6e 20 77 68 65 72 65 20 74 68 65 0d 0a  tion where the..
29000 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
29010 20 63 72 65 66 3d 22 49 6e 74 33 32 22 20 2f 3e   cref="Int32" />
29020 20 76 61 6c 75 65 20 74 6f 20 62 65 20 72 65 61   value to be rea
29030 64 20 69 73 20 6c 6f 63 61 74 65 64 2e 0d 0a 20  d is located... 
29040 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
29050 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
29060 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
29070 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
29080 20 63 72 65 66 3d 22 49 6e 74 33 32 22 20 2f 3e   cref="Int32" />
29090 20 76 61 6c 75 65 20 61 74 20 74 68 65 20 73 70   value at the sp
290a0 65 63 69 66 69 65 64 20 6d 65 6d 6f 72 79 20 6c  ecified memory l
290b0 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ocation...      
290c0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
290d0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
290e0 20 73 74 61 74 69 63 20 69 6e 74 20 52 65 61 64   static int Read
290f0 49 6e 74 33 32 28 0d 0a 20 20 20 20 20 20 20 20  Int32(..        
29100 20 20 20 20 49 6e 74 50 74 72 20 70 6f 69 6e 74      IntPtr point
29110 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  er,..           
29120 20 69 6e 74 20 6f 66 66 73 65 74 0d 0a 20 20 20   int offset..   
29130 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
29140 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54      {..#if !PLAT
29150 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
29160 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
29170 20 20 20 72 65 74 75 72 6e 20 4d 61 72 73 68 61     return Marsha
29180 6c 2e 52 65 61 64 49 6e 74 33 32 28 70 6f 69 6e  l.ReadInt32(poin
29190 74 65 72 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 23  ter, offset);..#
291a0 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
291b0 20 20 72 65 74 75 72 6e 20 4d 61 72 73 68 61 6c    return Marshal
291c0 2e 52 65 61 64 49 6e 74 33 32 28 49 6e 74 50 74  .ReadInt32(IntPt
291d0 72 46 6f 72 4f 66 66 73 65 74 28 70 6f 69 6e 74  rForOffset(point
291e0 65 72 2c 20 6f 66 66 73 65 74 29 29 3b 0d 0a 23  er, offset));..#
291f0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d  endif..        }
29200 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29250 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
29260 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
29270 20 20 20 20 20 20 2f 2f 2f 20 52 65 61 64 73 20        /// Reads 
29280 61 20 3c 73 65 65 20 63 72 65 66 3d 22 44 6f 75  a <see cref="Dou
29290 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65 20 66 72  ble" /> value fr
292a0 6f 6d 20 74 68 65 20 73 70 65 63 69 66 69 65 64  om the specified
292b0 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20 20   memory..       
292c0 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a   /// location...
292d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
292e0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
292f0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
29300 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20 20 20  "pointer">..    
29310 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
29320 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f   cref="IntPtr" /
29330 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
29340 65 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 74  e representing t
29350 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20 20  he base..       
29360 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63 61   /// memory loca
29370 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  tion...        /
29380 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
29390 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
293a0 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d 0a  name="offset">..
293b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
293c0 69 6e 74 65 67 65 72 20 6f 66 66 73 65 74 20 66  integer offset f
293d0 72 6f 6d 20 74 68 65 20 62 61 73 65 20 6d 65 6d  rom the base mem
293e0 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77 68 65  ory location whe
293f0 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  re the..        
29400 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 44  /// <see cref="D
29410 6f 75 62 6c 65 22 20 2f 3e 20 74 6f 20 62 65 20  ouble" /> to be 
29420 72 65 61 64 20 69 73 20 6c 6f 63 61 74 65 64 2e  read is located.
29430 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
29440 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
29450 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
29460 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
29470 73 65 65 20 63 72 65 66 3d 22 44 6f 75 62 6c 65  see cref="Double
29480 22 20 2f 3e 20 76 61 6c 75 65 20 61 74 20 74 68  " /> value at th
29490 65 20 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f  e specified memo
294a0 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20  ry location...  
294b0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
294c0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  rns>..        pu
294d0 62 6c 69 63 20 73 74 61 74 69 63 20 64 6f 75 62  blic static doub
294e0 6c 65 20 52 65 61 64 44 6f 75 62 6c 65 28 0d 0a  le ReadDouble(..
294f0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
29500 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a 20 20 20  tr pointer,..   
29510 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66           int off
29520 73 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  set..           
29530 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23   )..        {..#
29540 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
29550 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
29560 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
29570 6e 20 42 69 74 43 6f 6e 76 65 72 74 65 72 2e 49  n BitConverter.I
29580 6e 74 36 34 42 69 74 73 54 6f 44 6f 75 62 6c 65  nt64BitsToDouble
29590 28 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74  (Marshal.ReadInt
295a0 36 34 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  64(..           
295b0 20 20 20 20 20 70 6f 69 6e 74 65 72 2c 20 6f 66       pointer, of
295c0 66 73 65 74 29 29 3b 0d 0a 23 65 6c 73 65 0d 0a  fset));..#else..
295d0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
295e0 72 6e 20 42 69 74 43 6f 6e 76 65 72 74 65 72 2e  rn BitConverter.
295f0 54 6f 44 6f 75 62 6c 65 28 42 69 74 43 6f 6e 76  ToDouble(BitConv
29600 65 72 74 65 72 2e 47 65 74 42 79 74 65 73 28 0d  erter.GetBytes(.
29610 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29620 20 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74   Marshal.ReadInt
29630 36 34 28 49 6e 74 50 74 72 46 6f 72 4f 66 66 73  64(IntPtrForOffs
29640 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73  et(pointer, offs
29650 65 74 29 29 29 2c 20 30 29 3b 0d 0a 23 65 6e 64  et))), 0);..#end
29660 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  if..        }...
29670 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
29680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
296a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
296b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
296c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
296d0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
296e0 20 20 20 2f 2f 2f 20 52 65 61 64 73 20 61 6e 20     /// Reads an 
296f0 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74  <see cref="IntPt
29700 72 22 20 2f 3e 20 76 61 6c 75 65 20 66 72 6f 6d  r" /> value from
29710 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6d   the specified m
29720 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 2f  emory..        /
29730 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20  // location...  
29740 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
29750 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
29760 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
29770 6f 69 6e 74 65 72 22 3e 0d 0a 20 20 20 20 20 20  ointer">..      
29780 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
29790 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20  ref="IntPtr" /> 
297a0 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
297b0 72 65 70 72 65 73 65 6e 74 69 6e 67 20 74 68 65  representing the
297c0 20 62 61 73 65 0d 0a 20 20 20 20 20 20 20 20 2f   base..        /
297d0 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69  // memory locati
297e0 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  on...        ///
297f0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
29800 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
29810 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d 0a 20 20  me="offset">..  
29820 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e        /// The in
29830 74 65 67 65 72 20 6f 66 66 73 65 74 20 66 72 6f  teger offset fro
29840 6d 20 74 68 65 20 62 61 73 65 20 6d 65 6d 6f 72  m the base memor
29850 79 20 6c 6f 63 61 74 69 6f 6e 20 77 68 65 72 65  y location where
29860 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
29870 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74  / <see cref="Int
29880 50 74 72 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f  Ptr" /> value to
29890 20 62 65 20 72 65 61 64 20 69 73 20 6c 6f 63 61   be read is loca
298a0 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ted...        //
298b0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
298c0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
298d0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
298e0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  he <see cref="In
298f0 74 50 74 72 22 20 2f 3e 20 76 61 6c 75 65 20 61  tPtr" /> value a
29900 74 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  t the specified 
29910 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e  memory location.
29920 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
29930 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
29940 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
29950 49 6e 74 50 74 72 20 52 65 61 64 49 6e 74 50 74  IntPtr ReadIntPt
29960 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
29970 49 6e 74 50 74 72 20 70 6f 69 6e 74 65 72 2c 0d  IntPtr pointer,.
29980 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
29990 20 6f 66 66 73 65 74 0d 0a 20 20 20 20 20 20 20   offset..       
299a0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
299b0 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  {..#if !PLATFORM
299c0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
299d0 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  K..            r
299e0 65 74 75 72 6e 20 4d 61 72 73 68 61 6c 2e 52 65  eturn Marshal.Re
299f0 61 64 49 6e 74 50 74 72 28 70 6f 69 6e 74 65 72  adIntPtr(pointer
29a00 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 23 65 6c 73  , offset);..#els
29a10 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  e..            r
29a20 65 74 75 72 6e 20 4d 61 72 73 68 61 6c 2e 52 65  eturn Marshal.Re
29a30 61 64 49 6e 74 50 74 72 28 49 6e 74 50 74 72 46  adIntPtr(IntPtrF
29a40 6f 72 4f 66 66 73 65 74 28 70 6f 69 6e 74 65 72  orOffset(pointer
29a50 2c 20 6f 66 66 73 65 74 29 29 3b 0d 0a 23 65 6e  , offset));..#en
29a60 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
29a70 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
29a80 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
29a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29ad0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
29ae0 20 23 72 65 67 69 6f 6e 20 4d 61 72 73 68 61 6c   #region Marshal
29af0 20 57 72 69 74 65 20 48 65 6c 70 65 72 20 4d 65   Write Helper Me
29b00 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f  thods..        /
29b10 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
29b20 20 20 20 20 20 20 2f 2f 2f 20 57 72 69 74 65 73        /// Writes
29b30 20 61 6e 20 3c 73 65 65 20 63 72 65 66 3d 22 49   an <see cref="I
29b40 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75 65 20 74  nt32" /> value t
29b50 6f 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  o the specified 
29b60 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20 20 20  memory..        
29b70 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20  /// location... 
29b80 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
29b90 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
29ba0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
29bb0 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20 20 20 20  pointer">..     
29bc0 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
29bd0 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e  cref="IntPtr" />
29be0 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
29bf0 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 74 68   representing th
29c00 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20 20 20  e base..        
29c10 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74  /// memory locat
29c20 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ion...        //
29c30 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
29c40 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
29c50 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d 0a 20  ame="offset">.. 
29c60 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 69         /// The i
29c70 6e 74 65 67 65 72 20 6f 66 66 73 65 74 20 66 72  nteger offset fr
29c80 6f 6d 20 74 68 65 20 62 61 73 65 20 6d 65 6d 6f  om the base memo
29c90 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77 68 65 72  ry location wher
29ca0 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  e the..        /
29cb0 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  // <see cref="In
29cc0 74 33 32 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f  t32" /> value to
29cd0 20 62 65 20 77 72 69 74 74 65 6e 20 69 73 20 6c   be written is l
29ce0 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20 20 20 20  ocated...       
29cf0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
29d00 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
29d10 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d  m name="value">.
29d20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
29d30 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 33   <see cref="Int3
29d40 32 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 77  2" /> value to w
29d50 72 69 74 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  rite...        /
29d60 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
29d70 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
29d80 69 63 20 76 6f 69 64 20 57 72 69 74 65 49 6e 74  ic void WriteInt
29d90 33 32 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  32(..           
29da0 20 49 6e 74 50 74 72 20 70 6f 69 6e 74 65 72 2c   IntPtr pointer,
29db0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
29dc0 74 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20 20  t offset,..     
29dd0 20 20 20 20 20 20 20 69 6e 74 20 76 61 6c 75 65         int value
29de0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
29df0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
29e00 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
29e10 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
29e20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e          Marshal.
29e30 57 72 69 74 65 49 6e 74 33 32 28 70 6f 69 6e 74  WriteInt32(point
29e40 65 72 2c 20 6f 66 66 73 65 74 2c 20 76 61 6c 75  er, offset, valu
29e50 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  e);..#else..    
29e60 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e          Marshal.
29e70 57 72 69 74 65 49 6e 74 33 32 28 49 6e 74 50 74  WriteInt32(IntPt
29e80 72 46 6f 72 4f 66 66 73 65 74 28 70 6f 69 6e 74  rForOffset(point
29e90 65 72 2c 20 6f 66 66 73 65 74 29 2c 20 76 61 6c  er, offset), val
29ea0 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ue);..#endif..  
29eb0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
29ec0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
29ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
29f10 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
29f20 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
29f30 20 57 72 69 74 65 73 20 61 6e 20 3c 73 65 65 20   Writes an <see 
29f40 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e 20  cref="Int64" /> 
29f50 76 61 6c 75 65 20 74 6f 20 74 68 65 20 73 70 65  value to the spe
29f60 63 69 66 69 65 64 20 6d 65 6d 6f 72 79 0d 0a 20  cified memory.. 
29f70 20 20 20 20 20 20 20 2f 2f 2f 20 6c 6f 63 61 74         /// locat
29f80 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ion...        //
29f90 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
29fa0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
29fb0 20 6e 61 6d 65 3d 22 70 6f 69 6e 74 65 72 22 3e   name="pointer">
29fc0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
29fd0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74  e <see cref="Int
29fe0 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  Ptr" /> object i
29ff0 6e 73 74 61 6e 63 65 20 72 65 70 72 65 73 65 6e  nstance represen
2a000 74 69 6e 67 20 74 68 65 20 62 61 73 65 0d 0a 20  ting the base.. 
2a010 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72         /// memor
2a020 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20  y location...   
2a030 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2a040 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
2a050 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 66 66 73  param name="offs
2a060 65 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  et">..        //
2a070 2f 20 54 68 65 20 69 6e 74 65 67 65 72 20 6f 66  / The integer of
2a080 66 73 65 74 20 66 72 6f 6d 20 74 68 65 20 62 61  fset from the ba
2a090 73 65 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69  se memory locati
2a0a0 6f 6e 20 77 68 65 72 65 20 74 68 65 0d 0a 20 20  on where the..  
2a0b0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
2a0c0 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e 20 76  ref="Int64" /> v
2a0d0 61 6c 75 65 20 74 6f 20 62 65 20 77 72 69 74 74  alue to be writt
2a0e0 65 6e 20 69 73 20 6c 6f 63 61 74 65 64 2e 0d 0a  en is located...
2a0f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
2a100 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
2a110 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76  / <param name="v
2a120 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  alue">..        
2a130 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
2a140 66 3d 22 49 6e 74 36 34 22 20 2f 3e 20 76 61 6c  f="Int64" /> val
2a150 75 65 20 74 6f 20 77 72 69 74 65 2e 0d 0a 20 20  ue to write...  
2a160 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
2a170 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  m>..        publ
2a180 69 63 20 73 74 61 74 69 63 20 76 6f 69 64 20 57  ic static void W
2a190 72 69 74 65 49 6e 74 36 34 28 0d 0a 20 20 20 20  riteInt64(..    
2a1a0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
2a1b0 6f 69 6e 74 65 72 2c 0d 0a 20 20 20 20 20 20 20  ointer,..       
2a1c0 20 20 20 20 20 69 6e 74 20 6f 66 66 73 65 74 2c       int offset,
2a1d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f  ..            lo
2a1e0 6e 67 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20  ng value..      
2a1f0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
2a200 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52   {..#if !PLATFOR
2a210 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
2a220 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
2a230 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74  Marshal.WriteInt
2a240 36 34 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73  64(pointer, offs
2a250 65 74 2c 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6c  et, value);..#el
2a260 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
2a270 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74  Marshal.WriteInt
2a280 36 34 28 49 6e 74 50 74 72 46 6f 72 4f 66 66 73  64(IntPtrForOffs
2a290 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73  et(pointer, offs
2a2a0 65 74 29 2c 20 76 61 6c 75 65 29 3b 0d 0a 23 65  et), value);..#e
2a2b0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ndif..        }.
2a2c0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2a2d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a2e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a2f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a310 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
2a320 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
2a330 20 20 20 20 20 2f 2f 2f 20 57 72 69 74 65 73 20       /// Writes 
2a340 61 20 3c 73 65 65 20 63 72 65 66 3d 22 44 6f 75  a <see cref="Dou
2a350 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f  ble" /> value to
2a360 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6d   the specified m
2a370 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 2f  emory..        /
2a380 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20  // location...  
2a390 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
2a3a0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
2a3b0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
2a3c0 6f 69 6e 74 65 72 22 3e 0d 0a 20 20 20 20 20 20  ointer">..      
2a3d0 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
2a3e0 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20  ref="IntPtr" /> 
2a3f0 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
2a400 72 65 70 72 65 73 65 6e 74 69 6e 67 20 74 68 65  representing the
2a410 20 62 61 73 65 0d 0a 20 20 20 20 20 20 20 20 2f   base..        /
2a420 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69  // memory locati
2a430 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  on...        ///
2a440 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
2a450 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2a460 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d 0a 20 20  me="offset">..  
2a470 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e        /// The in
2a480 74 65 67 65 72 20 6f 66 66 73 65 74 20 66 72 6f  teger offset fro
2a490 6d 20 74 68 65 20 62 61 73 65 20 6d 65 6d 6f 72  m the base memor
2a4a0 79 20 6c 6f 63 61 74 69 6f 6e 20 77 68 65 72 65  y location where
2a4b0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
2a4c0 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 44 6f 75  / <see cref="Dou
2a4d0 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f  ble" /> value to
2a4e0 20 62 65 20 77 72 69 74 74 65 6e 20 69 73 20 6c   be written is l
2a4f0 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20 20 20 20  ocated...       
2a500 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
2a510 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
2a520 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d  m name="value">.
2a530 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
2a540 20 3c 73 65 65 20 63 72 65 66 3d 22 44 6f 75 62   <see cref="Doub
2a550 6c 65 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20  le" /> value to 
2a560 77 72 69 74 65 2e 0d 0a 20 20 20 20 20 20 20 20  write...        
2a570 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
2a580 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
2a590 74 69 63 20 76 6f 69 64 20 57 72 69 74 65 44 6f  tic void WriteDo
2a5a0 75 62 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20  uble(..         
2a5b0 20 20 20 49 6e 74 50 74 72 20 70 6f 69 6e 74 65     IntPtr pointe
2a5c0 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r,..            
2a5d0 69 6e 74 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20  int offset,..   
2a5e0 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20           double 
2a5f0 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20  value..         
2a600 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
2a610 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
2a620 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
2a630 0a 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72  .            Mar
2a640 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 36 34 28  shal.WriteInt64(
2a650 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 2c  pointer, offset,
2a660 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a670 20 20 42 69 74 43 6f 6e 76 65 72 74 65 72 2e 44    BitConverter.D
2a680 6f 75 62 6c 65 54 6f 49 6e 74 36 34 42 69 74 73  oubleToInt64Bits
2a690 28 76 61 6c 75 65 29 29 3b 0d 0a 23 65 6c 73 65  (value));..#else
2a6a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 4d 61  ..            Ma
2a6b0 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 36 34  rshal.WriteInt64
2a6c0 28 49 6e 74 50 74 72 46 6f 72 4f 66 66 73 65 74  (IntPtrForOffset
2a6d0 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74  (pointer, offset
2a6e0 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
2a6f0 20 20 20 20 42 69 74 43 6f 6e 76 65 72 74 65 72      BitConverter
2a700 2e 54 6f 49 6e 74 36 34 28 42 69 74 43 6f 6e 76  .ToInt64(BitConv
2a710 65 72 74 65 72 2e 47 65 74 42 79 74 65 73 28 76  erter.GetBytes(v
2a720 61 6c 75 65 29 2c 20 30 29 29 3b 0d 0a 23 65 6e  alue), 0));..#en
2a730 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
2a740 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2a750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a790 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
2a7a0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2a7b0 20 20 20 20 2f 2f 2f 20 57 72 69 74 65 73 20 61      /// Writes a
2a7c0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50   <see cref="IntP
2a7d0 74 72 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20  tr" /> value to 
2a7e0 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6d 65  the specified me
2a7f0 6d 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f  mory..        //
2a800 2f 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20  / location...   
2a810 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
2a820 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
2a830 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 6f   <param name="po
2a840 69 6e 74 65 72 22 3e 0d 0a 20 20 20 20 20 20 20  inter">..       
2a850 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
2a860 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f  ef="IntPtr" /> o
2a870 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 72  bject instance r
2a880 65 70 72 65 73 65 6e 74 69 6e 67 20 74 68 65 20  epresenting the 
2a890 62 61 73 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  base..        //
2a8a0 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f  / memory locatio
2a8b0 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  n...        /// 
2a8c0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
2a8d0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2a8e0 65 3d 22 6f 66 66 73 65 74 22 3e 0d 0a 20 20 20  e="offset">..   
2a8f0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74       /// The int
2a900 65 67 65 72 20 6f 66 66 73 65 74 20 66 72 6f 6d  eger offset from
2a910 20 74 68 65 20 62 61 73 65 20 6d 65 6d 6f 72 79   the base memory
2a920 20 6c 6f 63 61 74 69 6f 6e 20 77 68 65 72 65 20   location where 
2a930 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
2a940 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50   <see cref="IntP
2a950 74 72 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20  tr" /> value to 
2a960 62 65 20 77 72 69 74 74 65 6e 20 69 73 20 6c 6f  be written is lo
2a970 63 61 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20  cated...        
2a980 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
2a990 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
2a9a0 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a   name="value">..
2a9b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
2a9c0 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74  <see cref="IntPt
2a9d0 72 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 77  r" /> value to w
2a9e0 72 69 74 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  rite...        /
2a9f0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
2aa00 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
2aa10 69 63 20 76 6f 69 64 20 57 72 69 74 65 49 6e 74  ic void WriteInt
2aa20 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Ptr(..          
2aa30 20 20 49 6e 74 50 74 72 20 70 6f 69 6e 74 65 72    IntPtr pointer
2aa40 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ,..            i
2aa50 6e 74 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20  nt offset,..    
2aa60 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 76          IntPtr v
2aa70 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20  alue..          
2aa80 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
2aa90 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
2aaa0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
2aab0 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73              Mars
2aac0 68 61 6c 2e 57 72 69 74 65 49 6e 74 50 74 72 28  hal.WriteIntPtr(
2aad0 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 2c  pointer, offset,
2aae0 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6c 73 65 0d   value);..#else.
2aaf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72  .            Mar
2ab00 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 50 74 72  shal.WriteIntPtr
2ab10 28 49 6e 74 50 74 72 46 6f 72 4f 66 66 73 65 74  (IntPtrForOffset
2ab20 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74  (pointer, offset
2ab30 29 2c 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64  ), value);..#end
2ab40 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  if..        }.. 
2ab50 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
2ab60 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
2ab70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ab80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ab90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2abb0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2abc0 23 72 65 67 69 6f 6e 20 4f 62 6a 65 63 74 20 48  #region Object H
2abd0 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20  elper Methods.. 
2abe0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
2abf0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
2ac00 2f 20 47 65 6e 65 72 61 74 65 73 20 61 20 68 61  / Generates a ha
2ac10 73 68 20 63 6f 64 65 20 76 61 6c 75 65 20 66 6f  sh code value fo
2ac20 72 20 74 68 65 20 6f 62 6a 65 63 74 2e 0d 0a 20  r the object... 
2ac30 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
2ac40 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
2ac50 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
2ac60 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20  value">..       
2ac70 20 2f 2f 2f 20 54 68 65 20 6f 62 6a 65 63 74 20   /// The object 
2ac80 69 6e 73 74 61 6e 63 65 20 75 73 65 64 20 74 6f  instance used to
2ac90 20 63 61 6c 63 75 6c 61 74 65 20 74 68 65 20 68   calculate the h
2aca0 61 73 68 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  ash code...     
2acb0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
2acc0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
2acd0 72 61 6d 20 6e 61 6d 65 3d 22 69 64 65 6e 74 69  ram name="identi
2ace0 74 79 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ty">..        //
2acf0 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 64 69  / Non-zero if di
2ad00 66 66 65 72 65 6e 74 20 6f 62 6a 65 63 74 20 69  fferent object i
2ad10 6e 73 74 61 6e 63 65 73 20 77 69 74 68 20 74 68  nstances with th
2ad20 65 20 73 61 6d 65 20 76 61 6c 75 65 20 73 68 6f  e same value sho
2ad30 75 6c 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  uld..        ///
2ad40 20 67 65 6e 65 72 61 74 65 20 64 69 66 66 65 72   generate differ
2ad50 65 6e 74 20 68 61 73 68 20 63 6f 64 65 73 2c 20  ent hash codes, 
2ad60 77 68 65 72 65 20 61 70 70 6c 69 63 61 62 6c 65  where applicable
2ad70 2e 20 20 54 68 69 73 20 70 61 72 61 6d 65 74 65  .  This paramete
2ad80 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 68  r..        /// h
2ad90 61 73 20 6e 6f 20 65 66 66 65 63 74 20 6f 6e 20  as no effect on 
2ada0 74 68 65 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74  the .NET Compact
2adb0 20 46 72 61 6d 65 77 6f 72 6b 2e 0d 0a 20 20 20   Framework...   
2adc0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2add0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
2ade0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
2adf0 20 20 2f 2f 2f 20 54 68 65 20 68 61 73 68 20 63    /// The hash c
2ae00 6f 64 65 20 76 61 6c 75 65 20 2d 4f 52 2d 20 7a  ode value -OR- z
2ae10 65 72 6f 20 69 66 20 74 68 65 20 6f 62 6a 65 63  ero if the objec
2ae20 74 20 69 73 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20  t is null...    
2ae30 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
2ae40 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  s>..        publ
2ae50 69 63 20 73 74 61 74 69 63 20 69 6e 74 20 47 65  ic static int Ge
2ae60 74 48 61 73 68 43 6f 64 65 28 0d 0a 20 20 20 20  tHashCode(..    
2ae70 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76          object v
2ae80 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  alue,..         
2ae90 20 20 20 62 6f 6f 6c 20 69 64 65 6e 74 69 74 79     bool identity
2aea0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
2aeb0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
2aec0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
2aed0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
2aee0 20 20 20 20 20 20 20 20 69 66 20 28 69 64 65 6e          if (iden
2aef0 74 69 74 79 29 0d 0a 20 20 20 20 20 20 20 20 20  tity)..         
2af00 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 52 75         return Ru
2af10 6e 74 69 6d 65 48 65 6c 70 65 72 73 2e 47 65 74  ntimeHelpers.Get
2af20 48 61 73 68 43 6f 64 65 28 76 61 6c 75 65 29 3b  HashCode(value);
2af30 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
2af40 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75          if (valu
2af50 65 20 3d 3d 20 6e 75 6c 6c 29 20 72 65 74 75 72  e == null) retur
2af60 6e 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  n 0;..          
2af70 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 2e 47    return value.G
2af80 65 74 48 61 73 68 43 6f 64 65 28 29 3b 0d 0a 20  etHashCode();.. 
2af90 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2afa0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20    #endregion..  
2afb0 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67    }..    #endreg
2afc0 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
2afd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2afe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b010 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
2b020 65 67 69 6f 6e 20 53 51 4c 69 74 65 4d 6f 64 75  egion SQLiteModu
2b030 6c 65 20 42 61 73 65 20 43 6c 61 73 73 0d 0a 20  le Base Class.. 
2b040 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2b050 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63  ..    /// This c
2b060 6c 61 73 73 20 72 65 70 72 65 73 65 6e 74 73 20  lass represents 
2b070 61 20 6d 61 6e 61 67 65 64 20 76 69 72 74 75 61  a managed virtua
2b080 6c 20 74 61 62 6c 65 20 6d 6f 64 75 6c 65 20 69  l table module i
2b090 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d 0a  mplementation...
2b0a0 20 20 20 20 2f 2f 2f 20 49 74 20 69 73 20 6e 6f      /// It is no
2b0b0 74 20 73 65 61 6c 65 64 20 61 6e 64 20 6d 75 73  t sealed and mus
2b0c0 74 20 62 65 20 75 73 65 64 20 61 73 20 74 68 65  t be used as the
2b0d0 20 62 61 73 65 20 63 6c 61 73 73 20 66 6f 72 20   base class for 
2b0e0 61 6e 79 0d 0a 20 20 20 20 2f 2f 2f 20 75 73 65  any..    /// use
2b0f0 72 2d 64 65 66 69 6e 65 64 20 76 69 72 74 75 61  r-defined virtua
2b100 6c 20 74 61 62 6c 65 20 6d 6f 64 75 6c 65 20 63  l table module c
2b110 6c 61 73 73 65 73 20 69 6d 70 6c 65 6d 65 6e 74  lasses implement
2b120 65 64 20 69 6e 20 6d 61 6e 61 67 65 64 20 63 6f  ed in managed co
2b130 64 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  de...    /// </s
2b140 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62  ummary>..    pub
2b150 6c 69 63 20 61 62 73 74 72 61 63 74 20 63 6c 61  lic abstract cla
2b160 73 73 20 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20  ss SQLiteModule 
2b170 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  :..            I
2b180 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64  SQLiteManagedMod
2b190 75 6c 65 2c 20 2f 2a 49 53 51 4c 69 74 65 4e 61  ule, /*ISQLiteNa
2b1a0 74 69 76 65 4d 6f 64 75 6c 65 2c 2a 2f 0d 0a 20  tiveModule,*/.. 
2b1b0 20 20 20 20 20 20 20 20 20 20 20 49 44 69 73 70             IDisp
2b1c0 6f 73 61 62 6c 65 20 2f 2a 20 4e 4f 54 20 53 45  osable /* NOT SE
2b1d0 41 4c 45 44 20 2a 2f 0d 0a 20 20 20 20 7b 0d 0a  ALED */..    {..
2b1e0 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
2b1f0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2b200 6c 65 20 50 72 69 76 61 74 65 20 43 6c 61 73 73  le Private Class
2b210 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
2b220 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2b230 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20   /// This class 
2b240 69 6d 70 6c 65 6d 65 6e 74 73 20 74 68 65 20 3c  implements the <
2b250 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2b260 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f  eNativeModule" /
2b270 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  >..        /// i
2b280 6e 74 65 72 66 61 63 65 20 62 79 20 66 6f 72 77  nterface by forw
2b290 61 72 64 69 6e 67 20 74 68 6f 73 65 20 6d 65 74  arding those met
2b2a0 68 6f 64 20 63 61 6c 6c 73 20 74 6f 20 74 68 65  hod calls to the
2b2b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
2b2c0 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d  ee cref="SQLiteM
2b2d0 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74  odule" /> object
2b2e0 20 69 6e 73 74 61 6e 63 65 20 69 74 20 63 6f 6e   instance it con
2b2f0 74 61 69 6e 73 2e 20 20 49 66 20 74 68 65 0d 0a  tains.  If the..
2b300 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 74          /// cont
2b310 61 69 6e 65 64 20 3c 73 65 65 20 63 72 65 66 3d  ained <see cref=
2b320 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f  "SQLiteModule" /
2b330 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
2b340 65 20 69 73 20 6e 75 6c 6c 2c 20 61 6c 6c 0d 0a  e is null, all..
2b350 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20          /// the 
2b360 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
2b370 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20  teNativeModule" 
2b380 2f 3e 20 6d 65 74 68 6f 64 73 20 73 69 6d 70 6c  /> methods simpl
2b390 79 20 67 65 6e 65 72 61 74 65 20 61 6e 0d 0a 20  y generate an.. 
2b3a0 20 20 20 20 20 20 20 2f 2f 2f 20 65 72 72 6f 72         /// error
2b3b0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
2b3c0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
2b3d0 20 20 20 70 72 69 76 61 74 65 20 73 65 61 6c 65     private seale
2b3e0 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 4e 61  d class SQLiteNa
2b3f0 74 69 76 65 4d 6f 64 75 6c 65 20 3a 0d 0a 20 20  tiveModule :..  
2b400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 53                IS
2b410 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2b420 65 2c 20 49 44 69 73 70 6f 73 61 62 6c 65 0d 0a  e, IDisposable..
2b430 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2b440 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
2b450 72 69 76 61 74 65 20 43 6f 6e 73 74 61 6e 74 73  rivate Constants
2b460 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2b470 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
2b480 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69           /// Thi
2b490 73 20 69 73 20 74 68 65 20 76 61 6c 75 65 20 74  s is the value t
2b4a0 68 61 74 20 69 73 20 61 6c 77 61 79 73 20 75 73  hat is always us
2b4b0 65 64 20 66 6f 72 20 74 68 65 20 22 6c 6f 67 45  ed for the "logE
2b4c0 72 72 6f 72 73 22 0d 0a 20 20 20 20 20 20 20 20  rrors"..        
2b4d0 20 20 20 20 2f 2f 2f 20 70 61 72 61 6d 65 74 65      /// paramete
2b4e0 72 20 74 6f 20 74 68 65 20 76 61 72 69 6f 75 73  r to the various
2b4f0 20 73 74 61 74 69 63 20 65 72 72 6f 72 20 68 61   static error ha
2b500 6e 64 6c 69 6e 67 20 6d 65 74 68 6f 64 73 20 70  ndling methods p
2b510 72 6f 76 69 64 65 64 0d 0a 20 20 20 20 20 20 20  rovided..       
2b520 20 20 20 20 20 2f 2f 2f 20 62 79 20 74 68 65 20       /// by the 
2b530 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
2b540 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 63 6c 61 73  eModule" /> clas
2b550 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s...            
2b560 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
2b570 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
2b580 61 74 65 20 63 6f 6e 73 74 20 62 6f 6f 6c 20 44  ate const bool D
2b590 65 66 61 75 6c 74 4c 6f 67 45 72 72 6f 72 73 20  efaultLogErrors 
2b5a0 3d 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 20  = true;....     
2b5b0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2b5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b5d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b5e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b5f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2b600 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73            /// <s
2b610 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2b620 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73       /// This is
2b630 20 74 68 65 20 76 61 6c 75 65 20 74 68 61 74 20   the value that 
2b640 69 73 20 61 6c 77 61 79 73 20 75 73 65 64 20 66  is always used f
2b650 6f 72 20 74 68 65 20 22 6c 6f 67 45 78 63 65 70  or the "logExcep
2b660 74 69 6f 6e 73 22 0d 0a 20 20 20 20 20 20 20 20  tions"..        
2b670 20 20 20 20 2f 2f 2f 20 70 61 72 61 6d 65 74 65      /// paramete
2b680 72 20 74 6f 20 74 68 65 20 76 61 72 69 6f 75 73  r to the various
2b690 20 73 74 61 74 69 63 20 65 72 72 6f 72 20 68 61   static error ha
2b6a0 6e 64 6c 69 6e 67 20 6d 65 74 68 6f 64 73 20 70  ndling methods p
2b6b0 72 6f 76 69 64 65 64 0d 0a 20 20 20 20 20 20 20  rovided..       
2b6c0 20 20 20 20 20 2f 2f 2f 20 62 79 20 74 68 65 20       /// by the 
2b6d0 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
2b6e0 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 63 6c 61 73  eModule" /> clas
2b6f0 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s...            
2b700 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
2b710 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
2b720 61 74 65 20 63 6f 6e 73 74 20 62 6f 6f 6c 20 44  ate const bool D
2b730 65 66 61 75 6c 74 4c 6f 67 45 78 63 65 70 74 69  efaultLogExcepti
2b740 6f 6e 73 20 3d 20 74 72 75 65 3b 0d 0a 0d 0a 20  ons = true;.... 
2b750 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
2b760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2b7a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2b7b0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
2b7c0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69           /// Thi
2b7d0 73 20 69 73 20 74 68 65 20 65 72 72 6f 72 20 6d  s is the error m
2b7e0 65 73 73 61 67 65 20 74 65 78 74 20 75 73 65 64  essage text used
2b7f0 20 77 68 65 6e 20 74 68 65 20 63 6f 6e 74 61 69   when the contai
2b800 6e 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ned..           
2b810 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
2b820 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e  SQLiteModule" />
2b830 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
2b840 20 69 73 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c   is not availabl
2b850 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  e..            /
2b860 2f 2f 20 66 6f 72 20 61 6e 79 20 72 65 61 73 6f  // for any reaso
2b870 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n...            
2b880 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
2b890 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
2b8a0 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67  ate const string
2b8b0 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61   ModuleNotAvaila
2b8c0 62 6c 65 45 72 72 6f 72 4d 65 73 73 61 67 65 20  bleErrorMessage 
2b8d0 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  =..             
2b8e0 20 20 20 22 6e 61 74 69 76 65 20 6d 6f 64 75 6c     "native modul
2b8f0 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e implementation
2b900 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65 22 3b   not available";
2b910 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65  ..            #e
2b920 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
2b930 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2b940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2b980 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69             #regi
2b990 6f 6e 20 50 72 69 76 61 74 65 20 44 61 74 61 0d  on Private Data.
2b9a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2b9b0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2b9c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
2b9d0 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
2b9e0 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65  eModule" /> obje
2b9f0 63 74 20 69 6e 73 74 61 6e 63 65 20 75 73 65 64  ct instance used
2ba00 20 74 6f 20 70 72 6f 76 69 64 65 0d 0a 20 20 20   to provide..   
2ba10 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 6e 20           /// an 
2ba20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f  implementation o
2ba30 66 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  f the <see cref=
2ba40 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2ba50 64 75 6c 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20  dule" />..      
2ba60 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65 72 66        /// interf
2ba70 61 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ace...          
2ba80 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2ba90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
2baa0 69 76 61 74 65 20 53 51 4c 69 74 65 4d 6f 64 75  ivate SQLiteModu
2bab0 6c 65 20 6d 6f 64 75 6c 65 3b 0d 0a 20 20 20 20  le module;..    
2bac0 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
2bad0 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  on....          
2bae0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2baf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bb00 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2bb30 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62       #region Pub
2bb40 6c 69 63 20 43 6f 6e 73 74 72 75 63 74 6f 72 73  lic Constructors
2bb50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2bb60 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
2bb70 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e           /// Con
2bb80 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61  structs an insta
2bb90 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73  nce of this clas
2bba0 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s...            
2bbb0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
2bbc0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2bbd0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64  <param name="mod
2bbe0 75 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  ule">..         
2bbf0 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
2bc00 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75  cref="SQLiteModu
2bc10 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  le" /> object in
2bc20 73 74 61 6e 63 65 20 75 73 65 64 20 74 6f 20 70  stance used to p
2bc30 72 6f 76 69 64 65 0d 0a 20 20 20 20 20 20 20 20  rovide..        
2bc40 20 20 20 20 2f 2f 2f 20 61 6e 20 69 6d 70 6c 65      /// an imple
2bc50 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65  mentation of the
2bc60 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2bc70 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22  iteNativeModule"
2bc80 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20   />..           
2bc90 20 2f 2f 2f 20 69 6e 74 65 72 66 61 63 65 2e 0d   /// interface..
2bca0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2bcb0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
2bcc0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51         public SQ
2bcd0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2bce0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2bcf0 20 20 20 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20     SQLiteModule 
2bd00 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20 20 20 20  module..        
2bd10 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
2bd20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2bd30 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6d            this.m
2bd40 6f 64 75 6c 65 20 3d 20 6d 6f 64 75 6c 65 3b 0d  odule = module;.
2bd50 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2bd60 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64              #end
2bd70 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
2bd80 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2bd90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bda0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bdb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bdc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2bdd0 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e           #region
2bde0 20 50 72 69 76 61 74 65 20 53 74 61 74 69 63 20   Private Static 
2bdf0 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20  Methods..       
2be00 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
2be10 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
2be20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20 74 61 62  /// Sets the tab
2be30 6c 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65  le error message
2be40 20 74 6f 20 6f 6e 65 20 74 68 61 74 20 69 6e 64   to one that ind
2be50 69 63 61 74 65 73 20 74 68 65 20 6e 61 74 69 76  icates the nativ
2be60 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  e..            /
2be70 2f 2f 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65 6d  // module implem
2be80 65 6e 74 61 74 69 6f 6e 20 69 73 20 6e 6f 74 20  entation is not 
2be90 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20  available...    
2bea0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
2beb0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2bec0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
2bed0 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20  ame="pVtab">..  
2bee0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68            /// Th
2bef0 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
2bf00 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
2bf10 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74 72  vtab derived str
2bf20 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ucture...       
2bf30 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2bf40 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2bf50 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
2bf60 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68            /// Th
2bf70 65 20 76 61 6c 75 65 20 6f 66 20 3c 73 65 65 20  e value of <see 
2bf80 63 72 65 66 3d 22 53 51 4c 69 74 65 45 72 72 6f  cref="SQLiteErro
2bf90 72 43 6f 64 65 2e 45 72 72 6f 72 22 20 2f 3e 2e  rCode.Error" />.
2bfa0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2bfb0 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
2bfc0 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
2bfd0 65 20 73 74 61 74 69 63 20 53 51 4c 69 74 65 45  e static SQLiteE
2bfe0 72 72 6f 72 43 6f 64 65 20 4d 6f 64 75 6c 65 4e  rrorCode ModuleN
2bff0 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65  otAvailableTable
2c000 45 72 72 6f 72 28 0d 0a 20 20 20 20 20 20 20 20  Error(..        
2c010 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
2c020 56 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20  Vtab..          
2c030 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
2c040 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2c050 20 20 20 20 20 20 20 20 53 65 74 54 61 62 6c 65          SetTable
2c060 45 72 72 6f 72 28 6e 75 6c 6c 2c 20 70 56 74 61  Error(null, pVta
2c070 62 2c 20 44 65 66 61 75 6c 74 4c 6f 67 45 72 72  b, DefaultLogErr
2c080 6f 72 73 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ors,..          
2c090 20 20 20 20 20 20 20 20 20 20 44 65 66 61 75 6c            Defaul
2c0a0 74 4c 6f 67 45 78 63 65 70 74 69 6f 6e 73 2c 20  tLogExceptions, 
2c0b0 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62  ModuleNotAvailab
2c0c0 6c 65 45 72 72 6f 72 4d 65 73 73 61 67 65 29 3b  leErrorMessage);
2c0d0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2c0e0 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74      return SQLit
2c0f0 65 45 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72  eErrorCode.Error
2c100 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
2c110 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2c120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c160 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
2c170 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2c180 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2c190 2f 20 53 65 74 73 20 74 68 65 20 74 61 62 6c 65  / Sets the table
2c1a0 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 74   error message t
2c1b0 6f 20 6f 6e 65 20 74 68 61 74 20 69 6e 64 69 63  o one that indic
2c1c0 61 74 65 73 20 74 68 65 20 6e 61 74 69 76 65 0d  ates the native.
2c1d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2c1e0 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65 6d 65 6e   module implemen
2c1f0 74 61 74 69 6f 6e 20 69 73 20 6e 6f 74 20 61 76  tation is not av
2c200 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  ailable...      
2c210 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
2c220 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
2c230 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2c240 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20  e="pCursor">..  
2c250 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68            /// Th
2c260 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
2c270 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
2c280 76 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69  vtab_cursor deri
2c290 76 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ved..           
2c2a0 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 2e 0d   /// structure..
2c2b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2c2c0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
2c2d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
2c2e0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
2c2f0 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20    /// The value 
2c300 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  of <see cref="SQ
2c310 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 45 72  LiteErrorCode.Er
2c320 72 6f 72 22 20 2f 3e 2e 0d 0a 20 20 20 20 20 20  ror" />...      
2c330 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
2c340 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
2c350 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
2c360 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
2c370 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61   ModuleNotAvaila
2c380 62 6c 65 43 75 72 73 6f 72 45 72 72 6f 72 28 0d  bleCursorError(.
2c390 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c3a0 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d   IntPtr pCursor.
2c3b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c3c0 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
2c3d0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2c3e0 20 20 20 53 65 74 43 75 72 73 6f 72 45 72 72 6f     SetCursorErro
2c3f0 72 28 6e 75 6c 6c 2c 20 70 43 75 72 73 6f 72 2c  r(null, pCursor,
2c400 20 44 65 66 61 75 6c 74 4c 6f 67 45 72 72 6f 72   DefaultLogError
2c410 73 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s,..            
2c420 20 20 20 20 20 20 20 20 44 65 66 61 75 6c 74 4c          DefaultL
2c430 6f 67 45 78 63 65 70 74 69 6f 6e 73 2c 20 4d 6f  ogExceptions, Mo
2c440 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65  duleNotAvailable
2c450 45 72 72 6f 72 4d 65 73 73 61 67 65 29 3b 0d 0a  ErrorMessage);..
2c460 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2c470 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65 45    return SQLiteE
2c480 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 3b 0d  rrorCode.Error;.
2c490 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2c4a0 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64              #end
2c4b0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
2c4c0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2c4d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c4e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c4f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c500 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2c510 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e           #region
2c520 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f   ISQLiteNativeMo
2c530 64 75 6c 65 20 4d 65 6d 62 65 72 73 0d 0a 20 20  dule Members..  
2c540 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73            /// <s
2c550 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2c560 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2c570 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2c580 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2c590 78 43 72 65 61 74 65 22 20 2f 3e 20 6d 65 74 68  xCreate" /> meth
2c5a0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
2c5b0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2c5c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2c5d0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 44   <param name="pD
2c5e0 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  b">..           
2c5f0 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
2c600 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
2c610 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65  ativeModule.xCre
2c620 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ate" /> method..
2c630 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2c640 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
2c650 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
2c660 6d 20 6e 61 6d 65 3d 22 70 41 75 78 22 3e 0d 0a  m name="pAux">..
2c670 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2c680 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
2c690 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
2c6a0 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 22 20  Module.xCreate" 
2c6b0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2c6c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
2c6d0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
2c6e0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2c6f0 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20 20 20 20  e="argc">..     
2c700 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
2c710 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
2c720 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2c730 65 2e 78 43 72 65 61 74 65 22 20 2f 3e 20 6d 65  e.xCreate" /> me
2c740 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2c750 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
2c760 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2c770 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72   <param name="ar
2c780 67 76 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  gv">..          
2c790 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
2c7a0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2c7b0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72  NativeModule.xCr
2c7c0 65 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  eate" /> method.
2c7d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2c7e0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
2c7f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
2c800 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e  am name="pVtab">
2c810 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2c820 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
2c830 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
2c840 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65  veModule.xCreate
2c850 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
2c860 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2c870 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
2c880 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
2c890 61 6d 65 3d 22 70 45 72 72 6f 72 22 3e 0d 0a 20  ame="pError">.. 
2c8a0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
2c8b0 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
2c8c0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
2c8d0 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 22 20 2f  odule.xCreate" /
2c8e0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
2c8f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
2c900 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
2c910 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
2c920 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2c930 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
2c940 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
2c950 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 22 20  Module.xCreate" 
2c960 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2c970 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
2c980 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
2c990 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
2c9a0 65 45 72 72 6f 72 43 6f 64 65 20 78 43 72 65 61  eErrorCode xCrea
2c9b0 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  te(..           
2c9c0 20 20 20 20 20 49 6e 74 50 74 72 20 70 44 62 2c       IntPtr pDb,
2c9d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2c9e0 20 20 49 6e 74 50 74 72 20 70 41 75 78 2c 0d 0a    IntPtr pAux,..
2c9f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ca00 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20  int argc,..     
2ca10 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
2ca20 72 20 61 72 67 76 2c 0d 0a 20 20 20 20 20 20 20  r argv,..       
2ca30 20 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74           ref Int
2ca40 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
2ca50 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
2ca60 49 6e 74 50 74 72 20 70 45 72 72 6f 72 0d 0a 20  IntPtr pError.. 
2ca70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
2ca80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2ca90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2caa0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
2cab0 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61       // NOTE: Ca
2cac0 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63  lled by native c
2cad0 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ode...          
2cae0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
2caf0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65            // Che
2cb00 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a  ckDisposed(); /*
2cb10 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20   EXEMPT */....  
2cb20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
2cb30 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c   (module == null
2cb40 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2cb50 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2cb60 20 20 20 20 20 20 20 20 20 20 70 45 72 72 6f 72            pError
2cb70 20 3d 20 53 51 4c 69 74 65 53 74 72 69 6e 67 2e   = SQLiteString.
2cb80 55 74 66 38 49 6e 74 50 74 72 46 72 6f 6d 53 74  Utf8IntPtrFromSt
2cb90 72 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20 20  ring(..         
2cba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d                 M
2cbb0 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c  oduleNotAvailabl
2cbc0 65 45 72 72 6f 72 4d 65 73 73 61 67 65 29 3b 0d  eErrorMessage);.
2cbd0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2cbe0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 51         return SQ
2cbf0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 45 72  LiteErrorCode.Er
2cc00 72 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ror;..          
2cc10 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2cc20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2cc30 6e 20 6d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65  n module.xCreate
2cc40 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2cc50 20 20 20 20 20 20 20 70 44 62 2c 20 70 41 75 78         pDb, pAux
2cc60 2c 20 61 72 67 63 2c 20 61 72 67 76 2c 20 72 65  , argc, argv, re
2cc70 66 20 70 56 74 61 62 2c 20 72 65 66 20 70 45 72  f pVtab, ref pEr
2cc80 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ror);..         
2cc90 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
2cca0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2ccb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ccc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ccd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cce0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2ccf0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
2cd00 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
2cd10 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
2cd20 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2cd30 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  NativeModule.xCo
2cd40 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64  nnect" /> method
2cd50 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2cd60 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2cd70 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2cd80 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 44 62 22  param name="pDb"
2cd90 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2cda0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
2cdb0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
2cdc0 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65  iveModule.xConne
2cdd0 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  ct" /> method...
2cde0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2cdf0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
2ce00 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
2ce10 20 6e 61 6d 65 3d 22 70 41 75 78 22 3e 0d 0a 20   name="pAux">.. 
2ce20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
2ce30 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
2ce40 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
2ce50 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 22 20  odule.xConnect" 
2ce60 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2ce70 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
2ce80 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
2ce90 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2cea0 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20 20 20 20  e="argc">..     
2ceb0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
2cec0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
2ced0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2cee0 65 2e 78 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d  e.xConnect" /> m
2cef0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2cf00 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2cf10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2cf20 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61  / <param name="a
2cf30 72 67 76 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  rgv">..         
2cf40 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2cf50 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2cf60 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
2cf70 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f  onnect" /> metho
2cf80 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
2cf90 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
2cfa0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
2cfb0 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62  aram name="pVtab
2cfc0 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
2cfd0 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
2cfe0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
2cff0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e  tiveModule.xConn
2d000 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ect" /> method..
2d010 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2d020 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
2d030 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
2d040 6d 20 6e 61 6d 65 3d 22 70 45 72 72 6f 72 22 3e  m name="pError">
2d050 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2d060 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
2d070 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
2d080 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63  veModule.xConnec
2d090 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  t" /> method... 
2d0a0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2d0b0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
2d0c0 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
2d0d0 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
2d0e0 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
2d0f0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
2d100 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e  tiveModule.xConn
2d110 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ect" /> method..
2d120 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2d130 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
2d140 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
2d150 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
2d160 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20  xConnect(..     
2d170 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
2d180 72 20 70 44 62 2c 0d 0a 20 20 20 20 20 20 20 20  r pDb,..        
2d190 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
2d1a0 41 75 78 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  Aux,..          
2d1b0 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d        int argc,.
2d1c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d1d0 20 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a 20   IntPtr argv,.. 
2d1e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2d1f0 65 66 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c  ef IntPtr pVtab,
2d200 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d210 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 45 72    ref IntPtr pEr
2d220 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ror..           
2d230 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
2d240 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2d250 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
2d260 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
2d270 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61  TE: Called by na
2d280 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20  tive code...    
2d290 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
2d2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d2b0 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64  // CheckDisposed
2d2c0 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f  (); /* EXEMPT */
2d2d0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2d2e0 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d      if (module =
2d2f0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
2d300 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2d310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d320 70 45 72 72 6f 72 20 3d 20 53 51 4c 69 74 65 53  pError = SQLiteS
2d330 74 72 69 6e 67 2e 55 74 66 38 49 6e 74 50 74 72  tring.Utf8IntPtr
2d340 46 72 6f 6d 53 74 72 69 6e 67 28 0d 0a 20 20 20  FromString(..   
2d350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d360 20 20 20 20 20 4d 6f 64 75 6c 65 4e 6f 74 41 76       ModuleNotAv
2d370 61 69 6c 61 62 6c 65 45 72 72 6f 72 4d 65 73 73  ailableErrorMess
2d380 61 67 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  age);....       
2d390 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2d3a0 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  urn SQLiteErrorC
2d3b0 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20 20  ode.Error;..    
2d3c0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
2d3d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d3e0 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78   return module.x
2d3f0 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20  Connect(..      
2d400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 44                pD
2d410 62 2c 20 70 41 75 78 2c 20 61 72 67 63 2c 20 61  b, pAux, argc, a
2d420 72 67 76 2c 20 72 65 66 20 70 56 74 61 62 2c 20  rgv, ref pVtab, 
2d430 72 65 66 20 70 45 72 72 6f 72 29 3b 0d 0a 20 20  ref pError);..  
2d440 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
2d450 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
2d460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2d4a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2d4b0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
2d4c0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
2d4d0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
2d4e0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2d4f0 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 22 20  ule.xBestIndex" 
2d500 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2d510 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
2d520 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2d530 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
2d540 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20  ame="pVtab">..  
2d550 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2d560 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
2d570 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2d580 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 22  dule.xBestIndex"
2d590 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
2d5a0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
2d5b0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
2d5c0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2d5d0 6d 65 3d 22 70 49 6e 64 65 78 22 3e 0d 0a 20 20  me="pIndex">..  
2d5e0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2d5f0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
2d600 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2d610 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 22  dule.xBestIndex"
2d620 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
2d630 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
2d640 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
2d650 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
2d660 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2d670 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
2d680 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
2d690 76 65 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e  veModule.xBestIn
2d6a0 64 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  dex" /> method..
2d6b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2d6c0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
2d6d0 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
2d6e0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
2d6f0 78 42 65 73 74 49 6e 64 65 78 28 0d 0a 20 20 20  xBestIndex(..   
2d700 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
2d710 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
2d720 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
2d730 74 72 20 70 49 6e 64 65 78 0d 0a 20 20 20 20 20  tr pIndex..     
2d740 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
2d750 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2d760 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
2d770 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d780 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64   // NOTE: Called
2d790 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e   by native code.
2d7a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d7b0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
2d7c0 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69        // CheckDi
2d7d0 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45  sposed(); /* EXE
2d7e0 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20  MPT */....      
2d7f0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f            if (mo
2d800 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  dule == null).. 
2d810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d820 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65     return Module
2d830 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c  NotAvailableTabl
2d840 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a  eError(pVtab);..
2d850 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d860 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e    return module.
2d870 78 42 65 73 74 49 6e 64 65 78 28 70 56 74 61 62  xBestIndex(pVtab
2d880 2c 20 70 49 6e 64 65 78 29 3b 0d 0a 20 20 20 20  , pIndex);..    
2d890 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2d8a0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
2d8b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d8c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d8d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d8e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2d8f0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2d900 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2d910 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
2d920 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
2d930 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2d940 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 22 20 2f  e.xDisconnect" /
2d950 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
2d960 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
2d970 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
2d980 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2d990 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20  me="pVtab">..   
2d9a0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
2d9b0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
2d9c0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2d9d0 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 22  ule.xDisconnect"
2d9e0 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
2d9f0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
2da00 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
2da10 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
2da20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2da30 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
2da40 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
2da50 76 65 4d 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e  veModule.xDiscon
2da60 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  nect" /> method.
2da70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2da80 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
2da90 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
2daa0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
2dab0 20 78 44 69 73 63 6f 6e 6e 65 63 74 28 0d 0a 20   xDisconnect(.. 
2dac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
2dad0 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20  ntPtr pVtab..   
2dae0 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
2daf0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2db00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2db10 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
2db20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c     // NOTE: Call
2db30 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64  ed by native cod
2db40 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
2db50 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
2db60 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b          // Check
2db70 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45  Disposed(); /* E
2db80 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20  XEMPT */....    
2db90 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2dba0 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d  module == null).
2dbb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2dbc0 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75       return Modu
2dbd0 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61  leNotAvailableTa
2dbe0 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b  bleError(pVtab);
2dbf0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2dc00 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c      return modul
2dc10 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 28 70 56  e.xDisconnect(pV
2dc20 74 61 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  tab);..         
2dc30 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
2dc40 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2dc50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dc60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dc70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dc80 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2dc90 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
2dca0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
2dcb0 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
2dcc0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2dcd0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 65  NativeModule.xDe
2dce0 73 74 72 6f 79 22 20 2f 3e 20 6d 65 74 68 6f 64  stroy" /> method
2dcf0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2dd00 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2dd10 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2dd20 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61  param name="pVta
2dd30 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  b">..           
2dd40 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
2dd50 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
2dd60 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 65 73  ativeModule.xDes
2dd70 74 72 6f 79 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  troy" /> method.
2dd80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2dd90 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
2dda0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
2ddb0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
2ddc0 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2ddd0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2dde0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44  eNativeModule.xD
2ddf0 65 73 74 72 6f 79 22 20 2f 3e 20 6d 65 74 68 6f  estroy" /> metho
2de00 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
2de10 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
2de20 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
2de30 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  ic SQLiteErrorCo
2de40 64 65 20 78 44 65 73 74 72 6f 79 28 0d 0a 20 20  de xDestroy(..  
2de50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
2de60 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20  tPtr pVtab..    
2de70 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
2de80 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2de90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2dea0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2deb0 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65    // NOTE: Calle
2dec0 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65  d by native code
2ded0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2dee0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
2def0 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44         // CheckD
2df00 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58  isposed(); /* EX
2df10 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20  EMPT */....     
2df20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d             if (m
2df30 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  odule == null)..
2df40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2df50 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c      return Modul
2df60 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62  eNotAvailableTab
2df70 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d  leError(pVtab);.
2df80 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2df90 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65     return module
2dfa0 2e 78 44 65 73 74 72 6f 79 28 70 56 74 61 62 29  .xDestroy(pVtab)
2dfb0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
2dfc0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2dfd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dfe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e010 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
2e020 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2e030 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2e040 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
2e050 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
2e060 76 65 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e 22 20  veModule.xOpen" 
2e070 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2e080 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
2e090 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2e0a0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
2e0b0 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20  ame="pVtab">..  
2e0c0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2e0d0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
2e0e0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2e0f0 64 75 6c 65 2e 78 4f 70 65 6e 22 20 2f 3e 20 6d  dule.xOpen" /> m
2e100 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2e110 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2e120 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2e130 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
2e140 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20  Cursor">..      
2e150 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
2e160 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
2e170 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2e180 2e 78 4f 70 65 6e 22 20 2f 3e 20 6d 65 74 68 6f  .xOpen" /> metho
2e190 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
2e1a0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
2e1b0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72            /// <r
2e1c0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
2e1d0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2e1e0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2e1f0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2e200 78 4f 70 65 6e 22 20 2f 3e 20 6d 65 74 68 6f 64  xOpen" /> method
2e210 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2e220 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
2e230 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
2e240 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  c SQLiteErrorCod
2e250 65 20 78 4f 70 65 6e 28 0d 0a 20 20 20 20 20 20  e xOpen(..      
2e260 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
2e270 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20   pVtab,..       
2e280 20 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74           ref Int
2e290 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20  Ptr pCursor..   
2e2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
2e2b0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2e2c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2e2d0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
2e2e0 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c     // NOTE: Call
2e2f0 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64  ed by native cod
2e300 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
2e310 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
2e320 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b          // Check
2e330 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45  Disposed(); /* E
2e340 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20  XEMPT */....    
2e350 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2e360 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d  module == null).
2e370 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e380 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75       return Modu
2e390 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61  leNotAvailableTa
2e3a0 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b  bleError(pVtab);
2e3b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2e3c0 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c      return modul
2e3d0 65 2e 78 4f 70 65 6e 28 70 56 74 61 62 2c 20 72  e.xOpen(pVtab, r
2e3e0 65 66 20 70 43 75 72 73 6f 72 29 3b 0d 0a 20 20  ef pCursor);..  
2e3f0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
2e400 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
2e410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2e450 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2e460 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
2e470 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
2e480 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
2e490 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2e4a0 75 6c 65 2e 78 43 6c 6f 73 65 22 20 2f 3e 20 6d  ule.xClose" /> m
2e4b0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2e4c0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2e4d0 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
2e4e0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
2e4f0 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20  "pCursor">..    
2e500 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
2e510 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
2e520 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2e530 6c 65 2e 78 43 6c 6f 73 65 22 20 2f 3e 20 6d 65  le.xClose" /> me
2e540 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2e550 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
2e560 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2e570 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
2e580 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
2e590 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
2e5a0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2e5b0 6c 65 2e 78 43 6c 6f 73 65 22 20 2f 3e 20 6d 65  le.xClose" /> me
2e5c0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2e5d0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
2e5e0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
2e5f0 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f  ublic SQLiteErro
2e600 72 43 6f 64 65 20 78 43 6c 6f 73 65 28 0d 0a 20  rCode xClose(.. 
2e610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
2e620 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20  ntPtr pCursor.. 
2e630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
2e640 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2e650 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e660 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
2e670 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61       // NOTE: Ca
2e680 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63  lled by native c
2e690 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ode...          
2e6a0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
2e6b0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65            // Che
2e6c0 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a  ckDisposed(); /*
2e6d0 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20   EXEMPT */....  
2e6e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
2e6f0 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c   (module == null
2e700 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2e710 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f         return Mo
2e720 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65  duleNotAvailable
2e730 43 75 72 73 6f 72 45 72 72 6f 72 28 70 43 75 72  CursorError(pCur
2e740 73 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  sor);....       
2e750 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2e760 6d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 28 70 43  module.xClose(pC
2e770 75 72 73 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20  ursor);..       
2e780 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2e790 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2e7a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e7b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e7c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e7d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2e7e0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75           /// <su
2e7f0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2e800 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
2e810 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
2e820 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
2e830 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f  Filter" /> metho
2e840 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
2e850 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
2e860 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2e870 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75  <param name="pCu
2e880 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20  rsor">..        
2e890 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
2e8a0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
2e8b0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
2e8c0 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f  Filter" /> metho
2e8d0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
2e8e0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
2e8f0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
2e900 61 72 61 6d 20 6e 61 6d 65 3d 22 69 64 78 4e 75  aram name="idxNu
2e910 6d 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  m">..           
2e920 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
2e930 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
2e940 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c  ativeModule.xFil
2e950 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ter" /> method..
2e960 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2e970 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
2e980 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
2e990 6d 20 6e 61 6d 65 3d 22 69 64 78 53 74 72 22 3e  m name="idxStr">
2e9a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2e9b0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
2e9c0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
2e9d0 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72  veModule.xFilter
2e9e0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
2e9f0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2ea00 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
2ea10 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
2ea20 61 6d 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20 20  ame="argc">..   
2ea30 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
2ea40 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
2ea50 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2ea60 75 6c 65 2e 78 46 69 6c 74 65 72 22 20 2f 3e 20  ule.xFilter" /> 
2ea70 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2ea80 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2ea90 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2eaa0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
2eab0 61 72 67 76 22 3e 0d 0a 20 20 20 20 20 20 20 20  argv">..        
2eac0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
2ead0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
2eae0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
2eaf0 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f  Filter" /> metho
2eb00 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
2eb10 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
2eb20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72            /// <r
2eb30 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
2eb40 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2eb50 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2eb60 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2eb70 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68  xFilter" /> meth
2eb80 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
2eb90 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
2eba0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
2ebb0 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43  lic SQLiteErrorC
2ebc0 6f 64 65 20 78 46 69 6c 74 65 72 28 0d 0a 20 20  ode xFilter(..  
2ebd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
2ebe0 74 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20  tPtr pCursor,.. 
2ebf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
2ec00 6e 74 20 69 64 78 4e 75 6d 2c 0d 0a 20 20 20 20  nt idxNum,..    
2ec10 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
2ec20 74 72 20 69 64 78 53 74 72 2c 0d 0a 20 20 20 20  tr idxStr,..    
2ec30 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
2ec40 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 20  argc,..         
2ec50 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 61 72         IntPtr ar
2ec60 67 76 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  gv..            
2ec70 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
2ec80 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2ec90 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
2eca0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
2ecb0 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74  E: Called by nat
2ecc0 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  ive code...     
2ecd0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
2ece0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2ecf0 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  / CheckDisposed(
2ed00 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d  ); /* EXEMPT */.
2ed10 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2ed20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d     if (module ==
2ed30 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
2ed40 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2ed50 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69  rn ModuleNotAvai
2ed60 6c 61 62 6c 65 43 75 72 73 6f 72 45 72 72 6f 72  lableCursorError
2ed70 28 70 43 75 72 73 6f 72 29 3b 0d 0a 0d 0a 20 20  (pCursor);....  
2ed80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2ed90 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 46 69 6c  turn module.xFil
2eda0 74 65 72 28 70 43 75 72 73 6f 72 2c 20 69 64 78  ter(pCursor, idx
2edb0 4e 75 6d 2c 20 69 64 78 53 74 72 2c 20 61 72 67  Num, idxStr, arg
2edc0 63 2c 20 61 72 67 76 29 3b 0d 0a 20 20 20 20 20  c, argv);..     
2edd0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2ede0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2edf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ee00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ee10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ee20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2ee30 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2ee40 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2ee50 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
2ee60 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
2ee70 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2ee80 2e 78 4e 65 78 74 22 20 2f 3e 20 6d 65 74 68 6f  .xNext" /> metho
2ee90 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
2eea0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
2eeb0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2eec0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75  <param name="pCu
2eed0 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20  rsor">..        
2eee0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
2eef0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
2ef00 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
2ef10 4e 65 78 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  Next" /> method.
2ef20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2ef30 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
2ef40 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
2ef50 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
2ef60 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2ef70 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2ef80 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4e  eNativeModule.xN
2ef90 65 78 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ext" /> method..
2efa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2efb0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
2efc0 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
2efd0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
2efe0 78 4e 65 78 74 28 0d 0a 20 20 20 20 20 20 20 20  xNext(..        
2eff0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
2f000 43 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20 20  Cursor..        
2f010 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
2f020 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2f030 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
2f040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2f050 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79   NOTE: Called by
2f060 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20   native code... 
2f070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2f080 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
2f090 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f     // CheckDispo
2f0a0 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54  sed(); /* EXEMPT
2f0b0 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   */....         
2f0c0 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c         if (modul
2f0d0 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
2f0e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f0f0 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74  return ModuleNot
2f100 41 76 61 69 6c 61 62 6c 65 43 75 72 73 6f 72 45  AvailableCursorE
2f110 72 72 6f 72 28 70 43 75 72 73 6f 72 29 3b 0d 0a  rror(pCursor);..
2f120 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f130 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e    return module.
2f140 78 4e 65 78 74 28 70 43 75 72 73 6f 72 29 3b 0d  xNext(pCursor);.
2f150 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2f160 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2f170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f1a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f1b0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
2f1c0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
2f1d0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2f1e0 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
2f1f0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
2f200 4d 6f 64 75 6c 65 2e 78 45 6f 66 22 20 2f 3e 20  Module.xEof" /> 
2f210 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2f220 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
2f230 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
2f240 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2f250 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20  ="pCursor">..   
2f260 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
2f270 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
2f280 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2f290 75 6c 65 2e 78 45 6f 66 22 20 2f 3e 20 6d 65 74  ule.xEof" /> met
2f2a0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
2f2b0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2f2c0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2f2d0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
2f2e0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
2f2f0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
2f300 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2f310 65 2e 78 45 6f 66 22 20 2f 3e 20 6d 65 74 68 6f  e.xEof" /> metho
2f320 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
2f330 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
2f340 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
2f350 69 63 20 69 6e 74 20 78 45 6f 66 28 0d 0a 20 20  ic int xEof(..  
2f360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
2f370 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20  tPtr pCursor..  
2f380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
2f390 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
2f3a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f3b0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
2f3c0 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c      // NOTE: Cal
2f3d0 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f  led by native co
2f3e0 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  de...           
2f3f0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
2f400 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63           // Chec
2f410 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20  kDisposed(); /* 
2f420 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20  EXEMPT */....   
2f430 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2f440 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29  (module == null)
2f450 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f460 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2f470 20 20 20 20 20 20 20 20 20 4d 6f 64 75 6c 65 4e           ModuleN
2f480 6f 74 41 76 61 69 6c 61 62 6c 65 43 75 72 73 6f  otAvailableCurso
2f490 72 45 72 72 6f 72 28 70 43 75 72 73 6f 72 29 3b  rError(pCursor);
2f4a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f4b0 20 20 20 20 20 20 72 65 74 75 72 6e 20 31 3b 0d        return 1;.
2f4c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f4d0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
2f4e0 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64        return mod
2f4f0 75 6c 65 2e 78 45 6f 66 28 70 43 75 72 73 6f 72  ule.xEof(pCursor
2f500 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2f510 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
2f520 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2f530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f560 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2f570 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2f580 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2f590 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
2f5a0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
2f5b0 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d  iveModule.xColum
2f5c0 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  n" /> method... 
2f5d0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2f5e0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
2f5f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
2f600 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22  m name="pCursor"
2f610 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2f620 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
2f630 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
2f640 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d  iveModule.xColum
2f650 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  n" /> method... 
2f660 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2f670 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
2f680 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
2f690 6e 61 6d 65 3d 22 70 43 6f 6e 74 65 78 74 22 3e  name="pContext">
2f6a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2f6b0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
2f6c0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
2f6d0 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e  veModule.xColumn
2f6e0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
2f6f0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2f700 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
2f710 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
2f720 61 6d 65 3d 22 69 6e 64 65 78 22 3e 0d 0a 20 20  ame="index">..  
2f730 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2f740 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
2f750 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2f760 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 22 20 2f 3e  dule.xColumn" />
2f770 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
2f780 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
2f790 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
2f7a0 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
2f7b0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
2f7c0 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
2f7d0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
2f7e0 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 22 20 2f  odule.xColumn" /
2f7f0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
2f800 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
2f810 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
2f820 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
2f830 45 72 72 6f 72 43 6f 64 65 20 78 43 6f 6c 75 6d  ErrorCode xColum
2f840 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n(..            
2f850 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73      IntPtr pCurs
2f860 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  or,..           
2f870 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 6f 6e       IntPtr pCon
2f880 74 65 78 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  text,..         
2f890 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65 78         int index
2f8a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f8b0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
2f8c0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2f8d0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
2f8e0 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
2f8f0 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76   Called by nativ
2f900 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  e code...       
2f910 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
2f920 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2f930 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
2f940 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d   /* EXEMPT */...
2f950 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f960 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e   if (module == n
2f970 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
2f980 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2f990 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61   ModuleNotAvaila
2f9a0 62 6c 65 43 75 72 73 6f 72 45 72 72 6f 72 28 70  bleCursorError(p
2f9b0 43 75 72 73 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20  Cursor);....    
2f9c0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2f9d0 72 6e 20 6d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d  rn module.xColum
2f9e0 6e 28 70 43 75 72 73 6f 72 2c 20 70 43 6f 6e 74  n(pCursor, pCont
2f9f0 65 78 74 2c 20 69 6e 64 65 78 29 3b 0d 0a 20 20  ext, index);..  
2fa00 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
2fa10 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
2fa20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fa30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fa40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fa50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2fa60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2fa70 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
2fa80 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
2fa90 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
2faa0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2fab0 75 6c 65 2e 78 52 6f 77 49 64 22 20 2f 3e 20 6d  ule.xRowId" /> m
2fac0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2fad0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2fae0 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
2faf0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
2fb00 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20  "pCursor">..    
2fb10 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
2fb20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
2fb30 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2fb40 6c 65 2e 78 52 6f 77 49 64 22 20 2f 3e 20 6d 65  le.xRowId" /> me
2fb50 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2fb60 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
2fb70 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2fb80 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 72 6f   <param name="ro
2fb90 77 49 64 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  wId">..         
2fba0 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2fbb0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2fbc0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52  eNativeModule.xR
2fbd0 6f 77 49 64 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  owId" /> method.
2fbe0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2fbf0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
2fc00 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
2fc10 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
2fc20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2fc30 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2fc40 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52  eNativeModule.xR
2fc50 6f 77 49 64 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  owId" /> method.
2fc60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2fc70 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
2fc80 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
2fc90 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
2fca0 20 78 52 6f 77 49 64 28 0d 0a 20 20 20 20 20 20   xRowId(..      
2fcb0 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
2fcc0 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20   pCursor,..     
2fcd0 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 6c             ref l
2fce0 6f 6e 67 20 72 6f 77 49 64 0d 0a 20 20 20 20 20  ong rowId..     
2fcf0 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
2fd00 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2fd10 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
2fd20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2fd30 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64   // NOTE: Called
2fd40 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e   by native code.
2fd50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2fd60 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
2fd70 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69        // CheckDi
2fd80 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45  sposed(); /* EXE
2fd90 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20  MPT */....      
2fda0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f            if (mo
2fdb0 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  dule == null).. 
2fdc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fdd0 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65     return Module
2fde0 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43 75 72 73  NotAvailableCurs
2fdf0 6f 72 45 72 72 6f 72 28 70 43 75 72 73 6f 72 29  orError(pCursor)
2fe00 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2fe10 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75       return modu
2fe20 6c 65 2e 78 52 6f 77 49 64 28 70 43 75 72 73 6f  le.xRowId(pCurso
2fe30 72 2c 20 72 65 66 20 72 6f 77 49 64 29 3b 0d 0a  r, ref rowId);..
2fe40 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
2fe50 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2fe60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fe70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fe80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fe90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fea0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2feb0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2fec0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
2fed0 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
2fee0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
2fef0 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 22 20 2f  odule.xUpdate" /
2ff00 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
2ff10 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
2ff20 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
2ff30 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2ff40 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20  me="pVtab">..   
2ff50 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
2ff60 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
2ff70 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2ff80 75 6c 65 2e 78 55 70 64 61 74 65 22 20 2f 3e 20  ule.xUpdate" /> 
2ff90 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2ffa0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2ffb0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2ffc0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
2ffd0 61 72 67 63 22 3e 0d 0a 20 20 20 20 20 20 20 20  argc">..        
2ffe0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
2fff0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
30000 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
30010 55 70 64 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f  Update" /> metho
30020 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
30030 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
30040 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
30050 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 76 22  aram name="argv"
30060 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
30070 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
30080 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
30090 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74  iveModule.xUpdat
300a0 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
300b0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
300c0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
300d0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
300e0 6e 61 6d 65 3d 22 72 6f 77 49 64 22 3e 0d 0a 20  name="rowId">.. 
300f0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
30100 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
30110 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
30120 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 22 20 2f  odule.xUpdate" /
30130 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
30140 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
30150 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
30160 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
30170 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
30180 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
30190 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
301a0 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 22 20  Module.xUpdate" 
301b0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
301c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
301d0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
301e0 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
301f0 65 45 72 72 6f 72 43 6f 64 65 20 78 55 70 64 61  eErrorCode xUpda
30200 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  te(..           
30210 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
30220 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  b,..            
30230 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20      int argc,.. 
30240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
30250 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20 20  ntPtr argv,..   
30260 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
30270 20 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a 20 20 20   long rowId..   
30280 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
30290 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
302a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
302b0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
302c0 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c     // NOTE: Call
302d0 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64  ed by native cod
302e0 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
302f0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
30300 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b          // Check
30310 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45  Disposed(); /* E
30320 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20  XEMPT */....    
30330 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
30340 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d  module == null).
30350 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30360 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75       return Modu
30370 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61  leNotAvailableTa
30380 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b  bleError(pVtab);
30390 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
303a0 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c      return modul
303b0 65 2e 78 55 70 64 61 74 65 28 70 56 74 61 62 2c  e.xUpdate(pVtab,
303c0 20 61 72 67 63 2c 20 61 72 67 76 2c 20 72 65 66   argc, argv, ref
303d0 20 72 6f 77 49 64 29 3b 0d 0a 20 20 20 20 20 20   rowId);..      
303e0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
303f0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
30400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
30440 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73            /// <s
30450 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
30460 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
30470 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
30480 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
30490 78 42 65 67 69 6e 22 20 2f 3e 20 6d 65 74 68 6f  xBegin" /> metho
304a0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
304b0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
304c0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
304d0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74  <param name="pVt
304e0 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ab">..          
304f0 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
30500 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
30510 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65  NativeModule.xBe
30520 67 69 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  gin" /> method..
30530 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
30540 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
30550 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
30560 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
30570 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
30580 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
30590 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65  NativeModule.xBe
305a0 67 69 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  gin" /> method..
305b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
305c0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
305d0 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
305e0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
305f0 78 42 65 67 69 6e 28 0d 0a 20 20 20 20 20 20 20  xBegin(..       
30600 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
30610 70 56 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20  pVtab..         
30620 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
30630 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
30640 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
30650 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
30660 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20  NOTE: Called by 
30670 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20  native code...  
30680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
30690 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
306a0 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73    // CheckDispos
306b0 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20  ed(); /* EXEMPT 
306c0 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  */....          
306d0 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65        if (module
306e0 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
306f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
30700 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41  eturn ModuleNotA
30710 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72  vailableTableErr
30720 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20  or(pVtab);....  
30730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
30740 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 42 65 67  turn module.xBeg
30750 69 6e 28 70 56 74 61 62 29 3b 0d 0a 20 20 20 20  in(pVtab);..    
30760 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
30770 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
30780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
307a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
307b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
307c0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
307d0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
307e0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
307f0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
30800 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
30810 65 2e 78 53 79 6e 63 22 20 2f 3e 20 6d 65 74 68  e.xSync" /> meth
30820 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
30830 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
30840 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
30850 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
30860 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  tab">..         
30870 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
30880 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
30890 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53  eNativeModule.xS
308a0 79 6e 63 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ync" /> method..
308b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
308c0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
308d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
308e0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
308f0 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
30900 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
30910 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53 79  NativeModule.xSy
30920 6e 63 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  nc" /> method...
30930 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
30940 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
30950 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53          public S
30960 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
30970 53 79 6e 63 28 0d 0a 20 20 20 20 20 20 20 20 20  Sync(..         
30980 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
30990 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tab..           
309a0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
309b0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
309c0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
309d0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
309e0 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61  TE: Called by na
309f0 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20  tive code...    
30a00 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
30a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30a20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64  // CheckDisposed
30a30 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f  (); /* EXEMPT */
30a40 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
30a50 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d      if (module =
30a60 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
30a70 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
30a80 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61  urn ModuleNotAva
30a90 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72  ilableTableError
30aa0 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20  (pVtab);....    
30ab0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
30ac0 72 6e 20 6d 6f 64 75 6c 65 2e 78 53 79 6e 63 28  rn module.xSync(
30ad0 70 56 74 61 62 29 3b 0d 0a 20 20 20 20 20 20 20  pVtab);..       
30ae0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
30af0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
30b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
30b40 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75           /// <su
30b50 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
30b60 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
30b70 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
30b80 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
30b90 43 6f 6d 6d 69 74 22 20 2f 3e 20 6d 65 74 68 6f  Commit" /> metho
30ba0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
30bb0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
30bc0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
30bd0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74  <param name="pVt
30be0 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ab">..          
30bf0 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
30c00 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
30c10 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  NativeModule.xCo
30c20 6d 6d 69 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  mmit" /> method.
30c30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
30c40 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
30c50 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
30c60 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
30c70 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
30c80 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
30c90 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
30ca0 6f 6d 6d 69 74 22 20 2f 3e 20 6d 65 74 68 6f 64  ommit" /> method
30cb0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
30cc0 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
30cd0 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
30ce0 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  c SQLiteErrorCod
30cf0 65 20 78 43 6f 6d 6d 69 74 28 0d 0a 20 20 20 20  e xCommit(..    
30d00 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
30d10 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 20 20  tr pVtab..      
30d20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
30d30 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
30d40 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
30d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30d60 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20  // NOTE: Called 
30d70 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d  by native code..
30d80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30d90 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
30da0 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73       // CheckDis
30db0 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d  posed(); /* EXEM
30dc0 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  PT */....       
30dd0 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64           if (mod
30de0 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ule == null)..  
30df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30e00 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e    return ModuleN
30e10 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65  otAvailableTable
30e20 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d  Error(pVtab);...
30e30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30e40 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78   return module.x
30e50 43 6f 6d 6d 69 74 28 70 56 74 61 62 29 3b 0d 0a  Commit(pVtab);..
30e60 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
30e70 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
30e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30ec0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
30ed0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
30ee0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
30ef0 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
30f00 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
30f10 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 22  odule.xRollback"
30f20 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
30f30 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73           /// </s
30f40 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
30f50 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
30f60 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20  name="pVtab">.. 
30f70 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
30f80 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
30f90 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
30fa0 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 22  odule.xRollback"
30fb0 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
30fc0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
30fd0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
30fe0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
30ff0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
31000 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
31010 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
31020 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61  veModule.xRollba
31030 63 6b 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  ck" /> method...
31040 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
31050 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
31060 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53          public S
31070 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
31080 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20  Rollback(..     
31090 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
310a0 72 20 70 56 74 61 62 0d 0a 20 20 20 20 20 20 20  r pVtab..       
310b0 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
310c0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
310d0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
310e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
310f0 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62  / NOTE: Called b
31100 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a  y native code...
31110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31120 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
31130 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70      // CheckDisp
31140 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50  osed(); /* EXEMP
31150 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  T */....        
31160 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75          if (modu
31170 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  le == null)..   
31180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31190 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f   return ModuleNo
311a0 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45  tAvailableTableE
311b0 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a  rror(pVtab);....
311c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
311d0 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 52  return module.xR
311e0 6f 6c 6c 62 61 63 6b 28 70 56 74 61 62 29 3b 0d  ollback(pVtab);.
311f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
31200 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
31210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31250 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
31260 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
31270 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
31280 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
31290 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
312a0 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63  Module.xFindFunc
312b0 74 69 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  tion" /> method.
312c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
312d0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
312e0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
312f0 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62  aram name="pVtab
31300 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
31310 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
31320 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
31330 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64  tiveModule.xFind
31340 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6d 65 74  Function" /> met
31350 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
31360 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
31370 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
31380 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 41 72  <param name="nAr
31390 67 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  g">..           
313a0 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
313b0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
313c0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e  ativeModule.xFin
313d0 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6d 65  dFunction" /> me
313e0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
313f0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
31400 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
31410 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 7a 4e   <param name="zN
31420 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  ame">..         
31430 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
31440 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
31450 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46  eNativeModule.xF
31460 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20  indFunction" /> 
31470 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
31480 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
31490 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
314a0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
314b0 63 61 6c 6c 62 61 63 6b 22 3e 0d 0a 20 20 20 20  callback">..    
314c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
314d0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
314e0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
314f0 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e  le.xFindFunction
31500 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
31510 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
31520 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
31530 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
31540 61 6d 65 3d 22 70 43 6c 69 65 6e 74 44 61 74 61  ame="pClientData
31550 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
31560 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
31570 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
31580 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64  tiveModule.xFind
31590 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6d 65 74  Function" /> met
315a0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
315b0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
315c0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
315d0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
315e0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
315f0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
31600 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
31610 65 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 22  e.xFindFunction"
31620 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
31630 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72           /// </r
31640 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
31650 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
31660 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28 0d 0a  xFindFunction(..
31670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31680 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
31690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
316a0 6e 74 20 6e 41 72 67 2c 0d 0a 20 20 20 20 20 20  nt nArg,..      
316b0 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
316c0 20 7a 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20   zName,..       
316d0 20 20 20 20 20 20 20 20 20 72 65 66 20 53 51 4c           ref SQL
316e0 69 74 65 43 61 6c 6c 62 61 63 6b 20 63 61 6c 6c  iteCallback call
316f0 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20  back,..         
31700 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74         ref IntPt
31710 72 20 70 43 6c 69 65 6e 74 44 61 74 61 0d 0a 20  r pClientData.. 
31720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
31730 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
31740 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31750 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
31760 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61       // NOTE: Ca
31770 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63  lled by native c
31780 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ode...          
31790 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
317a0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65            // Che
317b0 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a  ckDisposed(); /*
317c0 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20   EXEMPT */....  
317d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
317e0 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c   (module == null
317f0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
31800 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
31810 20 20 20 20 20 20 20 20 20 20 4d 6f 64 75 6c 65            Module
31820 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c  NotAvailableTabl
31830 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a  eError(pVtab);..
31840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31850 20 20 20 20 72 65 74 75 72 6e 20 30 3b 0d 0a 20      return 0;.. 
31860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
31870 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
31880 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c      return modul
31890 65 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28  e.xFindFunction(
318a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
318b0 20 20 20 20 20 20 70 56 74 61 62 2c 20 6e 41 72        pVtab, nAr
318c0 67 2c 20 7a 4e 61 6d 65 2c 20 72 65 66 20 63 61  g, zName, ref ca
318d0 6c 6c 62 61 63 6b 2c 20 72 65 66 20 70 43 6c 69  llback, ref pCli
318e0 65 6e 74 44 61 74 61 29 3b 0d 0a 20 20 20 20 20  entData);..     
318f0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
31900 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
31910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
31950 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
31960 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
31970 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
31980 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
31990 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
319a0 2e 78 52 65 6e 61 6d 65 22 20 2f 3e 20 6d 65 74  .xRename" /> met
319b0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
319c0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
319d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
319e0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
319f0 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
31a00 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
31a10 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
31a20 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
31a30 52 65 6e 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f  Rename" /> metho
31a40 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
31a50 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
31a60 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
31a70 61 72 61 6d 20 6e 61 6d 65 3d 22 7a 4e 65 77 22  aram name="zNew"
31a80 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
31a90 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
31aa0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
31ab0 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d  iveModule.xRenam
31ac0 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
31ad0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
31ae0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
31af0 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
31b00 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
31b10 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
31b20 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
31b30 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6e 61  tiveModule.xRena
31b40 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  me" /> method...
31b50 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
31b60 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
31b70 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53          public S
31b80 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
31b90 52 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20  Rename(..       
31ba0 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
31bb0 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20  pVtab,..        
31bc0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 7a          IntPtr z
31bd0 4e 65 77 0d 0a 20 20 20 20 20 20 20 20 20 20 20  New..           
31be0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
31bf0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
31c00 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
31c10 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
31c20 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61  TE: Called by na
31c30 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20  tive code...    
31c40 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
31c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31c60 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64  // CheckDisposed
31c70 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f  (); /* EXEMPT */
31c80 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
31c90 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d      if (module =
31ca0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
31cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
31cc0 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61  urn ModuleNotAva
31cd0 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72  ilableTableError
31ce0 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20  (pVtab);....    
31cf0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
31d00 72 6e 20 6d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d  rn module.xRenam
31d10 65 28 70 56 74 61 62 2c 20 7a 4e 65 77 29 3b 0d  e(pVtab, zNew);.
31d20 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
31d30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
31d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31d80 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
31d90 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
31da0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
31db0 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
31dc0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
31dd0 4d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e  Module.xSavepoin
31de0 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  t" /> method... 
31df0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
31e00 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
31e10 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
31e20 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d  m name="pVtab">.
31e30 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
31e40 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
31e50 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
31e60 65 4d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69  eModule.xSavepoi
31e70 6e 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  nt" /> method...
31e80 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
31e90 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
31ea0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
31eb0 20 6e 61 6d 65 3d 22 69 53 61 76 65 70 6f 69 6e   name="iSavepoin
31ec0 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t">..           
31ed0 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
31ee0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
31ef0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53 61 76  ativeModule.xSav
31f00 65 70 6f 69 6e 74 22 20 2f 3e 20 6d 65 74 68 6f  epoint" /> metho
31f10 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
31f20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
31f30 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72            /// <r
31f40 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
31f50 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
31f60 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
31f70 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
31f80 78 53 61 76 65 70 6f 69 6e 74 22 20 2f 3e 20 6d  xSavepoint" /> m
31f90 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
31fa0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
31fb0 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
31fc0 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72  public SQLiteErr
31fd0 6f 72 43 6f 64 65 20 78 53 61 76 65 70 6f 69 6e  orCode xSavepoin
31fe0 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
31ff0 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
32000 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
32010 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69 6e     int iSavepoin
32020 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  t..             
32030 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
32040 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
32050 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
32060 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
32070 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69  : Called by nati
32080 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  ve code...      
32090 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
320a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
320b0 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
320c0 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a  ; /* EXEMPT */..
320d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
320e0 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20    if (module == 
320f0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
32100 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
32110 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c  n ModuleNotAvail
32120 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72 28 70  ableTableError(p
32130 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Vtab);....      
32140 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
32150 20 6d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69   module.xSavepoi
32160 6e 74 28 70 56 74 61 62 2c 20 69 53 61 76 65 70  nt(pVtab, iSavep
32170 6f 69 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  oint);..        
32180 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
32190 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
321a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
321b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
321c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
321d0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
321e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
321f0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
32200 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
32210 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
32220 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52  eNativeModule.xR
32230 65 6c 65 61 73 65 22 20 2f 3e 20 6d 65 74 68 6f  elease" /> metho
32240 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
32250 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
32260 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
32270 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74  <param name="pVt
32280 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ab">..          
32290 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
322a0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
322b0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65  NativeModule.xRe
322c0 6c 65 61 73 65 22 20 2f 3e 20 6d 65 74 68 6f 64  lease" /> method
322d0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
322e0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
322f0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
32300 72 61 6d 20 6e 61 6d 65 3d 22 69 53 61 76 65 70  ram name="iSavep
32310 6f 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20  oint">..        
32320 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
32330 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
32340 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
32350 52 65 6c 65 61 73 65 22 20 2f 3e 20 6d 65 74 68  Release" /> meth
32360 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
32370 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
32380 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
32390 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
323a0 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
323b0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
323c0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
323d0 2e 78 52 65 6c 65 61 73 65 22 20 2f 3e 20 6d 65  .xRelease" /> me
323e0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
323f0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
32400 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
32410 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f  ublic SQLiteErro
32420 72 43 6f 64 65 20 78 52 65 6c 65 61 73 65 28 0d  rCode xRelease(.
32430 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32440 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
32450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32460 69 6e 74 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a  int iSavepoint..
32470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32480 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
32490 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
324a0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
324b0 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43        // NOTE: C
324c0 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20  alled by native 
324d0 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  code...         
324e0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
324f0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68             // Ch
32500 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f  eckDisposed(); /
32510 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20  * EXEMPT */.... 
32520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
32530 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c  f (module == nul
32540 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
32550 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d          return M
32560 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c  oduleNotAvailabl
32570 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61  eTableError(pVta
32580 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  b);....         
32590 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f         return mo
325a0 64 75 6c 65 2e 78 52 65 6c 65 61 73 65 28 70 56  dule.xRelease(pV
325b0 74 61 62 2c 20 69 53 61 76 65 70 6f 69 6e 74 29  tab, iSavepoint)
325c0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
325d0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
325e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
325f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32620 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
32630 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
32640 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
32650 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
32660 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
32670 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61  veModule.xRollba
32680 63 6b 54 6f 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  ckTo" /> method.
32690 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
326a0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
326b0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
326c0 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62  aram name="pVtab
326d0 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
326e0 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
326f0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
32700 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c  tiveModule.xRoll
32710 62 61 63 6b 54 6f 22 20 2f 3e 20 6d 65 74 68 6f  backTo" /> metho
32720 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
32730 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
32740 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
32750 61 72 61 6d 20 6e 61 6d 65 3d 22 69 53 61 76 65  aram name="iSave
32760 70 6f 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20  point">..       
32770 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
32780 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
32790 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
327a0 78 52 6f 6c 6c 62 61 63 6b 54 6f 22 20 2f 3e 20  xRollbackTo" /> 
327b0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
327c0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
327d0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
327e0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
327f0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
32800 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
32810 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
32820 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f  dule.xRollbackTo
32830 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
32840 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
32850 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
32860 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c        public SQL
32870 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52 6f  iteErrorCode xRo
32880 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20 20 20 20 20  llbackTo(..     
32890 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
328a0 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20  r pVtab,..      
328b0 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 53            int iS
328c0 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20 20 20  avepoint..      
328d0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
328e0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
328f0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
32900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32910 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20  // NOTE: Called 
32920 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d  by native code..
32930 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32940 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
32950 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73       // CheckDis
32960 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d  posed(); /* EXEM
32970 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  PT */....       
32980 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64           if (mod
32990 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ule == null)..  
329a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
329b0 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e    return ModuleN
329c0 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65  otAvailableTable
329d0 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d  Error(pVtab);...
329e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
329f0 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78   return module.x
32a00 52 6f 6c 6c 62 61 63 6b 54 6f 28 70 56 74 61 62  RollbackTo(pVtab
32a10 2c 20 69 53 61 76 65 70 6f 69 6e 74 29 3b 0d 0a  , iSavepoint);..
32a20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
32a30 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72             #endr
32a40 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
32a50 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
32a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32a90 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
32aa0 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
32ab0 49 44 69 73 70 6f 73 61 62 6c 65 20 4d 65 6d 62  IDisposable Memb
32ac0 65 72 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ers..           
32ad0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
32ae0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
32af0 44 69 73 70 6f 73 65 73 20 6f 66 20 74 68 69 73  Disposes of this
32b00 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
32b10 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
32b20 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
32b30 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
32b40 63 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 29  c void Dispose()
32b50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
32b60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32b70 20 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b 0d   Dispose(true);.
32b80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32b90 20 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61   GC.SuppressFina
32ba0 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20  lize(this);..   
32bb0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
32bc0 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
32bd0 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  on....          
32be0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
32bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32c20 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
32c30 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69       #region IDi
32c40 73 70 6f 73 61 62 6c 65 20 22 50 61 74 74 65 72  sposable "Patter
32c50 6e 22 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20  n" Members..    
32c60 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
32c70 62 6f 6f 6c 20 64 69 73 70 6f 73 65 64 3b 0d 0a  bool disposed;..
32c80 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
32c90 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
32ca0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 72 6f 77         /// Throw
32cb0 73 20 61 6e 20 3c 73 65 65 20 63 72 65 66 3d 22  s an <see cref="
32cc0 4f 62 6a 65 63 74 44 69 73 70 6f 73 65 64 45 78  ObjectDisposedEx
32cd0 63 65 70 74 69 6f 6e 22 20 2f 3e 20 69 66 20 74  ception" /> if t
32ce0 68 69 73 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20  his object..    
32cf0 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74          /// inst
32d00 61 6e 63 65 20 68 61 73 20 62 65 65 6e 20 64 69  ance has been di
32d10 73 70 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20 20  sposed...       
32d20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
32d30 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
32d40 20 70 72 69 76 61 74 65 20 76 6f 69 64 20 43 68   private void Ch
32d50 65 63 6b 44 69 73 70 6f 73 65 64 28 29 20 2f 2a  eckDisposed() /*
32d60 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
32d70 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 54 48         {..#if TH
32d80 52 4f 57 5f 4f 4e 5f 44 49 53 50 4f 53 45 44 0d  ROW_ON_DISPOSED.
32d90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32da0 20 69 66 20 28 64 69 73 70 6f 73 65 64 29 0d 0a   if (disposed)..
32db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32dc0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
32dd0 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
32de0 20 4f 62 6a 65 63 74 44 69 73 70 6f 73 65 64 45   ObjectDisposedE
32df0 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20 20 20 20  xception(..     
32e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32e10 20 20 20 74 79 70 65 6f 66 28 53 51 4c 69 74 65     typeof(SQLite
32e20 4e 61 74 69 76 65 4d 6f 64 75 6c 65 29 2e 4e 61  NativeModule).Na
32e30 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  me);..          
32e40 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
32e50 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
32e60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
32e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32eb0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
32ec0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
32ed0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
32ee0 44 69 73 70 6f 73 65 73 20 6f 66 20 74 68 69 73  Disposes of this
32ef0 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
32f00 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
32f10 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
32f20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
32f30 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 69 73 70  param name="disp
32f40 6f 73 69 6e 67 22 3e 0d 0a 20 20 20 20 20 20 20  osing">..       
32f50 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
32f60 6f 20 69 66 20 74 68 69 73 20 6d 65 74 68 6f 64  o if this method
32f70 20 69 73 20 62 65 69 6e 67 20 63 61 6c 6c 65 64   is being called
32f80 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20   from the..     
32f90 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
32fa0 63 72 65 66 3d 22 44 69 73 70 6f 73 65 28 29 22  cref="Dispose()"
32fb0 20 2f 3e 20 6d 65 74 68 6f 64 2e 20 20 5a 65 72   /> method.  Zer
32fc0 6f 20 69 66 20 74 68 69 73 20 6d 65 74 68 6f 64  o if this method
32fd0 20 69 73 20 62 65 69 6e 67 0d 0a 20 20 20 20 20   is being..     
32fe0 20 20 20 20 20 20 20 2f 2f 2f 20 63 61 6c 6c 65         /// calle
32ff0 64 20 66 72 6f 6d 20 74 68 65 20 66 69 6e 61 6c  d from the final
33000 69 7a 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 20  izer...         
33010 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
33020 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
33030 76 61 74 65 20 2f 2a 20 70 72 6f 74 65 63 74 65  vate /* protecte
33040 64 20 76 69 72 74 75 61 6c 20 2a 2f 20 76 6f 69  d virtual */ voi
33050 64 20 44 69 73 70 6f 73 65 28 62 6f 6f 6c 20 64  d Dispose(bool d
33060 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20  isposing)..     
33070 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
33080 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 64            if (!d
33090 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20 20 20  isposed)..      
330a0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
330b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
330c0 20 2f 2f 69 66 20 28 64 69 73 70 6f 73 69 6e 67   //if (disposing
330d0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
330e0 20 20 20 20 20 20 20 2f 2f 7b 0d 0a 20 20 20 20         //{..    
330f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33100 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  //    //////////
33110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
33130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33140 2f 2f 20 20 20 20 2f 2f 20 64 69 73 70 6f 73 65  //    // dispose
33150 20 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72 63   managed resourc
33160 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20  es here.....    
33170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33180 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  //    //////////
33190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
331a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
331b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
331c0 2f 2f 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  //}....         
331d0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
331e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
331f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33200 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
33210 20 20 20 20 20 20 20 2f 2f 20 72 65 6c 65 61 73         // releas
33220 65 20 75 6e 6d 61 6e 61 67 65 64 20 72 65 73 6f  e unmanaged reso
33230 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20  urces here..... 
33240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33250 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
33260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33270 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
33280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33290 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
332a0 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
332b0 3a 20 54 68 65 20 6d 6f 64 75 6c 65 20 69 73 20  : The module is 
332c0 6e 6f 74 20 6f 77 6e 65 64 20 62 79 20 75 73 3b  not owned by us;
332d0 20 74 68 65 72 65 66 6f 72 65 2c 20 64 6f 20 6e   therefore, do n
332e0 6f 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ot..            
332f0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
33300 20 64 69 73 70 6f 73 65 20 69 74 2e 0d 0a 20 20   dispose it...  
33310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33320 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
33330 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f            if (mo
33340 64 75 6c 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  dule != null).. 
33350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33360 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 20 3d 20         module = 
33370 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
33380 20 20 20 20 20 20 20 20 20 20 20 20 20 64 69 73               dis
33390 70 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20  posed = true;.. 
333a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
333b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
333c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e  .            #en
333d0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
333e0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
333f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
33430 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
33440 6e 20 44 65 73 74 72 75 63 74 6f 72 0d 0a 20 20  n Destructor..  
33450 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73            /// <s
33460 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
33470 20 20 20 20 20 2f 2f 2f 20 46 69 6e 61 6c 69 7a       /// Finaliz
33480 65 73 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69  es this object i
33490 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20  nstance...      
334a0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
334b0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
334c0 20 20 7e 53 51 4c 69 74 65 4e 61 74 69 76 65 4d    ~SQLiteNativeM
334d0 6f 64 75 6c 65 28 29 0d 0a 20 20 20 20 20 20 20  odule()..       
334e0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
334f0 20 20 20 20 20 20 20 20 44 69 73 70 6f 73 65 28          Dispose(
33500 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20 20  false);..       
33510 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
33520 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
33530 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
33540 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
33550 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
33560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
335a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
335b0 69 6f 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73  ion Private Cons
335c0 74 61 6e 74 73 0d 0a 20 20 20 20 20 20 20 20 2f  tants..        /
335d0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
335e0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 65        /// The de
335f0 66 61 75 6c 74 20 76 65 72 73 69 6f 6e 20 6f 66  fault version of
33600 20 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69   the native sqli
33610 74 65 33 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63  te3_module struc
33620 74 75 72 65 20 69 6e 20 75 73 65 2e 0d 0a 20 20  ture in use...  
33630 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
33640 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  ary>..        pr
33650 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61  ivate static rea
33660 64 6f 6e 6c 79 20 69 6e 74 20 44 65 66 61 75 6c  donly int Defaul
33670 74 4d 6f 64 75 6c 65 56 65 72 73 69 6f 6e 20 3d  tModuleVersion =
33680 20 32 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e   2;..        #en
33690 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
336a0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
336b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
336c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
336d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
336e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
336f0 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
33700 69 76 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20  ivate Data..    
33710 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
33720 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
33730 68 69 73 20 66 69 65 6c 64 20 69 73 20 75 73 65  his field is use
33740 64 20 74 6f 20 73 74 6f 72 65 20 74 68 65 20 6e  d to store the n
33750 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 6d 6f  ative sqlite3_mo
33760 64 75 6c 65 20 73 74 72 75 63 74 75 72 65 0d 0a  dule structure..
33770 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f          /// asso
33780 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73  ciated with this
33790 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
337a0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
337b0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
337c0 20 20 20 70 72 69 76 61 74 65 20 55 6e 73 61 66     private Unsaf
337d0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
337e0 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6e 61  qlite3_module na
337f0 74 69 76 65 4d 6f 64 75 6c 65 3b 0d 0a 0d 0a 20  tiveModule;.... 
33800 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
33810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
33850 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
33860 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
33870 20 2f 2f 2f 20 54 68 69 73 20 66 69 65 6c 64 20   /// This field 
33880 69 73 20 75 73 65 64 20 74 6f 20 73 74 6f 72 65  is used to store
33890 20 74 68 65 20 64 65 73 74 72 75 63 74 6f 72 20   the destructor 
338a0 64 65 6c 65 67 61 74 65 20 74 6f 20 62 65 20 70  delegate to be p
338b0 61 73 73 65 64 20 74 6f 0d 0a 20 20 20 20 20 20  assed to..      
338c0 20 20 2f 2f 2f 20 74 68 65 20 53 51 4c 69 74 65    /// the SQLite
338d0 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 76 69   core library vi
338e0 61 20 74 68 65 20 73 71 6c 69 74 65 33 5f 63 72  a the sqlite3_cr
338f0 65 61 74 65 5f 64 69 73 70 6f 73 61 62 6c 65 5f  eate_disposable_
33900 6d 6f 64 75 6c 65 28 29 0d 0a 20 20 20 20 20 20  module()..      
33910 20 20 2f 2f 2f 20 66 75 6e 63 74 69 6f 6e 2e 0d    /// function..
33920 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
33930 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
33940 20 70 72 69 76 61 74 65 20 55 6e 73 61 66 65 4e   private UnsafeN
33950 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 44 65  ativeMethods.xDe
33960 73 74 72 6f 79 4d 6f 64 75 6c 65 20 64 65 73 74  stroyModule dest
33970 72 6f 79 4d 6f 64 75 6c 65 3b 0d 0a 0d 0a 20 20  royModule;....  
33980 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
33990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
339a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
339b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
339c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
339d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
339e0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
339f0 2f 2f 2f 20 54 68 69 73 20 66 69 65 6c 64 20 69  /// This field i
33a00 73 20 75 73 65 64 20 74 6f 20 73 74 6f 72 65 20  s used to store 
33a10 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  a pointer to the
33a20 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f   native sqlite3_
33a30 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20 20 20 20  module..        
33a40 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 20 72 65  /// structure re
33a50 74 75 72 6e 65 64 20 62 79 20 74 68 65 20 73 71  turned by the sq
33a60 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 64 69 73  lite3_create_dis
33a70 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65 0d 0a  posable_module..
33a80 20 20 20 20 20 20 20 20 2f 2f 2f 20 66 75 6e 63          /// func
33a90 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  tion...        /
33aa0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
33ab0 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 49         private I
33ac0 6e 74 50 74 72 20 64 69 73 70 6f 73 61 62 6c 65  ntPtr disposable
33ad0 4d 6f 64 75 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20  Module;....     
33ae0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
33af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69  //////////....#i
33b30 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
33b40 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
33b50 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
33b60 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
33b70 54 68 69 73 20 66 69 65 6c 64 20 69 73 20 75 73  This field is us
33b80 65 64 20 74 6f 20 68 6f 6c 64 20 74 68 65 20 62  ed to hold the b
33b90 6c 6f 63 6b 20 6f 66 20 6e 61 74 69 76 65 20 6d  lock of native m
33ba0 65 6d 6f 72 79 20 74 68 61 74 20 63 6f 6e 74 61  emory that conta
33bb0 69 6e 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ins..        ///
33bc0 20 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69   the native sqli
33bd0 74 65 33 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63  te3_module struc
33be0 74 75 72 65 20 61 73 73 6f 63 69 61 74 65 64 20  ture associated 
33bf0 77 69 74 68 20 74 68 69 73 20 6f 62 6a 65 63 74  with this object
33c00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e  ..        /// in
33c10 73 74 61 6e 63 65 20 77 68 65 6e 20 72 75 6e 6e  stance when runn
33c20 69 6e 67 20 6f 6e 20 74 68 65 20 2e 4e 45 54 20  ing on the .NET 
33c30 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72  Compact Framewor
33c40 6b 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  k...        /// 
33c50 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
33c60 20 20 20 20 70 72 69 76 61 74 65 20 49 6e 74 50      private IntP
33c70 74 72 20 70 4e 61 74 69 76 65 4d 6f 64 75 6c 65  tr pNativeModule
33c80 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
33c90 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
33ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
33ce0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
33cf0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
33d00 2f 2f 20 54 68 69 73 20 66 69 65 6c 64 20 69 73  // This field is
33d10 20 75 73 65 64 20 74 6f 20 73 74 6f 72 65 20 74   used to store t
33d20 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
33d30 20 69 6e 73 74 61 6e 63 65 73 20 61 73 73 6f 63   instances assoc
33d40 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f  iated..        /
33d50 2f 2f 20 77 69 74 68 20 74 68 69 73 20 6d 6f 64  // with this mod
33d60 75 6c 65 2e 20 20 54 68 65 20 6e 61 74 69 76 65  ule.  The native
33d70 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
33d80 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72  sqlite3_vtab der
33d90 69 76 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ived..        //
33da0 2f 20 73 74 72 75 63 74 75 72 65 20 69 73 20 75  / structure is u
33db0 73 65 64 20 74 6f 20 6b 65 79 20 69 6e 74 6f 20  sed to key into 
33dc0 74 68 69 73 20 63 6f 6c 6c 65 63 74 69 6f 6e 2e  this collection.
33dd0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
33de0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
33df0 20 20 70 72 69 76 61 74 65 20 44 69 63 74 69 6f    private Dictio
33e00 6e 61 72 79 3c 49 6e 74 50 74 72 2c 20 53 51 4c  nary<IntPtr, SQL
33e10 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 3e  iteVirtualTable>
33e20 20 74 61 62 6c 65 73 3b 0d 0a 0d 0a 20 20 20 20   tables;....    
33e30 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
33e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
33e80 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
33e90 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
33ea0 2f 20 54 68 69 73 20 66 69 65 6c 64 20 69 73 20  / This field is 
33eb0 75 73 65 64 20 74 6f 20 73 74 6f 72 65 20 74 68  used to store th
33ec0 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  e virtual table 
33ed0 63 75 72 73 6f 72 20 69 6e 73 74 61 6e 63 65 73  cursor instances
33ee0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 73  ..        /// as
33ef0 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
33f00 69 73 20 6d 6f 64 75 6c 65 2e 20 20 54 68 65 20  is module.  The 
33f10 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
33f20 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  o the..        /
33f30 2f 2f 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f  // sqlite3_vtab_
33f40 63 75 72 73 6f 72 20 64 65 72 69 76 65 64 20 73  cursor derived s
33f50 74 72 75 63 74 75 72 65 20 69 73 20 75 73 65 64  tructure is used
33f60 20 74 6f 20 6b 65 79 20 69 6e 74 6f 20 74 68 69   to key into thi
33f70 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  s..        /// c
33f80 6f 6c 6c 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20  ollection...    
33f90 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
33fa0 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  y>..        priv
33fb0 61 74 65 20 44 69 63 74 69 6f 6e 61 72 79 3c 49  ate Dictionary<I
33fc0 6e 74 50 74 72 2c 20 53 51 4c 69 74 65 56 69 72  ntPtr, SQLiteVir
33fd0 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 3e  tualTableCursor>
33fe0 20 63 75 72 73 6f 72 73 3b 0d 0a 0d 0a 20 20 20   cursors;....   
33ff0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
34000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
34040 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
34050 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
34060 2f 2f 20 54 68 69 73 20 66 69 65 6c 64 20 69 73  // This field is
34070 20 75 73 65 64 20 74 6f 20 73 74 6f 72 65 20 74   used to store t
34080 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
34090 20 66 75 6e 63 74 69 6f 6e 20 69 6e 73 74 61 6e   function instan
340a0 63 65 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ces..        ///
340b0 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
340c0 20 74 68 69 73 20 6d 6f 64 75 6c 65 2e 20 20 54   this module.  T
340d0 68 65 20 63 61 73 65 2d 69 6e 73 65 6e 73 69 74  he case-insensit
340e0 69 76 65 20 66 75 6e 63 74 69 6f 6e 20 6e 61 6d  ive function nam
340f0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61  e..        /// a
34100 6e 64 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  nd the number of
34110 20 61 72 67 75 6d 65 6e 74 73 20 28 77 69 74 68   arguments (with
34120 20 2d 31 20 6d 65 61 6e 69 6e 67 20 22 61 6e 79   -1 meaning "any
34130 22 29 20 61 72 65 20 75 73 65 64 20 74 6f 0d 0a  ") are used to..
34140 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 73          /// cons
34150 74 72 75 63 74 20 74 68 65 20 73 74 72 69 6e 67  truct the string
34160 20 74 68 61 74 20 69 73 20 75 73 65 64 20 74 6f   that is used to
34170 20 6b 65 79 20 69 6e 74 6f 20 74 68 69 73 20 63   key into this c
34180 6f 6c 6c 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20  ollection...    
34190 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
341a0 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  y>..        priv
341b0 61 74 65 20 44 69 63 74 69 6f 6e 61 72 79 3c 73  ate Dictionary<s
341c0 74 72 69 6e 67 2c 20 53 51 4c 69 74 65 46 75 6e  tring, SQLiteFun
341d0 63 74 69 6f 6e 3e 20 66 75 6e 63 74 69 6f 6e 73  ction> functions
341e0 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  ;..        #endr
341f0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
34200 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
34210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34240 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
34250 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c      #region Publ
34260 69 63 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d  ic Constructors.
34270 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
34280 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
34290 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61  /// Constructs a
342a0 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68  n instance of th
342b0 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20  is class...     
342c0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
342d0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
342e0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65  param name="name
342f0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
34300 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  The name of the 
34310 6d 6f 64 75 6c 65 2e 20 20 54 68 69 73 20 70 61  module.  This pa
34320 72 61 6d 65 74 65 72 20 63 61 6e 6e 6f 74 20 62  rameter cannot b
34330 65 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 20  e null...       
34340 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
34350 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51         public SQ
34360 4c 69 74 65 4d 6f 64 75 6c 65 28 73 74 72 69 6e  LiteModule(strin
34370 67 20 6e 61 6d 65 29 0d 0a 20 20 20 20 20 20 20  g name)..       
34380 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
34390 69 66 20 28 6e 61 6d 65 20 3d 3d 20 6e 75 6c 6c  if (name == null
343a0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
343b0 20 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72 67     throw new Arg
343c0 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65 70 74 69  umentNullExcepti
343d0 6f 6e 28 22 6e 61 6d 65 22 29 3b 0d 0a 0d 0a 20  on("name");.... 
343e0 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
343f0 6e 61 6d 65 20 3d 20 6e 61 6d 65 3b 0d 0a 20 20  name = name;..  
34400 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 74            this.t
34410 61 62 6c 65 73 20 3d 20 6e 65 77 20 44 69 63 74  ables = new Dict
34420 69 6f 6e 61 72 79 3c 49 6e 74 50 74 72 2c 20 53  ionary<IntPtr, S
34430 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
34440 65 3e 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  e>();..         
34450 20 20 20 74 68 69 73 2e 63 75 72 73 6f 72 73 20     this.cursors 
34460 3d 20 6e 65 77 20 44 69 63 74 69 6f 6e 61 72 79  = new Dictionary
34470 3c 49 6e 74 50 74 72 2c 20 53 51 4c 69 74 65 56  <IntPtr, SQLiteV
34480 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f  irtualTableCurso
34490 72 3e 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  r>();..         
344a0 20 20 20 74 68 69 73 2e 66 75 6e 63 74 69 6f 6e     this.function
344b0 73 20 3d 20 6e 65 77 20 44 69 63 74 69 6f 6e 61  s = new Dictiona
344c0 72 79 3c 73 74 72 69 6e 67 2c 20 53 51 4c 69 74  ry<string, SQLit
344d0 65 46 75 6e 63 74 69 6f 6e 3e 28 29 3b 0d 0a 20  eFunction>();.. 
344e0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
344f0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
34500 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
34510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
34550 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
34560 6f 6e 20 49 6e 74 65 72 6e 61 6c 20 4d 65 74 68  on Internal Meth
34570 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ods..        ///
34580 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
34590 20 20 20 20 2f 2f 2f 20 43 61 6c 6c 73 20 74 68      /// Calls th
345a0 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20  e native SQLite 
345b0 63 6f 72 65 20 6c 69 62 72 61 72 79 20 69 6e 20  core library in 
345c0 6f 72 64 65 72 20 74 6f 20 63 72 65 61 74 65 20  order to create 
345d0 61 20 6e 65 77 0d 0a 20 20 20 20 20 20 20 20 2f  a new..        /
345e0 2f 2f 20 64 69 73 70 6f 73 61 62 6c 65 20 6d 6f  // disposable mo
345f0 64 75 6c 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20  dule containing 
34600 74 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  the implementati
34610 6f 6e 20 6f 66 20 61 20 76 69 72 74 75 61 6c 20  on of a virtual 
34620 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20  table...        
34630 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
34640 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
34650 61 6d 20 6e 61 6d 65 3d 22 70 44 62 22 3e 0d 0a  am name="pDb">..
34660 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
34670 6e 61 74 69 76 65 20 64 61 74 61 62 61 73 65 20  native database 
34680 63 6f 6e 6e 65 63 74 69 6f 6e 20 70 6f 69 6e 74  connection point
34690 65 72 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20  er to use...    
346a0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
346b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
346c0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
346d0 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 75 70   /// Non-zero up
346e0 6f 6e 20 73 75 63 63 65 73 73 2e 0d 0a 20 20 20  on success...   
346f0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
34700 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ns>..        int
34710 65 72 6e 61 6c 20 62 6f 6f 6c 20 43 72 65 61 74  ernal bool Creat
34720 65 44 69 73 70 6f 73 61 62 6c 65 4d 6f 64 75 6c  eDisposableModul
34730 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
34740 49 6e 74 50 74 72 20 70 44 62 0d 0a 20 20 20 20  IntPtr pDb..    
34750 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
34760 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
34770 20 20 69 66 20 28 64 69 73 70 6f 73 61 62 6c 65    if (disposable
34780 4d 6f 64 75 6c 65 20 21 3d 20 49 6e 74 50 74 72  Module != IntPtr
34790 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
347a0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
347b0 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  rue;....        
347c0 20 20 20 20 49 6e 74 50 74 72 20 70 4e 61 6d 65      IntPtr pName
347d0 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d   = IntPtr.Zero;.
347e0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ...            t
347f0 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
34800 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
34810 20 20 20 70 4e 61 6d 65 20 3d 20 53 51 4c 69 74     pName = SQLit
34820 65 53 74 72 69 6e 67 2e 55 74 66 38 49 6e 74 50  eString.Utf8IntP
34830 74 72 46 72 6f 6d 53 74 72 69 6e 67 28 6e 61 6d  trFromString(nam
34840 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
34850 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74         UnsafeNat
34860 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
34870 65 33 5f 6d 6f 64 75 6c 65 20 6e 61 74 69 76 65  e3_module native
34880 4d 6f 64 75 6c 65 20 3d 0d 0a 20 20 20 20 20 20  Module =..      
34890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41 6c                Al
348a0 6c 6f 63 61 74 65 4e 61 74 69 76 65 4d 6f 64 75  locateNativeModu
348b0 6c 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  le();....       
348c0 20 20 20 20 20 20 20 20 20 64 65 73 74 72 6f 79           destroy
348d0 4d 6f 64 75 6c 65 20 3d 20 6e 65 77 20 55 6e 73  Module = new Uns
348e0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
348f0 2e 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 28  .xDestroyModule(
34900 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
34910 20 20 20 20 20 20 78 44 65 73 74 72 6f 79 4d 6f        xDestroyMo
34920 64 75 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  dule);....#if !P
34930 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
34940 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
34950 20 20 20 20 20 20 20 20 20 20 64 69 73 70 6f 73            dispos
34960 61 62 6c 65 4d 6f 64 75 6c 65 20 3d 0d 0a 20 20  ableModule =..  
34970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34980 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65    UnsafeNativeMe
34990 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 63 72  thods.sqlite3_cr
349a0 65 61 74 65 5f 64 69 73 70 6f 73 61 62 6c 65 5f  eate_disposable_
349b0 6d 6f 64 75 6c 65 28 0d 0a 20 20 20 20 20 20 20  module(..       
349c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
349d0 20 70 44 62 2c 20 70 4e 61 6d 65 2c 20 72 65 66   pDb, pName, ref
349e0 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2c 20 49   nativeModule, I
349f0 6e 74 50 74 72 2e 5a 65 72 6f 2c 20 64 65 73 74  ntPtr.Zero, dest
34a00 72 6f 79 4d 6f 64 75 6c 65 29 3b 0d 0a 0d 0a 20  royModule);.... 
34a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
34a20 65 74 75 72 6e 20 28 64 69 73 70 6f 73 61 62 6c  eturn (disposabl
34a30 65 4d 6f 64 75 6c 65 20 21 3d 20 49 6e 74 50 74  eModule != IntPt
34a40 72 2e 5a 65 72 6f 29 3b 0d 0a 23 65 6c 69 66 20  r.Zero);..#elif 
34a50 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44  !SQLITE_STANDARD
34a60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
34a70 20 20 64 69 73 70 6f 73 61 62 6c 65 4d 6f 64 75    disposableModu
34a80 6c 65 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20  le =..          
34a90 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
34aa0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
34ab0 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 64 69 73  lite3_create_dis
34ac0 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65 5f 69  posable_module_i
34ad0 6e 74 65 72 6f 70 28 0d 0a 20 20 20 20 20 20 20  nterop(..       
34ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34af0 70 44 62 2c 20 70 4e 61 6d 65 2c 20 41 6c 6c 6f  pDb, pName, Allo
34b00 63 61 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  cateNativeModule
34b10 49 6e 74 65 72 6f 70 28 29 2c 0d 0a 20 20 20 20  Interop(),..    
34b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34b30 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
34b40 69 56 65 72 73 69 6f 6e 2c 20 6e 61 74 69 76 65  iVersion, native
34b50 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 2c 0d  Module.xCreate,.
34b60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
34b70 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
34b80 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 2c 20 6e  dule.xConnect, n
34b90 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 73  ativeModule.xBes
34ba0 74 49 6e 64 65 78 2c 0d 0a 20 20 20 20 20 20 20  tIndex,..       
34bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34bc0 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 69  nativeModule.xDi
34bd0 73 63 6f 6e 6e 65 63 74 2c 20 6e 61 74 69 76 65  sconnect, native
34be0 4d 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f 79 2c  Module.xDestroy,
34bf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
34c00 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
34c10 6f 64 75 6c 65 2e 78 4f 70 65 6e 2c 20 6e 61 74  odule.xOpen, nat
34c20 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65  iveModule.xClose
34c30 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
34c40 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
34c50 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 2c 20  Module.xFilter, 
34c60 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4e 65  nativeModule.xNe
34c70 78 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  xt,..           
34c80 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
34c90 76 65 4d 6f 64 75 6c 65 2e 78 45 6f 66 2c 20 6e  veModule.xEof, n
34ca0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c  ativeModule.xCol
34cb0 75 6d 6e 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  umn,..          
34cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
34cd0 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64  iveModule.xRowId
34ce0 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  , nativeModule.x
34cf0 55 70 64 61 74 65 2c 0d 0a 20 20 20 20 20 20 20  Update,..       
34d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34d10 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65  nativeModule.xBe
34d20 67 69 6e 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c  gin, nativeModul
34d30 65 2e 78 53 79 6e 63 2c 0d 0a 20 20 20 20 20 20  e.xSync,..      
34d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34d50 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43   nativeModule.xC
34d60 6f 6d 6d 69 74 2c 20 6e 61 74 69 76 65 4d 6f 64  ommit, nativeMod
34d70 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 2c 0d 0a  ule.xRollback,..
34d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34d90 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
34da0 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f  ule.xFindFunctio
34db0 6e 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  n, nativeModule.
34dc0 78 52 65 6e 61 6d 65 2c 0d 0a 20 20 20 20 20 20  xRename,..      
34dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34de0 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53   nativeModule.xS
34df0 61 76 65 70 6f 69 6e 74 2c 20 6e 61 74 69 76 65  avepoint, native
34e00 4d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73 65 2c  Module.xRelease,
34e10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
34e20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
34e30 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54  odule.xRollbackT
34e40 6f 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2c 20  o, IntPtr.Zero, 
34e50 64 65 73 74 72 6f 79 4d 6f 64 75 6c 65 29 3b 0d  destroyModule);.
34e60 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
34e70 20 20 20 72 65 74 75 72 6e 20 28 64 69 73 70 6f     return (dispo
34e80 73 61 62 6c 65 4d 6f 64 75 6c 65 20 21 3d 20 49  sableModule != I
34e90 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 23 65  ntPtr.Zero);..#e
34ea0 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
34eb0 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 4e       throw new N
34ec0 6f 74 49 6d 70 6c 65 6d 65 6e 74 65 64 45 78 63  otImplementedExc
34ed0 65 70 74 69 6f 6e 28 29 3b 0d 0a 23 65 6e 64 69  eption();..#endi
34ee0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  f..            }
34ef0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69  ..            fi
34f00 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20  nally..         
34f10 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
34f20 20 20 20 20 20 20 69 66 20 28 70 4e 61 6d 65 20        if (pName 
34f30 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  != IntPtr.Zero).
34f40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
34f50 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
34f60 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 65          SQLiteMe
34f70 6d 6f 72 79 2e 46 72 65 65 28 70 4e 61 6d 65 29  mory.Free(pName)
34f80 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
34f90 20 20 20 20 20 20 20 70 4e 61 6d 65 20 3d 20 49         pName = I
34fa0 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20  ntPtr.Zero;..   
34fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
34fc0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
34fd0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
34fe0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
34ff0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
35000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
35040 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
35050 6f 6e 20 50 72 69 76 61 74 65 20 4d 65 74 68 6f  on Private Metho
35060 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
35070 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
35080 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68     /// This meth
35090 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 62 79 20  od is called by 
350a0 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
350b0 6c 69 62 72 61 72 79 20 77 68 65 6e 20 74 68 65  library when the
350c0 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20   native..       
350d0 20 2f 2f 2f 20 6d 6f 64 75 6c 65 20 61 73 73 6f   /// module asso
350e0 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73  ciated with this
350f0 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
35100 20 69 73 20 62 65 69 6e 67 20 64 65 73 74 72 6f   is being destro
35110 79 65 64 20 64 75 65 0d 0a 20 20 20 20 20 20 20  yed due..       
35120 20 2f 2f 2f 20 74 6f 20 69 74 73 20 70 61 72 65   /// to its pare
35130 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 62 65  nt connection be
35140 69 6e 67 20 63 6c 6f 73 65 64 2e 20 20 49 74 20  ing closed.  It 
35150 6d 61 79 20 61 6c 73 6f 20 62 65 20 63 61 6c 6c  may also be call
35160 65 64 20 62 79 0d 0a 20 20 20 20 20 20 20 20 2f  ed by..        /
35170 2f 2f 20 74 68 65 20 22 76 74 73 68 69 6d 22 20  // the "vtshim" 
35180 6d 6f 64 75 6c 65 20 69 66 2f 77 68 65 6e 20 74  module if/when t
35190 68 65 20 73 71 6c 69 74 65 33 5f 64 69 73 70 6f  he sqlite3_dispo
351a0 73 65 5f 6d 6f 64 75 6c 65 28 29 20 66 75 6e 63  se_module() func
351b0 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tion..        //
351c0 2f 20 69 73 20 63 61 6c 6c 65 64 2e 0d 0a 20 20  / is called...  
351d0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
351e0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
351f0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
35200 43 6c 69 65 6e 74 44 61 74 61 22 3e 0d 0a 20 20  ClientData">..  
35210 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
35220 74 69 76 65 20 75 73 65 72 2d 64 61 74 61 20 70  tive user-data p
35230 6f 69 6e 74 65 72 20 61 73 73 6f 63 69 61 74 65  ointer associate
35240 64 20 77 69 74 68 20 74 68 69 73 20 6d 6f 64 75  d with this modu
35250 6c 65 2c 20 61 73 20 69 74 20 77 61 73 0d 0a 20  le, as it was.. 
35260 20 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f 76 69         /// provi
35270 64 65 64 20 74 6f 20 74 68 65 20 53 51 4c 69 74  ded to the SQLit
35280 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 77  e core library w
35290 68 65 6e 20 74 68 65 20 6e 61 74 69 76 65 20 6d  hen the native m
352a0 6f 64 75 6c 65 20 69 6e 73 74 61 6e 63 65 0d 0a  odule instance..
352b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 61 73 20          /// was 
352c0 63 72 65 61 74 65 64 2e 0d 0a 20 20 20 20 20 20  created...      
352d0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
352e0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
352f0 76 6f 69 64 20 78 44 65 73 74 72 6f 79 4d 6f 64  void xDestroyMod
35300 75 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ule(..          
35310 20 20 49 6e 74 50 74 72 20 70 43 6c 69 65 6e 74    IntPtr pClient
35320 44 61 74 61 20 2f 2a 20 4e 4f 54 20 55 53 45 44  Data /* NOT USED
35330 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
35340 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
35350 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
35360 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
35370 54 45 3a 20 41 74 20 74 68 69 73 20 70 6f 69 6e  TE: At this poin
35380 74 2c 20 6a 75 73 74 20 6d 61 6b 65 20 73 75 72  t, just make sur
35390 65 20 74 68 61 74 20 74 68 69 73 20 6e 61 74 69  e that this nati
353a0 76 65 20 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20  ve module..     
353b0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
353c0 68 61 6e 64 6c 65 20 69 73 20 6e 6f 74 20 72 65  handle is not re
353d0 75 73 65 64 2c 20 6e 6f 72 20 70 61 73 73 65 64  used, nor passed
353e0 20 69 6e 74 6f 20 74 68 65 20 6e 61 74 69 76 65   into the native
353f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
35400 20 20 20 20 20 20 20 73 71 6c 69 74 65 33 5f 64         sqlite3_d
35410 69 73 70 6f 73 65 5f 6d 6f 64 75 6c 65 28 29 20  ispose_module() 
35420 66 75 6e 63 74 69 6f 6e 20 6c 61 74 65 72 20 28  function later (
35430 69 2e 65 2e 20 69 66 2f 77 68 65 6e 0d 0a 20 20  i.e. if/when..  
35440 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
35450 20 20 20 74 68 65 20 44 69 73 70 6f 73 65 28 29     the Dispose()
35460 20 6d 65 74 68 6f 64 20 6f 66 20 74 68 69 73 20   method of this 
35470 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
35480 69 73 20 63 61 6c 6c 65 64 29 2e 0d 0a 20 20 20  is called)...   
35490 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
354a0 20 20 20 20 20 20 20 20 20 64 69 73 70 6f 73 61           disposa
354b0 62 6c 65 4d 6f 64 75 6c 65 20 3d 20 49 6e 74 50  bleModule = IntP
354c0 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20  tr.Zero;..      
354d0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
354e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
354f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35520 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
35530 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
35540 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 72 65  .        /// Cre
35550 61 74 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73  ates and returns
35560 20 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69   the native sqli
35570 74 65 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63 74  te_module struct
35580 75 72 65 20 75 73 69 6e 67 20 74 68 65 0d 0a 20  ure using the.. 
35590 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 66 69         /// confi
355a0 67 75 72 65 64 20 28 6f 72 20 64 65 66 61 75 6c  gured (or defaul
355b0 74 29 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  t) <see cref="IS
355c0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
355d0 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f  e" />..        /
355e0 2f 2f 20 69 6e 74 65 72 66 61 63 65 20 69 6d 70  // interface imp
355f0 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20  lementation...  
35600 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
35610 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
35620 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
35630 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
35640 69 76 65 20 73 71 6c 69 74 65 5f 6d 6f 64 75 6c  ive sqlite_modul
35650 65 20 73 74 72 75 63 74 75 72 65 20 75 73 69 6e  e structure usin
35660 67 20 74 68 65 20 63 6f 6e 66 69 67 75 72 65 64  g the configured
35670 20 28 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f   (or..        //
35680 2f 20 64 65 66 61 75 6c 74 29 20 3c 73 65 65 20  / default) <see 
35690 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
356a0 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 69 6e  iveModule" /> in
356b0 74 65 72 66 61 63 65 0d 0a 20 20 20 20 20 20 20  terface..       
356c0 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74 61 74   /// implementat
356d0 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ion...        //
356e0 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
356f0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 55 6e        private Un
35700 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
35710 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65  s.sqlite3_module
35720 20 41 6c 6c 6f 63 61 74 65 4e 61 74 69 76 65 4d   AllocateNativeM
35730 6f 64 75 6c 65 28 29 0d 0a 20 20 20 20 20 20 20  odule()..       
35740 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
35750 72 65 74 75 72 6e 20 41 6c 6c 6f 63 61 74 65 4e  return AllocateN
35760 61 74 69 76 65 4d 6f 64 75 6c 65 28 47 65 74 4e  ativeModule(GetN
35770 61 74 69 76 65 4d 6f 64 75 6c 65 49 6d 70 6c 28  ativeModuleImpl(
35780 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ));..        }..
35790 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
357a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
357b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
357c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
357d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
357e0 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52  /....#if PLATFOR
357f0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
35800 52 4b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  RK..        /// 
35810 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
35820 20 20 20 2f 2f 2f 20 43 72 65 61 74 65 73 20 61     /// Creates a
35830 6e 64 20 72 65 74 75 72 6e 73 20 61 20 6d 65 6d  nd returns a mem
35840 6f 72 79 20 62 6c 6f 63 6b 20 6f 62 74 61 69 6e  ory block obtain
35850 65 64 20 66 72 6f 6d 20 74 68 65 20 53 51 4c 69  ed from the SQLi
35860 74 65 20 63 6f 72 65 0d 0a 20 20 20 20 20 20 20  te core..       
35870 20 2f 2f 2f 20 6c 69 62 72 61 72 79 20 75 73 65   /// library use
35880 64 20 74 6f 20 73 74 6f 72 65 20 74 68 65 20 6e  d to store the n
35890 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 6d 6f  ative sqlite3_mo
358a0 64 75 6c 65 20 73 74 72 75 63 74 75 72 65 20 66  dule structure f
358b0 6f 72 20 74 68 69 73 0d 0a 20 20 20 20 20 20 20  or this..       
358c0 20 2f 2f 2f 20 6f 62 6a 65 63 74 20 69 6e 73 74   /// object inst
358d0 61 6e 63 65 20 77 68 65 6e 20 72 75 6e 6e 69 6e  ance when runnin
358e0 67 20 6f 6e 20 74 68 65 20 2e 4e 45 54 20 43 6f  g on the .NET Co
358f0 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2e  mpact Framework.
35900 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
35910 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
35920 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
35930 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
35940 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
35950 74 6f 20 74 68 65 20 6e 61 74 69 76 65 20 73 71  to the native sq
35960 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 73 74 72  lite3_module str
35970 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ucture...       
35980 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
35990 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
359a0 20 49 6e 74 50 74 72 20 41 6c 6c 6f 63 61 74 65   IntPtr Allocate
359b0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 49 6e 74 65  NativeModuleInte
359c0 72 6f 70 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  rop()..        {
359d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
359e0 20 28 70 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20   (pNativeModule 
359f0 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  == IntPtr.Zero).
35a00 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
35a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35a20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
35a30 20 20 20 20 2f 2f 20 48 41 43 4b 3a 20 4e 6f 20      // HACK: No 
35a40 65 61 73 79 20 77 61 79 20 74 6f 20 64 65 74 65  easy way to dete
35a50 72 6d 69 6e 65 20 74 68 65 20 73 69 7a 65 20 6f  rmine the size o
35a60 66 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20  f the native..  
35a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
35a80 20 20 20 20 20 20 20 73 71 6c 69 74 65 5f 6d 6f         sqlite_mo
35a90 64 75 6c 65 20 73 74 72 75 63 74 75 72 65 20 77  dule structure w
35aa0 68 65 6e 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 74  hen running on t
35ab0 68 65 20 2e 4e 45 54 0d 0a 20 20 20 20 20 20 20  he .NET..       
35ac0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
35ad0 20 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77    Compact Framew
35ae0 6f 72 6b 3b 20 74 68 65 72 65 66 6f 72 65 2c 20  ork; therefore, 
35af0 6a 75 73 74 20 62 61 73 65 20 74 68 65 20 73 69  just base the si
35b00 7a 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ze..            
35b10 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e 20      //       on 
35b20 77 68 61 74 20 77 65 20 6b 6e 6f 77 3a 0d 0a 20  what we know:.. 
35b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
35b40 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
35b50 20 20 20 2f 2f 20 20 20 20 20 20 20 54 68 65 72     //       Ther
35b60 65 20 69 73 20 6f 6e 65 20 69 6e 74 65 67 65 72  e is one integer
35b70 20 6d 65 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20   member...      
35b80 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
35b90 20 20 20 54 68 65 72 65 20 61 72 65 20 32 32 20     There are 22 
35ba0 66 75 6e 63 74 69 6f 6e 20 70 6f 69 6e 74 65 72  function pointer
35bb0 20 6d 65 6d 62 65 72 73 2e 0d 0a 20 20 20 20 20   members...     
35bc0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
35bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
35be0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20 3d 20 53  NativeModule = S
35bf0 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 41 6c 6c 6f  QLiteMemory.Allo
35c00 63 61 74 65 28 32 33 20 2a 20 49 6e 74 50 74 72  cate(23 * IntPtr
35c10 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  .Size);....     
35c20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
35c30 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20 3d 3d 20  NativeModule == 
35c40 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
35c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35c60 20 20 74 68 72 6f 77 20 6e 65 77 20 4f 75 74 4f    throw new OutO
35c70 66 4d 65 6d 6f 72 79 45 78 63 65 70 74 69 6f 6e  fMemoryException
35c80 28 22 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65  ("sqlite3_module
35c90 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ");..           
35ca0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
35cb0 20 20 72 65 74 75 72 6e 20 70 4e 61 74 69 76 65    return pNative
35cc0 4d 6f 64 75 6c 65 3b 0d 0a 20 20 20 20 20 20 20  Module;..       
35cd0 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20   }..#endif....  
35ce0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
35cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
35d30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
35d40 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
35d50 2f 2f 2f 20 43 72 65 61 74 65 73 20 61 6e 64 20  /// Creates and 
35d60 72 65 74 75 72 6e 73 20 74 68 65 20 6e 61 74 69  returns the nati
35d70 76 65 20 73 71 6c 69 74 65 5f 6d 6f 64 75 6c 65  ve sqlite_module
35d80 20 73 74 72 75 63 74 75 72 65 20 75 73 69 6e 67   structure using
35d90 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
35da0 2f 20 73 70 65 63 69 66 69 65 64 20 3c 73 65 65  / specified <see
35db0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
35dc0 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 69  tiveModule" /> i
35dd0 6e 74 65 72 66 61 63 65 0d 0a 20 20 20 20 20 20  nterface..      
35de0 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74 61    /// implementa
35df0 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  tion...        /
35e00 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
35e10 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
35e20 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e  m name="module">
35e30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
35e40 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
35e50 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
35e60 22 20 2f 3e 20 69 6e 74 65 72 66 61 63 65 20 69  " /> interface i
35e70 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 74 6f  mplementation to
35e80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 75 73  ..        /// us
35e90 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
35ea0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
35eb0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
35ec0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
35ed0 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 5f 6d   native sqlite_m
35ee0 6f 64 75 6c 65 20 73 74 72 75 63 74 75 72 65 20  odule structure 
35ef0 75 73 69 6e 67 20 74 68 65 20 73 70 65 63 69 66  using the specif
35f00 69 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ied..        ///
35f10 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
35f20 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22  iteNativeModule"
35f30 20 2f 3e 20 69 6e 74 65 72 66 61 63 65 20 69 6d   /> interface im
35f40 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d 0a 20  plementation... 
35f50 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
35f60 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
35f70 72 69 76 61 74 65 20 55 6e 73 61 66 65 4e 61 74  rivate UnsafeNat
35f80 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
35f90 65 33 5f 6d 6f 64 75 6c 65 20 41 6c 6c 6f 63 61  e3_module Alloca
35fa0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 28 0d  teNativeModule(.
35fb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 53 51  .            ISQ
35fc0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
35fd0 20 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20 20 20   module..       
35fe0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
35ff0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  {..            n
36000 61 74 69 76 65 4d 6f 64 75 6c 65 20 3d 20 6e 65  ativeModule = ne
36010 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
36020 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f  thods.sqlite3_mo
36030 64 75 6c 65 28 29 3b 0d 0a 20 20 20 20 20 20 20  dule();..       
36040 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
36050 65 2e 69 56 65 72 73 69 6f 6e 20 3d 20 44 65 66  e.iVersion = Def
36060 61 75 6c 74 4d 6f 64 75 6c 65 56 65 72 73 69 6f  aultModuleVersio
36070 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  n;....          
36080 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 21 3d 20    if (module != 
36090 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
360a0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
360b0 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
360c0 6c 65 2e 78 43 72 65 61 74 65 20 3d 20 6e 65 77  le.xCreate = new
360d0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
360e0 68 6f 64 73 2e 78 43 72 65 61 74 65 28 0d 0a 20  hods.xCreate(.. 
360f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36100 20 20 6d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65    module.xCreate
36110 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
36120 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
36130 6c 65 2e 78 43 6f 6e 6e 65 63 74 20 3d 20 6e 65  le.xConnect = ne
36140 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
36150 74 68 6f 64 73 2e 78 43 6f 6e 6e 65 63 74 28 0d  thods.xConnect(.
36160 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
36170 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 43 6f 6e       module.xCon
36180 6e 65 63 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  nect);....      
36190 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
361a0 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65  Module.xBestInde
361b0 78 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  x = new UnsafeNa
361c0 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 42 65 73  tiveMethods.xBes
361d0 74 49 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20  tIndex(..       
361e0 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64               mod
361f0 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 29 3b  ule.xBestIndex);
36200 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
36210 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
36220 2e 78 44 69 73 63 6f 6e 6e 65 63 74 20 3d 20 6e  .xDisconnect = n
36230 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
36240 65 74 68 6f 64 73 2e 78 44 69 73 63 6f 6e 6e 65  ethods.xDisconne
36250 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ct(..           
36260 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e           module.
36270 78 44 69 73 63 6f 6e 6e 65 63 74 29 3b 0d 0a 0d  xDisconnect);...
36280 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
36290 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44   nativeModule.xD
362a0 65 73 74 72 6f 79 20 3d 20 6e 65 77 20 55 6e 73  estroy = new Uns
362b0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
362c0 2e 78 44 65 73 74 72 6f 79 28 0d 0a 20 20 20 20  .xDestroy(..    
362d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
362e0 6d 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f 79 29  module.xDestroy)
362f0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
36300 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
36310 65 2e 78 4f 70 65 6e 20 3d 20 6e 65 77 20 55 6e  e.xOpen = new Un
36320 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
36330 73 2e 78 4f 70 65 6e 28 0d 0a 20 20 20 20 20 20  s.xOpen(..      
36340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f                mo
36350 64 75 6c 65 2e 78 4f 70 65 6e 29 3b 0d 0a 0d 0a  dule.xOpen);....
36360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36370 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6c  nativeModule.xCl
36380 6f 73 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  ose = new Unsafe
36390 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 43  NativeMethods.xC
363a0 6c 6f 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20  lose(..         
363b0 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c             modul
363c0 65 2e 78 43 6c 6f 73 65 29 3b 0d 0a 0d 0a 20 20  e.xClose);....  
363d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
363e0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74  tiveModule.xFilt
363f0 65 72 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  er = new UnsafeN
36400 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 46 69  ativeMethods.xFi
36410 6c 74 65 72 28 0d 0a 20 20 20 20 20 20 20 20 20  lter(..         
36420 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c             modul
36430 65 2e 78 46 69 6c 74 65 72 29 3b 0d 0a 0d 0a 20  e.xFilter);.... 
36440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
36450 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4e 65 78  ativeModule.xNex
36460 74 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  t = new UnsafeNa
36470 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 4e 65 78  tiveMethods.xNex
36480 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
36490 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78          module.x
364a0 4e 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Next);....      
364b0 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
364c0 4d 6f 64 75 6c 65 2e 78 45 6f 66 20 3d 20 6e 65  Module.xEof = ne
364d0 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
364e0 74 68 6f 64 73 2e 78 45 6f 66 28 6d 6f 64 75 6c  thods.xEof(modul
364f0 65 2e 78 45 6f 66 29 3b 0d 0a 0d 0a 20 20 20 20  e.xEof);....    
36500 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
36510 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e  veModule.xColumn
36520 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
36530 69 76 65 4d 65 74 68 6f 64 73 2e 78 43 6f 6c 75  iveMethods.xColu
36540 6d 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  mn(..           
36550 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e           module.
36560 78 43 6f 6c 75 6d 6e 29 3b 0d 0a 0d 0a 20 20 20  xColumn);....   
36570 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
36580 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64  iveModule.xRowId
36590 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
365a0 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 6f 77 49  iveMethods.xRowI
365b0 64 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d(..            
365c0 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78          module.x
365d0 52 6f 77 49 64 29 3b 0d 0a 0d 0a 20 20 20 20 20  RowId);....     
365e0 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
365f0 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 20  eModule.xUpdate 
36600 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
36610 76 65 4d 65 74 68 6f 64 73 2e 78 55 70 64 61 74  veMethods.xUpdat
36620 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
36630 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78          module.x
36640 55 70 64 61 74 65 29 3b 0d 0a 0d 0a 20 20 20 20  Update);....    
36650 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
36660 76 65 4d 6f 64 75 6c 65 2e 78 42 65 67 69 6e 20  veModule.xBegin 
36670 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
36680 76 65 4d 65 74 68 6f 64 73 2e 78 42 65 67 69 6e  veMethods.xBegin
36690 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
366a0 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 42         module.xB
366b0 65 67 69 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  egin);....      
366c0 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
366d0 4d 6f 64 75 6c 65 2e 78 53 79 6e 63 20 3d 20 6e  Module.xSync = n
366e0 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
366f0 65 74 68 6f 64 73 2e 78 53 79 6e 63 28 0d 0a 20  ethods.xSync(.. 
36700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36710 20 20 20 6d 6f 64 75 6c 65 2e 78 53 79 6e 63 29     module.xSync)
36720 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
36730 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
36740 65 2e 78 43 6f 6d 6d 69 74 20 3d 20 6e 65 77 20  e.xCommit = new 
36750 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
36760 6f 64 73 2e 78 43 6f 6d 6d 69 74 28 0d 0a 20 20  ods.xCommit(..  
36770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36780 20 20 6d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74    module.xCommit
36790 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
367a0 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
367b0 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 20 3d 20 6e  le.xRollback = n
367c0 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
367d0 65 74 68 6f 64 73 2e 78 52 6f 6c 6c 62 61 63 6b  ethods.xRollback
367e0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
367f0 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 52         module.xR
36800 6f 6c 6c 62 61 63 6b 29 3b 0d 0a 0d 0a 20 20 20  ollback);....   
36810 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
36820 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46  iveModule.xFindF
36830 75 6e 63 74 69 6f 6e 20 3d 20 6e 65 77 20 55 6e  unction = new Un
36840 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
36850 73 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28  s.xFindFunction(
36860 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
36870 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 46 69        module.xFi
36880 6e 64 46 75 6e 63 74 69 6f 6e 29 3b 0d 0a 0d 0a  ndFunction);....
36890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
368a0 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65  nativeModule.xRe
368b0 6e 61 6d 65 20 3d 20 6e 65 77 20 55 6e 73 61 66  name = new Unsaf
368c0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
368d0 52 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20  Rename(..       
368e0 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64               mod
368f0 75 6c 65 2e 78 52 65 6e 61 6d 65 29 3b 0d 0a 0d  ule.xRename);...
36900 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
36910 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53   nativeModule.xS
36920 61 76 65 70 6f 69 6e 74 20 3d 20 6e 65 77 20 55  avepoint = new U
36930 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
36940 64 73 2e 78 53 61 76 65 70 6f 69 6e 74 28 0d 0a  ds.xSavepoint(..
36950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36960 20 20 20 20 6d 6f 64 75 6c 65 2e 78 53 61 76 65      module.xSave
36970 70 6f 69 6e 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  point);....     
36980 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
36990 65 4d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73 65  eModule.xRelease
369a0 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
369b0 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 65 6c 65  iveMethods.xRele
369c0 61 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ase(..          
369d0 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65            module
369e0 2e 78 52 65 6c 65 61 73 65 29 3b 0d 0a 0d 0a 20  .xRelease);.... 
369f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
36a00 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c  ativeModule.xRol
36a10 6c 62 61 63 6b 54 6f 20 3d 20 6e 65 77 20 55 6e  lbackTo = new Un
36a20 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
36a30 73 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a  s.xRollbackTo(..
36a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36a50 20 20 20 20 6d 6f 64 75 6c 65 2e 78 52 6f 6c 6c      module.xRoll
36a60 62 61 63 6b 54 6f 29 3b 0d 0a 20 20 20 20 20 20  backTo);..      
36a70 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
36a80 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20       else..     
36a90 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
36aa0 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
36ab0 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 20 3d  Module.xCreate =
36ac0 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
36ad0 65 4d 65 74 68 6f 64 73 2e 78 43 72 65 61 74 65  eMethods.xCreate
36ae0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
36af0 20 20 20 20 20 20 20 78 43 72 65 61 74 65 29 3b         xCreate);
36b00 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
36b10 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
36b20 2e 78 43 6f 6e 6e 65 63 74 20 3d 20 6e 65 77 20  .xConnect = new 
36b30 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
36b40 6f 64 73 2e 78 43 6f 6e 6e 65 63 74 28 0d 0a 20  ods.xConnect(.. 
36b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36b60 20 20 20 78 43 6f 6e 6e 65 63 74 29 3b 0d 0a 0d     xConnect);...
36b70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
36b80 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42   nativeModule.xB
36b90 65 73 74 49 6e 64 65 78 20 3d 20 6e 65 77 20 55  estIndex = new U
36ba0 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
36bb0 64 73 2e 78 42 65 73 74 49 6e 64 65 78 28 0d 0a  ds.xBestIndex(..
36bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36bd0 20 20 20 20 78 42 65 73 74 49 6e 64 65 78 29 3b      xBestIndex);
36be0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
36bf0 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
36c00 2e 78 44 69 73 63 6f 6e 6e 65 63 74 20 3d 20 6e  .xDisconnect = n
36c10 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
36c20 65 74 68 6f 64 73 2e 78 44 69 73 63 6f 6e 6e 65  ethods.xDisconne
36c30 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ct(..           
36c40 20 20 20 20 20 20 20 20 20 78 44 69 73 63 6f 6e           xDiscon
36c50 6e 65 63 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  nect);....      
36c60 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
36c70 4d 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f 79 20  Module.xDestroy 
36c80 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
36c90 76 65 4d 65 74 68 6f 64 73 2e 78 44 65 73 74 72  veMethods.xDestr
36ca0 6f 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  oy(..           
36cb0 20 20 20 20 20 20 20 20 20 78 44 65 73 74 72 6f           xDestro
36cc0 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
36cd0 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
36ce0 75 6c 65 2e 78 4f 70 65 6e 20 3d 20 6e 65 77 20  ule.xOpen = new 
36cf0 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
36d00 6f 64 73 2e 78 4f 70 65 6e 28 78 4f 70 65 6e 29  ods.xOpen(xOpen)
36d10 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
36d20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
36d30 78 43 6c 6f 73 65 20 3d 20 6e 65 77 20 55 6e 73  xClose = new Uns
36d40 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
36d50 2e 78 43 6c 6f 73 65 28 78 43 6c 6f 73 65 29 3b  .xClose(xClose);
36d60 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
36d70 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
36d80 2e 78 46 69 6c 74 65 72 20 3d 20 6e 65 77 20 55  .xFilter = new U
36d90 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
36da0 64 73 2e 78 46 69 6c 74 65 72 28 0d 0a 20 20 20  ds.xFilter(..   
36db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36dc0 20 78 46 69 6c 74 65 72 29 3b 0d 0a 0d 0a 20 20   xFilter);....  
36dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
36de0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4e 65 78 74  tiveModule.xNext
36df0 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
36e00 69 76 65 4d 65 74 68 6f 64 73 2e 78 4e 65 78 74  iveMethods.xNext
36e10 28 78 4e 65 78 74 29 3b 0d 0a 20 20 20 20 20 20  (xNext);..      
36e20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
36e30 4d 6f 64 75 6c 65 2e 78 45 6f 66 20 3d 20 6e 65  Module.xEof = ne
36e40 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
36e50 74 68 6f 64 73 2e 78 45 6f 66 28 78 45 6f 66 29  thods.xEof(xEof)
36e60 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
36e70 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
36e80 65 2e 78 43 6f 6c 75 6d 6e 20 3d 20 6e 65 77 20  e.xColumn = new 
36e90 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
36ea0 6f 64 73 2e 78 43 6f 6c 75 6d 6e 28 0d 0a 20 20  ods.xColumn(..  
36eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36ec0 20 20 78 43 6f 6c 75 6d 6e 29 3b 0d 0a 0d 0a 20    xColumn);.... 
36ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
36ee0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 77  ativeModule.xRow
36ef0 49 64 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  Id = new UnsafeN
36f00 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 6f  ativeMethods.xRo
36f10 77 49 64 28 78 52 6f 77 49 64 29 3b 0d 0a 0d 0a  wId(xRowId);....
36f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36f30 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70  nativeModule.xUp
36f40 64 61 74 65 20 3d 20 6e 65 77 20 55 6e 73 61 66  date = new Unsaf
36f50 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
36f60 55 70 64 61 74 65 28 0d 0a 20 20 20 20 20 20 20  Update(..       
36f70 20 20 20 20 20 20 20 20 20 20 20 20 20 78 55 70               xUp
36f80 64 61 74 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  date);....      
36f90 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
36fa0 4d 6f 64 75 6c 65 2e 78 42 65 67 69 6e 20 3d 20  Module.xBegin = 
36fb0 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
36fc0 4d 65 74 68 6f 64 73 2e 78 42 65 67 69 6e 28 78  Methods.xBegin(x
36fd0 42 65 67 69 6e 29 3b 0d 0a 20 20 20 20 20 20 20  Begin);..       
36fe0 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
36ff0 6f 64 75 6c 65 2e 78 53 79 6e 63 20 3d 20 6e 65  odule.xSync = ne
37000 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
37010 74 68 6f 64 73 2e 78 53 79 6e 63 28 78 53 79 6e  thods.xSync(xSyn
37020 63 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  c);....         
37030 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
37040 75 6c 65 2e 78 43 6f 6d 6d 69 74 20 3d 20 6e 65  ule.xCommit = ne
37050 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
37060 74 68 6f 64 73 2e 78 43 6f 6d 6d 69 74 28 0d 0a  thods.xCommit(..
37070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37080 20 20 20 20 78 43 6f 6d 6d 69 74 29 3b 0d 0a 0d      xCommit);...
37090 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
370a0 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52   nativeModule.xR
370b0 6f 6c 6c 62 61 63 6b 20 3d 20 6e 65 77 20 55 6e  ollback = new Un
370c0 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
370d0 73 2e 78 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20  s.xRollback(..  
370e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
370f0 20 20 78 52 6f 6c 6c 62 61 63 6b 29 3b 0d 0a 0d    xRollback);...
37100 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
37110 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46   nativeModule.xF
37120 69 6e 64 46 75 6e 63 74 69 6f 6e 20 3d 20 6e 65  indFunction = ne
37130 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
37140 74 68 6f 64 73 2e 78 46 69 6e 64 46 75 6e 63 74  thods.xFindFunct
37150 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ion(..          
37160 20 20 20 20 20 20 20 20 20 20 78 46 69 6e 64 46            xFindF
37170 75 6e 63 74 69 6f 6e 29 3b 0d 0a 0d 0a 20 20 20  unction);....   
37180 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
37190 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d  iveModule.xRenam
371a0 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  e = new UnsafeNa
371b0 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 65 6e  tiveMethods.xRen
371c0 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ame(..          
371d0 20 20 20 20 20 20 20 20 20 20 78 52 65 6e 61 6d            xRenam
371e0 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
371f0 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
37200 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74 20 3d  ule.xSavepoint =
37210 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
37220 65 4d 65 74 68 6f 64 73 2e 78 53 61 76 65 70 6f  eMethods.xSavepo
37230 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  int(..          
37240 20 20 20 20 20 20 20 20 20 20 78 53 61 76 65 70            xSavep
37250 6f 69 6e 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  oint);....      
37260 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
37270 4d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73 65 20  Module.xRelease 
37280 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
37290 76 65 4d 65 74 68 6f 64 73 2e 78 52 65 6c 65 61  veMethods.xRelea
372a0 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se(..           
372b0 20 20 20 20 20 20 20 20 20 78 52 65 6c 65 61 73           xReleas
372c0 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
372d0 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
372e0 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 20  ule.xRollbackTo 
372f0 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
37300 76 65 4d 65 74 68 6f 64 73 2e 78 52 6f 6c 6c 62  veMethods.xRollb
37310 61 63 6b 54 6f 28 0d 0a 20 20 20 20 20 20 20 20  ackTo(..        
37320 20 20 20 20 20 20 20 20 20 20 20 20 78 52 6f 6c              xRol
37330 6c 62 61 63 6b 54 6f 29 3b 0d 0a 20 20 20 20 20  lbackTo);..     
37340 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
37350 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
37360 61 74 69 76 65 4d 6f 64 75 6c 65 3b 0d 0a 20 20  ativeModule;..  
37370 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
37380 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
37390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
373a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
373b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
373c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
373d0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
373e0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
373f0 20 43 72 65 61 74 65 73 20 61 20 63 6f 70 79 20   Creates a copy 
37400 6f 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64  of the specified
37410 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
37420 65 65 20 63 72 65 66 3d 22 55 6e 73 61 66 65 4e  ee cref="UnsafeN
37430 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
37440 69 74 65 33 5f 6d 6f 64 75 6c 65 22 20 2f 3e 20  ite3_module" /> 
37450 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2c  object instance,
37460 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 75 73  ..        /// us
37470 69 6e 67 20 64 65 66 61 75 6c 74 20 69 6d 70 6c  ing default impl
37480 65 6d 65 6e 74 61 74 69 6f 6e 73 20 66 6f 72 20  ementations for 
37490 74 68 65 20 63 6f 6e 74 61 69 6e 65 64 20 64 65  the contained de
374a0 6c 65 67 61 74 65 73 20 77 68 65 6e 0d 0a 20 20  legates when..  
374b0 20 20 20 20 20 20 2f 2f 2f 20 6e 65 63 65 73 73        /// necess
374c0 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary...        //
374d0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
374e0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
374f0 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d   name="module">.
37500 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
37510 20 3c 73 65 65 20 63 72 65 66 3d 22 55 6e 73 61   <see cref="Unsa
37520 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
37530 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 22 20  sqlite3_module" 
37540 2f 3e 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20  /> object..     
37550 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 20     /// instance 
37560 74 6f 20 63 6f 70 79 2e 0d 0a 20 20 20 20 20 20  to copy...      
37570 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
37580 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
37590 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
375a0 2f 2f 20 54 68 65 20 6e 65 77 20 3c 73 65 65 20  // The new <see 
375b0 63 72 65 66 3d 22 55 6e 73 61 66 65 4e 61 74 69  cref="UnsafeNati
375c0 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
375d0 33 5f 6d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a  3_module" /> obj
375e0 65 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ect..        ///
375f0 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20   instance...    
37600 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
37610 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  s>..        priv
37620 61 74 65 20 55 6e 73 61 66 65 4e 61 74 69 76 65  ate UnsafeNative
37630 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
37640 6d 6f 64 75 6c 65 20 43 6f 70 79 4e 61 74 69 76  module CopyNativ
37650 65 4d 6f 64 75 6c 65 28 0d 0a 20 20 20 20 20 20  eModule(..      
37660 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69        UnsafeNati
37670 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
37680 33 5f 6d 6f 64 75 6c 65 20 6d 6f 64 75 6c 65 0d  3_module module.
37690 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
376a0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
376b0 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74         UnsafeNat
376c0 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
376d0 65 33 5f 6d 6f 64 75 6c 65 20 6e 65 77 4d 6f 64  e3_module newMod
376e0 75 6c 65 20 3d 0d 0a 20 20 20 20 20 20 20 20 20  ule =..         
376f0 20 20 20 20 20 20 20 6e 65 77 20 55 6e 73 61 66         new Unsaf
37700 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
37710 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 28 29 3b  qlite3_module();
37720 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
37730 6e 65 77 4d 6f 64 75 6c 65 2e 69 56 65 72 73 69  newModule.iVersi
37740 6f 6e 20 3d 20 6d 6f 64 75 6c 65 2e 69 56 65 72  on = module.iVer
37750 73 69 6f 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  sion;....       
37760 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78       newModule.x
37770 43 72 65 61 74 65 20 3d 20 6e 65 77 20 55 6e 73  Create = new Uns
37780 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
37790 2e 78 43 72 65 61 74 65 28 0d 0a 20 20 20 20 20  .xCreate(..     
377a0 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75             (modu
377b0 6c 65 2e 78 43 72 65 61 74 65 20 21 3d 20 6e 75  le.xCreate != nu
377c0 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 43 72  ll) ? module.xCr
377d0 65 61 74 65 20 3a 20 78 43 72 65 61 74 65 29 3b  eate : xCreate);
377e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
377f0 6e 65 77 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65  newModule.xConne
37800 63 74 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  ct = new UnsafeN
37810 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 43 6f  ativeMethods.xCo
37820 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20  nnect(..        
37830 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e          (module.
37840 78 43 6f 6e 6e 65 63 74 20 21 3d 20 6e 75 6c 6c  xConnect != null
37850 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 43 6f 6e 6e  ) ? module.xConn
37860 65 63 74 20 3a 20 78 43 6f 6e 6e 65 63 74 29 3b  ect : xConnect);
37870 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
37880 6e 65 77 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49  newModule.xBestI
37890 6e 64 65 78 20 3d 20 6e 65 77 20 55 6e 73 61 66  ndex = new Unsaf
378a0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
378b0 42 65 73 74 49 6e 64 65 78 28 0d 0a 20 20 20 20  BestIndex(..    
378c0 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64              (mod
378d0 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 20 21  ule.xBestIndex !
378e0 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65  = null) ? module
378f0 2e 78 42 65 73 74 49 6e 64 65 78 20 3a 20 78 42  .xBestIndex : xB
37900 65 73 74 49 6e 64 65 78 29 3b 0d 0a 0d 0a 20 20  estIndex);....  
37910 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64            newMod
37920 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 20  ule.xDisconnect 
37930 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
37940 76 65 4d 65 74 68 6f 64 73 2e 78 44 69 73 63 6f  veMethods.xDisco
37950 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20  nnect(..        
37960 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e          (module.
37970 78 44 69 73 63 6f 6e 6e 65 63 74 20 21 3d 20 6e  xDisconnect != n
37980 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 44  ull) ? module.xD
37990 69 73 63 6f 6e 6e 65 63 74 20 3a 0d 0a 20 20 20  isconnect :..   
379a0 20 20 20 20 20 20 20 20 20 20 20 20 20 78 44 69               xDi
379b0 73 63 6f 6e 6e 65 63 74 29 3b 0d 0a 0d 0a 20 20  sconnect);....  
379c0 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64            newMod
379d0 75 6c 65 2e 78 44 65 73 74 72 6f 79 20 3d 20 6e  ule.xDestroy = n
379e0 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
379f0 65 74 68 6f 64 73 2e 78 44 65 73 74 72 6f 79 28  ethods.xDestroy(
37a00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
37a10 20 20 28 6d 6f 64 75 6c 65 2e 78 44 65 73 74 72    (module.xDestr
37a20 6f 79 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f  oy != null) ? mo
37a30 64 75 6c 65 2e 78 44 65 73 74 72 6f 79 20 3a 20  dule.xDestroy : 
37a40 78 44 65 73 74 72 6f 79 29 3b 0d 0a 0d 0a 20 20  xDestroy);....  
37a50 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64            newMod
37a60 75 6c 65 2e 78 4f 70 65 6e 20 3d 20 6e 65 77 20  ule.xOpen = new 
37a70 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
37a80 6f 64 73 2e 78 4f 70 65 6e 28 0d 0a 20 20 20 20  ods.xOpen(..    
37a90 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64              (mod
37aa0 75 6c 65 2e 78 4f 70 65 6e 20 21 3d 20 6e 75 6c  ule.xOpen != nul
37ab0 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 4f 70 65  l) ? module.xOpe
37ac0 6e 20 3a 20 78 4f 70 65 6e 29 3b 0d 0a 0d 0a 20  n : xOpen);.... 
37ad0 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f             newMo
37ae0 64 75 6c 65 2e 78 43 6c 6f 73 65 20 3d 20 6e 65  dule.xClose = ne
37af0 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
37b00 74 68 6f 64 73 2e 78 43 6c 6f 73 65 28 0d 0a 20  thods.xClose(.. 
37b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
37b20 6d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 20 21 3d  module.xClose !=
37b30 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e   null) ? module.
37b40 78 43 6c 6f 73 65 20 3a 20 78 43 6c 6f 73 65 29  xClose : xClose)
37b50 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
37b60 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 46 69 6c 74   newModule.xFilt
37b70 65 72 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  er = new UnsafeN
37b80 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 46 69  ativeMethods.xFi
37b90 6c 74 65 72 28 0d 0a 20 20 20 20 20 20 20 20 20  lter(..         
37ba0 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78         (module.x
37bb0 46 69 6c 74 65 72 20 21 3d 20 6e 75 6c 6c 29 20  Filter != null) 
37bc0 3f 20 6d 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72  ? module.xFilter
37bd0 20 3a 20 78 46 69 6c 74 65 72 29 3b 0d 0a 0d 0a   : xFilter);....
37be0 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d              newM
37bf0 6f 64 75 6c 65 2e 78 4e 65 78 74 20 3d 20 6e 65  odule.xNext = ne
37c00 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
37c10 74 68 6f 64 73 2e 78 4e 65 78 74 28 0d 0a 20 20  thods.xNext(..  
37c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d                (m
37c30 6f 64 75 6c 65 2e 78 4e 65 78 74 20 21 3d 20 6e  odule.xNext != n
37c40 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 4e  ull) ? module.xN
37c50 65 78 74 20 3a 20 78 4e 65 78 74 29 3b 0d 0a 0d  ext : xNext);...
37c60 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
37c70 4d 6f 64 75 6c 65 2e 78 45 6f 66 20 3d 20 6e 65  Module.xEof = ne
37c80 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
37c90 74 68 6f 64 73 2e 78 45 6f 66 28 0d 0a 20 20 20  thods.xEof(..   
37ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f               (mo
37cb0 64 75 6c 65 2e 78 45 6f 66 20 21 3d 20 6e 75 6c  dule.xEof != nul
37cc0 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 45 6f 66  l) ? module.xEof
37cd0 20 3a 20 78 45 6f 66 29 3b 0d 0a 0d 0a 20 20 20   : xEof);....   
37ce0 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75           newModu
37cf0 6c 65 2e 78 43 6f 6c 75 6d 6e 20 3d 20 6e 65 77  le.xColumn = new
37d00 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
37d10 68 6f 64 73 2e 78 43 6f 6c 75 6d 6e 28 0d 0a 20  hods.xColumn(.. 
37d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
37d30 6d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 20 21  module.xColumn !
37d40 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65  = null) ? module
37d50 2e 78 43 6f 6c 75 6d 6e 20 3a 20 78 43 6f 6c 75  .xColumn : xColu
37d60 6d 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  mn);....        
37d70 20 20 20 20 6e 65 77