System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 67abc3e1adada7ceda043970d3aeb155b5cbca07:


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 39 30 30  mber() >= 300900
8b80: 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  0)..            
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 54 68 69 73 20 70 72 6f 70 65 72 74  /// This propert
97f0: 79 20 68 61 73 20 6e 6f 20 65 66 66 65 63 74 20  y has no effect 
9800: 69 66 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  if the SQLite co
9810: 72 65 20 6c 69 62 72 61 72 79 20 69 73 20 6e 6f  re library is no
9820: 74 20 61 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f  t at..        //
9830: 2f 20 6c 65 61 73 74 20 76 65 72 73 69 6f 6e 20  / least version 
9840: 33 2e 38 2e 32 2e 0d 0a 20 20 20 20 20 20 20 20  3.8.2...        
9850: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
9860: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6c          public l
9870: 6f 6e 67 3f 20 45 73 74 69 6d 61 74 65 64 52 6f  ong? EstimatedRo
9880: 77 73 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ws..        {.. 
9890: 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
98a0: 20 72 65 74 75 72 6e 20 65 73 74 69 6d 61 74 65   return estimate
98b0: 64 52 6f 77 73 3b 20 7d 0d 0a 20 20 20 20 20 20  dRows; }..      
98c0: 20 20 20 20 20 20 73 65 74 20 7b 20 65 73 74 69        set { esti
98d0: 6d 61 74 65 64 52 6f 77 73 20 3d 20 76 61 6c 75  matedRows = valu
98e0: 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d  e; }..        }.
98f0: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
9900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9940: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
9950: 69 76 61 74 65 20 53 51 4c 69 74 65 49 6e 64 65  ivate SQLiteInde
9960: 78 46 6c 61 67 73 3f 20 69 64 78 46 6c 61 67 73  xFlags? idxFlags
9970: 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ;..        /// <
9980: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
9990: 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61 67 73 20    /// The flags 
99a0: 74 68 61 74 20 73 68 6f 75 6c 64 20 62 65 20 75  that should be u
99b0: 73 65 64 20 77 69 74 68 20 74 68 69 73 20 69 6e  sed with this in
99c0: 64 65 78 2e 20 20 55 73 69 6e 67 20 61 20 6e 75  dex.  Using a nu
99d0: 6c 6c 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20  ll value..      
99e0: 20 20 2f 2f 2f 20 68 65 72 65 20 69 6e 64 69 63    /// here indic
99f0: 61 74 65 73 20 74 68 61 74 20 61 20 64 65 66 61  ates that a defa
9a00: 75 6c 74 20 66 6c 61 67 73 20 76 61 6c 75 65 20  ult flags value 
9a10: 73 68 6f 75 6c 64 20 62 65 20 75 73 65 64 2e 20  should be used. 
9a20: 20 54 68 69 73 0d 0a 20 20 20 20 20 20 20 20 2f   This..        /
9a30: 2f 2f 20 70 72 6f 70 65 72 74 79 20 68 61 73 20  // property has 
9a40: 6e 6f 20 65 66 66 65 63 74 20 69 66 20 74 68 65  no effect if the
9a50: 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62   SQLite core lib
9a60: 72 61 72 79 20 69 73 20 6e 6f 74 20 61 74 20 6c  rary is not at l
9a70: 65 61 73 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f  east..        //
9a80: 2f 20 76 65 72 73 69 6f 6e 20 33 2e 39 2e 30 2e  / version 3.9.0.
9a90: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
9aa0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
9ab0: 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 49    public SQLiteI
9ac0: 6e 64 65 78 46 6c 61 67 73 3f 20 49 64 78 46 6c  ndexFlags? IdxFl
9ad0: 61 67 73 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ags..        {..
9ae0: 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
9af0: 7b 20 72 65 74 75 72 6e 20 69 64 78 46 6c 61 67  { return idxFlag
9b00: 73 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  s; }..          
9b10: 20 20 73 65 74 20 7b 20 69 64 78 46 6c 61 67 73    set { idxFlags
9b20: 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20   = value; }..   
9b30: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
9b40: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20  #endregion..    
9b50: 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  }..    #endregio
9b60: 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  n....    ///////
9b70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9b80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9bb0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
9bc0: 69 6f 6e 20 53 51 4c 69 74 65 49 6e 64 65 78 20  ion SQLiteIndex 
9bd0: 48 65 6c 70 65 72 20 43 6c 61 73 73 0d 0a 20 20  Helper Class..  
9be0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
9bf0: 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c  .    /// This cl
9c00: 61 73 73 20 72 65 70 72 65 73 65 6e 74 73 20 74  ass represents t
9c10: 68 65 20 76 61 72 69 6f 75 73 20 69 6e 70 75 74  he various input
9c20: 73 20 61 6e 64 20 6f 75 74 70 75 74 73 20 75 73  s and outputs us
9c30: 65 64 20 77 69 74 68 20 74 68 65 0d 0a 20 20 20  ed with the..   
9c40: 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
9c50: 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f  ISQLiteManagedMo
9c60: 64 75 6c 65 2e 42 65 73 74 49 6e 64 65 78 22 20  dule.BestIndex" 
9c70: 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
9c80: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
9c90: 20 20 20 20 70 75 62 6c 69 63 20 73 65 61 6c 65      public seale
9ca0: 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 49 6e  d class SQLiteIn
9cb0: 64 65 78 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  dex..    {..    
9cc0: 20 20 20 20 23 72 65 67 69 6f 6e 20 49 6e 74 65      #region Inte
9cd0: 72 6e 61 6c 20 43 6f 6e 73 74 72 75 63 74 6f 72  rnal Constructor
9ce0: 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
9cf0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
9d00: 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73    /// Constructs
9d10: 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20   an instance of 
9d20: 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20  this class...   
9d30: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
9d40: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
9d50: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 43   <param name="nC
9d60: 6f 6e 73 74 72 61 69 6e 74 22 3e 0d 0a 20 20 20  onstraint">..   
9d70: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d       /// The num
9d80: 62 65 72 20 6f 66 20 3c 73 65 65 20 63 72 65 66  ber of <see cref
9d90: 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e  ="SQLiteIndexCon
9da0: 73 74 72 61 69 6e 74 22 20 2f 3e 20 28 61 6e 64  straint" /> (and
9db0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
9dc0: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49  ee cref="SQLiteI
9dd0: 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55 73  ndexConstraintUs
9de0: 61 67 65 22 20 2f 3e 29 20 69 6e 73 74 61 6e 63  age" />) instanc
9df0: 65 73 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f  es to..        /
9e00: 2f 2f 20 70 72 65 2d 61 6c 6c 6f 63 61 74 65 20  // pre-allocate 
9e10: 73 70 61 63 65 20 66 6f 72 2e 0d 0a 20 20 20 20  space for...    
9e20: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
9e30: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
9e40: 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 4f 72 64 65  aram name="nOrde
9e50: 72 42 79 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  rBy">..        /
9e60: 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66  // The number of
9e70: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
9e80: 74 65 49 6e 64 65 78 4f 72 64 65 72 42 79 22 20  teIndexOrderBy" 
9e90: 2f 3e 20 69 6e 73 74 61 6e 63 65 73 20 74 6f 0d  /> instances to.
9ea0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 72 65  .        /// pre
9eb0: 2d 61 6c 6c 6f 63 61 74 65 20 73 70 61 63 65 20  -allocate space 
9ec0: 66 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  for...        //
9ed0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
9ee0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c      internal SQL
9ef0: 69 74 65 49 6e 64 65 78 28 0d 0a 20 20 20 20 20  iteIndex(..     
9f00: 20 20 20 20 20 20 20 69 6e 74 20 6e 43 6f 6e 73         int nCons
9f10: 74 72 61 69 6e 74 2c 0d 0a 20 20 20 20 20 20 20  traint,..       
9f20: 20 20 20 20 20 69 6e 74 20 6e 4f 72 64 65 72 42       int nOrderB
9f30: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  y..            )
9f40: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
9f50: 20 20 20 20 20 20 20 20 20 69 6e 70 75 74 73 20           inputs 
9f60: 3d 20 6e 65 77 20 53 51 4c 69 74 65 49 6e 64 65  = new SQLiteInde
9f70: 78 49 6e 70 75 74 73 28 6e 43 6f 6e 73 74 72 61  xInputs(nConstra
9f80: 69 6e 74 2c 20 6e 4f 72 64 65 72 42 79 29 3b 0d  int, nOrderBy);.
9f90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 75 74  .            out
9fa0: 70 75 74 73 20 3d 20 6e 65 77 20 53 51 4c 69 74  puts = new SQLit
9fb0: 65 49 6e 64 65 78 4f 75 74 70 75 74 73 28 6e 43  eIndexOutputs(nC
9fc0: 6f 6e 73 74 72 61 69 6e 74 29 3b 0d 0a 20 20 20  onstraint);..   
9fd0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
9fe0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
9ff0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
a000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
a040: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
a050: 20 49 6e 74 65 72 6e 61 6c 20 4d 61 72 73 68 61   Internal Marsha
a060: 6c 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73  l Helper Methods
a070: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
a080: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
a090: 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20   /// Converts a 
a0a0: 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
a0b0: 6f 20 61 20 6e 61 74 69 76 65 20 73 71 6c 69 74  o a native sqlit
a0c0: 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 20 73 74  e3_index_info st
a0d0: 72 75 63 74 75 72 65 0d 0a 20 20 20 20 20 20 20  ructure..       
a0e0: 20 2f 2f 2f 20 69 6e 74 6f 20 61 20 6e 65 77 20   /// into a new 
a0f0: 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
a100: 65 49 6e 64 65 78 22 20 2f 3e 20 6f 62 6a 65 63  eIndex" /> objec
a110: 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  t instance...   
a120: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
a130: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
a140: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 49   <param name="pI
a150: 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20 20 20 20  ndex">..        
a160: 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70  /// The native p
a170: 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 6e 61  ointer to the na
a180: 74 69 76 65 20 73 71 6c 69 74 65 33 5f 69 6e 64  tive sqlite3_ind
a190: 65 78 5f 69 6e 66 6f 20 73 74 72 75 63 74 75 72  ex_info structur
a1a0: 65 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f  e to..        //
a1b0: 2f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20  / convert...    
a1c0: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
a1d0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
a1e0: 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78  aram name="index
a1f0: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
a200: 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68  Upon success, th
a210: 69 73 20 70 61 72 61 6d 65 74 65 72 20 77 69 6c  is parameter wil
a220: 6c 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f  l be modified to
a230: 20 63 6f 6e 74 61 69 6e 20 74 68 65 20 6e 65 77   contain the new
a240: 6c 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ly..        /// 
a250: 63 72 65 61 74 65 64 20 3c 73 65 65 20 63 72 65  created <see cre
a260: 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 22 20  f="SQLiteIndex" 
a270: 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
a280: 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ce...        ///
a290: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
a2a0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
a2b0: 69 63 20 76 6f 69 64 20 46 72 6f 6d 49 6e 74 50  ic void FromIntP
a2c0: 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tr(..           
a2d0: 20 49 6e 74 50 74 72 20 70 49 6e 64 65 78 2c 0d   IntPtr pIndex,.
a2e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66  .            ref
a2f0: 20 53 51 4c 69 74 65 49 6e 64 65 78 20 69 6e 64   SQLiteIndex ind
a300: 65 78 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ex..            
a310: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
a320: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 49            if (pI
a330: 6e 64 65 78 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  ndex == IntPtr.Z
a340: 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
a350: 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d        return;...
a360: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
a370: 20 6f 66 66 73 65 74 20 3d 20 30 3b 0d 0a 0d 0a   offset = 0;....
a380: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
a390: 6e 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20 53 51  nConstraint = SQ
a3a0: 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64  LiteMarshal.Read
a3b0: 49 6e 74 33 32 28 70 49 6e 64 65 78 2c 20 6f 66  Int32(pIndex, of
a3c0: 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  fset);....      
a3d0: 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53        offset = S
a3e0: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78  QLiteMarshal.Nex
a3f0: 74 4f 66 66 73 65 74 4f 66 28 6f 66 66 73 65 74  tOffsetOf(offset
a400: 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c 0d 0a  , sizeof(int),..
a410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a420: 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d  IntPtr.Size);...
a430: 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
a440: 50 74 72 20 70 43 6f 6e 73 74 72 61 69 6e 74 20  Ptr pConstraint 
a450: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
a460: 52 65 61 64 49 6e 74 50 74 72 28 70 49 6e 64 65  ReadIntPtr(pInde
a470: 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20  x, offset);.... 
a480: 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
a490: 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61  t = SQLiteMarsha
a4a0: 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 6f  l.NextOffsetOf(o
a4b0: 66 66 73 65 74 2c 20 49 6e 74 50 74 72 2e 53 69  ffset, IntPtr.Si
a4c0: 7a 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ze,..           
a4d0: 20 20 20 20 20 73 69 7a 65 6f 66 28 69 6e 74 29       sizeof(int)
a4e0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
a4f0: 20 20 69 6e 74 20 6e 4f 72 64 65 72 42 79 20 3d    int nOrderBy =
a500: 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52   SQLiteMarshal.R
a510: 65 61 64 49 6e 74 33 32 28 70 49 6e 64 65 78 2c  eadInt32(pIndex,
a520: 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20   offset);....   
a530: 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20           offset 
a540: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
a550: 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 6f 66 66  NextOffsetOf(off
a560: 73 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29  set, sizeof(int)
a570: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
a580: 20 20 20 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b     IntPtr.Size);
a590: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
a5a0: 49 6e 74 50 74 72 20 70 4f 72 64 65 72 42 79 20  IntPtr pOrderBy 
a5b0: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
a5c0: 52 65 61 64 49 6e 74 50 74 72 28 70 49 6e 64 65  ReadIntPtr(pInde
a5d0: 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20  x, offset);.... 
a5e0: 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 65 78             index
a5f0: 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 49 6e 64   = new SQLiteInd
a600: 65 78 28 6e 43 6f 6e 73 74 72 61 69 6e 74 2c 20  ex(nConstraint, 
a610: 6e 4f 72 64 65 72 42 79 29 3b 0d 0a 0d 0a 20 20  nOrderBy);....  
a620: 20 20 20 20 20 20 20 20 20 20 54 79 70 65 20 69            Type i
a630: 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 54 79  ndexConstraintTy
a640: 70 65 20 3d 20 74 79 70 65 6f 66 28 0d 0a 20 20  pe = typeof(..  
a650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e                Un
a660: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
a670: 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  s.sqlite3_index_
a680: 63 6f 6e 73 74 72 61 69 6e 74 29 3b 0d 0a 0d 0a  constraint);....
a690: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
a6a0: 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74  sizeOfConstraint
a6b0: 54 79 70 65 20 3d 20 4d 61 72 73 68 61 6c 2e 53  Type = Marshal.S
a6c0: 69 7a 65 4f 66 28 69 6e 64 65 78 43 6f 6e 73 74  izeOf(indexConst
a6d0: 72 61 69 6e 74 54 79 70 65 29 3b 0d 0a 0d 0a 20  raintType);.... 
a6e0: 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28             for (
a6f0: 69 6e 74 20 69 43 6f 6e 73 74 72 61 69 6e 74 20  int iConstraint 
a700: 3d 20 30 3b 20 69 43 6f 6e 73 74 72 61 69 6e 74  = 0; iConstraint
a710: 20 3c 20 6e 43 6f 6e 73 74 72 61 69 6e 74 3b 20   < nConstraint; 
a720: 69 43 6f 6e 73 74 72 61 69 6e 74 2b 2b 29 0d 0a  iConstraint++)..
a730: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
a740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
a750: 6e 74 50 74 72 20 70 4f 66 66 73 65 74 20 3d 20  ntPtr pOffset = 
a760: 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 49 6e  SQLiteMarshal.In
a770: 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28 0d 0a  tPtrForOffset(..
a780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a790: 20 20 20 20 70 43 6f 6e 73 74 72 61 69 6e 74 2c      pConstraint,
a7a0: 20 69 43 6f 6e 73 74 72 61 69 6e 74 20 2a 20 73   iConstraint * s
a7b0: 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 54  izeOfConstraintT
a7c0: 79 70 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ype);....       
a7d0: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
a7e0: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
a7f0: 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74  ite3_index_const
a800: 72 61 69 6e 74 20 63 6f 6e 73 74 72 61 69 6e 74  raint constraint
a810: 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   =..            
a820: 20 20 20 20 20 20 20 20 28 55 6e 73 61 66 65 4e          (UnsafeN
a830: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
a840: 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74  ite3_index_const
a850: 72 61 69 6e 74 29 0d 0a 20 20 20 20 20 20 20 20  raint)..        
a860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a870: 4d 61 72 73 68 61 6c 2e 50 74 72 54 6f 53 74 72  Marshal.PtrToStr
a880: 75 63 74 75 72 65 28 70 4f 66 66 73 65 74 2c 20  ucture(pOffset, 
a890: 69 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 54  indexConstraintT
a8a0: 79 70 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ype);....       
a8b0: 20 20 20 20 20 20 20 20 20 69 6e 64 65 78 2e 49           index.I
a8c0: 6e 70 75 74 73 2e 43 6f 6e 73 74 72 61 69 6e 74  nputs.Constraint
a8d0: 73 5b 69 43 6f 6e 73 74 72 61 69 6e 74 5d 20 3d  s[iConstraint] =
a8e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a8f0: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
a900: 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 28  IndexConstraint(
a910: 63 6f 6e 73 74 72 61 69 6e 74 29 3b 0d 0a 20 20  constraint);..  
a920: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
a930: 20 20 20 20 20 20 20 20 20 20 20 54 79 70 65 20             Type 
a940: 69 6e 64 65 78 4f 72 64 65 72 42 79 54 79 70 65  indexOrderByType
a950: 20 3d 20 74 79 70 65 6f 66 28 0d 0a 20 20 20 20   = typeof(..    
a960: 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
a970: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
a980: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72  sqlite3_index_or
a990: 64 65 72 62 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  derby);....     
a9a0: 20 20 20 20 20 20 20 69 6e 74 20 73 69 7a 65 4f         int sizeO
a9b0: 66 4f 72 64 65 72 42 79 54 79 70 65 20 3d 20 4d  fOrderByType = M
a9c0: 61 72 73 68 61 6c 2e 53 69 7a 65 4f 66 28 69 6e  arshal.SizeOf(in
a9d0: 64 65 78 4f 72 64 65 72 42 79 54 79 70 65 29 3b  dexOrderByType);
a9e0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
a9f0: 66 6f 72 20 28 69 6e 74 20 69 4f 72 64 65 72 42  for (int iOrderB
aa00: 79 20 3d 20 30 3b 20 69 4f 72 64 65 72 42 79 20  y = 0; iOrderBy 
aa10: 3c 20 6e 4f 72 64 65 72 42 79 3b 20 69 4f 72 64  < nOrderBy; iOrd
aa20: 65 72 42 79 2b 2b 29 0d 0a 20 20 20 20 20 20 20  erBy++)..       
aa30: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
aa40: 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
aa50: 4f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d  Offset = SQLiteM
aa60: 61 72 73 68 61 6c 2e 49 6e 74 50 74 72 46 6f 72  arshal.IntPtrFor
aa70: 4f 66 66 73 65 74 28 0d 0a 20 20 20 20 20 20 20  Offset(..       
aa80: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 4f 72               pOr
aa90: 64 65 72 42 79 2c 20 69 4f 72 64 65 72 42 79 20  derBy, iOrderBy 
aaa0: 2a 20 73 69 7a 65 4f 66 4f 72 64 65 72 42 79 54  * sizeOfOrderByT
aab0: 79 70 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ype);....       
aac0: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
aad0: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
aae0: 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72  ite3_index_order
aaf0: 62 79 20 6f 72 64 65 72 42 79 20 3d 0d 0a 20 20  by orderBy =..  
ab00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ab10: 20 20 28 55 6e 73 61 66 65 4e 61 74 69 76 65 4d    (UnsafeNativeM
ab20: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69  ethods.sqlite3_i
ab30: 6e 64 65 78 5f 6f 72 64 65 72 62 79 29 0d 0a 20  ndex_orderby).. 
ab40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ab50: 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 50         Marshal.P
ab60: 74 72 54 6f 53 74 72 75 63 74 75 72 65 28 70 4f  trToStructure(pO
ab70: 66 66 73 65 74 2c 20 69 6e 64 65 78 4f 72 64 65  ffset, indexOrde
ab80: 72 42 79 54 79 70 65 29 3b 0d 0a 0d 0a 20 20 20  rByType);....   
ab90: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 64               ind
aba0: 65 78 2e 49 6e 70 75 74 73 2e 4f 72 64 65 72 42  ex.Inputs.OrderB
abb0: 79 73 5b 69 4f 72 64 65 72 42 79 5d 20 3d 0d 0a  ys[iOrderBy] =..
abc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
abd0: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 49 6e      new SQLiteIn
abe0: 64 65 78 4f 72 64 65 72 42 79 28 6f 72 64 65 72  dexOrderBy(order
abf0: 42 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  By);..          
ac00: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
ac10: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
ac20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ac30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ac40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ac50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ac60: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
ac70: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
ac80: 20 20 20 20 2f 2f 2f 20 50 6f 70 75 6c 61 74 65      /// Populate
ac90: 73 20 74 68 65 20 6f 75 74 70 75 74 73 20 6f 66  s the outputs of
aca0: 20 61 20 70 72 65 2d 61 6c 6c 6f 63 61 74 65 64   a pre-allocated
acb0: 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f   native sqlite3_
acc0: 69 6e 64 65 78 5f 69 6e 66 6f 0d 0a 20 20 20 20  index_info..    
acd0: 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72      /// structur
ace0: 65 20 75 73 69 6e 67 20 61 6e 20 65 78 69 73 74  e using an exist
acf0: 69 6e 67 20 3c 73 65 65 20 63 72 65 66 3d 22 53  ing <see cref="S
ad00: 51 4c 69 74 65 49 6e 64 65 78 22 20 2f 3e 20 6f  QLiteIndex" /> o
ad10: 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20 2f  bject..        /
ad20: 2f 2f 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20  // instance...  
ad30: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
ad40: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
ad50: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69  / <param name="i
ad60: 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20 20 20 20  ndex">..        
ad70: 2f 2f 2f 20 54 68 65 20 65 78 69 73 74 69 6e 67  /// The existing
ad80: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
ad90: 74 65 49 6e 64 65 78 22 20 2f 3e 20 6f 62 6a 65  teIndex" /> obje
ada0: 63 74 20 69 6e 73 74 61 6e 63 65 20 63 6f 6e 74  ct instance cont
adb0: 61 69 6e 69 6e 67 0d 0a 20 20 20 20 20 20 20 20  aining..        
adc0: 2f 2f 2f 20 74 68 65 20 6f 75 74 70 75 74 20 64  /// the output d
add0: 61 74 61 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20  ata to use...   
ade0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
adf0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
ae00: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 49 6e 64  param name="pInd
ae10: 65 78 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ex">..        //
ae20: 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69  / The native poi
ae30: 6e 74 65 72 20 74 6f 20 74 68 65 20 70 72 65 2d  nter to the pre-
ae40: 61 6c 6c 6f 63 61 74 65 64 20 6e 61 74 69 76 65  allocated native
ae50: 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69   sqlite3_index_i
ae60: 6e 66 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  nfo..        ///
ae70: 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
ae80: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
ae90: 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72  >..        inter
aea0: 6e 61 6c 20 73 74 61 74 69 63 20 76 6f 69 64 20  nal static void 
aeb0: 54 6f 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20  ToIntPtr(..     
aec0: 20 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64         SQLiteInd
aed0: 65 78 20 69 6e 64 65 78 2c 0d 0a 20 20 20 20 20  ex index,..     
aee0: 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 49         IntPtr pI
aef0: 6e 64 65 78 0d 0a 20 20 20 20 20 20 20 20 20 20  ndex..          
af00: 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
af10: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
af20: 28 69 6e 64 65 78 20 3d 3d 20 6e 75 6c 6c 29 20  (index == null) 
af30: 7c 7c 20 28 69 6e 64 65 78 2e 49 6e 70 75 74 73  || (index.Inputs
af40: 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 0d 0a 20 20   == null) ||..  
af50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69                (i
af60: 6e 64 65 78 2e 49 6e 70 75 74 73 2e 43 6f 6e 73  ndex.Inputs.Cons
af70: 74 72 61 69 6e 74 73 20 3d 3d 20 6e 75 6c 6c 29  traints == null)
af80: 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20   ||..           
af90: 20 20 20 20 20 28 69 6e 64 65 78 2e 4f 75 74 70       (index.Outp
afa0: 75 74 73 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 0d  uts == null) ||.
afb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
afc0: 20 28 69 6e 64 65 78 2e 4f 75 74 70 75 74 73 2e   (index.Outputs.
afd0: 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 73  ConstraintUsages
afe0: 20 3d 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20   == null))..    
aff0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
b000: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
b010: 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n;..            
b020: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
b030: 20 69 66 20 28 70 49 6e 64 65 78 20 3d 3d 20 49   if (pIndex == I
b040: 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
b050: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
b060: 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  urn;....        
b070: 20 20 20 20 69 6e 74 20 6f 66 66 73 65 74 20 3d      int offset =
b080: 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   0;....         
b090: 20 20 20 69 6e 74 20 6e 43 6f 6e 73 74 72 61 69     int nConstrai
b0a0: 6e 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  nt = SQLiteMarsh
b0b0: 61 6c 2e 52 65 61 64 49 6e 74 33 32 28 70 49 6e  al.ReadInt32(pIn
b0c0: 64 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d  dex, offset);...
b0d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
b0e0: 28 6e 43 6f 6e 73 74 72 61 69 6e 74 20 21 3d 20  (nConstraint != 
b0f0: 69 6e 64 65 78 2e 49 6e 70 75 74 73 2e 43 6f 6e  index.Inputs.Con
b100: 73 74 72 61 69 6e 74 73 2e 4c 65 6e 67 74 68 29  straints.Length)
b110: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b120: 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20    return;....   
b130: 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 43 6f           if (nCo
b140: 6e 73 74 72 61 69 6e 74 20 21 3d 20 69 6e 64 65  nstraint != inde
b150: 78 2e 4f 75 74 70 75 74 73 2e 43 6f 6e 73 74 72  x.Outputs.Constr
b160: 61 69 6e 74 55 73 61 67 65 73 2e 4c 65 6e 67 74  aintUsages.Lengt
b170: 68 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  h)..            
b180: 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20      return;.... 
b190: 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
b1a0: 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61  t = SQLiteMarsha
b1b0: 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 6f  l.NextOffsetOf(o
b1c0: 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e  ffset, sizeof(in
b1d0: 74 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t),..           
b1e0: 20 20 20 20 20 49 6e 74 50 74 72 2e 53 69 7a 65       IntPtr.Size
b1f0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
b200: 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74    offset = SQLit
b210: 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66  eMarshal.NextOff
b220: 73 65 74 4f 66 28 6f 66 66 73 65 74 2c 20 49 6e  setOf(offset, In
b230: 74 50 74 72 2e 53 69 7a 65 2c 0d 0a 20 20 20 20  tPtr.Size,..    
b240: 20 20 20 20 20 20 20 20 20 20 20 20 73 69 7a 65              size
b250: 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20  of(int));....   
b260: 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20           offset 
b270: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
b280: 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 6f 66 66  NextOffsetOf(off
b290: 73 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29  set, sizeof(int)
b2a0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
b2b0: 20 20 20 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b     IntPtr.Size);
b2c0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
b2d0: 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d  offset = SQLiteM
b2e0: 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65  arshal.NextOffse
b2f0: 74 4f 66 28 6f 66 66 73 65 74 2c 20 49 6e 74 50  tOf(offset, IntP
b300: 74 72 2e 53 69 7a 65 2c 0d 0a 20 20 20 20 20 20  tr.Size,..      
b310: 20 20 20 20 20 20 20 20 20 20 73 69 7a 65 6f 66            sizeof
b320: 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  (int));....     
b330: 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
b340: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20 3d  onstraintUsage =
b350: 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52   SQLiteMarshal.R
b360: 65 61 64 49 6e 74 50 74 72 28 70 49 6e 64 65 78  eadIntPtr(pIndex
b370: 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20  , offset);....  
b380: 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 73 69            int si
b390: 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 55 73  zeOfConstraintUs
b3a0: 61 67 65 54 79 70 65 20 3d 20 4d 61 72 73 68 61  ageType = Marsha
b3b0: 6c 2e 53 69 7a 65 4f 66 28 74 79 70 65 6f 66 28  l.SizeOf(typeof(
b3c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b3d0: 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65    UnsafeNativeMe
b3e0: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e  thods.sqlite3_in
b3f0: 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75  dex_constraint_u
b400: 73 61 67 65 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  sage));....     
b410: 20 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74 20         for (int 
b420: 69 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20 30 3b  iConstraint = 0;
b430: 20 69 43 6f 6e 73 74 72 61 69 6e 74 20 3c 20 6e   iConstraint < n
b440: 43 6f 6e 73 74 72 61 69 6e 74 3b 20 69 43 6f 6e  Constraint; iCon
b450: 73 74 72 61 69 6e 74 2b 2b 29 0d 0a 20 20 20 20  straint++)..    
b460: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
b470: 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66             Unsaf
b480: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
b490: 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e  qlite3_index_con
b4a0: 73 74 72 61 69 6e 74 5f 75 73 61 67 65 20 63 6f  straint_usage co
b4b0: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20 3d 0d  nstraintUsage =.
b4c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b4d0: 20 20 20 20 20 6e 65 77 20 55 6e 73 61 66 65 4e       new UnsafeN
b4e0: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
b4f0: 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74  ite3_index_const
b500: 72 61 69 6e 74 5f 75 73 61 67 65 28 0d 0a 20 20  raint_usage(..  
b510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b520: 20 20 20 20 20 20 69 6e 64 65 78 2e 4f 75 74 70        index.Outp
b530: 75 74 73 2e 43 6f 6e 73 74 72 61 69 6e 74 55 73  uts.ConstraintUs
b540: 61 67 65 73 5b 69 43 6f 6e 73 74 72 61 69 6e 74  ages[iConstraint
b550: 5d 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ]);....         
b560: 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 53         Marshal.S
b570: 74 72 75 63 74 75 72 65 54 6f 50 74 72 28 0d 0a  tructureToPtr(..
b580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b590: 20 20 20 20 63 6f 6e 73 74 72 61 69 6e 74 55 73      constraintUs
b5a0: 61 67 65 2c 20 53 51 4c 69 74 65 4d 61 72 73 68  age, SQLiteMarsh
b5b0: 61 6c 2e 49 6e 74 50 74 72 46 6f 72 4f 66 66 73  al.IntPtrForOffs
b5c0: 65 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  et(..           
b5d0: 20 20 20 20 20 20 20 20 20 70 43 6f 6e 73 74 72           pConstr
b5e0: 61 69 6e 74 55 73 61 67 65 2c 20 69 43 6f 6e 73  aintUsage, iCons
b5f0: 74 72 61 69 6e 74 20 2a 20 73 69 7a 65 4f 66 43  traint * sizeOfC
b600: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 54 79  onstraintUsageTy
b610: 70 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  pe),..          
b620: 20 20 20 20 20 20 20 20 20 20 66 61 6c 73 65 29            false)
b630: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
b640: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
b650: 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d  offset = SQLiteM
b660: 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65  arshal.NextOffse
b670: 74 4f 66 28 6f 66 66 73 65 74 2c 20 49 6e 74 50  tOf(offset, IntP
b680: 74 72 2e 53 69 7a 65 2c 0d 0a 20 20 20 20 20 20  tr.Size,..      
b690: 20 20 20 20 20 20 20 20 20 20 73 69 7a 65 6f 66            sizeof
b6a0: 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  (int));....     
b6b0: 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72         SQLiteMar
b6c0: 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 33 32 28  shal.WriteInt32(
b6d0: 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 2c 0d  pIndex, offset,.
b6e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b6f0: 20 69 6e 64 65 78 2e 4f 75 74 70 75 74 73 2e 49   index.Outputs.I
b700: 6e 64 65 78 4e 75 6d 62 65 72 29 3b 0d 0a 0d 0a  ndexNumber);....
b710: 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
b720: 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  et = SQLiteMarsh
b730: 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28  al.NextOffsetOf(
b740: 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28 69  offset, sizeof(i
b750: 6e 74 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  nt),..          
b760: 20 20 20 20 20 20 49 6e 74 50 74 72 2e 53 69 7a        IntPtr.Siz
b770: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
b780: 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c     SQLiteMarshal
b790: 2e 57 72 69 74 65 49 6e 74 50 74 72 28 70 49 6e  .WriteIntPtr(pIn
b7a0: 64 65 78 2c 20 6f 66 66 73 65 74 2c 0d 0a 20 20  dex, offset,..  
b7b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
b7c0: 4c 69 74 65 53 74 72 69 6e 67 2e 55 74 66 38 49  LiteString.Utf8I
b7d0: 6e 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28  ntPtrFromString(
b7e0: 69 6e 64 65 78 2e 4f 75 74 70 75 74 73 2e 49 6e  index.Outputs.In
b7f0: 64 65 78 53 74 72 69 6e 67 29 29 3b 0d 0a 0d 0a  dexString));....
b800: 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
b810: 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  et = SQLiteMarsh
b820: 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28  al.NextOffsetOf(
b830: 6f 66 66 73 65 74 2c 20 49 6e 74 50 74 72 2e 53  offset, IntPtr.S
b840: 69 7a 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ize,..          
b850: 20 20 20 20 20 20 73 69 7a 65 6f 66 28 69 6e 74        sizeof(int
b860: 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ));....         
b870: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
b880: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 65 20 6a     // NOTE: We j
b890: 75 73 74 20 61 6c 6c 6f 63 61 74 65 64 20 74 68  ust allocated th
b8a0: 65 20 49 6e 64 65 78 53 74 72 69 6e 67 20 66 69  e IndexString fi
b8b0: 65 6c 64 3b 20 74 68 65 72 65 66 6f 72 65 2c 20  eld; therefore, 
b8c0: 77 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  we..            
b8d0: 2f 2f 20 20 20 20 20 20 20 6e 65 65 64 20 74 6f  //       need to
b8e0: 20 73 65 74 20 74 68 65 20 4e 65 65 64 54 6f 46   set the NeedToF
b8f0: 72 65 65 49 6e 64 65 78 53 74 72 69 6e 67 20 66  reeIndexString f
b900: 69 65 6c 64 20 74 6f 20 6e 6f 6e 2d 7a 65 72 6f  ield to non-zero
b910: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
b920: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  /..            S
b930: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57 72 69  QLiteMarshal.Wri
b940: 74 65 49 6e 74 33 32 28 70 49 6e 64 65 78 2c 20  teInt32(pIndex, 
b950: 6f 66 66 73 65 74 2c 20 31 29 3b 0d 0a 0d 0a 20  offset, 1);.... 
b960: 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
b970: 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61  t = SQLiteMarsha
b980: 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 6f  l.NextOffsetOf(o
b990: 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e  ffset, sizeof(in
b9a0: 74 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t),..           
b9b0: 20 20 20 20 20 73 69 7a 65 6f 66 28 69 6e 74 29       sizeof(int)
b9c0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
b9d0: 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e    SQLiteMarshal.
b9e0: 57 72 69 74 65 49 6e 74 33 32 28 70 49 6e 64 65  WriteInt32(pInde
b9f0: 78 2c 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20  x, offset,..    
ba00: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 65              inde
ba10: 78 2e 4f 75 74 70 75 74 73 2e 4f 72 64 65 72 42  x.Outputs.OrderB
ba20: 79 43 6f 6e 73 75 6d 65 64 29 3b 0d 0a 0d 0a 20  yConsumed);.... 
ba30: 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
ba40: 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61  t = SQLiteMarsha
ba50: 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 6f  l.NextOffsetOf(o
ba60: 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e  ffset, sizeof(in
ba70: 74 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t),..           
ba80: 20 20 20 20 20 73 69 7a 65 6f 66 28 64 6f 75 62       sizeof(doub
ba90: 6c 65 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  le));....       
baa0: 20 20 20 20 20 69 66 20 28 69 6e 64 65 78 2e 4f       if (index.O
bab0: 75 74 70 75 74 73 2e 45 73 74 69 6d 61 74 65 64  utputs.Estimated
bac0: 43 6f 73 74 2e 48 61 73 56 61 6c 75 65 29 0d 0a  Cost.HasValue)..
bad0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
bae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
baf0: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57 72 69  QLiteMarshal.Wri
bb00: 74 65 44 6f 75 62 6c 65 28 70 49 6e 64 65 78 2c  teDouble(pIndex,
bb10: 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20 20 20   offset,..      
bb20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
bb30: 64 65 78 2e 4f 75 74 70 75 74 73 2e 45 73 74 69  dex.Outputs.Esti
bb40: 6d 61 74 65 64 43 6f 73 74 2e 47 65 74 56 61 6c  matedCost.GetVal
bb50: 75 65 4f 72 44 65 66 61 75 6c 74 28 29 29 3b 0d  ueOrDefault());.
bb60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
bb70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
bb80: 20 28 69 6e 64 65 78 2e 4f 75 74 70 75 74 73 2e   (index.Outputs.
bb90: 43 61 6e 55 73 65 45 73 74 69 6d 61 74 65 64 52  CanUseEstimatedR
bba0: 6f 77 73 28 29 20 26 26 0d 0a 20 20 20 20 20 20  ows() &&..      
bbb0: 20 20 20 20 20 20 20 20 20 20 69 6e 64 65 78 2e            index.
bbc0: 4f 75 74 70 75 74 73 2e 45 73 74 69 6d 61 74 65  Outputs.Estimate
bbd0: 64 52 6f 77 73 2e 48 61 73 56 61 6c 75 65 29 0d  dRows.HasValue).
bbe0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
bbf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bc00: 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57 72  SQLiteMarshal.Wr
bc10: 69 74 65 49 6e 74 36 34 28 70 49 6e 64 65 78 2c  iteInt64(pIndex,
bc20: 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20 20 20   offset,..      
bc30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
bc40: 64 65 78 2e 4f 75 74 70 75 74 73 2e 45 73 74 69  dex.Outputs.Esti
bc50: 6d 61 74 65 64 52 6f 77 73 2e 47 65 74 56 61 6c  matedRows.GetVal
bc60: 75 65 4f 72 44 65 66 61 75 6c 74 28 29 29 3b 0d  ueOrDefault());.
bc70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
bc80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
bc90: 20 28 69 6e 64 65 78 2e 4f 75 74 70 75 74 73 2e   (index.Outputs.
bca0: 43 61 6e 55 73 65 49 64 78 46 6c 61 67 73 28 29  CanUseIdxFlags()
bcb0: 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20   &&..           
bcc0: 20 20 20 20 20 69 6e 64 65 78 2e 4f 75 74 70 75       index.Outpu
bcd0: 74 73 2e 49 64 78 46 6c 61 67 73 2e 48 61 73 56  ts.IdxFlags.HasV
bce0: 61 6c 75 65 29 0d 0a 20 20 20 20 20 20 20 20 20  alue)..         
bcf0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
bd00: 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73        SQLiteMars
bd10: 68 61 6c 2e 57 72 69 74 65 49 6e 74 33 32 28 70  hal.WriteInt32(p
bd20: 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 2c 0d 0a  Index, offset,..
bd30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bd40: 20 20 20 28 69 6e 74 29 69 6e 64 65 78 2e 4f 75     (int)index.Ou
bd50: 74 70 75 74 73 2e 49 64 78 46 6c 61 67 73 2e 47  tputs.IdxFlags.G
bd60: 65 74 56 61 6c 75 65 4f 72 44 65 66 61 75 6c 74  etValueOrDefault
bd70: 28 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ());..          
bd80: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
bd90: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
bda0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
bdb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bdc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bdd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bde0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bdf0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
be00: 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
be10: 50 72 6f 70 65 72 74 69 65 73 0d 0a 20 20 20 20  Properties..    
be20: 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69      private SQLi
be30: 74 65 49 6e 64 65 78 49 6e 70 75 74 73 20 69 6e  teIndexInputs in
be40: 70 75 74 73 3b 0d 0a 20 20 20 20 20 20 20 20 2f  puts;..        /
be50: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
be60: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
be70: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49  ee cref="SQLiteI
be80: 6e 64 65 78 49 6e 70 75 74 73 22 20 2f 3e 20 6f  ndexInputs" /> o
be90: 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 63  bject instance c
bea0: 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20 20 20 20  ontaining..     
beb0: 20 20 20 2f 2f 2f 20 74 68 65 20 69 6e 70 75 74     /// the input
bec0: 73 20 74 6f 20 74 68 65 20 3c 73 65 65 20 63 72  s to the <see cr
bed0: 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67  ef="ISQLiteManag
bee0: 65 64 4d 6f 64 75 6c 65 2e 42 65 73 74 49 6e 64  edModule.BestInd
bef0: 65 78 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20  ex" />..        
bf00: 2f 2f 2f 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20  /// method...   
bf10: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
bf20: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ry>..        pub
bf30: 6c 69 63 20 53 51 4c 69 74 65 49 6e 64 65 78 49  lic SQLiteIndexI
bf40: 6e 70 75 74 73 20 49 6e 70 75 74 73 0d 0a 20 20  nputs Inputs..  
bf50: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
bf60: 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
bf70: 6e 20 69 6e 70 75 74 73 3b 20 7d 0d 0a 20 20 20  n inputs; }..   
bf80: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
bf90: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
bfa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bfb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bfc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bfd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
bfe0: 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c       private SQL
bff0: 69 74 65 49 6e 64 65 78 4f 75 74 70 75 74 73 20  iteIndexOutputs 
c000: 6f 75 74 70 75 74 73 3b 0d 0a 20 20 20 20 20 20  outputs;..      
c010: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
c020: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
c030: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
c040: 74 65 49 6e 64 65 78 4f 75 74 70 75 74 73 22 20  teIndexOutputs" 
c050: 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
c060: 63 65 20 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20  ce containing.. 
c070: 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 6f         /// the o
c080: 75 74 70 75 74 73 20 66 72 6f 6d 20 74 68 65 20  utputs from the 
c090: 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
c0a0: 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e  teManagedModule.
c0b0: 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 0d 0a 20  BestIndex" />.. 
c0c0: 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f         /// metho
c0d0: 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
c0e0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
c0f0: 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
c100: 65 49 6e 64 65 78 4f 75 74 70 75 74 73 20 4f 75  eIndexOutputs Ou
c110: 74 70 75 74 73 0d 0a 20 20 20 20 20 20 20 20 7b  tputs..        {
c120: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
c130: 74 20 7b 20 72 65 74 75 72 6e 20 6f 75 74 70 75  t { return outpu
c140: 74 73 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d  ts; }..        }
c150: 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
c160: 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20  gion..    }..   
c170: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
c180: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
c190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c1a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c1b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c1c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
c1d0: 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51  ..    #region SQ
c1e0: 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
c1f0: 20 42 61 73 65 20 43 6c 61 73 73 0d 0a 20 20 20   Base Class..   
c200: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
c210: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61      /// This cla
c220: 73 73 20 72 65 70 72 65 73 65 6e 74 73 20 61 20  ss represents a 
c230: 6d 61 6e 61 67 65 64 20 76 69 72 74 75 61 6c 20  managed virtual 
c240: 74 61 62 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61  table implementa
c250: 74 69 6f 6e 2e 20 20 49 74 20 69 73 0d 0a 20 20  tion.  It is..  
c260: 20 20 2f 2f 2f 20 6e 6f 74 20 73 65 61 6c 65 64    /// not sealed
c270: 20 61 6e 64 20 73 68 6f 75 6c 64 20 62 65 20 75   and should be u
c280: 73 65 64 20 61 73 20 74 68 65 20 62 61 73 65 20  sed as the base 
c290: 63 6c 61 73 73 20 66 6f 72 20 61 6e 79 20 75 73  class for any us
c2a0: 65 72 2d 64 65 66 69 6e 65 64 0d 0a 20 20 20 20  er-defined..    
c2b0: 2f 2f 2f 20 76 69 72 74 75 61 6c 20 74 61 62 6c  /// virtual tabl
c2c0: 65 20 63 6c 61 73 73 65 73 20 69 6d 70 6c 65 6d  e classes implem
c2d0: 65 6e 74 65 64 20 69 6e 20 6d 61 6e 61 67 65 64  ented in managed
c2e0: 20 63 6f 64 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20   code...    /// 
c2f0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
c300: 70 75 62 6c 69 63 20 63 6c 61 73 73 20 53 51 4c  public class SQL
c310: 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20  iteVirtualTable 
c320: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  :..            I
c330: 53 51 4c 69 74 65 4e 61 74 69 76 65 48 61 6e 64  SQLiteNativeHand
c340: 6c 65 2c 20 49 44 69 73 70 6f 73 61 62 6c 65 20  le, IDisposable 
c350: 2f 2a 20 4e 4f 54 20 53 45 41 4c 45 44 20 2a 2f  /* NOT SEALED */
c360: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
c370: 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65   #region Private
c380: 20 43 6f 6e 73 74 61 6e 74 73 0d 0a 20 20 20 20   Constants..    
c390: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
c3a0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
c3b0: 68 65 20 69 6e 64 65 78 20 77 69 74 68 69 6e 20  he index within 
c3c0: 74 68 65 20 61 72 72 61 79 20 6f 66 20 73 74 72  the array of str
c3d0: 69 6e 67 73 20 70 72 6f 76 69 64 65 64 20 74 6f  ings provided to
c3e0: 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
c3f0: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  / <see cref="ISQ
c400: 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c  LiteManagedModul
c410: 65 2e 43 72 65 61 74 65 22 20 2f 3e 20 61 6e 64  e.Create" /> and
c420: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
c430: 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
c440: 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43 6f  ManagedModule.Co
c450: 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64  nnect" /> method
c460: 73 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65  s containing the
c470: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 61  ..        /// na
c480: 6d 65 20 6f 66 20 74 68 65 20 6d 6f 64 75 6c 65  me of the module
c490: 20 69 6d 70 6c 65 6d 65 6e 74 69 6e 67 20 74 68   implementing th
c4a0: 69 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  is virtual table
c4b0: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
c4c0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
c4d0: 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74     private const
c4e0: 20 69 6e 74 20 4d 6f 64 75 6c 65 4e 61 6d 65 49   int ModuleNameI
c4f0: 6e 64 65 78 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20  ndex = 0;....   
c500: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
c510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
c550: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
c560: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
c570: 2f 2f 20 54 68 65 20 69 6e 64 65 78 20 77 69 74  // The index wit
c580: 68 69 6e 20 74 68 65 20 61 72 72 61 79 20 6f 66  hin the array of
c590: 20 73 74 72 69 6e 67 73 20 70 72 6f 76 69 64 65   strings provide
c5a0: 64 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  d to the..      
c5b0: 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
c5c0: 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d  "ISQLiteManagedM
c5d0: 6f 64 75 6c 65 2e 43 72 65 61 74 65 22 20 2f 3e  odule.Create" />
c5e0: 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f   and..        //
c5f0: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  / <see cref="ISQ
c600: 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c  LiteManagedModul
c610: 65 2e 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65  e.Connect" /> me
c620: 74 68 6f 64 73 20 63 6f 6e 74 61 69 6e 69 6e 67  thods containing
c630: 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
c640: 2f 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 64 61  / name of the da
c650: 74 61 62 61 73 65 20 63 6f 6e 74 61 69 6e 69 6e  tabase containin
c660: 67 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74  g this virtual t
c670: 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  able...        /
c680: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
c690: 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63         private c
c6a0: 6f 6e 73 74 20 69 6e 74 20 44 61 74 61 62 61 73  onst int Databas
c6b0: 65 4e 61 6d 65 49 6e 64 65 78 20 3d 20 31 3b 0d  eNameIndex = 1;.
c6c0: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
c6d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c6e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c6f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c710: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
c720: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
c730: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 64       /// The ind
c740: 65 78 20 77 69 74 68 69 6e 20 74 68 65 20 61 72  ex within the ar
c750: 72 61 79 20 6f 66 20 73 74 72 69 6e 67 73 20 70  ray of strings p
c760: 72 6f 76 69 64 65 64 20 74 6f 20 74 68 65 0d 0a  rovided to the..
c770: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
c780: 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61   cref="ISQLiteMa
c790: 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43 72 65 61  nagedModule.Crea
c7a0: 74 65 22 20 2f 3e 20 61 6e 64 0d 0a 20 20 20 20  te" /> and..    
c7b0: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
c7c0: 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65  f="ISQLiteManage
c7d0: 64 4d 6f 64 75 6c 65 2e 43 6f 6e 6e 65 63 74 22  dModule.Connect"
c7e0: 20 2f 3e 20 6d 65 74 68 6f 64 73 20 63 6f 6e 74   /> methods cont
c7f0: 61 69 6e 69 6e 67 20 74 68 65 0d 0a 20 20 20 20  aining the..    
c800: 20 20 20 20 2f 2f 2f 20 6e 61 6d 65 20 6f 66 20      /// name of 
c810: 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c  the virtual tabl
c820: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
c830: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
c840: 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73      private cons
c850: 74 20 69 6e 74 20 54 61 62 6c 65 4e 61 6d 65 49  t int TableNameI
c860: 6e 64 65 78 20 3d 20 32 3b 0d 0a 20 20 20 20 20  ndex = 2;..     
c870: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
c880: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
c890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c8a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c8b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c8c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c8d0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
c8e0: 69 6f 6e 20 50 75 62 6c 69 63 20 43 6f 6e 73 74  ion Public Const
c8f0: 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20  ructors..       
c900: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
c910: 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73          /// Cons
c920: 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e  tructs an instan
c930: 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73  ce of this class
c940: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
c950: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
c960: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
c970: 6d 65 3d 22 61 72 67 75 6d 65 6e 74 73 22 3e 0d  me="arguments">.
c980: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
c990: 20 6f 72 69 67 69 6e 61 6c 20 61 72 72 61 79 20   original array 
c9a0: 6f 66 20 73 74 72 69 6e 67 73 20 70 72 6f 76 69  of strings provi
c9b0: 64 65 64 20 74 6f 20 74 68 65 0d 0a 20 20 20 20  ded to the..    
c9c0: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
c9d0: 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65  f="ISQLiteManage
c9e0: 64 4d 6f 64 75 6c 65 2e 43 72 65 61 74 65 22 20  dModule.Create" 
c9f0: 2f 3e 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20  /> and..        
ca00: 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
ca10: 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64  SQLiteManagedMod
ca20: 75 6c 65 2e 43 6f 6e 6e 65 63 74 22 20 2f 3e 20  ule.Connect" /> 
ca30: 6d 65 74 68 6f 64 73 2e 0d 0a 20 20 20 20 20 20  methods...      
ca40: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
ca50: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53          public S
ca60: 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
ca70: 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
ca80: 73 74 72 69 6e 67 5b 5d 20 61 72 67 75 6d 65 6e  string[] argumen
ca90: 74 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ts..            
caa0: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
cab0: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 61            this.a
cac0: 72 67 75 6d 65 6e 74 73 20 3d 20 61 72 67 75 6d  rguments = argum
cad0: 65 6e 74 73 3b 0d 0a 20 20 20 20 20 20 20 20 7d  ents;..        }
cae0: 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
caf0: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
cb00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cb10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cb20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cb30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cb40: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
cb50: 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69     #region Publi
cb60: 63 20 50 72 6f 70 65 72 74 69 65 73 0d 0a 20 20  c Properties..  
cb70: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
cb80: 72 69 6e 67 5b 5d 20 61 72 67 75 6d 65 6e 74 73  ring[] arguments
cb90: 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ;..        /// <
cba0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
cbb0: 20 20 2f 2f 2f 20 54 68 65 20 6f 72 69 67 69 6e    /// The origin
cbc0: 61 6c 20 61 72 72 61 79 20 6f 66 20 73 74 72 69  al array of stri
cbd0: 6e 67 73 20 70 72 6f 76 69 64 65 64 20 74 6f 20  ngs provided to 
cbe0: 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
cbf0: 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
cc00: 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65  iteManagedModule
cc10: 2e 43 72 65 61 74 65 22 20 2f 3e 20 61 6e 64 0d  .Create" /> and.
cc20: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
cc30: 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d  e cref="ISQLiteM
cc40: 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43 6f 6e  anagedModule.Con
cc50: 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 73  nect" /> methods
cc60: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
cc70: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
cc80: 20 20 20 70 75 62 6c 69 63 20 76 69 72 74 75 61     public virtua
cc90: 6c 20 73 74 72 69 6e 67 5b 5d 20 41 72 67 75 6d  l string[] Argum
cca0: 65 6e 74 73 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ents..        {.
ccb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
ccc0: 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64   { CheckDisposed
ccd0: 28 29 3b 20 72 65 74 75 72 6e 20 61 72 67 75 6d  (); return argum
cce0: 65 6e 74 73 3b 20 7d 0d 0a 20 20 20 20 20 20 20  ents; }..       
ccf0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
cd00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cd10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cd20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cd30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cd40: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
cd50: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
cd60: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
cd70: 6e 61 6d 65 20 6f 66 20 74 68 65 20 6d 6f 64 75  name of the modu
cd80: 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 69 6e 67 20  le implementing 
cd90: 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62  this virtual tab
cda0: 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le...        ///
cdb0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
cdc0: 20 20 20 20 20 70 75 62 6c 69 63 20 76 69 72 74       public virt
cdd0: 75 61 6c 20 73 74 72 69 6e 67 20 4d 6f 64 75 6c  ual string Modul
cde0: 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 7b  eName..        {
cdf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
ce00: 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  t..            {
ce10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ce20: 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28    CheckDisposed(
ce30: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
ce40: 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 61        string[] a
ce50: 72 67 75 6d 65 6e 74 73 20 3d 20 41 72 67 75 6d  rguments = Argum
ce60: 65 6e 74 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ents;....       
ce70: 20 20 20 20 20 20 20 20 20 69 66 20 28 28 61 72           if ((ar
ce80: 67 75 6d 65 6e 74 73 20 21 3d 20 6e 75 6c 6c 29  guments != null)
ce90: 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20   &&..           
cea0: 20 20 20 20 20 20 20 20 20 28 61 72 67 75 6d 65           (argume
ceb0: 6e 74 73 2e 4c 65 6e 67 74 68 20 3e 20 4d 6f 64  nts.Length > Mod
cec0: 75 6c 65 4e 61 6d 65 49 6e 64 65 78 29 29 0d 0a  uleNameIndex))..
ced0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cee0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
cef0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 61 72         return ar
cf00: 67 75 6d 65 6e 74 73 5b 4d 6f 64 75 6c 65 4e 61  guments[ModuleNa
cf10: 6d 65 49 6e 64 65 78 5d 3b 0d 0a 20 20 20 20 20  meIndex];..     
cf20: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
cf30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
cf40: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
cf50: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
cf60: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
cf70: 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  n null;..       
cf80: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
cf90: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
cfa0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
cfb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cfc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cfd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cfe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cff0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
d000: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
d010: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
d020: 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 64 61  e name of the da
d030: 74 61 62 61 73 65 20 63 6f 6e 74 61 69 6e 69 6e  tabase containin
d040: 67 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74  g this virtual t
d050: 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  able...        /
d060: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
d070: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 69         public vi
d080: 72 74 75 61 6c 20 73 74 72 69 6e 67 20 44 61 74  rtual string Dat
d090: 61 62 61 73 65 4e 61 6d 65 0d 0a 20 20 20 20 20  abaseName..     
d0a0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
d0b0: 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20    get..         
d0c0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
d0d0: 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f        CheckDispo
d0e0: 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  sed();....      
d0f0: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
d100: 5b 5d 20 61 72 67 75 6d 65 6e 74 73 20 3d 20 41  [] arguments = A
d110: 72 67 75 6d 65 6e 74 73 3b 0d 0a 0d 0a 20 20 20  rguments;....   
d120: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
d130: 28 28 61 72 67 75 6d 65 6e 74 73 20 21 3d 20 6e  ((arguments != n
d140: 75 6c 6c 29 20 26 26 0d 0a 20 20 20 20 20 20 20  ull) &&..       
d150: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 72               (ar
d160: 67 75 6d 65 6e 74 73 2e 4c 65 6e 67 74 68 20 3e  guments.Length >
d170: 20 44 61 74 61 62 61 73 65 4e 61 6d 65 49 6e 64   DatabaseNameInd
d180: 65 78 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ex))..          
d190: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
d1a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
d1b0: 75 72 6e 20 61 72 67 75 6d 65 6e 74 73 5b 44 61  urn arguments[Da
d1c0: 74 61 62 61 73 65 4e 61 6d 65 49 6e 64 65 78 5d  tabaseNameIndex]
d1d0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
d1e0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
d1f0: 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
d200: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
d210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d220: 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
d230: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d240: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
d250: 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
d260: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
d270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d2a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
d2b0: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
d2c0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
d2d0: 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f    /// The name o
d2e0: 66 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  f the virtual ta
d2f0: 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
d300: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
d310: 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 69 72        public vir
d320: 74 75 61 6c 20 73 74 72 69 6e 67 20 54 61 62 6c  tual string Tabl
d330: 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 7b  eName..        {
d340: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
d350: 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  t..            {
d360: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d370: 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28    CheckDisposed(
d380: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
d390: 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 61        string[] a
d3a0: 72 67 75 6d 65 6e 74 73 20 3d 20 41 72 67 75 6d  rguments = Argum
d3b0: 65 6e 74 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ents;....       
d3c0: 20 20 20 20 20 20 20 20 20 69 66 20 28 28 61 72           if ((ar
d3d0: 67 75 6d 65 6e 74 73 20 21 3d 20 6e 75 6c 6c 29  guments != null)
d3e0: 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20   &&..           
d3f0: 20 20 20 20 20 20 20 20 20 28 61 72 67 75 6d 65           (argume
d400: 6e 74 73 2e 4c 65 6e 67 74 68 20 3e 20 54 61 62  nts.Length > Tab
d410: 6c 65 4e 61 6d 65 49 6e 64 65 78 29 29 0d 0a 20  leNameIndex)).. 
d420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
d430: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d440: 20 20 20 20 20 20 72 65 74 75 72 6e 20 61 72 67        return arg
d450: 75 6d 65 6e 74 73 5b 54 61 62 6c 65 4e 61 6d 65  uments[TableName
d460: 49 6e 64 65 78 5d 3b 0d 0a 20 20 20 20 20 20 20  Index];..       
d470: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
d480: 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
d490: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d4a0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
d4b0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
d4c0: 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20  null;..         
d4d0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
d4e0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
d4f0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
d500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d540: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
d550: 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 49   private SQLiteI
d560: 6e 64 65 78 20 69 6e 64 65 78 3b 0d 0a 20 20 20  ndex index;..   
d570: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
d580: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
d590: 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
d5a0: 51 4c 69 74 65 49 6e 64 65 78 22 20 2f 3e 20 6f  QLiteIndex" /> o
d5b0: 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 63  bject instance c
d5c0: 6f 6e 74 61 69 6e 69 6e 67 20 61 6c 6c 20 74 68  ontaining all th
d5d0: 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64  e..        /// d
d5e0: 61 74 61 20 66 6f 72 20 74 68 65 20 69 6e 70 75  ata for the inpu
d5f0: 74 73 20 61 6e 64 20 6f 75 74 70 75 74 73 20 72  ts and outputs r
d600: 65 6c 61 74 69 6e 67 20 74 6f 20 74 68 65 20 6d  elating to the m
d610: 6f 73 74 20 72 65 63 65 6e 74 20 69 6e 64 65 78  ost recent index
d620: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 65  ..        /// se
d630: 6c 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  lection...      
d640: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
d650: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
d660: 20 76 69 72 74 75 61 6c 20 53 51 4c 69 74 65 49   virtual SQLiteI
d670: 6e 64 65 78 20 49 6e 64 65 78 0d 0a 20 20 20 20  ndex Index..    
d680: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
d690: 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44 69     get { CheckDi
d6a0: 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75 72 6e  sposed(); return
d6b0: 20 69 6e 64 65 78 3b 20 7d 0d 0a 20 20 20 20 20   index; }..     
d6c0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
d6d0: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
d6e0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
d6f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
d730: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
d740: 75 62 6c 69 63 20 4d 65 74 68 6f 64 73 0d 0a 20  ublic Methods.. 
d750: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
d760: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
d770: 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 73 68  / This method sh
d780: 6f 75 6c 64 20 6e 6f 72 6d 61 6c 6c 79 20 62 65  ould normally be
d790: 20 75 73 65 64 20 62 79 20 74 68 65 0d 0a 20 20   used by the..  
d7a0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
d7b0: 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61  ref="ISQLiteMana
d7c0: 67 65 64 4d 6f 64 75 6c 65 2e 42 65 73 74 49 6e  gedModule.BestIn
d7d0: 64 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64 20 69  dex" /> method i
d7e0: 6e 20 6f 72 64 65 72 20 74 6f 0d 0a 20 20 20 20  n order to..    
d7f0: 20 20 20 20 2f 2f 2f 20 70 65 72 66 6f 72 6d 20      /// perform 
d800: 69 6e 64 65 78 20 73 65 6c 65 63 74 69 6f 6e 20  index selection 
d810: 62 61 73 65 64 20 6f 6e 20 74 68 65 20 63 6f 6e  based on the con
d820: 73 74 72 61 69 6e 74 73 20 70 72 6f 76 69 64 65  straints provide
d830: 64 20 62 79 20 74 68 65 0d 0a 20 20 20 20 20 20  d by the..      
d840: 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 63 6f 72    /// SQLite cor
d850: 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20  e library...    
d860: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
d870: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
d880: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64  <param name="ind
d890: 65 78 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ex">..        //
d8a0: 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
d8b0: 22 53 51 4c 69 74 65 49 6e 64 65 78 22 20 2f 3e  "SQLiteIndex" />
d8c0: 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
d8d0: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 6c 6c 20   containing all 
d8e0: 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
d8f0: 20 64 61 74 61 20 66 6f 72 20 74 68 65 20 69 6e   data for the in
d900: 70 75 74 73 20 61 6e 64 20 6f 75 74 70 75 74 73  puts and outputs
d910: 20 72 65 6c 61 74 69 6e 67 20 74 6f 20 69 6e 64   relating to ind
d920: 65 78 20 73 65 6c 65 63 74 69 6f 6e 2e 0d 0a 20  ex selection... 
d930: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
d940: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
d950: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
d960: 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
d970: 20 75 70 6f 6e 20 73 75 63 63 65 73 73 2e 0d 0a   upon success...
d980: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
d990: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
d9a0: 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 62  public virtual b
d9b0: 6f 6f 6c 20 42 65 73 74 49 6e 64 65 78 28 0d 0a  ool BestIndex(..
d9c0: 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
d9d0: 74 65 49 6e 64 65 78 20 69 6e 64 65 78 0d 0a 20  teIndex index.. 
d9e0: 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
d9f0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
da00: 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73       CheckDispos
da10: 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ed();....       
da20: 20 20 20 20 20 74 68 69 73 2e 69 6e 64 65 78 20       this.index 
da30: 3d 20 69 6e 64 65 78 3b 0d 0a 0d 0a 20 20 20 20  = index;....    
da40: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
da50: 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  rue;..        }.
da60: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
da70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
da80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
da90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
daa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dab0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
dac0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
dad0: 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74       /// Attempt
dae0: 73 20 74 6f 20 72 65 63 6f 72 64 20 74 68 65 20  s to record the 
daf0: 72 65 6e 61 6d 69 6e 67 20 6f 66 20 74 68 65 20  renaming of the 
db00: 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 61 73  virtual table as
db10: 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20  sociated..      
db20: 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20    /// with this 
db30: 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e  object instance.
db40: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
db50: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
db60: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
db70: 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20 20 20 20  e="name">..     
db80: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65 77 20 6e     /// The new n
db90: 61 6d 65 20 66 6f 72 20 74 68 65 20 76 69 72 74  ame for the virt
dba0: 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
dbb0: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
dbc0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
dbd0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
dbe0: 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 75 70   /// Non-zero up
dbf0: 6f 6e 20 73 75 63 63 65 73 73 2e 0d 0a 20 20 20  on success...   
dc00: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
dc10: 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ns>..        pub
dc20: 6c 69 63 20 76 69 72 74 75 61 6c 20 62 6f 6f 6c  lic virtual bool
dc30: 20 52 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20   Rename(..      
dc40: 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d        string nam
dc50: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  e..            )
dc60: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
dc70: 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69           CheckDi
dc80: 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20  sposed();....   
dc90: 20 20 20 20 20 20 20 20 20 69 66 20 28 28 61 72           if ((ar
dca0: 67 75 6d 65 6e 74 73 20 21 3d 20 6e 75 6c 6c 29  guments != null)
dcb0: 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20   &&..           
dcc0: 20 20 20 20 20 28 61 72 67 75 6d 65 6e 74 73 2e       (arguments.
dcd0: 4c 65 6e 67 74 68 20 3e 20 54 61 62 6c 65 4e 61  Length > TableNa
dce0: 6d 65 49 6e 64 65 78 29 29 0d 0a 20 20 20 20 20  meIndex))..     
dcf0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
dd00: 20 20 20 20 20 20 20 20 20 20 61 72 67 75 6d 65            argume
dd10: 6e 74 73 5b 54 61 62 6c 65 4e 61 6d 65 49 6e 64  nts[TableNameInd
dd20: 65 78 5d 20 3d 20 6e 61 6d 65 3b 0d 0a 20 20 20  ex] = name;..   
dd30: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
dd40: 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  urn true;..     
dd50: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
dd60: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
dd70: 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d  alse;..        }
dd80: 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
dd90: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
dda0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ddb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ddc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ddd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dde0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
ddf0: 20 20 20 23 72 65 67 69 6f 6e 20 49 53 51 4c 69     #region ISQLi
de00: 74 65 4e 61 74 69 76 65 48 61 6e 64 6c 65 20 4d  teNativeHandle M
de10: 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20  embers..        
de20: 70 72 69 76 61 74 65 20 49 6e 74 50 74 72 20 6e  private IntPtr n
de30: 61 74 69 76 65 48 61 6e 64 6c 65 3b 0d 0a 20 20  ativeHandle;..  
de40: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
de50: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
de60: 20 52 65 74 75 72 6e 73 20 74 68 65 20 75 6e 64   Returns the und
de70: 65 72 6c 79 69 6e 67 20 53 51 4c 69 74 65 20 6e  erlying SQLite n
de80: 61 74 69 76 65 20 68 61 6e 64 6c 65 20 61 73 73  ative handle ass
de90: 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69  ociated with thi
dea0: 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f  s..        /// o
deb0: 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d  bject instance..
dec0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
ded0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
dee0: 20 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20   public virtual 
def0: 49 6e 74 50 74 72 20 4e 61 74 69 76 65 48 61 6e  IntPtr NativeHan
df00: 64 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  dle..        {..
df10: 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
df20: 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  { CheckDisposed(
df30: 29 3b 20 72 65 74 75 72 6e 20 6e 61 74 69 76 65  ); return native
df40: 48 61 6e 64 6c 65 3b 20 7d 0d 0a 20 20 20 20 20  Handle; }..     
df50: 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20         internal 
df60: 73 65 74 20 7b 20 6e 61 74 69 76 65 48 61 6e 64  set { nativeHand
df70: 6c 65 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20  le = value; }.. 
df80: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
df90: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
dfa0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
dfb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dfc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dfd0: 2f 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 0d  ///////////////.
dff0: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
e000: 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c 65 20 4d  on IDisposable M
e010: 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20  embers..        
e020: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
e030: 20 20 20 20 20 20 20 2f 2f 2f 20 44 69 73 70 6f         /// Dispo
e040: 73 65 73 20 6f 66 20 74 68 69 73 20 6f 62 6a 65  ses of this obje
e050: 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20  ct instance...  
e060: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
e070: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
e080: 62 6c 69 63 20 76 6f 69 64 20 44 69 73 70 6f 73  blic void Dispos
e090: 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  e()..        {..
e0a0: 20 20 20 20 20 20 20 20 20 20 20 20 44 69 73 70              Disp
e0b0: 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20 20 20 20  ose(true);..    
e0c0: 20 20 20 20 20 20 20 20 47 43 2e 53 75 70 70 72          GC.Suppr
e0d0: 65 73 73 46 69 6e 61 6c 69 7a 65 28 74 68 69 73  essFinalize(this
e0e0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  );..        }.. 
e0f0: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
e100: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
e110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e150: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
e160: 23 72 65 67 69 6f 6e 20 49 44 69 73 70 6f 73 61  #region IDisposa
e170: 62 6c 65 20 22 50 61 74 74 65 72 6e 22 20 4d 65  ble "Pattern" Me
e180: 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 70  mbers..        p
e190: 72 69 76 61 74 65 20 62 6f 6f 6c 20 64 69 73 70  rivate bool disp
e1a0: 6f 73 65 64 3b 0d 0a 20 20 20 20 20 20 20 20 2f  osed;..        /
e1b0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
e1c0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 72 6f 77 73        /// Throws
e1d0: 20 61 6e 20 3c 73 65 65 20 63 72 65 66 3d 22 4f   an <see cref="O
e1e0: 62 6a 65 63 74 44 69 73 70 6f 73 65 64 45 78 63  bjectDisposedExc
e1f0: 65 70 74 69 6f 6e 22 20 2f 3e 20 69 66 20 74 68  eption" /> if th
e200: 69 73 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20  is object..     
e210: 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 20     /// instance 
e220: 68 61 73 20 62 65 65 6e 20 64 69 73 70 6f 73 65  has been dispose
e230: 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
e240: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
e250: 20 20 20 20 70 72 69 76 61 74 65 20 76 6f 69 64      private void
e260: 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
e270: 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
e280: 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 54 48 52        {..#if THR
e290: 4f 57 5f 4f 4e 5f 44 49 53 50 4f 53 45 44 0d 0a  OW_ON_DISPOSED..
e2a0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
e2b0: 64 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20 20  disposed)..     
e2c0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
e2d0: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
e2e0: 6e 65 77 20 4f 62 6a 65 63 74 44 69 73 70 6f 73  new ObjectDispos
e2f0: 65 64 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20  edException(..  
e300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e310: 20 20 74 79 70 65 6f 66 28 53 51 4c 69 74 65 56    typeof(SQLiteV
e320: 69 72 74 75 61 6c 54 61 62 6c 65 29 2e 4e 61 6d  irtualTable).Nam
e330: 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
e340: 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
e350: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
e360: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
e370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e3a0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
e3b0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
e3c0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 44  >..        /// D
e3d0: 69 73 70 6f 73 65 73 20 6f 66 20 74 68 69 73 20  isposes of this 
e3e0: 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e  object instance.
e3f0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
e400: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
e410: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
e420: 65 3d 22 64 69 73 70 6f 73 69 6e 67 22 3e 0d 0a  e="disposing">..
e430: 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d          /// Non-
e440: 7a 65 72 6f 20 69 66 20 74 68 69 73 20 6d 65 74  zero if this met
e450: 68 6f 64 20 69 73 20 62 65 69 6e 67 20 63 61 6c  hod is being cal
e460: 6c 65 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20  led from the..  
e470: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
e480: 72 65 66 3d 22 44 69 73 70 6f 73 65 28 29 22 20  ref="Dispose()" 
e490: 2f 3e 20 6d 65 74 68 6f 64 2e 20 20 5a 65 72 6f  /> method.  Zero
e4a0: 20 69 66 20 74 68 69 73 20 6d 65 74 68 6f 64 20   if this method 
e4b0: 69 73 20 62 65 69 6e 67 20 63 61 6c 6c 65 64 0d  is being called.
e4c0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 66 72 6f  .        /// fro
e4d0: 6d 20 74 68 65 20 66 69 6e 61 6c 69 7a 65 72 2e  m the finalizer.
e4e0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
e4f0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
e500: 70 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61  protected virtua
e510: 6c 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 62  l void Dispose(b
e520: 6f 6f 6c 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a  ool disposing)..
e530: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
e540: 20 20 20 20 20 20 20 69 66 20 28 21 64 69 73 70         if (!disp
e550: 6f 73 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20  osed)..         
e560: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
e570: 20 20 20 20 20 20 2f 2f 69 66 20 28 64 69 73 70        //if (disp
e580: 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20  osing)..        
e590: 20 20 20 20 20 20 20 20 2f 2f 7b 0d 0a 20 20 20          //{..   
e5a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
e5b0: 20 20 20 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 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20  ///////..       
e5e0: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 2f           //    /
e5f0: 2f 20 64 69 73 70 6f 73 65 20 6d 61 6e 61 67 65  / dispose manage
e600: 64 20 72 65 73 6f 75 72 63 65 73 20 68 65 72 65  d resources here
e610: 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  .....           
e620: 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f       //    /////
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 0d  ///////////////.
e650: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e660: 20 2f 2f 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20   //}....        
e670: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
e680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
e6a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e6b0: 2f 2f 20 72 65 6c 65 61 73 65 20 75 6e 6d 61 6e  // release unman
e6c0: 61 67 65 64 20 72 65 73 6f 75 72 63 65 73 20 68  aged resources h
e6d0: 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20  ere.....        
e6e0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
e6f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
e710: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e720: 20 20 64 69 73 70 6f 73 65 64 20 3d 20 74 72 75    disposed = tru
e730: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
e740: 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  }..        }..  
e750: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
e760: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
e770: 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
e7c0: 72 65 67 69 6f 6e 20 44 65 73 74 72 75 63 74 6f  region Destructo
e7d0: 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  r..        /// <
e7e0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
e7f0: 20 20 2f 2f 2f 20 46 69 6e 61 6c 69 7a 65 73 20    /// Finalizes 
e800: 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74  this object inst
e810: 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ance...        /
e820: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
e830: 20 20 20 20 20 20 20 7e 53 51 4c 69 74 65 56 69         ~SQLiteVi
e840: 72 74 75 61 6c 54 61 62 6c 65 28 29 0d 0a 20 20  rtualTable()..  
e850: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
e860: 20 20 20 20 20 44 69 73 70 6f 73 65 28 66 61 6c       Dispose(fal
e870: 73 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  se);..        }.
e880: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
e890: 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20  ion..    }..    
e8a0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
e8b0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
e8c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e8d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e8e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e8f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
e900: 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c  .    #region SQL
e910: 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43  iteVirtualTableC
e920: 75 72 73 6f 72 20 42 61 73 65 20 43 6c 61 73 73  ursor Base Class
e930: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
e940: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69  ry>..    /// Thi
e950: 73 20 63 6c 61 73 73 20 72 65 70 72 65 73 65 6e  s class represen
e960: 74 73 20 61 20 6d 61 6e 61 67 65 64 20 76 69 72  ts a managed vir
e970: 74 75 61 6c 20 74 61 62 6c 65 20 63 75 72 73 6f  tual table curso
e980: 72 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  r implementation
e990: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 49 74 20 69 73  ...    /// It is
e9a0: 20 6e 6f 74 20 73 65 61 6c 65 64 20 61 6e 64 20   not sealed and 
e9b0: 73 68 6f 75 6c 64 20 62 65 20 75 73 65 64 20 61  should be used a
e9c0: 73 20 74 68 65 20 62 61 73 65 20 63 6c 61 73 73  s the base class
e9d0: 20 66 6f 72 20 61 6e 79 0d 0a 20 20 20 20 2f 2f   for any..    //
e9e0: 2f 20 75 73 65 72 2d 64 65 66 69 6e 65 64 20 76  / user-defined v
e9f0: 69 72 74 75 61 6c 20 74 61 62 6c 65 20 63 75 72  irtual table cur
ea00: 73 6f 72 20 63 6c 61 73 73 65 73 20 69 6d 70 6c  sor classes impl
ea10: 65 6d 65 6e 74 65 64 20 69 6e 20 6d 61 6e 61 67  emented in manag
ea20: 65 64 20 63 6f 64 65 2e 0d 0a 20 20 20 20 2f 2f  ed code...    //
ea30: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
ea40: 20 20 70 75 62 6c 69 63 20 63 6c 61 73 73 20 53    public class S
ea50: 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
ea60: 65 43 75 72 73 6f 72 20 3a 0d 0a 20 20 20 20 20  eCursor :..     
ea70: 20 20 20 20 20 20 20 49 53 51 4c 69 74 65 4e 61         ISQLiteNa
ea80: 74 69 76 65 48 61 6e 64 6c 65 2c 20 49 44 69 73  tiveHandle, IDis
ea90: 70 6f 73 61 62 6c 65 20 2f 2a 20 4e 4f 54 20 53  posable /* NOT S
eaa0: 45 41 4c 45 44 20 2a 2f 0d 0a 20 20 20 20 7b 0d  EALED */..    {.
eab0: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
eac0: 20 50 72 6f 74 65 63 74 65 64 20 43 6f 6e 73 74   Protected Const
ead0: 61 6e 74 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ants..        //
eae0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
eaf0: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 76 61       /// This va
eb00: 6c 75 65 20 72 65 70 72 65 73 65 6e 74 73 20 61  lue represents a
eb10: 6e 20 69 6e 76 61 6c 69 64 20 69 6e 74 65 67 65  n invalid intege
eb20: 72 20 72 6f 77 20 73 65 71 75 65 6e 63 65 20 6e  r row sequence n
eb30: 75 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20 20 20  umber...        
eb40: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
eb50: 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65          protecte
eb60: 64 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c  d static readonl
eb70: 79 20 69 6e 74 20 49 6e 76 61 6c 69 64 52 6f 77  y int InvalidRow
eb80: 49 6e 64 65 78 20 3d 20 30 3b 0d 0a 20 20 20 20  Index = 0;..    
eb90: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
eba0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
ebb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ebc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
ec00: 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61 74  gion Private Dat
ec10: 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  a..        /// <
ec20: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
ec30: 20 20 2f 2f 2f 20 54 68 65 20 66 69 65 6c 64 20    /// The field 
ec40: 68 6f 6c 64 73 20 74 68 65 20 69 6e 74 65 67 65  holds the intege
ec50: 72 20 72 6f 77 20 73 65 71 75 65 6e 63 65 20 6e  r row sequence n
ec60: 75 6d 62 65 72 20 66 6f 72 20 74 68 65 20 63 75  umber for the cu
ec70: 72 72 65 6e 74 20 72 6f 77 0d 0a 20 20 20 20 20  rrent row..     
ec80: 20 20 20 2f 2f 2f 20 70 6f 69 6e 74 65 64 20 74     /// pointed t
ec90: 6f 20 62 79 20 74 68 69 73 20 63 75 72 73 6f 72  o by this cursor
eca0: 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
ecb0: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
ecc0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
ecd0: 20 20 20 70 72 69 76 61 74 65 20 69 6e 74 20 72     private int r
ece0: 6f 77 49 6e 64 65 78 3b 0d 0a 20 20 20 20 20 20  owIndex;..      
ecf0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
ed00: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
ed10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ed20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ed30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ed40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
ed50: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
ed60: 6f 6e 20 50 75 62 6c 69 63 20 43 6f 6e 73 74 72  on Public Constr
ed70: 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20  uctors..        
ed80: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
ed90: 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74         /// Const
eda0: 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63  ructs an instanc
edb0: 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73 2e  e of this class.
edc0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
edd0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
ede0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
edf0: 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20  e="table">..    
ee00: 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
ee10: 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72   cref="SQLiteVir
ee20: 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62  tualTable" /> ob
ee30: 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73  ject instance as
ee40: 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20  sociated..      
ee50: 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20    /// with this 
ee60: 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e  object instance.
ee70: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
ee80: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
ee90: 70 75 62 6c 69 63 20 53 51 4c 69 74 65 56 69 72  public SQLiteVir
eea0: 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 28  tualTableCursor(
eeb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
eec0: 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
eed0: 20 74 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20   table..        
eee0: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
eef0: 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20     : this()..   
ef00: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
ef10: 20 20 20 20 74 68 69 73 2e 74 61 62 6c 65 20 3d      this.table =
ef20: 20 74 61 62 6c 65 3b 0d 0a 20 20 20 20 20 20 20   table;..       
ef30: 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
ef40: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
ef50: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
ef60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ef70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ef80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ef90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
efa0: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69       #region Pri
efb0: 76 61 74 65 20 43 6f 6e 73 74 72 75 63 74 6f 72  vate Constructor
efc0: 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
efd0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
efe0: 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73    /// Constructs
eff0: 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20   an instance of 
f000: 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20  this class...   
f010: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
f020: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
f030: 76 61 74 65 20 53 51 4c 69 74 65 56 69 72 74 75  vate SQLiteVirtu
f040: 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 28 29 0d  alTableCursor().
f050: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
f060: 20 20 20 20 20 20 20 20 72 6f 77 49 6e 64 65 78          rowIndex
f070: 20 3d 20 49 6e 76 61 6c 69 64 52 6f 77 49 6e 64   = InvalidRowInd
f080: 65 78 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ex;..        }..
f090: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
f0a0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
f0b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f0c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f0d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f0e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f0f0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
f100: 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
f110: 50 72 6f 70 65 72 74 69 65 73 0d 0a 20 20 20 20  Properties..    
f120: 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69      private SQLi
f130: 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74  teVirtualTable t
f140: 61 62 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f  able;..        /
f150: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
f160: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
f170: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56  ee cref="SQLiteV
f180: 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20  irtualTable" /> 
f190: 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
f1a0: 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20  associated..    
f1b0: 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69      /// with thi
f1c0: 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  s object instanc
f1d0: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
f1e0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
f1f0: 20 20 20 20 70 75 62 6c 69 63 20 76 69 72 74 75      public virtu
f200: 61 6c 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c  al SQLiteVirtual
f210: 54 61 62 6c 65 20 54 61 62 6c 65 0d 0a 20 20 20  Table Table..   
f220: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
f230: 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44      get { CheckD
f240: 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75 72  isposed(); retur
f250: 6e 20 74 61 62 6c 65 3b 20 7d 0d 0a 20 20 20 20  n table; }..    
f260: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
f270: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
f280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f2a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f2b0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
f2c0: 20 20 20 20 70 72 69 76 61 74 65 20 69 6e 74 20      private int 
f2d0: 69 6e 64 65 78 4e 75 6d 62 65 72 3b 0d 0a 20 20  indexNumber;..  
f2e0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
f2f0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
f300: 20 4e 75 6d 62 65 72 20 75 73 65 64 20 74 6f 20   Number used to 
f310: 68 65 6c 70 20 69 64 65 6e 74 69 66 79 20 74 68  help identify th
f320: 65 20 73 65 6c 65 63 74 65 64 20 69 6e 64 65 78  e selected index
f330: 2e 20 20 54 68 69 73 20 76 61 6c 75 65 20 77 69  .  This value wi
f340: 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ll..        /// 
f350: 62 65 20 73 65 74 20 76 69 61 20 74 68 65 20 3c  be set via the <
f360: 73 65 65 20 63 72 65 66 3d 22 46 69 6c 74 65 72  see cref="Filter
f370: 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
f380: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
f390: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
f3a0: 62 6c 69 63 20 76 69 72 74 75 61 6c 20 69 6e 74  blic virtual int
f3b0: 20 49 6e 64 65 78 4e 75 6d 62 65 72 0d 0a 20 20   IndexNumber..  
f3c0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
f3d0: 20 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b       get { Check
f3e0: 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75  Disposed(); retu
f3f0: 72 6e 20 69 6e 64 65 78 4e 75 6d 62 65 72 3b 20  rn indexNumber; 
f400: 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
f410: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
f420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
f460: 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ...        priva
f470: 74 65 20 73 74 72 69 6e 67 20 69 6e 64 65 78 53  te string indexS
f480: 74 72 69 6e 67 3b 0d 0a 20 20 20 20 20 20 20 20  tring;..        
f490: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
f4a0: 20 20 20 20 20 20 20 2f 2f 2f 20 53 74 72 69 6e         /// Strin
f4b0: 67 20 75 73 65 64 20 74 6f 20 68 65 6c 70 20 69  g used to help i
f4c0: 64 65 6e 74 69 66 79 20 74 68 65 20 73 65 6c 65  dentify the sele
f4d0: 63 74 65 64 20 69 6e 64 65 78 2e 20 20 54 68 69  cted index.  Thi
f4e0: 73 20 76 61 6c 75 65 20 77 69 6c 6c 0d 0a 20 20  s value will..  
f4f0: 20 20 20 20 20 20 2f 2f 2f 20 62 65 20 73 65 74        /// be set
f500: 20 76 69 61 20 74 68 65 20 3c 73 65 65 20 63 72   via the <see cr
f510: 65 66 3d 22 46 69 6c 74 65 72 22 20 2f 3e 20 6d  ef="Filter" /> m
f520: 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
f530: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
f540: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76          public v
f550: 69 72 74 75 61 6c 20 73 74 72 69 6e 67 20 49 6e  irtual string In
f560: 64 65 78 53 74 72 69 6e 67 0d 0a 20 20 20 20 20  dexString..     
f570: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
f580: 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44 69 73    get { CheckDis
f590: 70 6f 73 65 64 28 29 3b 20 72 65 74 75 72 6e 20  posed(); return 
f5a0: 69 6e 64 65 78 53 74 72 69 6e 67 3b 20 7d 0d 0a  indexString; }..
f5b0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
f5c0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
f5d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f5e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f5f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
f610: 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
f620: 53 51 4c 69 74 65 56 61 6c 75 65 5b 5d 20 76 61  SQLiteValue[] va
f630: 6c 75 65 73 3b 0d 0a 20 20 20 20 20 20 20 20 2f  lues;..        /
f640: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
f650: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61        /// The va
f660: 6c 75 65 73 20 75 73 65 64 20 74 6f 20 66 69 6c  lues used to fil
f670: 74 65 72 20 74 68 65 20 72 6f 77 73 20 72 65 74  ter the rows ret
f680: 75 72 6e 65 64 20 76 69 61 20 74 68 69 73 20 63  urned via this c
f690: 75 72 73 6f 72 20 6f 62 6a 65 63 74 0d 0a 20 20  ursor object..  
f6a0: 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e        /// instan
f6b0: 63 65 2e 20 20 54 68 69 73 20 76 61 6c 75 65 20  ce.  This value 
f6c0: 77 69 6c 6c 20 62 65 20 73 65 74 20 76 69 61 20  will be set via 
f6d0: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 46  the <see cref="F
f6e0: 69 6c 74 65 72 22 20 2f 3e 0d 0a 20 20 20 20 20  ilter" />..     
f6f0: 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 2e 0d 0a     /// method...
f700: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
f710: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
f720: 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 53  public virtual S
f730: 51 4c 69 74 65 56 61 6c 75 65 5b 5d 20 56 61 6c  QLiteValue[] Val
f740: 75 65 73 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ues..        {..
f750: 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
f760: 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  { CheckDisposed(
f770: 29 3b 20 72 65 74 75 72 6e 20 76 61 6c 75 65 73  ); return values
f780: 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ; }..        }..
f790: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
f7a0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
f7b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f7c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f7d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f7e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f7f0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
f800: 20 23 72 65 67 69 6f 6e 20 50 72 6f 74 65 63 74   #region Protect
f810: 65 64 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20  ed Methods..    
f820: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
f830: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
f840: 74 74 65 6d 70 74 73 20 74 6f 20 70 65 72 73 69  ttempts to persi
f850: 73 74 20 74 68 65 20 73 70 65 63 69 66 69 65 64  st the specified
f860: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
f870: 74 65 56 61 6c 75 65 22 20 2f 3e 20 6f 62 6a 65  teValue" /> obje
f880: 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ct..        /// 
f890: 69 6e 73 74 61 6e 63 65 73 20 69 6e 20 6f 72 64  instances in ord
f8a0: 65 72 20 74 6f 20 6d 61 6b 65 20 74 68 65 6d 20  er to make them 
f8b0: 61 76 61 69 6c 61 62 6c 65 20 61 66 74 65 72 20  available after 
f8c0: 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
f8d0: 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
f8e0: 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65  iteManagedModule
f8f0: 2e 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68  .Filter" /> meth
f900: 6f 64 20 72 65 74 75 72 6e 73 2e 0d 0a 20 20 20  od returns...   
f910: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
f920: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
f930: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61   <param name="va
f940: 6c 75 65 73 22 3e 0d 0a 20 20 20 20 20 20 20 20  lues">..        
f950: 2f 2f 2f 20 54 68 65 20 61 72 72 61 79 20 6f 66  /// The array of
f960: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
f970: 74 65 56 61 6c 75 65 22 20 2f 3e 20 6f 62 6a 65  teValue" /> obje
f980: 63 74 20 69 6e 73 74 61 6e 63 65 73 20 74 6f 20  ct instances to 
f990: 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  be..        /// 
f9a0: 70 65 72 73 69 73 74 65 64 2e 0d 0a 20 20 20 20  persisted...    
f9b0: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
f9c0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
f9d0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
f9e0: 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20   /// The number 
f9f0: 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  of <see cref="SQ
fa00: 4c 69 74 65 56 61 6c 75 65 22 20 2f 3e 20 6f 62  LiteValue" /> ob
fa10: 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 73 20 74  ject instances t
fa20: 68 61 74 20 77 65 72 65 0d 0a 20 20 20 20 20 20  hat were..      
fa30: 20 20 2f 2f 2f 20 73 75 63 63 65 73 73 66 75 6c    /// successful
fa40: 6c 79 20 70 65 72 73 69 73 74 65 64 2e 0d 0a 20  ly persisted... 
fa50: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
fa60: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
fa70: 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c  rotected virtual
fa80: 20 69 6e 74 20 54 72 79 50 65 72 73 69 73 74 56   int TryPersistV
fa90: 61 6c 75 65 73 28 0d 0a 20 20 20 20 20 20 20 20  alues(..        
faa0: 20 20 20 20 53 51 4c 69 74 65 56 61 6c 75 65 5b      SQLiteValue[
fab0: 5d 20 76 61 6c 75 65 73 0d 0a 20 20 20 20 20 20  ] values..      
fac0: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
fad0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
fae0: 69 6e 74 20 72 65 73 75 6c 74 20 3d 20 30 3b 0d  int result = 0;.
faf0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
fb00: 66 20 28 76 61 6c 75 65 73 20 21 3d 20 6e 75 6c  f (values != nul
fb10: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
fb20: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
fb30: 20 20 20 66 6f 72 65 61 63 68 20 28 53 51 4c 69     foreach (SQLi
fb40: 74 65 56 61 6c 75 65 20 76 61 6c 75 65 20 69 6e  teValue value in
fb50: 20 76 61 6c 75 65 73 29 0d 0a 20 20 20 20 20 20   values)..      
fb60: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
fb70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fb80: 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75   if (value == nu
fb90: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
fba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
fbb0: 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  tinue;....      
fbc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
fbd0: 20 28 76 61 6c 75 65 2e 50 65 72 73 69 73 74 28   (value.Persist(
fbe0: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
fbf0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75              resu
fc00: 6c 74 2b 2b 3b 0d 0a 20 20 20 20 20 20 20 20 20  lt++;..         
fc10: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
fc20: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
fc30: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65         return re
fc40: 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d  sult;..        }
fc50: 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
fc60: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
fc70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fc80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fc90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fcb0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
fcc0: 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69     #region Publi
fcd0: 63 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20  c Methods..     
fce0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
fcf0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
fd00: 69 73 20 6d 65 74 68 6f 64 20 73 68 6f 75 6c 64  is method should
fd10: 20 6e 6f 72 6d 61 6c 6c 79 20 62 65 20 75 73 65   normally be use
fd20: 64 20 62 79 20 74 68 65 0d 0a 20 20 20 20 20 20  d by the..      
fd30: 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
fd40: 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d  "ISQLiteManagedM
fd50: 6f 64 75 6c 65 2e 46 69 6c 74 65 72 22 20 2f 3e  odule.Filter" />
fd60: 20 6d 65 74 68 6f 64 20 69 6e 20 6f 72 64 65 72   method in order
fd70: 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   to..        ///
fd80: 20 70 65 72 66 6f 72 6d 20 66 69 6c 74 65 72 69   perform filteri
fd90: 6e 67 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74  ng of the result
fda0: 20 72 6f 77 73 20 61 6e 64 2f 6f 72 20 74 6f 20   rows and/or to 
fdb0: 72 65 63 6f 72 64 20 74 68 65 20 66 69 6c 74 65  record the filte
fdc0: 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ring..        //
fdd0: 2f 20 63 72 69 74 65 72 69 61 20 70 72 6f 76 69  / criteria provi
fde0: 64 65 64 20 62 79 20 74 68 65 20 53 51 4c 69 74  ded by the SQLit
fdf0: 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d  e core library..
fe00: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
fe10: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
fe20: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
fe30: 3d 22 69 6e 64 65 78 4e 75 6d 62 65 72 22 3e 0d  ="indexNumber">.
fe40: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 75 6d  .        /// Num
fe50: 62 65 72 20 75 73 65 64 20 74 6f 20 68 65 6c 70  ber used to help
fe60: 20 69 64 65 6e 74 69 66 79 20 74 68 65 20 73 65   identify the se
fe70: 6c 65 63 74 65 64 20 69 6e 64 65 78 2e 0d 0a 20  lected index... 
fe80: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
fe90: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
fea0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e   <param name="in
feb0: 64 65 78 53 74 72 69 6e 67 22 3e 0d 0a 20 20 20  dexString">..   
fec0: 20 20 20 20 20 2f 2f 2f 20 53 74 72 69 6e 67 20       /// String 
fed0: 75 73 65 64 20 74 6f 20 68 65 6c 70 20 69 64 65  used to help ide
fee0: 6e 74 69 66 79 20 74 68 65 20 73 65 6c 65 63 74  ntify the select
fef0: 65 64 20 69 6e 64 65 78 2e 0d 0a 20 20 20 20 20  ed index...     
ff00: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
ff10: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
ff20: 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 73  ram name="values
ff30: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
ff40: 54 68 65 20 76 61 6c 75 65 73 20 63 6f 72 72 65  The values corre
ff50: 73 70 6f 6e 64 69 6e 67 20 74 6f 20 65 61 63 68  sponding to each
ff60: 20 63 6f 6c 75 6d 6e 20 69 6e 20 74 68 65 20 73   column in the s
ff70: 65 6c 65 63 74 65 64 20 69 6e 64 65 78 2e 0d 0a  elected index...
ff80: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
ff90: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ram>..        pu
ffa0: 62 6c 69 63 20 76 69 72 74 75 61 6c 20 76 6f 69  blic virtual voi
ffb0: 64 20 46 69 6c 74 65 72 28 0d 0a 20 20 20 20 20  d Filter(..     
ffc0: 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65 78         int index
ffd0: 4e 75 6d 62 65 72 2c 0d 0a 20 20 20 20 20 20 20  Number,..       
ffe0: 20 20 20 20 20 73 74 72 69 6e 67 20 69 6e 64 65       string inde
fff0: 78 53 74 72 69 6e 67 2c 0d 0a 20 20 20 20 20 20  xString,..      
10000 20 20 20 20 20 20 53 51 4c 69 74 65 56 61 6c 75        SQLiteValu
10010 65 5b 5d 20 76 61 6c 75 65 73 0d 0a 20 20 20 20  e[] values..    
10020 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
10030 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
10040 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28    CheckDisposed(
10050 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
10060 20 20 69 66 20 28 28 76 61 6c 75 65 73 20 21 3d    if ((values !=
10070 20 6e 75 6c 6c 29 20 26 26 0d 0a 20 20 20 20 20   null) &&..     
10080 20 20 20 20 20 20 20 20 20 20 20 28 54 72 79 50             (TryP
10090 65 72 73 69 73 74 56 61 6c 75 65 73 28 76 61 6c  ersistValues(val
100a0 75 65 73 29 20 21 3d 20 76 61 6c 75 65 73 2e 4c  ues) != values.L
100b0 65 6e 67 74 68 29 29 0d 0a 20 20 20 20 20 20 20  ength))..       
100c0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
100d0 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65          throw ne
100e0 77 20 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f  w SQLiteExceptio
100f0 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n(..            
10100 20 20 20 20 20 20 20 20 22 66 61 69 6c 65 64 20          "failed 
10110 74 6f 20 70 65 72 73 69 73 74 20 6f 6e 65 20 6f  to persist one o
10120 72 20 6d 6f 72 65 20 76 61 6c 75 65 73 22 29 3b  r more values");
10130 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
10140 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ...            t
10150 68 69 73 2e 69 6e 64 65 78 4e 75 6d 62 65 72 20  his.indexNumber 
10160 3d 20 69 6e 64 65 78 4e 75 6d 62 65 72 3b 0d 0a  = indexNumber;..
10170 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
10180 2e 69 6e 64 65 78 53 74 72 69 6e 67 20 3d 20 69  .indexString = i
10190 6e 64 65 78 53 74 72 69 6e 67 3b 0d 0a 20 20 20  ndexString;..   
101a0 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 76 61           this.va
101b0 6c 75 65 73 20 3d 20 76 61 6c 75 65 73 3b 0d 0a  lues = values;..
101c0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
101d0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
101e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
101f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
10220 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
10230 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
10240 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 74 68  // Determines th
10250 65 20 69 6e 74 65 67 65 72 20 72 6f 77 20 73 65  e integer row se
10260 71 75 65 6e 63 65 20 6e 75 6d 62 65 72 20 66 6f  quence number fo
10270 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 72 6f  r the current ro
10280 77 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  w...        /// 
10290 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
102a0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
102b0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
102c0 68 65 20 69 6e 74 65 67 65 72 20 72 6f 77 20 73  he integer row s
102d0 65 71 75 65 6e 63 65 20 6e 75 6d 62 65 72 20 66  equence number f
102e0 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 72  or the current r
102f0 6f 77 20 2d 4f 52 2d 20 7a 65 72 6f 20 69 66 0d  ow -OR- zero if.
10300 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 74 20  .        /// it 
10310 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d  cannot be determ
10320 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ined...        /
10330 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
10340 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 69         public vi
10350 72 74 75 61 6c 20 69 6e 74 20 47 65 74 52 6f 77  rtual int GetRow
10360 49 6e 64 65 78 28 29 0d 0a 20 20 20 20 20 20 20  Index()..       
10370 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
10380 72 65 74 75 72 6e 20 72 6f 77 49 6e 64 65 78 3b  return rowIndex;
10390 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
103a0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
103b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
103c0 2f 2f 2f 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 0d 0a  //////////////..
103f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
10400 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
10410 20 2f 2f 2f 20 41 64 6a 75 73 74 73 20 74 68 65   /// Adjusts the
10420 20 69 6e 74 65 67 65 72 20 72 6f 77 20 73 65 71   integer row seq
10430 75 65 6e 63 65 20 6e 75 6d 62 65 72 20 73 6f 20  uence number so 
10440 74 68 61 74 20 69 74 20 72 65 66 65 72 73 20 74  that it refers t
10450 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  o the..        /
10460 2f 2f 20 6e 65 78 74 20 72 6f 77 2e 0d 0a 20 20  // next row...  
10470 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
10480 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
10490 62 6c 69 63 20 76 69 72 74 75 61 6c 20 76 6f 69  blic virtual voi
104a0 64 20 4e 65 78 74 52 6f 77 49 6e 64 65 78 28 29  d NextRowIndex()
104b0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
104c0 20 20 20 20 20 20 20 20 20 72 6f 77 49 6e 64 65           rowInde
104d0 78 2b 2b 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  x++;..        }.
104e0 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
104f0 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
10500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10540 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
10550 20 20 23 72 65 67 69 6f 6e 20 49 53 51 4c 69 74    #region ISQLit
10560 65 4e 61 74 69 76 65 48 61 6e 64 6c 65 20 4d 65  eNativeHandle Me
10570 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 70  mbers..        p
10580 72 69 76 61 74 65 20 49 6e 74 50 74 72 20 6e 61  rivate IntPtr na
10590 74 69 76 65 48 61 6e 64 6c 65 3b 0d 0a 20 20 20  tiveHandle;..   
105a0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
105b0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
105c0 52 65 74 75 72 6e 73 20 74 68 65 20 75 6e 64 65  Returns the unde
105d0 72 6c 79 69 6e 67 20 53 51 4c 69 74 65 20 6e 61  rlying SQLite na
105e0 74 69 76 65 20 68 61 6e 64 6c 65 20 61 73 73 6f  tive handle asso
105f0 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73  ciated with this
10600 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 62  ..        /// ob
10610 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a  ject instance...
10620 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
10630 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
10640 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 49  public virtual I
10650 6e 74 50 74 72 20 4e 61 74 69 76 65 48 61 6e 64  ntPtr NativeHand
10660 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  le..        {.. 
10670 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
10680 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
10690 3b 20 72 65 74 75 72 6e 20 6e 61 74 69 76 65 48  ; return nativeH
106a0 61 6e 64 6c 65 3b 20 7d 0d 0a 20 20 20 20 20 20  andle; }..      
106b0 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73        internal s
106c0 65 74 20 7b 20 6e 61 74 69 76 65 48 61 6e 64 6c  et { nativeHandl
106d0 65 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20  e = value; }..  
106e0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
106f0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
10700 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
10710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a  //////////////..
10750 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
10760 6e 20 49 44 69 73 70 6f 73 61 62 6c 65 20 4d 65  n IDisposable Me
10770 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 2f  mbers..        /
10780 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
10790 20 20 20 20 20 20 2f 2f 2f 20 44 69 73 70 6f 73        /// Dispos
107a0 65 73 20 6f 66 20 74 68 69 73 20 6f 62 6a 65 63  es of this objec
107b0 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  t instance...   
107c0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
107d0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ry>..        pub
107e0 6c 69 63 20 76 6f 69 64 20 44 69 73 70 6f 73 65  lic void Dispose
107f0 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
10800 20 20 20 20 20 20 20 20 20 20 20 44 69 73 70 6f             Dispo
10810 73 65 28 74 72 75 65 29 3b 0d 0a 20 20 20 20 20  se(true);..     
10820 20 20 20 20 20 20 20 47 43 2e 53 75 70 70 72 65         GC.Suppre
10830 73 73 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29  ssFinalize(this)
10840 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
10850 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
10860 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
10870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
108a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
108b0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
108c0 72 65 67 69 6f 6e 20 49 44 69 73 70 6f 73 61 62  region IDisposab
108d0 6c 65 20 22 50 61 74 74 65 72 6e 22 20 4d 65 6d  le "Pattern" Mem
108e0 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 70 72  bers..        pr
108f0 69 76 61 74 65 20 62 6f 6f 6c 20 64 69 73 70 6f  ivate bool dispo
10900 73 65 64 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f  sed;..        //
10910 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
10920 20 20 20 20 20 2f 2f 2f 20 54 68 72 6f 77 73 20       /// Throws 
10930 61 6e 20 3c 73 65 65 20 63 72 65 66 3d 22 4f 62  an <see cref="Ob
10940 6a 65 63 74 44 69 73 70 6f 73 65 64 45 78 63 65  jectDisposedExce
10950 70 74 69 6f 6e 22 20 2f 3e 20 69 66 20 74 68 69  ption" /> if thi
10960 73 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20 20  s object..      
10970 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 20 68    /// instance h
10980 61 73 20 62 65 65 6e 20 64 69 73 70 6f 73 65 64  as been disposed
10990 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
109a0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
109b0 20 20 20 70 72 69 76 61 74 65 20 76 6f 69 64 20     private void 
109c0 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 20  CheckDisposed() 
109d0 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
109e0 20 20 20 20 20 7b 0d 0a 23 69 66 20 54 48 52 4f       {..#if THRO
109f0 57 5f 4f 4e 5f 44 49 53 50 4f 53 45 44 0d 0a 20  W_ON_DISPOSED.. 
10a00 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64             if (d
10a10 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20 20 20  isposed)..      
10a20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
10a30 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e           throw n
10a40 65 77 20 4f 62 6a 65 63 74 44 69 73 70 6f 73 65  ew ObjectDispose
10a50 64 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20 20  dException(..   
10a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10a70 20 74 79 70 65 6f 66 28 53 51 4c 69 74 65 56 69   typeof(SQLiteVi
10a80 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72  rtualTableCursor
10a90 29 2e 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20  ).Name);..      
10aa0 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
10ab0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
10ac0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
10ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
10b10 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
10b20 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
10b30 2f 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f 66 20  /// Disposes of 
10b40 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74  this object inst
10b50 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ance...        /
10b60 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
10b70 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
10b80 6d 20 6e 61 6d 65 3d 22 64 69 73 70 6f 73 69 6e  m name="disposin
10b90 67 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  g">..        ///
10ba0 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 69   Non-zero if thi
10bb0 73 20 6d 65 74 68 6f 64 20 69 73 20 62 65 69 6e  s method is bein
10bc0 67 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 74 68  g called from th
10bd0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
10be0 73 65 65 20 63 72 65 66 3d 22 44 69 73 70 6f 73  see cref="Dispos
10bf0 65 28 29 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 20  e()" /> method. 
10c00 20 5a 65 72 6f 20 69 66 20 74 68 69 73 20 6d 65   Zero if this me
10c10 74 68 6f 64 20 69 73 20 62 65 69 6e 67 20 63 61  thod is being ca
10c20 6c 6c 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  lled..        //
10c30 2f 20 66 72 6f 6d 20 74 68 65 20 66 69 6e 61 6c  / from the final
10c40 69 7a 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f  izer...        /
10c50 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
10c60 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 76       protected v
10c70 69 72 74 75 61 6c 20 76 6f 69 64 20 44 69 73 70  irtual void Disp
10c80 6f 73 65 28 62 6f 6f 6c 20 64 69 73 70 6f 73 69  ose(bool disposi
10c90 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ng)..        {..
10ca0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
10cb0 21 64 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20  !disposed)..    
10cc0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
10cd0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 69 66 20             //if 
10ce0 28 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20  (disposing)..   
10cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 7b               //{
10d00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10d10 20 20 2f 2f 20 20 20 20 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 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
10d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
10d50 20 20 20 20 2f 2f 20 64 69 73 70 6f 73 65 20 6d      // dispose m
10d60 61 6e 61 67 65 64 20 72 65 73 6f 75 72 63 65 73  anaged resources
10d70 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20   here.....      
10d80 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
10d90 2f 2f 2f 2f 2f 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 0d 0a 20 20 20 20 20 20 20 20 20 20  ////..          
10dc0 20 20 20 20 20 20 2f 2f 7d 0d 0a 0d 0a 20 20 20        //}....   
10dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f               ///
10de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10e00 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ///..           
10e10 20 20 20 20 20 2f 2f 20 72 65 6c 65 61 73 65 20       // release 
10e20 75 6e 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72  unmanaged resour
10e30 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20  ces here.....   
10e40 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f               ///
10e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10e70 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
10e80 20 20 20 20 20 20 20 64 69 73 70 6f 73 65 64 20         disposed 
10e90 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  = true;..       
10ea0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
10eb0 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
10ec0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
10ed0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
10ee0 2f 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 0d 0a 0d 0a 20 20 20 20  ////////....    
10f20 20 20 20 20 23 72 65 67 69 6f 6e 20 44 65 73 74      #region Dest
10f30 72 75 63 74 6f 72 0d 0a 20 20 20 20 20 20 20 20  ructor..        
10f40 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
10f50 20 20 20 20 20 20 20 2f 2f 2f 20 46 69 6e 61 6c         /// Final
10f60 69 7a 65 73 20 74 68 69 73 20 6f 62 6a 65 63 74  izes this object
10f70 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20   instance...    
10f80 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
10f90 79 3e 0d 0a 20 20 20 20 20 20 20 20 7e 53 51 4c  y>..        ~SQL
10fa0 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43  iteVirtualTableC
10fb0 75 72 73 6f 72 28 29 0d 0a 20 20 20 20 20 20 20  ursor()..       
10fc0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
10fd0 44 69 73 70 6f 73 65 28 66 61 6c 73 65 29 3b 0d  Dispose(false);.
10fe0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
10ff0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
11000 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72      }..    #endr
11010 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
11020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11060 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
11070 23 72 65 67 69 6f 6e 20 49 53 51 4c 69 74 65 4e  #region ISQLiteN
11080 61 74 69 76 65 48 61 6e 64 6c 65 20 49 6e 74 65  ativeHandle Inte
11090 72 66 61 63 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c  rface..    /// <
110a0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
110b0 2f 20 54 68 69 73 20 69 6e 74 65 72 66 61 63 65  / This interface
110c0 20 72 65 70 72 65 73 65 6e 74 73 20 61 20 6e 61   represents a na
110d0 74 69 76 65 20 68 61 6e 64 6c 65 20 70 72 6f 76  tive handle prov
110e0 69 64 65 64 20 62 79 20 74 68 65 20 53 51 4c 69  ided by the SQLi
110f0 74 65 20 63 6f 72 65 0d 0a 20 20 20 20 2f 2f 2f  te core..    ///
11100 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 2f   library...    /
11110 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
11120 20 20 20 70 75 62 6c 69 63 20 69 6e 74 65 72 66     public interf
11130 61 63 65 20 49 53 51 4c 69 74 65 4e 61 74 69 76  ace ISQLiteNativ
11140 65 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a  eHandle..    {..
11150 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
11160 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
11170 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 68 61  // The native ha
11180 6e 64 6c 65 20 76 61 6c 75 65 2e 0d 0a 20 20 20  ndle value...   
11190 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
111a0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  ry>..        Int
111b0 50 74 72 20 4e 61 74 69 76 65 48 61 6e 64 6c 65  Ptr NativeHandle
111c0 20 7b 20 67 65 74 3b 20 7d 0d 0a 20 20 20 20 7d   { get; }..    }
111d0 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
111e0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
111f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11230 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69  ///....    #regi
11240 6f 6e 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65  on ISQLiteNative
11250 4d 6f 64 75 6c 65 20 49 6e 74 65 72 66 61 63 65  Module Interface
11260 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
11270 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69  ry>..    /// Thi
11280 73 20 69 6e 74 65 72 66 61 63 65 20 72 65 70 72  s interface repr
11290 65 73 65 6e 74 73 20 61 20 76 69 72 74 75 61 6c  esents a virtual
112a0 20 74 61 62 6c 65 20 69 6d 70 6c 65 6d 65 6e 74   table implement
112b0 61 74 69 6f 6e 20 77 72 69 74 74 65 6e 20 69 6e  ation written in
112c0 0d 0a 20 20 20 20 2f 2f 2f 20 6e 61 74 69 76 65  ..    /// native
112d0 20 63 6f 64 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20   code...    /// 
112e0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
112f0 70 75 62 6c 69 63 20 69 6e 74 65 72 66 61 63 65  public interface
11300 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f   ISQLiteNativeMo
11310 64 75 6c 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  dule..    {..   
11320 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
11330 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
11340 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
11350 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20  /// This method 
11360 69 73 20 63 61 6c 6c 65 64 20 74 6f 20 63 72 65  is called to cre
11370 61 74 65 20 61 20 6e 65 77 20 69 6e 73 74 61 6e  ate a new instan
11380 63 65 20 6f 66 20 61 20 76 69 72 74 75 61 6c 20  ce of a virtual 
11390 74 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f  table..        /
113a0 2f 2f 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74  // in response t
113b0 6f 20 61 20 43 52 45 41 54 45 20 56 49 52 54 55  o a CREATE VIRTU
113c0 41 4c 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65  AL TABLE stateme
113d0 6e 74 2e 20 54 68 65 20 64 62 20 70 61 72 61 6d  nt. The db param
113e0 65 74 65 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f  eter..        //
113f0 2f 20 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74  / is a pointer t
11400 6f 20 74 68 65 20 53 51 4c 69 74 65 20 64 61 74  o the SQLite dat
11410 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
11420 20 74 68 61 74 20 69 73 20 65 78 65 63 75 74 69   that is executi
11430 6e 67 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ng..        /// 
11440 74 68 65 20 43 52 45 41 54 45 20 56 49 52 54 55  the CREATE VIRTU
11450 41 4c 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65  AL TABLE stateme
11460 6e 74 2e 20 54 68 65 20 70 41 75 78 20 61 72 67  nt. The pAux arg
11470 75 6d 65 6e 74 20 69 73 20 74 68 65 20 63 6f 70  ument is the cop
11480 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f  y..        /// o
11490 66 20 74 68 65 20 63 6c 69 65 6e 74 20 64 61 74  f the client dat
114a0 61 20 70 6f 69 6e 74 65 72 20 74 68 61 74 20 77  a pointer that w
114b0 61 73 20 74 68 65 20 66 6f 75 72 74 68 20 61 72  as the fourth ar
114c0 67 75 6d 65 6e 74 20 74 6f 20 74 68 65 0d 0a 20  gument to the.. 
114d0 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74         /// sqlit
114e0 65 33 5f 63 72 65 61 74 65 5f 6d 6f 64 75 6c 65  e3_create_module
114f0 28 29 20 6f 72 20 73 71 6c 69 74 65 33 5f 63 72  () or sqlite3_cr
11500 65 61 74 65 5f 6d 6f 64 75 6c 65 5f 76 32 28 29  eate_module_v2()
11510 20 63 61 6c 6c 20 74 68 61 74 0d 0a 20 20 20 20   call that..    
11520 20 20 20 20 2f 2f 2f 20 72 65 67 69 73 74 65 72      /// register
11530 65 64 20 74 68 65 20 76 69 72 74 75 61 6c 20 74  ed the virtual t
11540 61 62 6c 65 20 6d 6f 64 75 6c 65 2e 20 54 68 65  able module. The
11550 20 61 72 67 76 20 70 61 72 61 6d 65 74 65 72 20   argv parameter 
11560 69 73 20 61 6e 0d 0a 20 20 20 20 20 20 20 20 2f  is an..        /
11570 2f 2f 20 61 72 72 61 79 20 6f 66 20 61 72 67 63  // array of argc
11580 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 6e 75 6c   pointers to nul
11590 6c 20 74 65 72 6d 69 6e 61 74 65 64 20 73 74 72  l terminated str
115a0 69 6e 67 73 2e 20 54 68 65 20 66 69 72 73 74 0d  ings. The first.
115b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72  .        /// str
115c0 69 6e 67 2c 20 61 72 67 76 5b 30 5d 2c 20 69 73  ing, argv[0], is
115d0 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   the name of the
115e0 20 6d 6f 64 75 6c 65 20 62 65 69 6e 67 20 69 6e   module being in
115f0 76 6f 6b 65 64 2e 20 54 68 65 0d 0a 20 20 20 20  voked. The..    
11600 20 20 20 20 2f 2f 2f 20 6d 6f 64 75 6c 65 20 6e      /// module n
11610 61 6d 65 20 69 73 20 74 68 65 20 6e 61 6d 65 20  ame is the name 
11620 70 72 6f 76 69 64 65 64 20 61 73 20 74 68 65 20  provided as the 
11630 73 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74 20  second argument 
11640 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  to..        /// 
11650 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 6d  sqlite3_create_m
11660 6f 64 75 6c 65 28 29 20 61 6e 64 20 61 73 20 74  odule() and as t
11670 68 65 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 74  he argument to t
11680 68 65 20 55 53 49 4e 47 20 63 6c 61 75 73 65 20  he USING clause 
11690 6f 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  of..        /// 
116a0 74 68 65 20 43 52 45 41 54 45 20 56 49 52 54 55  the CREATE VIRTU
116b0 41 4c 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65  AL TABLE stateme
116c0 6e 74 20 74 68 61 74 20 69 73 20 72 75 6e 6e 69  nt that is runni
116d0 6e 67 2e 20 54 68 65 20 73 65 63 6f 6e 64 2c 0d  ng. The second,.
116e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 72 67  .        /// arg
116f0 76 5b 31 5d 2c 20 69 73 20 74 68 65 20 6e 61 6d  v[1], is the nam
11700 65 20 6f 66 20 74 68 65 20 64 61 74 61 62 61 73  e of the databas
11710 65 20 69 6e 20 77 68 69 63 68 20 74 68 65 20 6e  e in which the n
11720 65 77 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  ew virtual table
11730 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 73  ..        /// is
11740 20 62 65 69 6e 67 20 63 72 65 61 74 65 64 2e 20   being created. 
11750 54 68 65 20 64 61 74 61 62 61 73 65 20 6e 61 6d  The database nam
11760 65 20 69 73 20 22 6d 61 69 6e 22 20 66 6f 72 20  e is "main" for 
11770 74 68 65 20 70 72 69 6d 61 72 79 0d 0a 20 20 20  the primary..   
11780 20 20 20 20 20 2f 2f 2f 20 64 61 74 61 62 61 73       /// databas
11790 65 2c 20 6f 72 20 22 74 65 6d 70 22 20 66 6f 72  e, or "temp" for
117a0 20 54 45 4d 50 20 64 61 74 61 62 61 73 65 2c 20   TEMP database, 
117b0 6f 72 20 74 68 65 20 6e 61 6d 65 20 67 69 76 65  or the name give
117c0 6e 20 61 74 20 74 68 65 0d 0a 20 20 20 20 20 20  n at the..      
117d0 20 20 2f 2f 2f 20 65 6e 64 20 6f 66 20 74 68 65    /// end of the
117e0 20 41 54 54 41 43 48 20 73 74 61 74 65 6d 65 6e   ATTACH statemen
117f0 74 20 66 6f 72 20 61 74 74 61 63 68 65 64 20 64  t for attached d
11800 61 74 61 62 61 73 65 73 2e 20 54 68 65 20 74 68  atabases. The th
11810 69 72 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ird..        ///
11820 20 65 6c 65 6d 65 6e 74 20 6f 66 20 74 68 65 20   element of the 
11830 61 72 72 61 79 2c 20 61 72 67 76 5b 32 5d 2c 20  array, argv[2], 
11840 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74  is the name of t
11850 68 65 20 6e 65 77 20 76 69 72 74 75 61 6c 0d 0a  he new virtual..
11860 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 61 62 6c          /// tabl
11870 65 2c 20 61 73 20 73 70 65 63 69 66 69 65 64 20  e, as specified 
11880 66 6f 6c 6c 6f 77 69 6e 67 20 74 68 65 20 54 41  following the TA
11890 42 4c 45 20 6b 65 79 77 6f 72 64 20 69 6e 20 74  BLE keyword in t
118a0 68 65 20 43 52 45 41 54 45 0d 0a 20 20 20 20 20  he CREATE..     
118b0 20 20 20 2f 2f 2f 20 56 49 52 54 55 41 4c 20 54     /// VIRTUAL T
118c0 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 2e 20  ABLE statement. 
118d0 49 66 20 70 72 65 73 65 6e 74 2c 20 74 68 65 20  If present, the 
118e0 66 6f 75 72 74 68 20 61 6e 64 20 73 75 62 73 65  fourth and subse
118f0 71 75 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 2f  quent..        /
11900 2f 2f 20 73 74 72 69 6e 67 73 20 69 6e 20 74 68  // strings in th
11910 65 20 61 72 67 76 5b 5d 20 61 72 72 61 79 20 72  e argv[] array r
11920 65 70 6f 72 74 20 74 68 65 20 61 72 67 75 6d 65  eport the argume
11930 6e 74 73 20 74 6f 20 74 68 65 20 6d 6f 64 75 6c  nts to the modul
11940 65 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20  e name..        
11950 2f 2f 2f 20 69 6e 20 74 68 65 20 43 52 45 41 54  /// in the CREAT
11960 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45 20  E VIRTUAL TABLE 
11970 73 74 61 74 65 6d 65 6e 74 2e 0d 0a 20 20 20 20  statement...    
11980 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d      /// </para>.
11990 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
119a0 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
119b0 20 54 68 65 20 6a 6f 62 20 6f 66 20 74 68 69 73   The job of this
119c0 20 6d 65 74 68 6f 64 20 69 73 20 74 6f 20 63 6f   method is to co
119d0 6e 73 74 72 75 63 74 20 74 68 65 20 6e 65 77 20  nstruct the new 
119e0 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 6f 62  virtual table ob
119f0 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ject..        //
11a00 2f 20 28 61 6e 20 73 71 6c 69 74 65 33 5f 76 74  / (an sqlite3_vt
11a10 61 62 20 6f 62 6a 65 63 74 29 20 61 6e 64 20 72  ab object) and r
11a20 65 74 75 72 6e 20 61 20 70 6f 69 6e 74 65 72 20  eturn a pointer 
11a30 74 6f 20 69 74 20 69 6e 20 2a 70 70 56 54 61 62  to it in *ppVTab
11a40 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
11a50 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
11a60 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
11a70 20 20 20 20 2f 2f 2f 20 41 73 20 70 61 72 74 20      /// As part 
11a80 6f 66 20 74 68 65 20 74 61 73 6b 20 6f 66 20 63  of the task of c
11a90 72 65 61 74 69 6e 67 20 61 20 6e 65 77 20 73 71  reating a new sq
11aa0 6c 69 74 65 33 5f 76 74 61 62 20 73 74 72 75 63  lite3_vtab struc
11ab0 74 75 72 65 2c 20 74 68 69 73 0d 0a 20 20 20 20  ture, this..    
11ac0 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 20 6d      /// method m
11ad0 75 73 74 20 69 6e 76 6f 6b 65 20 73 71 6c 69 74  ust invoke sqlit
11ae0 65 33 5f 64 65 63 6c 61 72 65 5f 76 74 61 62 28  e3_declare_vtab(
11af0 29 20 74 6f 20 74 65 6c 6c 20 74 68 65 20 53 51  ) to tell the SQ
11b00 4c 69 74 65 20 63 6f 72 65 0d 0a 20 20 20 20 20  Lite core..     
11b10 20 20 20 2f 2f 2f 20 61 62 6f 75 74 20 74 68 65     /// about the
11b20 20 63 6f 6c 75 6d 6e 73 20 61 6e 64 20 64 61 74   columns and dat
11b30 61 74 79 70 65 73 20 69 6e 20 74 68 65 20 76 69  atypes in the vi
11b40 72 74 75 61 6c 20 74 61 62 6c 65 2e 20 54 68 65  rtual table. The
11b50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71  ..        /// sq
11b60 6c 69 74 65 33 5f 64 65 63 6c 61 72 65 5f 76 74  lite3_declare_vt
11b70 61 62 28 29 20 41 50 49 20 68 61 73 20 74 68 65  ab() API has the
11b80 20 66 6f 6c 6c 6f 77 69 6e 67 20 70 72 6f 74 6f   following proto
11b90 74 79 70 65 3a 0d 0a 20 20 20 20 20 20 20 20 2f  type:..        /
11ba0 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20  // </para>..    
11bb0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a      /// <para>..
11bc0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 63 6f 64          /// <cod
11bd0 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e>..        /// 
11be0 69 6e 74 20 73 71 6c 69 74 65 33 5f 64 65 63 6c  int sqlite3_decl
11bf0 61 72 65 5f 76 74 61 62 28 73 71 6c 69 74 65 33  are_vtab(sqlite3
11c00 20 2a 64 62 2c 20 63 6f 6e 73 74 20 63 68 61 72   *db, const char
11c10 20 2a 7a 43 72 65 61 74 65 54 61 62 6c 65 29 0d   *zCreateTable).
11c20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 63  .        /// </c
11c30 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode>..        //
11c40 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20  / </para>..     
11c50 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20     /// <para>.. 
11c60 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66         /// The f
11c70 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20 74 6f  irst argument to
11c80 20 73 71 6c 69 74 65 33 5f 64 65 63 6c 61 72 65   sqlite3_declare
11c90 5f 76 74 61 62 28 29 20 6d 75 73 74 20 62 65 20  _vtab() must be 
11ca0 74 68 65 20 73 61 6d 65 0d 0a 20 20 20 20 20 20  the same..      
11cb0 20 20 2f 2f 2f 20 64 61 74 61 62 61 73 65 20 63    /// database c
11cc0 6f 6e 6e 65 63 74 69 6f 6e 20 70 6f 69 6e 74 65  onnection pointe
11cd0 72 20 61 73 20 74 68 65 20 66 69 72 73 74 20 70  r as the first p
11ce0 61 72 61 6d 65 74 65 72 20 74 6f 20 74 68 69 73  arameter to this
11cf0 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
11d00 20 20 2f 2f 2f 20 54 68 65 20 73 65 63 6f 6e 64    /// The second
11d10 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 73 71 6c   argument to sql
11d20 69 74 65 33 5f 64 65 63 6c 61 72 65 5f 76 74 61  ite3_declare_vta
11d30 62 28 29 20 6d 75 73 74 20 61 0d 0a 20 20 20 20  b() must a..    
11d40 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 2d 74 65 72      /// zero-ter
11d50 6d 69 6e 61 74 65 64 20 55 54 46 2d 38 20 73 74  minated UTF-8 st
11d60 72 69 6e 67 20 74 68 61 74 20 63 6f 6e 74 61 69  ring that contai
11d70 6e 73 20 61 20 77 65 6c 6c 2d 66 6f 72 6d 65 64  ns a well-formed
11d80 20 43 52 45 41 54 45 0d 0a 20 20 20 20 20 20 20   CREATE..       
11d90 20 2f 2f 2f 20 54 41 42 4c 45 20 73 74 61 74 65   /// TABLE state
11da0 6d 65 6e 74 20 74 68 61 74 20 64 65 66 69 6e 65  ment that define
11db0 73 20 74 68 65 20 63 6f 6c 75 6d 6e 73 20 69 6e  s the columns in
11dc0 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
11dd0 6c 65 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20  le and..        
11de0 2f 2f 2f 20 74 68 65 69 72 20 64 61 74 61 20 74  /// their data t
11df0 79 70 65 73 2e 20 54 68 65 20 6e 61 6d 65 20 6f  ypes. The name o
11e00 66 20 74 68 65 20 74 61 62 6c 65 20 69 6e 20 74  f the table in t
11e10 68 69 73 20 43 52 45 41 54 45 20 54 41 42 4c 45  his CREATE TABLE
11e20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74  ..        /// st
11e30 61 74 65 6d 65 6e 74 20 69 73 20 69 67 6e 6f 72  atement is ignor
11e40 65 64 2c 20 61 73 20 61 72 65 20 61 6c 6c 20 63  ed, as are all c
11e50 6f 6e 73 74 72 61 69 6e 74 73 2e 20 4f 6e 6c 79  onstraints. Only
11e60 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65   the column name
11e70 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61  s..        /// a
11e80 6e 64 20 64 61 74 61 74 79 70 65 73 20 6d 61 74  nd datatypes mat
11e90 74 65 72 2e 20 54 68 65 20 43 52 45 41 54 45 20  ter. The CREATE 
11ea0 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 20  TABLE statement 
11eb0 73 74 72 69 6e 67 20 6e 65 65 64 20 6e 6f 74 20  string need not 
11ec0 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  to..        /// 
11ed0 62 65 20 68 65 6c 64 20 69 6e 20 70 65 72 73 69  be held in persi
11ee0 73 74 65 6e 74 20 6d 65 6d 6f 72 79 2e 20 54 68  stent memory. Th
11ef0 65 20 73 74 72 69 6e 67 20 63 61 6e 20 62 65 20  e string can be 
11f00 64 65 61 6c 6c 6f 63 61 74 65 64 20 61 6e 64 2f  deallocated and/
11f10 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  or..        /// 
11f20 72 65 75 73 65 64 20 61 73 20 73 6f 6f 6e 20 61  reused as soon a
11f30 73 20 74 68 65 20 73 71 6c 69 74 65 33 5f 64 65  s the sqlite3_de
11f40 63 6c 61 72 65 5f 76 74 61 62 28 29 20 72 6f 75  clare_vtab() rou
11f50 74 69 6e 65 20 72 65 74 75 72 6e 73 2e 0d 0a 20  tine returns... 
11f60 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
11f70 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
11f80 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
11f90 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
11fa0 61 6d 65 3d 22 70 44 62 22 3e 0d 0a 20 20 20 20  ame="pDb">..    
11fb0 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
11fc0 76 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  ve database conn
11fd0 65 63 74 69 6f 6e 20 68 61 6e 64 6c 65 2e 0d 0a  ection handle...
11fe0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
11ff0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
12000 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
12010 41 75 78 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  Aux">..        /
12020 2f 2f 20 54 68 65 20 6f 72 69 67 69 6e 61 6c 20  // The original 
12030 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 76  native pointer v
12040 61 6c 75 65 20 74 68 61 74 20 77 61 73 20 70 72  alue that was pr
12050 6f 76 69 64 65 64 20 74 6f 20 74 68 65 0d 0a 20  ovided to the.. 
12060 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74         /// sqlit
12070 65 33 5f 63 72 65 61 74 65 5f 6d 6f 64 75 6c 65  e3_create_module
12080 28 29 2c 20 73 71 6c 69 74 65 33 5f 63 72 65 61  (), sqlite3_crea
12090 74 65 5f 6d 6f 64 75 6c 65 5f 76 32 28 29 20 6f  te_module_v2() o
120a0 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  r..        /// s
120b0 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 64 69  qlite3_create_di
120c0 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65 28  sposable_module(
120d0 29 20 66 75 6e 63 74 69 6f 6e 73 2e 0d 0a 20 20  ) functions...  
120e0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
120f0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
12100 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67  <param name="arg
12110 63 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  c">..        ///
12120 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 61   The number of a
12130 72 67 75 6d 65 6e 74 73 20 66 72 6f 6d 20 74 68  rguments from th
12140 65 20 43 52 45 41 54 45 20 56 49 52 54 55 41 4c  e CREATE VIRTUAL
12150 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74   TABLE statement
12160 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
12170 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
12180 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
12190 3d 22 61 72 67 76 22 3e 0d 0a 20 20 20 20 20 20  ="argv">..      
121a0 20 20 2f 2f 2f 20 54 68 65 20 61 72 72 61 79 20    /// The array 
121b0 6f 66 20 73 74 72 69 6e 67 20 61 72 67 75 6d 65  of string argume
121c0 6e 74 73 20 66 72 6f 6d 20 74 68 65 20 43 52 45  nts from the CRE
121d0 41 54 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c  ATE VIRTUAL TABL
121e0 45 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  E..        /// s
121f0 74 61 74 65 6d 65 6e 74 2e 0d 0a 20 20 20 20 20  tatement...     
12200 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
12210 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
12220 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22  ram name="pVtab"
12230 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55  >..        /// U
12240 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69  pon success, thi
12250 73 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74  s parameter must
12260 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20   be modified to 
12270 70 6f 69 6e 74 20 74 6f 20 74 68 65 20 6e 65 77  point to the new
12280 6c 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ly..        /// 
12290 63 72 65 61 74 65 64 20 6e 61 74 69 76 65 20 73  created native s
122a0 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69  qlite3_vtab deri
122b0 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  ved structure...
122c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
122d0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
122e0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
122f0 45 72 72 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20  Error">..       
12300 20 2f 2f 2f 20 55 70 6f 6e 20 66 61 69 6c 75 72   /// Upon failur
12310 65 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65  e, this paramete
12320 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69  r must be modifi
12330 65 64 20 74 6f 20 70 6f 69 6e 74 20 74 6f 20 74  ed to point to t
12340 68 65 20 65 72 72 6f 72 0d 0a 20 20 20 20 20 20  he error..      
12350 20 20 2f 2f 2f 20 6d 65 73 73 61 67 65 2c 20 77    /// message, w
12360 69 74 68 20 74 68 65 20 75 6e 64 65 72 6c 79 69  ith the underlyi
12370 6e 67 20 6d 65 6d 6f 72 79 20 68 61 76 69 6e 67  ng memory having
12380 20 62 65 65 6e 20 6f 62 74 61 69 6e 65 64 20 66   been obtained f
12390 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20 20 20  rom the..       
123a0 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 6d 61 6c   /// sqlite3_mal
123b0 6c 6f 63 28 29 20 66 75 6e 63 74 69 6f 6e 2e 0d  loc() function..
123c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
123d0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
123e0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
123f0 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e        /// A stan
12400 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75  dard SQLite retu
12410 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  rn code...      
12420 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
12430 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65  ..        SQLite
12440 45 72 72 6f 72 43 6f 64 65 20 78 43 72 65 61 74  ErrorCode xCreat
12450 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
12460 49 6e 74 50 74 72 20 70 44 62 2c 0d 0a 20 20 20  IntPtr pDb,..   
12470 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
12480 70 41 75 78 2c 0d 0a 20 20 20 20 20 20 20 20 20  pAux,..         
12490 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20     int argc,..  
124a0 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
124b0 20 61 72 67 76 2c 0d 0a 20 20 20 20 20 20 20 20   argv,..        
124c0 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70      ref IntPtr p
124d0 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20  Vtab,..         
124e0 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 45     ref IntPtr pE
124f0 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20  rror..          
12500 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    );....        
12510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12550 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
12560 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
12570 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
12580 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
12590 2f 20 54 68 65 20 78 43 6f 6e 6e 65 63 74 20 6d  / The xConnect m
125a0 65 74 68 6f 64 20 69 73 20 76 65 72 79 20 73 69  ethod is very si
125b0 6d 69 6c 61 72 20 74 6f 20 78 43 72 65 61 74 65  milar to xCreate
125c0 2e 20 49 74 20 68 61 73 20 74 68 65 20 73 61 6d  . It has the sam
125d0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70  e..        /// p
125e0 61 72 61 6d 65 74 65 72 73 20 61 6e 64 20 63 6f  arameters and co
125f0 6e 73 74 72 75 63 74 73 20 61 20 6e 65 77 20 73  nstructs a new s
12600 71 6c 69 74 65 33 5f 76 74 61 62 20 73 74 72 75  qlite3_vtab stru
12610 63 74 75 72 65 20 6a 75 73 74 20 6c 69 6b 65 0d  cture just like.
12620 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 78 43 72  .        /// xCr
12630 65 61 74 65 2e 20 41 6e 64 20 69 74 20 6d 75 73  eate. And it mus
12640 74 20 61 6c 73 6f 20 63 61 6c 6c 20 73 71 6c 69  t also call sqli
12650 74 65 33 5f 64 65 63 6c 61 72 65 5f 76 74 61 62  te3_declare_vtab
12660 28 29 20 6c 69 6b 65 20 78 43 72 65 61 74 65 2e  () like xCreate.
12670 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
12680 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
12690 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20  // <para>..     
126a0 20 20 20 2f 2f 2f 20 54 68 65 20 64 69 66 66 65     /// The diffe
126b0 72 65 6e 63 65 20 69 73 20 74 68 61 74 20 78 43  rence is that xC
126c0 6f 6e 6e 65 63 74 20 69 73 20 63 61 6c 6c 65 64  onnect is called
126d0 20 74 6f 20 65 73 74 61 62 6c 69 73 68 20 61 20   to establish a 
126e0 6e 65 77 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  new..        ///
126f0 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20 61   connection to a
12700 6e 20 65 78 69 73 74 69 6e 67 20 76 69 72 74 75  n existing virtu
12710 61 6c 20 74 61 62 6c 65 20 77 68 65 72 65 61 73  al table whereas
12720 20 78 43 72 65 61 74 65 20 69 73 20 63 61 6c 6c   xCreate is call
12730 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
12740 74 6f 20 63 72 65 61 74 65 20 61 20 6e 65 77 20  to create a new 
12750 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 66 72  virtual table fr
12760 6f 6d 20 73 63 72 61 74 63 68 2e 0d 0a 20 20 20  om scratch...   
12770 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
12780 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
12790 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
127a0 2f 20 54 68 65 20 78 43 72 65 61 74 65 20 61 6e  / The xCreate an
127b0 64 20 78 43 6f 6e 6e 65 63 74 20 6d 65 74 68 6f  d xConnect metho
127c0 64 73 20 61 72 65 20 6f 6e 6c 79 20 64 69 66 66  ds are only diff
127d0 65 72 65 6e 74 20 77 68 65 6e 20 74 68 65 0d 0a  erent when the..
127e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 69 72 74          /// virt
127f0 75 61 6c 20 74 61 62 6c 65 20 68 61 73 20 73 6f  ual table has so
12800 6d 65 20 6b 69 6e 64 20 6f 66 20 62 61 63 6b 69  me kind of backi
12810 6e 67 20 73 74 6f 72 65 20 74 68 61 74 20 6d 75  ng store that mu
12820 73 74 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f  st be..        /
12830 2f 2f 20 69 6e 69 74 69 61 6c 69 7a 65 64 20 74  // initialized t
12840 68 65 20 66 69 72 73 74 20 74 69 6d 65 20 74 68  he first time th
12850 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  e virtual table 
12860 69 73 20 63 72 65 61 74 65 64 2e 20 54 68 65 0d  is created. The.
12870 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 78 43 72  .        /// xCr
12880 65 61 74 65 20 6d 65 74 68 6f 64 20 63 72 65 61  eate method crea
12890 74 65 73 20 61 6e 64 20 69 6e 69 74 69 61 6c 69  tes and initiali
128a0 7a 65 73 20 74 68 65 20 62 61 63 6b 69 6e 67 20  zes the backing 
128b0 73 74 6f 72 65 2e 20 54 68 65 0d 0a 20 20 20 20  store. The..    
128c0 20 20 20 20 2f 2f 2f 20 78 43 6f 6e 6e 65 63 74      /// xConnect
128d0 20 6d 65 74 68 6f 64 20 6a 75 73 74 20 63 6f 6e   method just con
128e0 6e 65 63 74 73 20 74 6f 20 61 6e 20 65 78 69 73  nects to an exis
128f0 74 69 6e 67 20 62 61 63 6b 69 6e 67 20 73 74 6f  ting backing sto
12900 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
12910 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20   </para>..      
12920 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20    /// <para>..  
12930 20 20 20 20 20 20 2f 2f 2f 20 41 73 20 61 6e 20        /// As an 
12940 65 78 61 6d 70 6c 65 2c 20 63 6f 6e 73 69 64 65  example, conside
12950 72 20 61 20 76 69 72 74 75 61 6c 20 74 61 62 6c  r a virtual tabl
12960 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e implementation
12970 20 74 68 61 74 0d 0a 20 20 20 20 20 20 20 20 2f   that..        /
12980 2f 2f 20 70 72 6f 76 69 64 65 73 20 72 65 61 64  // provides read
12990 2d 6f 6e 6c 79 20 61 63 63 65 73 73 20 74 6f 20  -only access to 
129a0 65 78 69 73 74 69 6e 67 20 63 6f 6d 6d 61 2d 73  existing comma-s
129b0 65 70 61 72 61 74 65 64 2d 76 61 6c 75 65 20 28  eparated-value (
129c0 43 53 56 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f  CSV)..        //
129d0 2f 20 66 69 6c 65 73 20 6f 6e 20 64 69 73 6b 2e  / files on disk.
129e0 20 54 68 65 72 65 20 69 73 20 6e 6f 20 62 61 63   There is no bac
129f0 6b 69 6e 67 20 73 74 6f 72 65 20 74 68 61 74 20  king store that 
12a00 6e 65 65 64 73 20 74 6f 20 62 65 20 63 72 65 61  needs to be crea
12a10 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ted..        ///
12a20 20 6f 72 20 69 6e 69 74 69 61 6c 69 7a 65 64 20   or initialized 
12a30 66 6f 72 20 73 75 63 68 20 61 20 76 69 72 74 75  for such a virtu
12a40 61 6c 20 74 61 62 6c 65 20 28 73 69 6e 63 65 20  al table (since 
12a50 74 68 65 20 43 53 56 20 66 69 6c 65 73 0d 0a 20  the CSV files.. 
12a60 20 20 20 20 20 20 20 2f 2f 2f 20 61 6c 72 65 61         /// alrea
12a70 64 79 20 65 78 69 73 74 20 6f 6e 20 64 69 73 6b  dy exist on disk
12a80 29 20 73 6f 20 74 68 65 20 78 43 72 65 61 74 65  ) so the xCreate
12a90 20 61 6e 64 20 78 43 6f 6e 6e 65 63 74 20 6d 65   and xConnect me
12aa0 74 68 6f 64 73 20 77 69 6c 6c 20 62 65 0d 0a 20  thods will be.. 
12ab0 20 20 20 20 20 20 20 2f 2f 2f 20 69 64 65 6e 74         /// ident
12ac0 69 63 61 6c 20 66 6f 72 20 74 68 61 74 20 6d 6f  ical for that mo
12ad0 64 75 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  dule...        /
12ae0 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20  // </para>..    
12af0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a      /// <para>..
12b00 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 6e 6f 74          /// Anot
12b10 68 65 72 20 65 78 61 6d 70 6c 65 20 69 73 20 61  her example is a
12b20 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 74   virtual table t
12b30 68 61 74 20 69 6d 70 6c 65 6d 65 6e 74 73 20 61  hat implements a
12b40 20 66 75 6c 6c 2d 74 65 78 74 0d 0a 20 20 20 20   full-text..    
12b50 20 20 20 20 2f 2f 2f 20 69 6e 64 65 78 2e 20 54      /// index. T
12b60 68 65 20 78 43 72 65 61 74 65 20 6d 65 74 68 6f  he xCreate metho
12b70 64 20 6d 75 73 74 20 63 72 65 61 74 65 20 61 6e  d must create an
12b80 64 20 69 6e 69 74 69 61 6c 69 7a 65 20 64 61 74  d initialize dat
12b90 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  a..        /// s
12ba0 74 72 75 63 74 75 72 65 73 20 74 6f 20 68 6f 6c  tructures to hol
12bb0 64 20 74 68 65 20 64 69 63 74 69 6f 6e 61 72 79  d the dictionary
12bc0 20 61 6e 64 20 70 6f 73 74 69 6e 67 20 6c 69 73   and posting lis
12bd0 74 73 20 66 6f 72 20 74 68 61 74 20 69 6e 64 65  ts for that inde
12be0 78 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  x...        /// 
12bf0 54 68 65 20 78 43 6f 6e 6e 65 63 74 20 6d 65 74  The xConnect met
12c00 68 6f 64 2c 20 6f 6e 20 74 68 65 20 6f 74 68 65  hod, on the othe
12c10 72 20 68 61 6e 64 2c 20 6f 6e 6c 79 20 68 61 73  r hand, only has
12c20 20 74 6f 20 6c 6f 63 61 74 65 20 61 6e 64 20 75   to locate and u
12c30 73 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  se..        /// 
12c40 61 6e 20 65 78 69 73 74 69 6e 67 20 64 69 63 74  an existing dict
12c50 69 6f 6e 61 72 79 20 61 6e 64 20 70 6f 73 74 69  ionary and posti
12c60 6e 67 20 6c 69 73 74 73 20 74 68 61 74 20 77 65  ng lists that we
12c70 72 65 20 63 72 65 61 74 65 64 20 62 79 20 61 0d  re created by a.
12c80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 72 69  .        /// pri
12c90 6f 72 20 78 43 72 65 61 74 65 20 63 61 6c 6c 2e  or xCreate call.
12ca0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
12cb0 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
12cc0 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20  // <para>..     
12cd0 20 20 20 2f 2f 2f 20 54 68 65 20 78 43 6f 6e 6e     /// The xConn
12ce0 65 63 74 20 6d 65 74 68 6f 64 20 6d 75 73 74 20  ect method must 
12cf0 72 65 74 75 72 6e 20 53 51 4c 49 54 45 5f 4f 4b  return SQLITE_OK
12d00 20 69 66 20 69 74 20 69 73 20 73 75 63 63 65 73   if it is succes
12d10 73 66 75 6c 20 69 6e 0d 0a 20 20 20 20 20 20 20  sful in..       
12d20 20 2f 2f 2f 20 63 72 65 61 74 69 6e 67 20 74 68   /// creating th
12d30 65 20 6e 65 77 20 76 69 72 74 75 61 6c 20 74 61  e new virtual ta
12d40 62 6c 65 2c 20 6f 72 20 53 51 4c 49 54 45 5f 45  ble, or SQLITE_E
12d50 52 52 4f 52 20 69 66 20 69 74 20 69 73 20 6e 6f  RROR if it is no
12d60 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  t..        /// s
12d70 75 63 63 65 73 73 66 75 6c 2e 20 49 66 20 6e 6f  uccessful. If no
12d80 74 20 73 75 63 63 65 73 73 66 75 6c 2c 20 74 68  t successful, th
12d90 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 73  e sqlite3_vtab s
12da0 74 72 75 63 74 75 72 65 20 6d 75 73 74 20 6e 6f  tructure must no
12db0 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 62  t..        /// b
12dc0 65 20 61 6c 6c 6f 63 61 74 65 64 2e 20 41 6e 20  e allocated. An 
12dd0 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 6d 61  error message ma
12de0 79 20 6f 70 74 69 6f 6e 61 6c 6c 79 20 62 65 20  y optionally be 
12df0 72 65 74 75 72 6e 65 64 20 69 6e 20 2a 70 7a 45  returned in *pzE
12e00 72 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  rr..        /// 
12e10 69 66 20 75 6e 73 75 63 63 65 73 73 66 75 6c 2e  if unsuccessful.
12e20 20 53 70 61 63 65 20 74 6f 20 68 6f 6c 64 20 74   Space to hold t
12e30 68 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65  he error message
12e40 20 73 74 72 69 6e 67 20 6d 75 73 74 20 62 65 0d   string must be.
12e50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 6c 6c  .        /// all
12e60 6f 63 61 74 65 64 20 75 73 69 6e 67 20 61 6e 20  ocated using an 
12e70 53 51 4c 69 74 65 20 6d 65 6d 6f 72 79 20 61 6c  SQLite memory al
12e80 6c 6f 63 61 74 69 6f 6e 20 66 75 6e 63 74 69 6f  location functio
12e90 6e 20 6c 69 6b 65 0d 0a 20 20 20 20 20 20 20 20  n like..        
12ea0 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c  /// sqlite3_mall
12eb0 6f 63 28 29 20 6f 72 20 73 71 6c 69 74 65 33 5f  oc() or sqlite3_
12ec0 6d 70 72 69 6e 74 66 28 29 20 61 73 20 74 68 65  mprintf() as the
12ed0 20 53 51 4c 69 74 65 20 63 6f 72 65 20 77 69 6c   SQLite core wil
12ee0 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61  l..        /// a
12ef0 74 74 65 6d 70 74 20 74 6f 20 66 72 65 65 20 74  ttempt to free t
12f00 68 65 20 73 70 61 63 65 20 75 73 69 6e 67 20 73  he space using s
12f10 71 6c 69 74 65 33 5f 66 72 65 65 28 29 20 61 66  qlite3_free() af
12f20 74 65 72 20 74 68 65 20 65 72 72 6f 72 20 68 61  ter the error ha
12f30 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 62  s..        /// b
12f40 65 65 6e 20 72 65 70 6f 72 74 65 64 20 75 70 20  een reported up 
12f50 74 6f 20 74 68 65 20 61 70 70 6c 69 63 61 74 69  to the applicati
12f60 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  on...        ///
12f70 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20   </para>..      
12f80 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20    /// <para>..  
12f90 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 78 43        /// The xC
12fa0 6f 6e 6e 65 63 74 20 6d 65 74 68 6f 64 20 69 73  onnect method is
12fb0 20 72 65 71 75 69 72 65 64 20 66 6f 72 20 65 76   required for ev
12fc0 65 72 79 20 76 69 72 74 75 61 6c 20 74 61 62 6c  ery virtual tabl
12fd0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  e..        /// i
12fe0 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2c 20 74  mplementation, t
12ff0 68 6f 75 67 68 20 74 68 65 20 78 43 72 65 61 74  hough the xCreat
13000 65 20 61 6e 64 20 78 43 6f 6e 6e 65 63 74 20 70  e and xConnect p
13010 6f 69 6e 74 65 72 73 20 6f 66 20 74 68 65 0d 0a  ointers of the..
13020 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69          /// sqli
13030 74 65 33 5f 6d 6f 64 75 6c 65 20 6f 62 6a 65 63  te3_module objec
13040 74 20 6d 61 79 20 70 6f 69 6e 74 20 74 6f 20 74  t may point to t
13050 68 65 20 73 61 6d 65 20 66 75 6e 63 74 69 6f 6e  he same function
13060 20 74 68 65 20 76 69 72 74 75 61 6c 0d 0a 20 20   the virtual..  
13070 20 20 20 20 20 20 2f 2f 2f 20 74 61 62 6c 65 20        /// table 
13080 64 6f 65 73 20 6e 6f 74 20 6e 65 65 64 20 74 6f  does not need to
13090 20 69 6e 69 74 69 61 6c 69 7a 65 20 62 61 63 6b   initialize back
130a0 69 6e 67 20 73 74 6f 72 65 2e 0d 0a 20 20 20 20  ing store...    
130b0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d      /// </para>.
130c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
130d0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
130e0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
130f0 3d 22 70 44 62 22 3e 0d 0a 20 20 20 20 20 20 20  ="pDb">..       
13100 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
13110 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
13120 69 6f 6e 20 68 61 6e 64 6c 65 2e 0d 0a 20 20 20  ion handle...   
13130 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
13140 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
13150 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 41 75 78  param name="pAux
13160 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
13170 54 68 65 20 6f 72 69 67 69 6e 61 6c 20 6e 61 74  The original nat
13180 69 76 65 20 70 6f 69 6e 74 65 72 20 76 61 6c 75  ive pointer valu
13190 65 20 74 68 61 74 20 77 61 73 20 70 72 6f 76 69  e that was provi
131a0 64 65 64 20 74 6f 20 74 68 65 0d 0a 20 20 20 20  ded to the..    
131b0 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f      /// sqlite3_
131c0 63 72 65 61 74 65 5f 6d 6f 64 75 6c 65 28 29 2c  create_module(),
131d0 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f   sqlite3_create_
131e0 6d 6f 64 75 6c 65 5f 76 32 28 29 20 6f 72 0d 0a  module_v2() or..
131f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69          /// sqli
13200 74 65 33 5f 63 72 65 61 74 65 5f 64 69 73 70 6f  te3_create_dispo
13210 73 61 62 6c 65 5f 6d 6f 64 75 6c 65 28 29 20 66  sable_module() f
13220 75 6e 63 74 69 6f 6e 73 2e 0d 0a 20 20 20 20 20  unctions...     
13230 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
13240 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
13250 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 63 22 3e  ram name="argc">
13260 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
13270 65 20 6e 75 6d 62 65 72 20 6f 66 20 61 72 67 75  e number of argu
13280 6d 65 6e 74 73 20 66 72 6f 6d 20 74 68 65 20 43  ments from the C
13290 52 45 41 54 45 20 56 49 52 54 55 41 4c 20 54 41  REATE VIRTUAL TA
132a0 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 2e 0d 0a  BLE statement...
132b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
132c0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
132d0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61  / <param name="a
132e0 72 67 76 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  rgv">..        /
132f0 2f 2f 20 54 68 65 20 61 72 72 61 79 20 6f 66 20  // The array of 
13300 73 74 72 69 6e 67 20 61 72 67 75 6d 65 6e 74 73  string arguments
13310 20 66 72 6f 6d 20 74 68 65 20 43 52 45 41 54 45   from the CREATE
13320 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45 0d 0a   VIRTUAL TABLE..
13330 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 61 74          /// stat
13340 65 6d 65 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20  ement...        
13350 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
13360 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
13370 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a   name="pVtab">..
13380 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e          /// Upon
13390 20 73 75 63 63 65 73 73 2c 20 74 68 69 73 20 70   success, this p
133a0 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65  arameter must be
133b0 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 70 6f 69   modified to poi
133c0 6e 74 20 74 6f 20 74 68 65 20 6e 65 77 6c 79 0d  nt to the newly.
133d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 72 65  .        /// cre
133e0 61 74 65 64 20 6e 61 74 69 76 65 20 73 71 6c 69  ated native sqli
133f0 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64  te3_vtab derived
13400 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
13410 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
13420 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
13430 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 45 72 72  param name="pErr
13440 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  or">..        //
13450 2f 20 55 70 6f 6e 20 66 61 69 6c 75 72 65 2c 20  / Upon failure, 
13460 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d  this parameter m
13470 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64 20  ust be modified 
13480 74 6f 20 70 6f 69 6e 74 20 74 6f 20 74 68 65 20  to point to the 
13490 65 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f  error..        /
134a0 2f 2f 20 6d 65 73 73 61 67 65 2c 20 77 69 74 68  // message, with
134b0 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20   the underlying 
134c0 6d 65 6d 6f 72 79 20 68 61 76 69 6e 67 20 62 65  memory having be
134d0 65 6e 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d  en obtained from
134e0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
134f0 2f 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63  / sqlite3_malloc
13500 28 29 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20  () function...  
13510 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
13520 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
13530 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
13540 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72     /// A standar
13550 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20  d SQLite return 
13560 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  code...        /
13570 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
13580 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72         SQLiteErr
13590 6f 72 43 6f 64 65 20 78 43 6f 6e 6e 65 63 74 28  orCode xConnect(
135a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
135b0 74 50 74 72 20 70 44 62 2c 0d 0a 20 20 20 20 20  tPtr pDb,..     
135c0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 41         IntPtr pA
135d0 75 78 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ux,..           
135e0 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20   int argc,..    
135f0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 61          IntPtr a
13600 72 67 76 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  rgv,..          
13610 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 56 74    ref IntPtr pVt
13620 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ab,..           
13630 20 72 65 66 20 49 6e 74 50 74 72 20 70 45 72 72   ref IntPtr pErr
13640 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  or..            
13650 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  );....        //
13660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
136a0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
136b0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
136c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
136d0 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
136e0 53 51 4c 69 74 65 20 75 73 65 73 20 74 68 65 20  SQLite uses the 
136f0 78 42 65 73 74 49 6e 64 65 78 20 6d 65 74 68 6f  xBestIndex metho
13700 64 20 6f 66 20 61 20 76 69 72 74 75 61 6c 20 74  d of a virtual t
13710 61 62 6c 65 20 6d 6f 64 75 6c 65 20 74 6f 0d 0a  able module to..
13720 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 65 74 65          /// dete
13730 72 6d 69 6e 65 20 74 68 65 20 62 65 73 74 20 77  rmine the best w
13740 61 79 20 74 6f 20 61 63 63 65 73 73 20 74 68 65  ay to access the
13750 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 20   virtual table. 
13760 54 68 65 20 78 42 65 73 74 49 6e 64 65 78 0d 0a  The xBestIndex..
13770 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68          /// meth
13780 6f 64 20 68 61 73 20 61 20 70 72 6f 74 6f 74 79  od has a prototy
13790 70 65 20 6c 69 6b 65 20 74 68 69 73 3a 0d 0a 20  pe like this:.. 
137a0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
137b0 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
137c0 3c 63 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20 20  <code>..        
137d0 2f 2f 2f 20 69 6e 74 20 28 2a 78 42 65 73 74 49  /// int (*xBestI
137e0 6e 64 65 78 29 28 73 71 6c 69 74 65 33 5f 76 74  ndex)(sqlite3_vt
137f0 61 62 20 2a 70 56 54 61 62 2c 20 73 71 6c 69 74  ab *pVTab, sqlit
13800 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 2a 29 3b  e3_index_info*);
13810 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
13820 63 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f  code>..        /
13830 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20  // <para>..     
13840 20 20 20 2f 2f 2f 20 54 68 65 20 53 51 4c 69 74     /// The SQLit
13850 65 20 63 6f 72 65 20 63 6f 6d 6d 75 6e 69 63 61  e core communica
13860 74 65 73 20 77 69 74 68 20 74 68 65 20 78 42 65  tes with the xBe
13870 73 74 49 6e 64 65 78 20 6d 65 74 68 6f 64 20 62  stIndex method b
13880 79 20 66 69 6c 6c 69 6e 67 0d 0a 20 20 20 20 20  y filling..     
13890 20 20 20 2f 2f 2f 20 69 6e 20 63 65 72 74 61 69     /// in certai
138a0 6e 20 66 69 65 6c 64 73 20 6f 66 20 74 68 65 20  n fields of the 
138b0 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e  sqlite3_index_in
138c0 66 6f 20 73 74 72 75 63 74 75 72 65 20 61 6e 64  fo structure and
138d0 20 70 61 73 73 69 6e 67 20 61 0d 0a 20 20 20 20   passing a..    
138e0 20 20 20 20 2f 2f 2f 20 70 6f 69 6e 74 65 72 20      /// pointer 
138f0 74 6f 20 74 68 61 74 20 73 74 72 75 63 74 75 72  to that structur
13900 65 20 69 6e 74 6f 20 78 42 65 73 74 49 6e 64 65  e into xBestInde
13910 78 20 61 73 20 74 68 65 20 73 65 63 6f 6e 64 20  x as the second 
13920 70 61 72 61 6d 65 74 65 72 2e 0d 0a 20 20 20 20  parameter...    
13930 20 20 20 20 2f 2f 2f 20 54 68 65 20 78 42 65 73      /// The xBes
13940 74 49 6e 64 65 78 20 6d 65 74 68 6f 64 20 66 69  tIndex method fi
13950 6c 6c 73 20 6f 75 74 20 6f 74 68 65 72 20 66 69  lls out other fi
13960 65 6c 64 73 20 6f 66 20 74 68 69 73 20 73 74 72  elds of this str
13970 75 63 74 75 72 65 0d 0a 20 20 20 20 20 20 20 20  ucture..        
13980 2f 2f 2f 20 77 68 69 63 68 20 66 6f 72 6d 73 20  /// which forms 
13990 74 68 65 20 72 65 70 6c 79 2e 20 54 68 65 20 73  the reply. The s
139a0 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66  qlite3_index_inf
139b0 6f 20 73 74 72 75 63 74 75 72 65 20 6c 6f 6f 6b  o structure look
139c0 73 20 6c 69 6b 65 0d 0a 20 20 20 20 20 20 20 20  s like..        
139d0 2f 2f 2f 20 74 68 69 73 3a 0d 0a 20 20 20 20 20  /// this:..     
139e0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a     /// </para>..
139f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 63 6f 64          /// <cod
13a00 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e>..        /// 
13a10 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f   struct sqlite3_
13a20 69 6e 64 65 78 5f 69 6e 66 6f 20 7b 0d 0a 20 20  index_info {..  
13a30 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 2f 2a 20        ///    /* 
13a40 49 6e 70 75 74 73 20 2a 2f 0d 0a 20 20 20 20 20  Inputs */..     
13a50 20 20 20 2f 2f 2f 20 20 20 20 63 6f 6e 73 74 20     ///    const 
13a60 69 6e 74 20 6e 43 6f 6e 73 74 72 61 69 6e 74 3b  int nConstraint;
13a70 20 20 20 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20     /* Number of 
13a80 65 6e 74 72 69 65 73 20 69 6e 20 61 43 6f 6e 73  entries in aCons
13a90 74 72 61 69 6e 74 20 2a 2f 0d 0a 20 20 20 20 20  traint */..     
13aa0 20 20 20 2f 2f 2f 20 20 20 20 63 6f 6e 73 74 20     ///    const 
13ab0 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69  struct sqlite3_i
13ac0 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 20  ndex_constraint 
13ad0 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20  {..        ///  
13ae0 20 20 20 20 20 69 6e 74 20 69 43 6f 6c 75 6d 6e       int iColumn
13af0 3b 20 20 20 20 20 20 20 20 20 20 2f 2a 20 43 6f  ;          /* Co
13b00 6c 75 6d 6e 20 6f 6e 20 6c 65 66 74 2d 68 61 6e  lumn on left-han
13b10 64 20 73 69 64 65 20 6f 66 0d 0a 20 20 20 20 20  d side of..     
13b20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20 20     ///          
13b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13b40 20 20 20 20 2a 20 63 6f 6e 73 74 72 61 69 6e 74      * constraint
13b50 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   */..        ///
13b60 20 20 20 20 20 20 20 75 6e 73 69 67 6e 65 64 20         unsigned 
13b70 63 68 61 72 20 6f 70 3b 20 20 20 20 20 2f 2a 20  char op;     /* 
13b80 43 6f 6e 73 74 72 61 69 6e 74 20 6f 70 65 72 61  Constraint opera
13b90 74 6f 72 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  tor */..        
13ba0 2f 2f 2f 20 20 20 20 20 20 20 75 6e 73 69 67 6e  ///       unsign
13bb0 65 64 20 63 68 61 72 20 75 73 61 62 6c 65 3b 20  ed char usable; 
13bc0 2f 2a 20 54 72 75 65 20 69 66 20 74 68 69 73 20  /* True if this 
13bd0 63 6f 6e 73 74 72 61 69 6e 74 20 69 73 20 75 73  constraint is us
13be0 61 62 6c 65 20 2a 2f 0d 0a 20 20 20 20 20 20 20  able */..       
13bf0 20 2f 2f 2f 20 20 20 20 20 20 20 69 6e 74 20 69   ///       int i
13c00 54 65 72 6d 4f 66 66 73 65 74 3b 20 20 20 20 20  TermOffset;     
13c10 20 2f 2a 20 55 73 65 64 20 69 6e 74 65 72 6e 61   /* Used interna
13c20 6c 6c 79 20 2d 20 78 42 65 73 74 49 6e 64 65 78  lly - xBestIndex
13c30 20 73 68 6f 75 6c 64 0d 0a 20 20 20 20 20 20 20   should..       
13c40 20 2f 2f 2f 20 20 20 20 20 20 20 20 20 20 20 20   ///            
13c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13c60 20 20 2a 20 69 67 6e 6f 72 65 20 2a 2f 0d 0a 20    * ignore */.. 
13c70 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 7d 20         ///    } 
13c80 2a 63 6f 6e 73 74 20 61 43 6f 6e 73 74 72 61 69  *const aConstrai
13c90 6e 74 3b 20 20 20 20 2f 2a 20 54 61 62 6c 65 20  nt;    /* Table 
13ca0 6f 66 20 57 48 45 52 45 20 63 6c 61 75 73 65 20  of WHERE clause 
13cb0 63 6f 6e 73 74 72 61 69 6e 74 73 20 2a 2f 0d 0a  constraints */..
13cc0 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 63          ///    c
13cd0 6f 6e 73 74 20 69 6e 74 20 6e 4f 72 64 65 72 42  onst int nOrderB
13ce0 79 3b 20 20 20 20 20 20 2f 2a 20 4e 75 6d 62 65  y;      /* Numbe
13cf0 72 20 6f 66 20 74 65 72 6d 73 20 69 6e 20 74 68  r of terms in th
13d00 65 20 4f 52 44 45 52 20 42 59 0d 0a 20 20 20 20  e ORDER BY..    
13d10 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20      ///         
13d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13d30 20 20 20 20 20 2a 20 63 6c 61 75 73 65 20 2a 2f       * clause */
13d40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20  ..        ///   
13d50 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 73 71   const struct sq
13d60 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65  lite3_index_orde
13d70 72 62 79 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f  rby {..        /
13d80 2f 2f 20 20 20 20 20 20 20 69 6e 74 20 69 43 6f  //       int iCo
13d90 6c 75 6d 6e 3b 20 20 20 20 20 20 20 20 20 20 2f  lumn;          /
13da0 2a 20 43 6f 6c 75 6d 6e 20 6e 75 6d 62 65 72 20  * Column number 
13db0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  */..        /// 
13dc0 20 20 20 20 20 20 75 6e 73 69 67 6e 65 64 20 63        unsigned c
13dd0 68 61 72 20 64 65 73 63 3b 20 20 20 2f 2a 20 54  har desc;   /* T
13de0 72 75 65 20 66 6f 72 20 44 45 53 43 2e 20 20 46  rue for DESC.  F
13df0 61 6c 73 65 20 66 6f 72 20 41 53 43 2e 20 2a 2f  alse for ASC. */
13e00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20  ..        ///   
13e10 20 7d 20 2a 63 6f 6e 73 74 20 61 4f 72 64 65 72   } *const aOrder
13e20 42 79 3b 20 20 20 20 20 20 20 2f 2a 20 54 68 65  By;       /* The
13e30 20 4f 52 44 45 52 20 42 59 20 63 6c 61 75 73 65   ORDER BY clause
13e40 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   */..        ///
13e50 20 20 20 20 2f 2a 20 4f 75 74 70 75 74 73 20 2a      /* Outputs *
13e60 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20  /..        ///  
13e70 20 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33    struct sqlite3
13e80 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e  _index_constrain
13e90 74 5f 75 73 61 67 65 20 7b 0d 0a 20 20 20 20 20  t_usage {..     
13ea0 20 20 20 2f 2f 2f 20 20 20 20 20 20 69 6e 74 20     ///      int 
13eb0 61 72 67 76 49 6e 64 65 78 3b 20 20 20 20 20 20  argvIndex;      
13ec0 20 20 20 2f 2a 20 69 66 20 67 72 65 61 74 65 72     /* if greater
13ed0 20 74 68 61 6e 20 7a 65 72 6f 2c 20 63 6f 6e 73   than zero, cons
13ee0 74 72 61 69 6e 74 20 69 73 0d 0a 20 20 20 20 20  traint is..     
13ef0 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20 20     ///          
13f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13f10 20 20 20 20 2a 20 70 61 72 74 20 6f 66 20 61 72      * part of ar
13f20 67 76 20 74 6f 20 78 46 69 6c 74 65 72 20 2a 2f  gv to xFilter */
13f30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20  ..        ///   
13f40 20 20 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72     unsigned char
13f50 20 6f 6d 69 74 3b 20 20 20 20 2f 2a 20 44 6f 20   omit;    /* Do 
13f60 6e 6f 74 20 63 6f 64 65 20 61 20 74 65 73 74 20  not code a test 
13f70 66 6f 72 20 74 68 69 73 0d 0a 20 20 20 20 20 20  for this..      
13f80 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20 20 20    ///           
13f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13fa0 20 20 20 2a 20 63 6f 6e 73 74 72 61 69 6e 74 20     * constraint 
13fb0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  */..        /// 
13fc0 20 20 20 7d 20 2a 63 6f 6e 73 74 20 61 43 6f 6e     } *const aCon
13fd0 73 74 72 61 69 6e 74 55 73 61 67 65 3b 0d 0a 20  straintUsage;.. 
13fe0 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 69 6e         ///    in
13ff0 74 20 69 64 78 4e 75 6d 3b 20 20 20 20 20 20 20  t idxNum;       
14000 20 20 20 20 20 20 20 2f 2a 20 4e 75 6d 62 65 72         /* Number
14010 20 75 73 65 64 20 74 6f 20 69 64 65 6e 74 69 66   used to identif
14020 79 20 74 68 65 20 69 6e 64 65 78 20 2a 2f 0d 0a  y the index */..
14030 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 63          ///    c
14040 68 61 72 20 2a 69 64 78 53 74 72 3b 20 20 20 20  har *idxStr;    
14050 20 20 20 20 20 20 20 20 2f 2a 20 53 74 72 69 6e          /* Strin
14060 67 2c 20 70 6f 73 73 69 62 6c 79 20 6f 62 74 61  g, possibly obta
14070 69 6e 65 64 20 66 72 6f 6d 0d 0a 20 20 20 20 20  ined from..     
14080 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20 20     ///          
14090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
140a0 20 20 20 20 2a 20 73 71 6c 69 74 65 33 5f 6d 61      * sqlite3_ma
140b0 6c 6c 6f 63 28 29 20 2a 2f 0d 0a 20 20 20 20 20  lloc() */..     
140c0 20 20 20 2f 2f 2f 20 20 20 20 69 6e 74 20 6e 65     ///    int ne
140d0 65 64 54 6f 46 72 65 65 49 64 78 53 74 72 3b 20  edToFreeIdxStr; 
140e0 20 20 20 2f 2a 20 46 72 65 65 20 69 64 78 53 74     /* Free idxSt
140f0 72 20 75 73 69 6e 67 20 73 71 6c 69 74 65 33 5f  r using sqlite3_
14100 66 72 65 65 28 29 20 69 66 0d 0a 20 20 20 20 20  free() if..     
14110 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20 20     ///          
14120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14130 20 20 20 20 2a 20 74 72 75 65 20 2a 2f 0d 0a 20      * true */.. 
14140 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 69 6e         ///    in
14150 74 20 6f 72 64 65 72 42 79 43 6f 6e 73 75 6d 65  t orderByConsume
14160 64 3b 20 20 20 20 20 2f 2a 20 54 72 75 65 20 69  d;     /* True i
14170 66 20 6f 75 74 70 75 74 20 69 73 20 61 6c 72 65  f output is alre
14180 61 64 79 20 6f 72 64 65 72 65 64 20 2a 2f 0d 0a  ady ordered */..
14190 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 64          ///    d
141a0 6f 75 62 6c 65 20 65 73 74 69 6d 61 74 65 64 43  ouble estimatedC
141b0 6f 73 74 3b 20 20 20 20 2f 2a 20 45 73 74 69 6d  ost;    /* Estim
141c0 61 74 65 64 20 63 6f 73 74 20 6f 66 20 75 73 69  ated cost of usi
141d0 6e 67 20 74 68 69 73 20 69 6e 64 65 78 20 2a 2f  ng this index */
141e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 7d  ..        ///  }
141f0 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ;..        /// <
14200 2f 63 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20 20  /code>..        
14210 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
14220 20 20 20 20 2f 2f 2f 20 49 6e 20 61 64 64 69 74      /// In addit
14230 69 6f 6e 2c 20 74 68 65 72 65 20 61 72 65 20 73  ion, there are s
14240 6f 6d 65 20 64 65 66 69 6e 65 64 20 63 6f 6e 73  ome defined cons
14250 74 61 6e 74 73 3a 0d 0a 20 20 20 20 20 20 20 20  tants:..        
14260 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20  /// </para>..   
14270 20 20 20 20 20 2f 2f 2f 20 3c 63 6f 64 65 3e 0d       /// <code>.
14280 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 23 64  .        ///  #d
14290 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4e 44  efine SQLITE_IND
142a0 45 58 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 45 51  EX_CONSTRAINT_EQ
142b0 20 20 20 20 32 0d 0a 20 20 20 20 20 20 20 20 2f      2..        /
142c0 2f 2f 20 20 23 64 65 66 69 6e 65 20 53 51 4c 49  //  #define SQLI
142d0 54 45 5f 49 4e 44 45 58 5f 43 4f 4e 53 54 52 41  TE_INDEX_CONSTRA
142e0 49 4e 54 5f 47 54 20 20 20 20 34 0d 0a 20 20 20  INT_GT    4..   
142f0 20 20 20 20 20 2f 2f 2f 20 20 23 64 65 66 69 6e       ///  #defin
14300 65 20 53 51 4c 49 54 45 5f 49 4e 44 45 58 5f 43  e SQLITE_INDEX_C
14310 4f 4e 53 54 52 41 49 4e 54 5f 4c 45 20 20 20 20  ONSTRAINT_LE    
14320 38 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20  8..        ///  
14330 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
14340 4e 44 45 58 5f 43 4f 4e 53 54 52 41 49 4e 54 5f  NDEX_CONSTRAINT_
14350 4c 54 20 20 20 20 31 36 0d 0a 20 20 20 20 20 20  LT    16..      
14360 20 20 2f 2f 2f 20 20 23 64 65 66 69 6e 65 20 53    ///  #define S
14370 51 4c 49 54 45 5f 49 4e 44 45 58 5f 43 4f 4e 53  QLITE_INDEX_CONS
14380 54 52 41 49 4e 54 5f 47 45 20 20 20 20 33 32 0d  TRAINT_GE    32.
14390 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 23 64  .        ///  #d
143a0 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4e 44  efine SQLITE_IND
143b0 45 58 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 4d 41  EX_CONSTRAINT_MA
143c0 54 43 48 20 36 34 0d 0a 20 20 20 20 20 20 20 20  TCH 64..        
143d0 2f 2f 2f 20 3c 2f 63 6f 64 65 3e 0d 0a 20 20 20  /// </code>..   
143e0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
143f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
14400 20 53 51 4c 69 74 65 20 63 6f 72 65 20 63 61 6c   SQLite core cal
14410 6c 73 20 74 68 65 20 78 42 65 73 74 49 6e 64 65  ls the xBestInde
14420 78 20 6d 65 74 68 6f 64 20 77 68 65 6e 20 69 74  x method when it
14430 20 69 73 20 63 6f 6d 70 69 6c 69 6e 67 20 61 0d   is compiling a.
14440 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 71 75 65  .        /// que
14450 72 79 20 74 68 61 74 20 69 6e 76 6f 6c 76 65 73  ry that involves
14460 20 61 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65   a virtual table
14470 2e 20 49 6e 20 6f 74 68 65 72 20 77 6f 72 64 73  . In other words
14480 2c 20 53 51 4c 69 74 65 20 63 61 6c 6c 73 0d 0a  , SQLite calls..
14490 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 69 73          /// this
144a0 20 6d 65 74 68 6f 64 20 77 68 65 6e 20 69 74 20   method when it 
144b0 69 73 20 72 75 6e 6e 69 6e 67 20 73 71 6c 69 74  is running sqlit
144c0 65 33 5f 70 72 65 70 61 72 65 28 29 20 6f 72 20  e3_prepare() or 
144d0 74 68 65 20 65 71 75 69 76 61 6c 65 6e 74 2e 0d  the equivalent..
144e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 42 79 20  .        /// By 
144f0 63 61 6c 6c 69 6e 67 20 74 68 69 73 20 6d 65 74  calling this met
14500 68 6f 64 2c 20 74 68 65 20 53 51 4c 69 74 65 20  hod, the SQLite 
14510 63 6f 72 65 20 69 73 20 73 61 79 69 6e 67 20 74  core is saying t
14520 6f 20 74 68 65 20 76 69 72 74 75 61 6c 0d 0a 20  o the virtual.. 
14530 20 20 20 20 20 20 20 2f 2f 2f 20 74 61 62 6c 65         /// table
14540 20 74 68 61 74 20 69 74 20 6e 65 65 64 73 20 74   that it needs t
14550 6f 20 61 63 63 65 73 73 20 73 6f 6d 65 20 73 75  o access some su
14560 62 73 65 74 20 6f 66 20 74 68 65 20 72 6f 77 73  bset of the rows
14570 20 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20   in the..       
14580 20 2f 2f 2f 20 76 69 72 74 75 61 6c 20 74 61 62   /// virtual tab
14590 6c 65 20 61 6e 64 20 69 74 20 77 61 6e 74 73 20  le and it wants 
145a0 74 6f 20 6b 6e 6f 77 20 74 68 65 20 6d 6f 73 74  to know the most
145b0 20 65 66 66 69 63 69 65 6e 74 20 77 61 79 20 74   efficient way t
145c0 6f 20 64 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f  o do..        //
145d0 2f 20 74 68 61 74 20 61 63 63 65 73 73 2e 20 54  / that access. T
145e0 68 65 20 78 42 65 73 74 49 6e 64 65 78 20 6d 65  he xBestIndex me
145f0 74 68 6f 64 20 72 65 70 6c 69 65 73 20 77 69 74  thod replies wit
14600 68 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 74 68  h information th
14610 61 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  at..        /// 
14620 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
14630 63 61 6e 20 74 68 65 6e 20 75 73 65 20 74 6f 20  can then use to 
14640 63 6f 6e 64 75 63 74 20 61 6e 20 65 66 66 69 63  conduct an effic
14650 69 65 6e 74 20 73 65 61 72 63 68 20 6f 66 20 74  ient search of t
14660 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
14670 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a  virtual table...
14680 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
14690 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
146a0 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
146b0 20 2f 2f 2f 20 57 68 69 6c 65 20 63 6f 6d 70 69   /// While compi
146c0 6c 69 6e 67 20 61 20 73 69 6e 67 6c 65 20 53 51  ling a single SQ
146d0 4c 20 71 75 65 72 79 2c 20 74 68 65 20 53 51 4c  L query, the SQL
146e0 69 74 65 20 63 6f 72 65 20 6d 69 67 68 74 20 63  ite core might c
146f0 61 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  all..        ///
14700 20 78 42 65 73 74 49 6e 64 65 78 20 6d 75 6c 74   xBestIndex mult
14710 69 70 6c 65 20 74 69 6d 65 73 20 77 69 74 68 20  iple times with 
14720 64 69 66 66 65 72 65 6e 74 20 73 65 74 74 69 6e  different settin
14730 67 73 20 69 6e 0d 0a 20 20 20 20 20 20 20 20 2f  gs in..        /
14740 2f 2f 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  // sqlite3_index
14750 5f 69 6e 66 6f 2e 20 54 68 65 20 53 51 4c 69 74  _info. The SQLit
14760 65 20 63 6f 72 65 20 77 69 6c 6c 20 74 68 65 6e  e core will then
14770 20 73 65 6c 65 63 74 20 74 68 65 0d 0a 20 20 20   select the..   
14780 20 20 20 20 20 2f 2f 2f 20 63 6f 6d 62 69 6e 61       /// combina
14790 74 69 6f 6e 20 74 68 61 74 20 61 70 70 65 61 72  tion that appear
147a0 73 20 74 6f 20 67 69 76 65 20 74 68 65 20 62 65  s to give the be
147b0 73 74 20 70 65 72 66 6f 72 6d 61 6e 63 65 2e 0d  st performance..
147c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
147d0 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
147e0 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
147f0 20 20 2f 2f 2f 20 42 65 66 6f 72 65 20 63 61 6c    /// Before cal
14800 6c 69 6e 67 20 74 68 69 73 20 6d 65 74 68 6f 64  ling this method
14810 2c 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  , the SQLite cor
14820 65 20 69 6e 69 74 69 61 6c 69 7a 65 73 20 61 6e  e initializes an
14830 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20 20   instance..     
14840 20 20 20 2f 2f 2f 20 6f 66 20 74 68 65 20 73 71     /// of the sq
14850 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f  lite3_index_info
14860 20 73 74 72 75 63 74 75 72 65 20 77 69 74 68 20   structure with 
14870 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75  information abou
14880 74 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  t the..        /
14890 2f 2f 20 71 75 65 72 79 20 74 68 61 74 20 69 74  // query that it
148a0 20 69 73 20 63 75 72 72 65 6e 74 6c 79 20 74 72   is currently tr
148b0 79 69 6e 67 20 74 6f 20 70 72 6f 63 65 73 73 2e  ying to process.
148c0 20 54 68 69 73 20 69 6e 66 6f 72 6d 61 74 69 6f   This informatio
148d0 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64  n..        /// d
148e0 65 72 69 76 65 73 20 6d 61 69 6e 6c 79 20 66 72  erives mainly fr
148f0 6f 6d 20 74 68 65 20 57 48 45 52 45 20 63 6c 61  om the WHERE cla
14900 75 73 65 20 61 6e 64 20 4f 52 44 45 52 20 42 59  use and ORDER BY
14910 20 6f 72 20 47 52 4f 55 50 20 42 59 0d 0a 20 20   or GROUP BY..  
14920 20 20 20 20 20 20 2f 2f 2f 20 63 6c 61 75 73 65        /// clause
14930 73 20 6f 66 20 74 68 65 20 71 75 65 72 79 2c 20  s of the query, 
14940 62 75 74 20 61 6c 73 6f 20 66 72 6f 6d 20 61 6e  but also from an
14950 79 20 4f 4e 20 6f 72 20 55 53 49 4e 47 20 63 6c  y ON or USING cl
14960 61 75 73 65 73 20 69 66 20 74 68 65 0d 0a 20 20  auses if the..  
14970 20 20 20 20 20 20 2f 2f 2f 20 71 75 65 72 79 20        /// query 
14980 69 73 20 61 20 6a 6f 69 6e 2e 20 54 68 65 20 69  is a join. The i
14990 6e 66 6f 72 6d 61 74 69 6f 6e 20 74 68 61 74 20  nformation that 
149a0 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
149b0 70 72 6f 76 69 64 65 73 20 74 6f 0d 0a 20 20 20  provides to..   
149c0 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 78 42 65       /// the xBe
149d0 73 74 49 6e 64 65 78 20 6d 65 74 68 6f 64 20 69  stIndex method i
149e0 73 20 68 65 6c 64 20 69 6e 20 74 68 65 20 70 61  s held in the pa
149f0 72 74 20 6f 66 20 74 68 65 20 73 74 72 75 63 74  rt of the struct
14a00 75 72 65 20 74 68 61 74 20 69 73 0d 0a 20 20 20  ure that is..   
14a10 20 20 20 20 20 2f 2f 2f 20 6d 61 72 6b 65 64 20       /// marked 
14a20 61 73 20 22 49 6e 70 75 74 73 22 2e 20 54 68 65  as "Inputs". The
14a30 20 22 4f 75 74 70 75 74 73 22 20 73 65 63 74 69   "Outputs" secti
14a40 6f 6e 20 69 73 20 69 6e 69 74 69 61 6c 69 7a 65  on is initialize
14a50 64 20 74 6f 20 7a 65 72 6f 2e 0d 0a 20 20 20 20  d to zero...    
14a60 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d      /// </para>.
14a70 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
14a80 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
14a90 20 54 68 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e   The information
14aa0 20 69 6e 20 74 68 65 20 73 71 6c 69 74 65 33 5f   in the sqlite3_
14ab0 69 6e 64 65 78 5f 69 6e 66 6f 20 73 74 72 75 63  index_info struc
14ac0 74 75 72 65 20 69 73 20 65 70 68 65 6d 65 72 61  ture is ephemera
14ad0 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61  l..        /// a
14ae0 6e 64 20 6d 61 79 20 62 65 20 6f 76 65 72 77 72  nd may be overwr
14af0 69 74 74 65 6e 20 6f 72 20 64 65 61 6c 6c 6f 63  itten or dealloc
14b00 61 74 65 64 20 61 73 20 73 6f 6f 6e 20 61 73 20  ated as soon as 
14b10 74 68 65 20 78 42 65 73 74 49 6e 64 65 78 0d 0a  the xBestIndex..
14b20 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68          /// meth
14b30 6f 64 20 72 65 74 75 72 6e 73 2e 20 49 66 20 74  od returns. If t
14b40 68 65 20 78 42 65 73 74 49 6e 64 65 78 20 6d 65  he xBestIndex me
14b50 74 68 6f 64 20 6e 65 65 64 73 20 74 6f 20 72 65  thod needs to re
14b60 6d 65 6d 62 65 72 20 61 6e 79 20 70 61 72 74 0d  member any part.
14b70 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 66 20  .        /// of 
14b80 74 68 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65  the sqlite3_inde
14b90 78 5f 69 6e 66 6f 20 73 74 72 75 63 74 75 72 65  x_info structure
14ba0 2c 20 69 74 20 73 68 6f 75 6c 64 20 6d 61 6b 65  , it should make
14bb0 20 61 20 63 6f 70 79 2e 20 43 61 72 65 0d 0a 20   a copy. Care.. 
14bc0 20 20 20 20 20 20 20 2f 2f 2f 20 6d 75 73 74 20         /// must 
14bd0 62 65 20 74 61 6b 65 20 74 6f 20 73 74 6f 72 65  be take to store
14be0 20 74 68 65 20 63 6f 70 79 20 69 6e 20 61 20 70   the copy in a p
14bf0 6c 61 63 65 20 77 68 65 72 65 20 69 74 20 77 69  lace where it wi
14c00 6c 6c 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f  ll be..        /
14c10 2f 2f 20 64 65 61 6c 6c 6f 63 61 74 65 64 2c 20  // deallocated, 
14c20 73 75 63 68 20 61 73 20 69 6e 20 74 68 65 20 69  such as in the i
14c30 64 78 53 74 72 20 66 69 65 6c 64 20 77 69 74 68  dxStr field with
14c40 20 6e 65 65 64 54 6f 46 72 65 65 49 64 78 53 74   needToFreeIdxSt
14c50 72 20 73 65 74 0d 0a 20 20 20 20 20 20 20 20 2f  r set..        /
14c60 2f 2f 20 74 6f 20 31 2e 0d 0a 20 20 20 20 20 20  // to 1...      
14c70 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
14c80 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
14c90 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
14ca0 6f 74 65 20 74 68 61 74 20 78 42 65 73 74 49 6e  ote that xBestIn
14cb0 64 65 78 20 77 69 6c 6c 20 61 6c 77 61 79 73 20  dex will always 
14cc0 62 65 20 63 61 6c 6c 65 64 20 62 65 66 6f 72 65  be called before
14cd0 20 78 46 69 6c 74 65 72 2c 20 73 69 6e 63 65 0d   xFilter, since.
14ce0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  .        /// the
14cf0 20 69 64 78 4e 75 6d 20 61 6e 64 20 69 64 78 53   idxNum and idxS
14d00 74 72 20 6f 75 74 70 75 74 73 20 66 72 6f 6d 20  tr outputs from 
14d10 78 42 65 73 74 49 6e 64 65 78 20 61 72 65 20 72  xBestIndex are r
14d20 65 71 75 69 72 65 64 20 69 6e 70 75 74 73 0d 0a  equired inputs..
14d30 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20 78          /// to x
14d40 46 69 6c 74 65 72 2e 20 48 6f 77 65 76 65 72 2c  Filter. However,
14d50 20 74 68 65 72 65 20 69 73 20 6e 6f 20 67 75 61   there is no gua
14d60 72 61 6e 74 65 65 20 74 68 61 74 20 78 46 69 6c  rantee that xFil
14d70 74 65 72 20 77 69 6c 6c 20 62 65 0d 0a 20 20 20  ter will be..   
14d80 20 20 20 20 20 2f 2f 2f 20 63 61 6c 6c 65 64 20       /// called 
14d90 66 6f 6c 6c 6f 77 69 6e 67 20 61 20 73 75 63 63  following a succ
14da0 65 73 73 66 75 6c 20 78 42 65 73 74 49 6e 64 65  essful xBestInde
14db0 78 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  x...        /// 
14dc0 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
14dd0 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
14de0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 78 42 65       /// The xBe
14df0 73 74 49 6e 64 65 78 20 6d 65 74 68 6f 64 20 69  stIndex method i
14e00 73 20 72 65 71 75 69 72 65 64 20 66 6f 72 20 65  s required for e
14e10 76 65 72 79 20 76 69 72 74 75 61 6c 20 74 61 62  very virtual tab
14e20 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  le..        /// 
14e30 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d  implementation..
14e40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
14e50 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
14e60 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
14e70 20 20 2f 2f 2f 20 32 2e 33 2e 31 20 49 6e 70 75    /// 2.3.1 Inpu
14e80 74 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ts..        /// 
14e90 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
14ea0 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
14eb0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61 69       /// The mai
14ec0 6e 20 74 68 69 6e 67 20 74 68 61 74 20 74 68 65  n thing that the
14ed0 20 53 51 4c 69 74 65 20 63 6f 72 65 20 69 73 20   SQLite core is 
14ee0 74 72 79 69 6e 67 20 74 6f 20 63 6f 6d 6d 75 6e  trying to commun
14ef0 69 63 61 74 65 20 74 6f 20 74 68 65 0d 0a 20 20  icate to the..  
14f00 20 20 20 20 20 20 2f 2f 2f 20 76 69 72 74 75 61        /// virtua
14f10 6c 20 74 61 62 6c 65 20 69 73 20 74 68 65 20 63  l table is the c
14f20 6f 6e 73 74 72 61 69 6e 74 73 20 74 68 61 74 20  onstraints that 
14f30 61 72 65 20 61 76 61 69 6c 61 62 6c 65 20 74 6f  are available to
14f40 20 6c 69 6d 69 74 20 74 68 65 0d 0a 20 20 20 20   limit the..    
14f50 20 20 20 20 2f 2f 2f 20 6e 75 6d 62 65 72 20 6f      /// number o
14f60 66 20 72 6f 77 73 20 74 68 61 74 20 6e 65 65 64  f rows that need
14f70 20 74 6f 20 62 65 20 73 65 61 72 63 68 65 64 2e   to be searched.
14f80 20 54 68 65 20 61 43 6f 6e 73 74 72 61 69 6e 74   The aConstraint
14f90 5b 5d 20 61 72 72 61 79 0d 0a 20 20 20 20 20 20  [] array..      
14fa0 20 20 2f 2f 2f 20 63 6f 6e 74 61 69 6e 73 20 6f    /// contains o
14fb0 6e 65 20 65 6e 74 72 79 20 66 6f 72 20 65 61 63  ne entry for eac
14fc0 68 20 63 6f 6e 73 74 72 61 69 6e 74 2e 20 54 68  h constraint. Th
14fd0 65 72 65 20 77 69 6c 6c 20 62 65 20 65 78 61 63  ere will be exac
14fe0 74 6c 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  tly..        ///
14ff0 20 6e 43 6f 6e 73 74 72 61 69 6e 74 20 65 6e 74   nConstraint ent
15000 72 69 65 73 20 69 6e 20 74 68 61 74 20 61 72 72  ries in that arr
15010 61 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ay...        ///
15020 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20   </para>..      
15030 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20    /// <para>..  
15040 20 20 20 20 20 20 2f 2f 2f 20 45 61 63 68 20 63        /// Each c
15050 6f 6e 73 74 72 61 69 6e 74 20 77 69 6c 6c 20 63  onstraint will c
15060 6f 72 72 65 73 70 6f 6e 64 20 74 6f 20 61 20 74  orrespond to a t
15070 65 72 6d 20 69 6e 20 74 68 65 20 57 48 45 52 45  erm in the WHERE
15080 20 63 6c 61 75 73 65 20 6f 72 20 69 6e 0d 0a 20   clause or in.. 
15090 20 20 20 20 20 20 20 2f 2f 2f 20 61 20 55 53 49         /// a USI
150a0 4e 47 20 6f 72 20 4f 4e 20 63 6c 61 75 73 65 20  NG or ON clause 
150b0 74 68 61 74 20 69 73 20 6f 66 20 74 68 65 20 66  that is of the f
150c0 6f 72 6d 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  orm..        ///
150d0 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20   </para>..      
150e0 20 20 2f 2f 2f 20 3c 63 6f 64 65 3e 0d 0a 20 20    /// <code>..  
150f0 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 63 6f        ///     co
15100 6c 75 6d 6e 20 4f 50 20 45 58 50 52 0d 0a 20 20  lumn OP EXPR..  
15110 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 63 6f 64 65        /// </code
15120 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
15130 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
15140 2f 2f 20 57 68 65 72 65 20 22 63 6f 6c 75 6d 6e  // Where "column
15150 22 20 69 73 20 61 20 63 6f 6c 75 6d 6e 20 69 6e  " is a column in
15160 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
15170 6c 65 2c 20 4f 50 20 69 73 20 61 6e 20 6f 70 65  le, OP is an ope
15180 72 61 74 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f  rator..        /
15190 2f 2f 20 6c 69 6b 65 20 22 3d 22 20 6f 72 20 22  // like "=" or "
151a0 26 6c 74 3b 22 2c 20 61 6e 64 20 45 58 50 52 20  &lt;", and EXPR 
151b0 69 73 20 61 6e 20 61 72 62 69 74 72 61 72 79 20  is an arbitrary 
151c0 65 78 70 72 65 73 73 69 6f 6e 2e 20 53 6f 2c 20  expression. So, 
151d0 66 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  for..        ///
151e0 20 65 78 61 6d 70 6c 65 2c 20 69 66 20 74 68 65   example, if the
151f0 20 57 48 45 52 45 20 63 6c 61 75 73 65 20 63 6f   WHERE clause co
15200 6e 74 61 69 6e 65 64 20 61 20 74 65 72 6d 20 6c  ntained a term l
15210 69 6b 65 20 74 68 69 73 3a 0d 0a 20 20 20 20 20  ike this:..     
15220 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a     /// </para>..
15230 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 63 6f 64          /// <cod
15240 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e>..        /// 
15250 20 20 20 20 20 20 20 20 20 61 20 3d 20 35 0d 0a           a = 5..
15260 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 63 6f          /// </co
15270 64 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de>..        ///
15280 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
15290 20 2f 2f 2f 20 54 68 65 6e 20 6f 6e 65 20 6f 66   /// Then one of
152a0 20 74 68 65 20 63 6f 6e 73 74 72 61 69 6e 74 73   the constraints
152b0 20 77 6f 75 6c 64 20 62 65 20 6f 6e 20 74 68 65   would be on the
152c0 20 22 61 22 20 63 6f 6c 75 6d 6e 20 77 69 74 68   "a" column with
152d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 70  ..        /// op
152e0 65 72 61 74 6f 72 20 22 3d 22 20 61 6e 64 20 61  erator "=" and a
152f0 6e 20 65 78 70 72 65 73 73 69 6f 6e 20 6f 66 20  n expression of 
15300 22 35 22 2e 20 43 6f 6e 73 74 72 61 69 6e 74 73  "5". Constraints
15310 20 6e 65 65 64 20 6e 6f 74 20 68 61 76 65 20 61   need not have a
15320 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 69  ..        /// li
15330 74 65 72 61 6c 20 72 65 70 72 65 73 65 6e 74 61  teral representa
15340 74 69 6f 6e 20 6f 66 20 74 68 65 20 57 48 45 52  tion of the WHER
15350 45 20 63 6c 61 75 73 65 2e 20 54 68 65 20 71 75  E clause. The qu
15360 65 72 79 20 6f 70 74 69 6d 69 7a 65 72 0d 0a 20  ery optimizer.. 
15370 20 20 20 20 20 20 20 2f 2f 2f 20 6d 69 67 68 74         /// might
15380 20 6d 61 6b 65 20 74 72 61 6e 73 66 6f 72 6d 61   make transforma
15390 74 69 6f 6e 73 20 74 6f 20 74 68 65 20 57 48 45  tions to the WHE
153a0 52 45 20 63 6c 61 75 73 65 20 69 6e 20 6f 72 64  RE clause in ord
153b0 65 72 20 74 6f 20 65 78 74 72 61 63 74 0d 0a 20  er to extract.. 
153c0 20 20 20 20 20 20 20 2f 2f 2f 20 61 73 20 6d 61         /// as ma
153d0 6e 79 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 61  ny constraints a
153e0 73 20 69 74 20 63 61 6e 2e 20 53 6f 2c 20 66 6f  s it can. So, fo
153f0 72 20 65 78 61 6d 70 6c 65 2c 20 69 66 20 74 68  r example, if th
15400 65 20 57 48 45 52 45 20 63 6c 61 75 73 65 0d 0a  e WHERE clause..
15410 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 74          /// cont
15420 61 69 6e 65 64 20 73 6f 6d 65 74 68 69 6e 67 20  ained something 
15430 6c 69 6b 65 20 74 68 69 73 3a 0d 0a 20 20 20 20  like this:..    
15440 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d      /// </para>.
15450 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 63 6f  .        /// <co
15460 64 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de>..        ///
15470 20 20 20 20 20 20 20 20 20 20 78 20 42 45 54 57            x BETW
15480 45 45 4e 20 31 30 20 41 4e 44 20 31 30 30 20 41  EEN 10 AND 100 A
15490 4e 44 20 39 39 39 26 67 74 3b 79 0d 0a 20 20 20  ND 999&gt;y..   
154a0 20 20 20 20 20 2f 2f 2f 20 3c 2f 63 6f 64 65 3e       /// </code>
154b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
154c0 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
154d0 2f 20 54 68 65 20 71 75 65 72 79 20 6f 70 74 69  / The query opti
154e0 6d 69 7a 65 72 20 6d 69 67 68 74 20 74 72 61 6e  mizer might tran
154f0 73 6c 61 74 65 20 74 68 69 73 20 69 6e 74 6f 20  slate this into 
15500 74 68 72 65 65 20 73 65 70 61 72 61 74 65 0d 0a  three separate..
15510 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 73          /// cons
15520 74 72 61 69 6e 74 73 3a 0d 0a 20 20 20 20 20 20  traints:..      
15530 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
15540 20 20 20 20 20 20 20 2f 2f 2f 20 3c 63 6f 64 65         /// <code
15550 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20  >..        ///  
15560 20 20 20 20 20 20 20 20 78 20 26 67 74 3b 3d 20          x &gt;= 
15570 31 30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  10..        /// 
15580 20 20 20 20 20 20 20 20 20 78 20 26 6c 74 3b 3d           x &lt;=
15590 20 31 30 30 0d 0a 20 20 20 20 20 20 20 20 2f 2f   100..        //
155a0 2f 20 20 20 20 20 20 20 20 20 20 79 20 26 6c 74  /          y &lt
155b0 3b 20 39 39 39 0d 0a 20 20 20 20 20 20 20 20 2f  ; 999..        /
155c0 2f 2f 20 3c 2f 63 6f 64 65 3e 0d 0a 20 20 20 20  // </code>..    
155d0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a      /// <para>..
155e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 46 6f 72 20          /// For 
155f0 65 61 63 68 20 63 6f 6e 73 74 72 61 69 6e 74 2c  each constraint,
15600 20 74 68 65 20 61 43 6f 6e 73 74 72 61 69 6e 74   the aConstraint
15610 5b 5d 2e 69 43 6f 6c 75 6d 6e 20 66 69 65 6c 64  [].iColumn field
15620 20 69 6e 64 69 63 61 74 65 73 0d 0a 20 20 20 20   indicates..    
15630 20 20 20 20 2f 2f 2f 20 77 68 69 63 68 20 63 6f      /// which co
15640 6c 75 6d 6e 20 61 70 70 65 61 72 73 20 6f 6e 20  lumn appears on 
15650 74 68 65 20 6c 65 66 74 2d 68 61 6e 64 20 73 69  the left-hand si
15660 64 65 20 6f 66 20 74 68 65 20 63 6f 6e 73 74 72  de of the constr
15670 61 69 6e 74 2e 20 54 68 65 0d 0a 20 20 20 20 20  aint. The..     
15680 20 20 20 2f 2f 2f 20 66 69 72 73 74 20 63 6f 6c     /// first col
15690 75 6d 6e 20 6f 66 20 74 68 65 20 76 69 72 74 75  umn of the virtu
156a0 61 6c 20 74 61 62 6c 65 20 69 73 20 63 6f 6c 75  al table is colu
156b0 6d 6e 20 30 2e 20 54 68 65 20 72 6f 77 69 64 20  mn 0. The rowid 
156c0 6f 66 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  of the..        
156d0 2f 2f 2f 20 76 69 72 74 75 61 6c 20 74 61 62 6c  /// virtual tabl
156e0 65 20 69 73 20 63 6f 6c 75 6d 6e 20 2d 31 2e 20  e is column -1. 
156f0 54 68 65 20 61 43 6f 6e 73 74 72 61 69 6e 74 5b  The aConstraint[
15700 5d 2e 6f 70 20 66 69 65 6c 64 20 69 6e 64 69 63  ].op field indic
15710 61 74 65 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ates..        //
15720 2f 20 77 68 69 63 68 20 6f 70 65 72 61 74 6f 72  / which operator
15730 20 69 73 20 75 73 65 64 2e 20 54 68 65 20 53 51   is used. The SQ
15740 4c 49 54 45 5f 49 4e 44 45 58 5f 43 4f 4e 53 54  LITE_INDEX_CONST
15750 52 41 49 4e 54 5f 2a 20 63 6f 6e 73 74 61 6e 74  RAINT_* constant
15760 73 20 6d 61 70 0d 0a 20 20 20 20 20 20 20 20 2f  s map..        /
15770 2f 2f 20 69 6e 74 65 67 65 72 20 63 6f 6e 73 74  // integer const
15780 61 6e 74 73 20 69 6e 74 6f 20 6f 70 65 72 61 74  ants into operat
15790 6f 72 20 76 61 6c 75 65 73 2e 20 43 6f 6c 75 6d  or values. Colum
157a0 6e 73 20 6f 63 63 75 72 20 69 6e 20 74 68 65 20  ns occur in the 
157b0 6f 72 64 65 72 0d 0a 20 20 20 20 20 20 20 20 2f  order..        /
157c0 2f 2f 20 74 68 65 79 20 77 65 72 65 20 64 65 66  // they were def
157d0 69 6e 65 64 20 62 79 20 74 68 65 20 63 61 6c 6c  ined by the call
157e0 20 74 6f 20 73 71 6c 69 74 65 33 5f 64 65 63 6c   to sqlite3_decl
157f0 61 72 65 5f 76 74 61 62 28 29 20 69 6e 20 74 68  are_vtab() in th
15800 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 78  e..        /// x
15810 43 72 65 61 74 65 20 6f 72 20 78 43 6f 6e 6e 65  Create or xConne
15820 63 74 20 6d 65 74 68 6f 64 2e 20 48 69 64 64 65  ct method. Hidde
15830 6e 20 63 6f 6c 75 6d 6e 73 20 61 72 65 20 63 6f  n columns are co
15840 75 6e 74 65 64 20 77 68 65 6e 0d 0a 20 20 20 20  unted when..    
15850 20 20 20 20 2f 2f 2f 20 64 65 74 65 72 6d 69 6e      /// determin
15860 69 6e 67 20 74 68 65 20 63 6f 6c 75 6d 6e 20 69  ing the column i
15870 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ndex...        /
15880 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20  // </para>..    
15890 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a      /// <para>..
158a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
158b0 61 43 6f 6e 73 74 72 61 69 6e 74 5b 5d 20 61 72  aConstraint[] ar
158c0 72 61 79 20 63 6f 6e 74 61 69 6e 73 20 69 6e 66  ray contains inf
158d0 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 61  ormation about a
158e0 6c 6c 20 63 6f 6e 73 74 72 61 69 6e 74 73 0d 0a  ll constraints..
158f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 61 74          /// that
15900 20 61 70 70 6c 79 20 74 6f 20 74 68 65 20 76 69   apply to the vi
15910 72 74 75 61 6c 20 74 61 62 6c 65 2e 20 42 75 74  rtual table. But
15920 20 73 6f 6d 65 20 6f 66 20 74 68 65 20 63 6f 6e   some of the con
15930 73 74 72 61 69 6e 74 73 20 6d 69 67 68 74 0d 0a  straints might..
15940 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 6f 74 20          /// not 
15950 62 65 20 75 73 61 62 6c 65 20 62 65 63 61 75 73  be usable becaus
15960 65 20 6f 66 20 74 68 65 20 77 61 79 20 74 61 62  e of the way tab
15970 6c 65 73 20 61 72 65 20 6f 72 64 65 72 65 64 20  les are ordered 
15980 69 6e 20 61 20 6a 6f 69 6e 2e 20 54 68 65 0d 0a  in a join. The..
15990 20 20 20 20 20 20 20 20 2f 2f 2f 20 78 42 65 73          /// xBes
159a0 74 49 6e 64 65 78 20 6d 65 74 68 6f 64 20 6d 75  tIndex method mu
159b0 73 74 20 74 68 65 72 65 66 6f 72 65 20 6f 6e 6c  st therefore onl
159c0 79 20 63 6f 6e 73 69 64 65 72 20 63 6f 6e 73 74  y consider const
159d0 72 61 69 6e 74 73 20 74 68 61 74 0d 0a 20 20 20  raints that..   
159e0 20 20 20 20 20 2f 2f 2f 20 68 61 76 65 20 61 6e       /// have an
159f0 20 61 43 6f 6e 73 74 72 61 69 6e 74 5b 5d 2e 75   aConstraint[].u
15a00 73 61 62 6c 65 20 66 6c 61 67 20 77 68 69 63 68  sable flag which
15a10 20 69 73 20 74 72 75 65 2e 0d 0a 20 20 20 20 20   is true...     
15a20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a     /// </para>..
15a30 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
15a40 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
15a50 49 6e 20 61 64 64 69 74 69 6f 6e 20 74 6f 20 57  In addition to W
15a60 48 45 52 45 20 63 6c 61 75 73 65 20 63 6f 6e 73  HERE clause cons
15a70 74 72 61 69 6e 74 73 2c 20 74 68 65 20 53 51 4c  traints, the SQL
15a80 69 74 65 20 63 6f 72 65 20 61 6c 73 6f 20 74 65  ite core also te
15a90 6c 6c 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  lls..        ///
15aa0 20 74 68 65 20 78 42 65 73 74 49 6e 64 65 78 20   the xBestIndex 
15ab0 6d 65 74 68 6f 64 20 61 62 6f 75 74 20 74 68 65  method about the
15ac0 20 4f 52 44 45 52 20 42 59 20 63 6c 61 75 73 65   ORDER BY clause
15ad0 2e 20 28 49 6e 20 61 6e 20 61 67 67 72 65 67 61  . (In an aggrega
15ae0 74 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  te..        /// 
15af0 71 75 65 72 79 2c 20 74 68 65 20 53 51 4c 69 74  query, the SQLit
15b00 65 20 63 6f 72 65 20 6d 69 67 68 74 20 70 75 74  e core might put
15b10 20 69 6e 20 47 52 4f 55 50 20 42 59 20 63 6c 61   in GROUP BY cla
15b20 75 73 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  use information 
15b30 69 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  in..        /// 
15b40 70 6c 61 63 65 20 6f 66 20 74 68 65 20 4f 52 44  place of the ORD
15b50 45 52 20 42 59 20 63 6c 61 75 73 65 20 69 6e 66  ER BY clause inf
15b60 6f 72 6d 61 74 69 6f 6e 2c 20 62 75 74 20 74 68  ormation, but th
15b70 69 73 20 66 61 63 74 20 73 68 6f 75 6c 64 20 6e  is fact should n
15b80 6f 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ot..        /// 
15b90 6d 61 6b 65 20 61 6e 79 20 64 69 66 66 65 72 65  make any differe
15ba0 6e 63 65 20 74 6f 20 74 68 65 20 78 42 65 73 74  nce to the xBest
15bb0 49 6e 64 65 78 20 6d 65 74 68 6f 64 2e 29 20 49  Index method.) I
15bc0 66 20 61 6c 6c 20 74 65 72 6d 73 20 6f 66 20 74  f all terms of t
15bd0 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
15be0 4f 52 44 45 52 20 42 59 20 63 6c 61 75 73 65 20  ORDER BY clause 
15bf0 61 72 65 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74  are columns in t
15c00 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
15c10 2c 20 74 68 65 6e 20 6e 4f 72 64 65 72 42 79 0d  , then nOrderBy.
15c20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 6c  .        /// wil
15c30 6c 20 62 65 20 74 68 65 20 6e 75 6d 62 65 72 20  l be the number 
15c40 6f 66 20 74 65 72 6d 73 20 69 6e 20 74 68 65 20  of terms in the 
15c50 4f 52 44 45 52 20 42 59 20 63 6c 61 75 73 65 20  ORDER BY clause 
15c60 61 6e 64 20 74 68 65 0d 0a 20 20 20 20 20 20 20  and the..       
15c70 20 2f 2f 2f 20 61 4f 72 64 65 72 42 79 5b 5d 20   /// aOrderBy[] 
15c80 61 72 72 61 79 20 77 69 6c 6c 20 69 64 65 6e 74  array will ident
15c90 69 66 79 20 74 68 65 20 63 6f 6c 75 6d 6e 20 66  ify the column f
15ca0 6f 72 20 65 61 63 68 20 74 65 72 6d 20 69 6e 20  or each term in 
15cb0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
15cc0 20 6f 72 64 65 72 20 62 79 20 63 6c 61 75 73 65   order by clause
15cd0 20 61 6e 64 20 77 68 65 74 68 65 72 20 6f 72 20   and whether or 
15ce0 6e 6f 74 20 74 68 61 74 20 63 6f 6c 75 6d 6e 20  not that column 
15cf0 69 73 20 41 53 43 20 6f 72 20 44 45 53 43 2e 0d  is ASC or DESC..
15d00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
15d10 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
15d20 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
15d30 20 20 2f 2f 2f 20 32 2e 33 2e 32 20 4f 75 74 70    /// 2.3.2 Outp
15d40 75 74 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  uts..        ///
15d50 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20   </para>..      
15d60 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20    /// <para>..  
15d70 20 20 20 20 20 20 2f 2f 2f 20 47 69 76 65 6e 20        /// Given 
15d80 61 6c 6c 20 6f 66 20 74 68 65 20 69 6e 66 6f 72  all of the infor
15d90 6d 61 74 69 6f 6e 20 61 62 6f 76 65 2c 20 74 68  mation above, th
15da0 65 20 6a 6f 62 20 6f 66 20 74 68 65 20 78 42 65  e job of the xBe
15db0 73 74 49 6e 64 65 78 0d 0a 20 20 20 20 20 20 20  stIndex..       
15dc0 20 2f 2f 2f 20 6d 65 74 68 6f 64 20 69 74 20 74   /// method it t
15dd0 6f 20 66 69 67 75 72 65 20 6f 75 74 20 74 68 65  o figure out the
15de0 20 62 65 73 74 20 77 61 79 20 74 6f 20 73 65 61   best way to sea
15df0 72 63 68 20 74 68 65 20 76 69 72 74 75 61 6c 20  rch the virtual 
15e00 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20  table...        
15e10 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20  /// </para>..   
15e20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
15e30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
15e40 20 78 42 65 73 74 49 6e 64 65 78 20 6d 65 74 68   xBestIndex meth
15e50 6f 64 20 66 69 6c 6c 73 20 74 68 65 20 69 64 78  od fills the idx
15e60 4e 75 6d 20 61 6e 64 20 69 64 78 53 74 72 20 66  Num and idxStr f
15e70 69 65 6c 64 73 20 77 69 74 68 0d 0a 20 20 20 20  ields with..    
15e80 20 20 20 20 2f 2f 2f 20 69 6e 66 6f 72 6d 61 74      /// informat
15e90 69 6f 6e 20 74 68 61 74 20 63 6f 6d 6d 75 6e 69  ion that communi
15ea0 63 61 74 65 73 20 61 6e 20 69 6e 64 65 78 69 6e  cates an indexin
15eb0 67 20 73 74 72 61 74 65 67 79 20 74 6f 20 74 68  g strategy to th
15ec0 65 20 78 46 69 6c 74 65 72 0d 0a 20 20 20 20 20  e xFilter..     
15ed0 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 2e 20 54     /// method. T
15ee0 68 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69  he information i
15ef0 6e 20 69 64 78 4e 75 6d 20 61 6e 64 20 69 64 78  n idxNum and idx
15f00 53 74 72 20 69 73 20 61 72 62 69 74 72 61 72 79  Str is arbitrary
15f10 20 61 73 20 66 61 72 20 61 73 0d 0a 20 20 20 20   as far as..    
15f20 20 20 20 20 2f 2f 2f 20 74 68 65 20 53 51 4c 69      /// the SQLi
15f30 74 65 20 63 6f 72 65 20 69 73 20 63 6f 6e 63 65  te core is conce
15f40 72 6e 65 64 2e 20 54 68 65 20 53 51 4c 69 74 65  rned. The SQLite
15f50 20 63 6f 72 65 20 6a 75 73 74 20 63 6f 70 69 65   core just copie
15f60 73 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  s the..        /
15f70 2f 2f 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 74  // information t
15f80 68 72 6f 75 67 68 20 74 6f 20 74 68 65 20 78 46  hrough to the xF
15f90 69 6c 74 65 72 20 6d 65 74 68 6f 64 2e 20 41 6e  ilter method. An
15fa0 79 20 64 65 73 69 72 65 64 20 6d 65 61 6e 69 6e  y desired meanin
15fb0 67 20 63 61 6e 0d 0a 20 20 20 20 20 20 20 20 2f  g can..        /
15fc0 2f 2f 20 62 65 20 61 73 73 69 67 6e 65 64 20 74  // be assigned t
15fd0 6f 20 69 64 78 4e 75 6d 20 61 6e 64 20 69 64 78  o idxNum and idx
15fe0 53 74 72 20 61 73 20 6c 6f 6e 67 20 61 73 20 78  Str as long as x
15ff0 42 65 73 74 49 6e 64 65 78 20 61 6e 64 20 78 46  BestIndex and xF
16000 69 6c 74 65 72 0d 0a 20 20 20 20 20 20 20 20 2f  ilter..        /
16010 2f 2f 20 61 67 72 65 65 20 6f 6e 20 77 68 61 74  // agree on what
16020 20 74 68 61 74 20 6d 65 61 6e 69 6e 67 20 69 73   that meaning is
16030 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
16040 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
16050 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
16060 20 20 20 20 2f 2f 2f 20 54 68 65 20 69 64 78 53      /// The idxS
16070 74 72 20 76 61 6c 75 65 20 6d 61 79 20 62 65 20  tr value may be 
16080 61 20 73 74 72 69 6e 67 20 6f 62 74 61 69 6e 65  a string obtaine
16090 64 20 66 72 6f 6d 20 61 6e 20 53 51 4c 69 74 65  d from an SQLite
160a0 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20 20   memory..       
160b0 20 2f 2f 2f 20 61 6c 6c 6f 63 61 74 69 6f 6e 20   /// allocation 
160c0 66 75 6e 63 74 69 6f 6e 20 73 75 63 68 20 61 73  function such as
160d0 20 73 71 6c 69 74 65 33 5f 6d 70 72 69 6e 74 66   sqlite3_mprintf
160e0 28 29 2e 20 49 66 20 74 68 69 73 20 69 73 20 74  (). If this is t
160f0 68 65 20 63 61 73 65 2c 0d 0a 20 20 20 20 20 20  he case,..      
16100 20 20 2f 2f 2f 20 74 68 65 6e 20 74 68 65 20 6e    /// then the n
16110 65 65 64 54 6f 46 72 65 65 49 64 78 53 74 72 20  eedToFreeIdxStr 
16120 66 6c 61 67 20 6d 75 73 74 20 62 65 20 73 65 74  flag must be set
16130 20 74 6f 20 74 72 75 65 20 73 6f 20 74 68 61 74   to true so that
16140 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
16150 2f 20 53 51 4c 69 74 65 20 63 6f 72 65 20 77 69  / SQLite core wi
16160 6c 6c 20 6b 6e 6f 77 20 74 6f 20 63 61 6c 6c 20  ll know to call 
16170 73 71 6c 69 74 65 33 5f 66 72 65 65 28 29 20 6f  sqlite3_free() o
16180 6e 20 74 68 61 74 20 73 74 72 69 6e 67 20 77 68  n that string wh
16190 65 6e 20 69 74 0d 0a 20 20 20 20 20 20 20 20 2f  en it..        /
161a0 2f 2f 20 68 61 73 20 66 69 6e 69 73 68 65 64 20  // has finished 
161b0 77 69 74 68 20 69 74 2c 20 61 6e 64 20 74 68 75  with it, and thu
161c0 73 20 61 76 6f 69 64 20 61 20 6d 65 6d 6f 72 79  s avoid a memory
161d0 20 6c 65 61 6b 2e 0d 0a 20 20 20 20 20 20 20 20   leak...        
161e0 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20  /// </para>..   
161f0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
16200 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 49 66 20  .        /// If 
16210 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c  the virtual tabl
16220 65 20 77 69 6c 6c 20 6f 75 74 70 75 74 20 72 6f  e will output ro
16230 77 73 20 69 6e 20 74 68 65 20 6f 72 64 65 72 20  ws in the order 
16240 73 70 65 63 69 66 69 65 64 20 62 79 20 74 68 65  specified by the
16250 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4f 52  ..        /// OR
16260 44 45 52 20 42 59 20 63 6c 61 75 73 65 2c 20 74  DER BY clause, t
16270 68 65 6e 20 74 68 65 20 6f 72 64 65 72 42 79 43  hen the orderByC
16280 6f 6e 73 75 6d 65 64 20 66 6c 61 67 20 6d 61 79  onsumed flag may
16290 20 62 65 20 73 65 74 20 74 6f 20 74 72 75 65 2e   be set to true.
162a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 49 66  ..        /// If
162b0 20 74 68 65 20 6f 75 74 70 75 74 20 69 73 20 6e   the output is n
162c0 6f 74 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  ot automatically
162d0 20 69 6e 20 74 68 65 20 63 6f 72 72 65 63 74 20   in the correct 
162e0 6f 72 64 65 72 20 74 68 65 6e 0d 0a 20 20 20 20  order then..    
162f0 20 20 20 20 2f 2f 2f 20 6f 72 64 65 72 42 79 43      /// orderByC
16300 6f 6e 73 75 6d 65 64 20 6d 75 73 74 20 62 65 20  onsumed must be 
16310 6c 65 66 74 20 69 6e 20 69 74 73 20 64 65 66 61  left in its defa
16320 75 6c 74 20 66 61 6c 73 65 20 73 65 74 74 69 6e  ult false settin
16330 67 2e 20 54 68 69 73 0d 0a 20 20 20 20 20 20 20  g. This..       
16340 20 2f 2f 2f 20 77 69 6c 6c 20 69 6e 64 69 63 61   /// will indica
16350 74 65 20 74 6f 20 74 68 65 20 53 51 4c 69 74 65  te to the SQLite
16360 20 63 6f 72 65 20 74 68 61 74 20 69 74 20 77 69   core that it wi
16370 6c 6c 20 6e 65 65 64 20 74 6f 20 64 6f 20 61 20  ll need to do a 
16380 73 65 70 61 72 61 74 65 0d 0a 20 20 20 20 20 20  separate..      
16390 20 20 2f 2f 2f 20 73 6f 72 74 69 6e 67 20 70 61    /// sorting pa
163a0 73 73 20 6f 76 65 72 20 74 68 65 20 64 61 74 61  ss over the data
163b0 20 61 66 74 65 72 20 69 74 20 63 6f 6d 65 73 20   after it comes 
163c0 6f 75 74 20 6f 66 20 74 68 65 20 76 69 72 74 75  out of the virtu
163d0 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20  al table...     
163e0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a     /// </para>..
163f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
16400 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
16410 54 68 65 20 65 73 74 69 6d 61 74 65 64 43 6f 73  The estimatedCos
16420 74 20 66 69 65 6c 64 20 73 68 6f 75 6c 64 20 62  t field should b
16430 65 20 73 65 74 20 74 6f 20 74 68 65 20 65 73 74  e set to the est
16440 69 6d 61 74 65 64 20 6e 75 6d 62 65 72 20 6f 66  imated number of
16450 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 69  ..        /// di
16460 73 6b 20 61 63 63 65 73 73 20 6f 70 65 72 61 74  sk access operat
16470 69 6f 6e 73 20 72 65 71 75 69 72 65 64 20 74 6f  ions required to
16480 20 65 78 65 63 75 74 65 20 74 68 69 73 20 71 75   execute this qu
16490 65 72 79 20 61 67 61 69 6e 73 74 20 74 68 65 0d  ery against the.
164a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 69 72  .        /// vir
164b0 74 75 61 6c 20 74 61 62 6c 65 2e 20 54 68 65 20  tual table. The 
164c0 53 51 4c 69 74 65 20 63 6f 72 65 20 77 69 6c 6c  SQLite core will
164d0 20 6f 66 74 65 6e 20 63 61 6c 6c 20 78 42 65 73   often call xBes
164e0 74 49 6e 64 65 78 20 6d 75 6c 74 69 70 6c 65 0d  tIndex multiple.
164f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 69 6d  .        /// tim
16500 65 73 20 77 69 74 68 20 64 69 66 66 65 72 65 6e  es with differen
16510 74 20 63 6f 6e 73 74 72 61 69 6e 74 73 2c 20 6f  t constraints, o
16520 62 74 61 69 6e 20 6d 75 6c 74 69 70 6c 65 20 63  btain multiple c
16530 6f 73 74 20 65 73 74 69 6d 61 74 65 73 2c 0d 0a  ost estimates,..
16540 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 6e          /// then
16550 20 63 68 6f 6f 73 65 20 74 68 65 20 71 75 65 72   choose the quer
16560 79 20 70 6c 61 6e 20 74 68 61 74 20 67 69 76 65  y plan that give
16570 73 20 74 68 65 20 6c 6f 77 65 73 74 20 65 73 74  s the lowest est
16580 69 6d 61 74 65 2e 0d 0a 20 20 20 20 20 20 20 20  imate...        
16590 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20  /// </para>..   
165a0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
165b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
165c0 20 61 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67   aConstraintUsag
165d0 65 5b 5d 20 61 72 72 61 79 20 63 6f 6e 74 61 69  e[] array contai
165e0 6e 73 20 6f 6e 65 20 65 6c 65 6d 65 6e 74 20 66  ns one element f
165f0 6f 72 20 65 61 63 68 20 6f 66 20 74 68 65 0d 0a  or each of the..
16600 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 43 6f 6e          /// nCon
16610 73 74 72 61 69 6e 74 20 63 6f 6e 73 74 72 61 69  straint constrai
16620 6e 74 73 20 69 6e 20 74 68 65 20 69 6e 70 75 74  nts in the input
16630 73 20 73 65 63 74 69 6f 6e 20 6f 66 20 74 68 65  s section of the
16640 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71  ..        /// sq
16650 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f  lite3_index_info
16660 20 73 74 72 75 63 74 75 72 65 2e 20 54 68 65 20   structure. The 
16670 61 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  aConstraintUsage
16680 5b 5d 20 61 72 72 61 79 20 69 73 20 75 73 65 64  [] array is used
16690 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 62 79  ..        /// by
166a0 20 78 42 65 73 74 49 6e 64 65 78 20 74 6f 20 74   xBestIndex to t
166b0 65 6c 6c 20 74 68 65 20 63 6f 72 65 20 68 6f 77  ell the core how
166c0 20 69 74 20 69 73 20 75 73 69 6e 67 20 74 68 65   it is using the
166d0 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 0d 0a 20   constraints... 
166e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
166f0 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
16700 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
16710 2f 2f 2f 20 54 68 65 20 78 42 65 73 74 49 6e 64  /// The xBestInd
16720 65 78 20 6d 65 74 68 6f 64 20 6d 61 79 20 73 65  ex method may se
16730 74 20 61 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  t aConstraintUsa
16740 67 65 5b 5d 2e 61 72 67 76 49 6e 64 65 78 20 65  ge[].argvIndex e
16750 6e 74 72 69 65 73 0d 0a 20 20 20 20 20 20 20 20  ntries..        
16760 2f 2f 2f 20 74 6f 20 76 61 6c 75 65 73 20 67 72  /// to values gr
16770 65 61 74 65 72 20 74 68 61 6e 20 6f 6e 65 2e 20  eater than one. 
16780 45 78 61 63 74 6c 79 20 6f 6e 65 20 65 6e 74 72  Exactly one entr
16790 79 20 73 68 6f 75 6c 64 20 62 65 20 73 65 74 20  y should be set 
167a0 74 6f 20 31 2c 0d 0a 20 20 20 20 20 20 20 20 2f  to 1,..        /
167b0 2f 2f 20 61 6e 6f 74 68 65 72 20 74 6f 20 32 2c  // another to 2,
167c0 20 61 6e 6f 74 68 65 72 20 74 6f 20 33 2c 20 61   another to 3, a
167d0 6e 64 20 73 6f 20 66 6f 72 74 68 20 75 70 20 74  nd so forth up t
167e0 6f 20 61 73 20 6d 61 6e 79 20 6f 72 20 61 73 20  o as many or as 
167f0 66 65 77 20 61 73 0d 0a 20 20 20 20 20 20 20 20  few as..        
16800 2f 2f 2f 20 74 68 65 20 78 42 65 73 74 49 6e 64  /// the xBestInd
16810 65 78 20 6d 65 74 68 6f 64 20 77 61 6e 74 73 2e  ex method wants.
16820 20 54 68 65 20 45 58 50 52 20 6f 66 20 74 68 65   The EXPR of the
16830 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 0d 0a   corresponding..
16840 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 73          /// cons
16850 74 72 61 69 6e 74 73 20 77 69 6c 6c 20 74 68 65  traints will the
16860 6e 20 62 65 20 70 61 73 73 65 64 20 69 6e 20 61  n be passed in a
16870 73 20 74 68 65 20 61 72 67 76 5b 5d 20 70 61 72  s the argv[] par
16880 61 6d 65 74 65 72 73 20 74 6f 0d 0a 20 20 20 20  ameters to..    
16890 20 20 20 20 2f 2f 2f 20 78 46 69 6c 74 65 72 2e      /// xFilter.
168a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
168b0 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
168c0 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20  // <para>..     
168d0 20 20 20 2f 2f 2f 20 46 6f 72 20 65 78 61 6d 70     /// For examp
168e0 6c 65 2c 20 69 66 20 74 68 65 20 61 43 6f 6e 73  le, if the aCons
168f0 74 72 61 69 6e 74 5b 33 5d 2e 61 72 67 76 49 6e  traint[3].argvIn
16900 64 65 78 20 69 73 20 73 65 74 20 74 6f 20 31 2c  dex is set to 1,
16910 20 74 68 65 6e 20 77 68 65 6e 0d 0a 20 20 20 20   then when..    
16920 20 20 20 20 2f 2f 2f 20 78 46 69 6c 74 65 72 20      /// xFilter 
16930 69 73 20 63 61 6c 6c 65 64 2c 20 74 68 65 20 61  is called, the a
16940 72 67 76 5b 30 5d 20 70 61 73 73 65 64 20 74 6f  rgv[0] passed to
16950 20 78 46 69 6c 74 65 72 20 77 69 6c 6c 20 68 61   xFilter will ha
16960 76 65 20 74 68 65 20 45 58 50 52 0d 0a 20 20 20  ve the EXPR..   
16970 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 20 6f       /// value o
16980 66 20 74 68 65 20 61 43 6f 6e 73 74 72 61 69 6e  f the aConstrain
16990 74 5b 33 5d 20 63 6f 6e 73 74 72 61 69 6e 74 2e  t[3] constraint.
169a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
169b0 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
169c0 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20  // <para>..     
169d0 20 20 20 2f 2f 2f 20 42 79 20 64 65 66 61 75 6c     /// By defaul
169e0 74 2c 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  t, the SQLite co
169f0 72 65 20 64 6f 75 62 6c 65 20 63 68 65 63 6b 73  re double checks
16a00 20 61 6c 6c 20 63 6f 6e 73 74 72 61 69 6e 74 73   all constraints
16a10 20 6f 6e 20 65 61 63 68 0d 0a 20 20 20 20 20 20   on each..      
16a20 20 20 2f 2f 2f 20 72 6f 77 20 6f 66 20 74 68 65    /// row of the
16a30 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 74   virtual table t
16a40 68 61 74 20 69 74 20 72 65 63 65 69 76 65 73 2e  hat it receives.
16a50 20 49 66 20 73 75 63 68 20 61 20 63 68 65 63 6b   If such a check
16a60 20 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   is..        ///
16a70 20 72 65 64 75 6e 64 61 6e 74 2c 20 74 68 65 20   redundant, the 
16a80 78 42 65 73 74 46 69 6c 74 65 72 20 6d 65 74 68  xBestFilter meth
16a90 6f 64 20 63 61 6e 20 73 75 70 70 72 65 73 73 20  od can suppress 
16aa0 74 68 61 74 20 64 6f 75 62 6c 65 2d 63 68 65 63  that double-chec
16ab0 6b 20 62 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f  k by..        //
16ac0 2f 20 73 65 74 74 69 6e 67 20 61 43 6f 6e 73 74  / setting aConst
16ad0 72 61 69 6e 74 55 73 61 67 65 5b 5d 2e 6f 6d 69  raintUsage[].omi
16ae0 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  t...        /// 
16af0 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
16b00 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
16b10 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
16b20 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22  ram name="pVtab"
16b30 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
16b40 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
16b50 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33  r to the sqlite3
16b60 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74  _vtab derived st
16b70 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  ructure...      
16b80 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
16b90 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
16ba0 61 6d 20 6e 61 6d 65 3d 22 70 49 6e 64 65 78 22  am name="pIndex"
16bb0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
16bc0 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
16bd0 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33  r to the sqlite3
16be0 5f 69 6e 64 65 78 5f 69 6e 66 6f 20 73 74 72 75  _index_info stru
16bf0 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  cture...        
16c00 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
16c10 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
16c20 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
16c30 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69   A standard SQLi
16c40 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d  te return code..
16c50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
16c60 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
16c70 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
16c80 20 78 42 65 73 74 49 6e 64 65 78 28 0d 0a 20 20   xBestIndex(..  
16c90 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
16ca0 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20   pVtab,..       
16cb0 20 20 20 20 20 49 6e 74 50 74 72 20 70 49 6e 64       IntPtr pInd
16cc0 65 78 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ex..            
16cd0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  );....        //
16ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16d20 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
16d30 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
16d40 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
16d50 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
16d60 54 68 69 73 20 6d 65 74 68 6f 64 20 72 65 6c 65  This method rele
16d70 61 73 65 73 20 61 20 63 6f 6e 6e 65 63 74 69 6f  ases a connectio
16d80 6e 20 74 6f 20 61 20 76 69 72 74 75 61 6c 20 74  n to a virtual t
16d90 61 62 6c 65 2e 20 4f 6e 6c 79 20 74 68 65 0d 0a  able. Only the..
16da0 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69          /// sqli
16db0 74 65 33 5f 76 74 61 62 20 6f 62 6a 65 63 74 20  te3_vtab object 
16dc0 69 73 20 64 65 73 74 72 6f 79 65 64 2e 20 54 68  is destroyed. Th
16dd0 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  e virtual table 
16de0 69 73 20 6e 6f 74 0d 0a 20 20 20 20 20 20 20 20  is not..        
16df0 2f 2f 2f 20 64 65 73 74 72 6f 79 65 64 20 61 6e  /// destroyed an
16e00 64 20 61 6e 79 20 62 61 63 6b 69 6e 67 20 73 74  d any backing st
16e10 6f 72 65 20 61 73 73 6f 63 69 61 74 65 64 20 77  ore associated w
16e20 69 74 68 20 74 68 65 20 76 69 72 74 75 61 6c 20  ith the virtual 
16e30 74 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f  table..        /
16e40 2f 2f 20 70 65 72 73 69 73 74 73 2e 20 54 68 69  // persists. Thi
16e50 73 20 6d 65 74 68 6f 64 20 75 6e 64 6f 65 73 20  s method undoes 
16e60 74 68 65 20 77 6f 72 6b 20 6f 66 20 78 43 6f 6e  the work of xCon
16e70 6e 65 63 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f  nect...        /
16e80 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20  // </para>..    
16e90 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a      /// <para>..
16ea0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
16eb0 20 6d 65 74 68 6f 64 20 69 73 20 61 20 64 65 73   method is a des
16ec0 74 72 75 63 74 6f 72 20 66 6f 72 20 61 20 63 6f  tructor for a co
16ed0 6e 6e 65 63 74 69 6f 6e 20 74 6f 20 74 68 65 20  nnection to the 
16ee0 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a  virtual table...
16ef0 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 74          /// Cont
16f00 72 61 73 74 20 74 68 69 73 20 6d 65 74 68 6f 64  rast this method
16f10 20 77 69 74 68 20 78 44 65 73 74 72 6f 79 2e 20   with xDestroy. 
16f20 54 68 65 20 78 44 65 73 74 72 6f 79 20 69 73 20  The xDestroy is 
16f30 61 20 64 65 73 74 72 75 63 74 6f 72 0d 0a 20 20  a destructor..  
16f40 20 20 20 20 20 20 2f 2f 2f 20 66 6f 72 20 74 68        /// for th
16f50 65 20 65 6e 74 69 72 65 20 76 69 72 74 75 61 6c  e entire virtual
16f60 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20   table...       
16f70 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
16f80 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
16f90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
16fa0 65 20 78 44 69 73 63 6f 6e 6e 65 63 74 20 6d 65  e xDisconnect me
16fb0 74 68 6f 64 20 69 73 20 72 65 71 75 69 72 65 64  thod is required
16fc0 20 66 6f 72 20 65 76 65 72 79 20 76 69 72 74 75   for every virtu
16fd0 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20 20 20  al table..      
16fe0 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74 61    /// implementa
16ff0 74 69 6f 6e 2c 20 74 68 6f 75 67 68 20 69 74 20  tion, though it 
17000 69 73 20 61 63 63 65 70 74 61 62 6c 65 20 66 6f  is acceptable fo
17010 72 20 74 68 65 20 78 44 69 73 63 6f 6e 6e 65 63  r the xDisconnec
17020 74 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 2f  t and..        /
17030 2f 2f 20 78 44 65 73 74 72 6f 79 20 6d 65 74 68  // xDestroy meth
17040 6f 64 73 20 74 6f 20 62 65 20 74 68 65 20 73 61  ods to be the sa
17050 6d 65 20 66 75 6e 63 74 69 6f 6e 20 69 66 20 74  me function if t
17060 68 61 74 20 6d 61 6b 65 73 20 73 65 6e 73 65 20  hat makes sense 
17070 66 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  for..        ///
17080 20 74 68 65 20 70 61 72 74 69 63 75 6c 61 72 20   the particular 
17090 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a  virtual table...
170a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
170b0 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
170c0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
170d0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
170e0 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20  name="pVtab">.. 
170f0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
17100 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
17110 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61   the sqlite3_vta
17120 62 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74  b derived struct
17130 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
17140 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
17150 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
17160 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
17170 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
17180 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
17190 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
171a0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53  urns>..        S
171b0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
171c0 44 69 73 63 6f 6e 6e 65 63 74 28 0d 0a 20 20 20  Disconnect(..   
171d0 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
171e0 70 56 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20  pVtab..         
171f0 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20     );....       
17200 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
17210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17240 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
17250 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
17260 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
17270 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
17280 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 72  // This method r
17290 65 6c 65 61 73 65 73 20 61 20 63 6f 6e 6e 65 63  eleases a connec
172a0 74 69 6f 6e 20 74 6f 20 61 20 76 69 72 74 75 61  tion to a virtua
172b0 6c 20 74 61 62 6c 65 2c 20 6a 75 73 74 20 6c 69  l table, just li
172c0 6b 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  ke the..        
172d0 2f 2f 2f 20 78 44 69 73 63 6f 6e 6e 65 63 74 20  /// xDisconnect 
172e0 6d 65 74 68 6f 64 2c 20 61 6e 64 20 69 74 20 61  method, and it a
172f0 6c 73 6f 20 64 65 73 74 72 6f 79 73 20 74 68 65  lso destroys the
17300 20 75 6e 64 65 72 6c 79 69 6e 67 20 74 61 62 6c   underlying tabl
17310 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  e..        /// i
17320 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 20 54  mplementation. T
17330 68 69 73 20 6d 65 74 68 6f 64 20 75 6e 64 6f 65  his method undoe
17340 73 20 74 68 65 20 77 6f 72 6b 20 6f 66 20 78 43  s the work of xC
17350 72 65 61 74 65 2e 0d 0a 20 20 20 20 20 20 20 20  reate...        
17360 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20  /// </para>..   
17370 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
17380 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
17390 20 78 44 69 73 63 6f 6e 6e 65 63 74 20 6d 65 74   xDisconnect met
173a0 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 77 68  hod is called wh
173b0 65 6e 65 76 65 72 20 61 20 64 61 74 61 62 61 73  enever a databas
173c0 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 0d 0a 20 20  e connection..  
173d0 20 20 20 20 20 20 2f 2f 2f 20 74 68 61 74 20 75        /// that u
173e0 73 65 73 20 61 20 76 69 72 74 75 61 6c 20 74 61  ses a virtual ta
173f0 62 6c 65 20 69 73 20 63 6c 6f 73 65 64 2e 20 54  ble is closed. T
17400 68 65 20 78 44 65 73 74 72 6f 79 20 6d 65 74 68  he xDestroy meth
17410 6f 64 20 69 73 20 6f 6e 6c 79 0d 0a 20 20 20 20  od is only..    
17420 20 20 20 20 2f 2f 2f 20 63 61 6c 6c 65 64 20 77      /// called w
17430 68 65 6e 20 61 20 44 52 4f 50 20 54 41 42 4c 45  hen a DROP TABLE
17440 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 65 78   statement is ex
17450 65 63 75 74 65 64 20 61 67 61 69 6e 73 74 20 74  ecuted against t
17460 68 65 20 76 69 72 74 75 61 6c 0d 0a 20 20 20 20  he virtual..    
17470 20 20 20 20 2f 2f 2f 20 74 61 62 6c 65 2e 0d 0a      /// table...
17480 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
17490 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
174a0 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
174b0 20 2f 2f 2f 20 54 68 65 20 78 44 65 73 74 72 6f   /// The xDestro
174c0 79 20 6d 65 74 68 6f 64 20 69 73 20 72 65 71 75  y method is requ
174d0 69 72 65 64 20 66 6f 72 20 65 76 65 72 79 20 76  ired for every v
174e0 69 72 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20  irtual table..  
174f0 20 20 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d        /// implem
17500 65 6e 74 61 74 69 6f 6e 2c 20 74 68 6f 75 67 68  entation, though
17510 20 69 74 20 69 73 20 61 63 63 65 70 74 61 62 6c   it is acceptabl
17520 65 20 66 6f 72 20 74 68 65 20 78 44 69 73 63 6f  e for the xDisco
17530 6e 6e 65 63 74 20 61 6e 64 0d 0a 20 20 20 20 20  nnect and..     
17540 20 20 20 2f 2f 2f 20 78 44 65 73 74 72 6f 79 20     /// xDestroy 
17550 6d 65 74 68 6f 64 73 20 74 6f 20 62 65 20 74 68  methods to be th
17560 65 20 73 61 6d 65 20 66 75 6e 63 74 69 6f 6e 20  e same function 
17570 69 66 20 74 68 61 74 20 6d 61 6b 65 73 20 73 65  if that makes se
17580 6e 73 65 20 66 6f 72 0d 0a 20 20 20 20 20 20 20  nse for..       
17590 20 2f 2f 2f 20 74 68 65 20 70 61 72 74 69 63 75   /// the particu
175a0 6c 61 72 20 76 69 72 74 75 61 6c 20 74 61 62 6c  lar virtual tabl
175b0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
175c0 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
175d0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
175e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
175f0 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22  ram name="pVtab"
17600 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
17610 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
17620 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33  r to the sqlite3
17630 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74  _vtab derived st
17640 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  ructure...      
17650 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
17660 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
17670 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
17680 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51  // A standard SQ
17690 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65  Lite return code
176a0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
176b0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
176c0 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f     SQLiteErrorCo
176d0 64 65 20 78 44 65 73 74 72 6f 79 28 0d 0a 20 20  de xDestroy(..  
176e0 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
176f0 20 70 56 74 61 62 0d 0a 20 20 20 20 20 20 20 20   pVtab..        
17700 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20      );....      
17710 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
17720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17750 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
17760 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
17770 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
17780 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
17790 2f 2f 2f 20 54 68 65 20 78 4f 70 65 6e 20 6d 65  /// The xOpen me
177a0 74 68 6f 64 20 63 72 65 61 74 65 73 20 61 20 6e  thod creates a n
177b0 65 77 20 63 75 72 73 6f 72 20 75 73 65 64 20 66  ew cursor used f
177c0 6f 72 20 61 63 63 65 73 73 69 6e 67 20 28 72 65  or accessing (re
177d0 61 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ad..        /// 
177e0 61 6e 64 2f 6f 72 20 77 72 69 74 69 6e 67 29 20  and/or writing) 
177f0 61 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e  a virtual table.
17800 20 41 20 73 75 63 63 65 73 73 66 75 6c 20 69 6e   A successful in
17810 76 6f 63 61 74 69 6f 6e 20 6f 66 20 74 68 69 73  vocation of this
17820 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65  ..        /// me
17830 74 68 6f 64 20 77 69 6c 6c 20 61 6c 6c 6f 63 61  thod will alloca
17840 74 65 20 74 68 65 20 6d 65 6d 6f 72 79 20 66 6f  te the memory fo
17850 72 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74  r the sqlite3_vt
17860 61 62 5f 63 75 72 73 6f 72 20 28 6f 72 20 61 0d  ab_cursor (or a.
17870 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 75 62  .        /// sub
17880 63 6c 61 73 73 29 2c 20 69 6e 69 74 69 61 6c 69  class), initiali
17890 7a 65 20 74 68 65 20 6e 65 77 20 6f 62 6a 65 63  ze the new objec
178a0 74 2c 20 61 6e 64 20 6d 61 6b 65 20 2a 70 70 43  t, and make *ppC
178b0 75 72 73 6f 72 20 70 6f 69 6e 74 20 74 6f 0d 0a  ursor point to..
178c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20          /// the 
178d0 6e 65 77 20 6f 62 6a 65 63 74 2e 20 54 68 65 20  new object. The 
178e0 73 75 63 63 65 73 73 66 75 6c 20 63 61 6c 6c 20  successful call 
178f0 74 68 65 6e 20 72 65 74 75 72 6e 73 20 53 51 4c  then returns SQL
17900 49 54 45 5f 4f 4b 2e 0d 0a 20 20 20 20 20 20 20  ITE_OK...       
17910 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
17920 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
17930 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 46 6f  ..        /// Fo
17940 72 20 65 76 65 72 79 20 73 75 63 63 65 73 73 66  r every successf
17950 75 6c 20 63 61 6c 6c 20 74 6f 20 74 68 69 73 20  ul call to this 
17960 6d 65 74 68 6f 64 2c 20 74 68 65 20 53 51 4c 69  method, the SQLi
17970 74 65 20 63 6f 72 65 20 77 69 6c 6c 0d 0a 20 20  te core will..  
17980 20 20 20 20 20 20 2f 2f 2f 20 6c 61 74 65 72 20        /// later 
17990 69 6e 76 6f 6b 65 20 74 68 65 20 78 43 6c 6f 73  invoke the xClos
179a0 65 20 6d 65 74 68 6f 64 20 74 6f 20 64 65 73 74  e method to dest
179b0 72 6f 79 20 74 68 65 20 61 6c 6c 6f 63 61 74 65  roy the allocate
179c0 64 20 63 75 72 73 6f 72 2e 0d 0a 20 20 20 20 20  d cursor...     
179d0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a     /// </para>..
179e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
179f0 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
17a00 54 68 65 20 78 4f 70 65 6e 20 6d 65 74 68 6f 64  The xOpen method
17a10 20 6e 65 65 64 20 6e 6f 74 20 69 6e 69 74 69 61   need not initia
17a20 6c 69 7a 65 20 74 68 65 20 70 56 74 61 62 20 66  lize the pVtab f
17a30 69 65 6c 64 20 6f 66 20 74 68 65 0d 0a 20 20 20  ield of the..   
17a40 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33       /// sqlite3
17a50 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 73 74 72  _vtab_cursor str
17a60 75 63 74 75 72 65 2e 20 54 68 65 20 53 51 4c 69  ucture. The SQLi
17a70 74 65 20 63 6f 72 65 20 77 69 6c 6c 20 74 61 6b  te core will tak
17a80 65 20 63 61 72 65 20 6f 66 0d 0a 20 20 20 20 20  e care of..     
17a90 20 20 20 2f 2f 2f 20 74 68 61 74 20 63 68 6f 72     /// that chor
17aa0 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e  e automatically.
17ab0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
17ac0 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
17ad0 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20  // <para>..     
17ae0 20 20 20 2f 2f 2f 20 41 20 76 69 72 74 75 61 6c     /// A virtual
17af0 20 74 61 62 6c 65 20 69 6d 70 6c 65 6d 65 6e 74   table implement
17b00 61 74 69 6f 6e 20 6d 75 73 74 20 62 65 20 61 62  ation must be ab
17b10 6c 65 20 74 6f 20 73 75 70 70 6f 72 74 20 61 6e  le to support an
17b20 20 61 72 62 69 74 72 61 72 79 0d 0a 20 20 20 20   arbitrary..    
17b30 20 20 20 20 2f 2f 2f 20 6e 75 6d 62 65 72 20 6f      /// number o
17b40 66 20 73 69 6d 75 6c 74 61 6e 65 6f 75 73 6c 79  f simultaneously
17b50 20 6f 70 65 6e 20 63 75 72 73 6f 72 73 2e 0d 0a   open cursors...
17b60 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
17b70 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
17b80 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
17b90 20 2f 2f 2f 20 57 68 65 6e 20 69 6e 69 74 69 61   /// When initia
17ba0 6c 6c 79 20 6f 70 65 6e 65 64 2c 20 74 68 65 20  lly opened, the 
17bb0 63 75 72 73 6f 72 20 69 73 20 69 6e 20 61 6e 20  cursor is in an 
17bc0 75 6e 64 65 66 69 6e 65 64 20 73 74 61 74 65 2e  undefined state.
17bd0 20 54 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   The..        //
17be0 2f 20 53 51 4c 69 74 65 20 63 6f 72 65 20 77 69  / SQLite core wi
17bf0 6c 6c 20 69 6e 76 6f 6b 65 20 74 68 65 20 78 46  ll invoke the xF
17c00 69 6c 74 65 72 20 6d 65 74 68 6f 64 20 6f 6e 20  ilter method on 
17c10 74 68 65 20 63 75 72 73 6f 72 20 70 72 69 6f 72  the cursor prior
17c20 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   to..        ///
17c30 20 61 6e 79 20 61 74 74 65 6d 70 74 20 74 6f 20   any attempt to 
17c40 70 6f 73 69 74 69 6f 6e 20 6f 72 20 72 65 61 64  position or read
17c50 20 66 72 6f 6d 20 74 68 65 20 63 75 72 73 6f 72   from the cursor
17c60 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
17c70 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
17c80 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
17c90 20 20 20 20 2f 2f 2f 20 54 68 65 20 78 4f 70 65      /// The xOpe
17ca0 6e 20 6d 65 74 68 6f 64 20 69 73 20 72 65 71 75  n method is requ
17cb0 69 72 65 64 20 66 6f 72 20 65 76 65 72 79 20 76  ired for every v
17cc0 69 72 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20  irtual table..  
17cd0 20 20 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d        /// implem
17ce0 65 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  entation...     
17cf0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a     /// </para>..
17d00 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
17d10 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
17d20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
17d30 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20  "pVtab">..      
17d40 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
17d50 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
17d60 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72  sqlite3_vtab der
17d70 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d  ived structure..
17d80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
17d90 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
17da0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
17db0 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20  pCursor">..     
17dc0 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63     /// Upon succ
17dd0 65 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65  ess, this parame
17de0 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69  ter must be modi
17df0 66 69 65 64 20 74 6f 20 70 6f 69 6e 74 20 74 6f  fied to point to
17e00 20 74 68 65 20 6e 65 77 6c 79 0d 0a 20 20 20 20   the newly..    
17e10 20 20 20 20 2f 2f 2f 20 63 72 65 61 74 65 64 20      /// created 
17e20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76  native sqlite3_v
17e30 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69 76  tab_cursor deriv
17e40 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  ed structure... 
17e50 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
17e60 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
17e70 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
17e80 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61      /// A standa
17e90 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e  rd SQLite return
17ea0 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
17eb0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
17ec0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72          SQLiteEr
17ed0 72 6f 72 43 6f 64 65 20 78 4f 70 65 6e 28 0d 0a  rorCode xOpen(..
17ee0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
17ef0 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
17f00 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74         ref IntPt
17f10 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 20  r pCursor..     
17f20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20         );....   
17f30 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
17f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
17f80 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
17f90 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
17fa0 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20  // <para>..     
17fb0 20 20 20 2f 2f 2f 20 54 68 65 20 78 43 6c 6f 73     /// The xClos
17fc0 65 20 6d 65 74 68 6f 64 20 63 6c 6f 73 65 73 20  e method closes 
17fd0 61 20 63 75 72 73 6f 72 20 70 72 65 76 69 6f 75  a cursor previou
17fe0 73 6c 79 20 6f 70 65 6e 65 64 20 62 79 20 78 4f  sly opened by xO
17ff0 70 65 6e 2e 20 54 68 65 0d 0a 20 20 20 20 20 20  pen. The..      
18000 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 63 6f 72    /// SQLite cor
18010 65 20 77 69 6c 6c 20 61 6c 77 61 79 73 20 63 61  e will always ca
18020 6c 6c 20 78 43 6c 6f 73 65 20 6f 6e 63 65 20 66  ll xClose once f
18030 6f 72 20 65 61 63 68 20 63 75 72 73 6f 72 20 6f  or each cursor o
18040 70 65 6e 65 64 0d 0a 20 20 20 20 20 20 20 20 2f  pened..        /
18050 2f 2f 20 75 73 69 6e 67 20 78 4f 70 65 6e 2e 0d  // using xOpen..
18060 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
18070 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
18080 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
18090 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
180a0 64 20 6d 75 73 74 20 72 65 6c 65 61 73 65 20 61  d must release a
180b0 6c 6c 20 72 65 73 6f 75 72 63 65 73 20 61 6c 6c  ll resources all
180c0 6f 63 61 74 65 64 20 62 79 20 74 68 65 0d 0a 20  ocated by the.. 
180d0 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 72 72 65         /// corre
180e0 73 70 6f 6e 64 69 6e 67 20 78 4f 70 65 6e 20 63  sponding xOpen c
180f0 61 6c 6c 2e 20 54 68 65 20 72 6f 75 74 69 6e 65  all. The routine
18100 20 77 69 6c 6c 20 6e 6f 74 20 62 65 20 63 61 6c   will not be cal
18110 6c 65 64 20 61 67 61 69 6e 20 65 76 65 6e 0d 0a  led again even..
18120 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 66 20 69          /// if i
18130 74 20 72 65 74 75 72 6e 73 20 61 6e 20 65 72 72  t returns an err
18140 6f 72 2e 20 54 68 65 20 53 51 4c 69 74 65 20 63  or. The SQLite c
18150 6f 72 65 20 77 69 6c 6c 20 6e 6f 74 20 75 73 65  ore will not use
18160 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
18170 2f 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63  / sqlite3_vtab_c
18180 75 72 73 6f 72 20 61 67 61 69 6e 20 61 66 74 65  ursor again afte
18190 72 20 69 74 20 68 61 73 20 62 65 65 6e 20 63 6c  r it has been cl
181a0 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  osed...        /
181b0 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20  // </para>..    
181c0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a      /// <para>..
181d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
181e0 78 43 6c 6f 73 65 20 6d 65 74 68 6f 64 20 69 73  xClose method is
181f0 20 72 65 71 75 69 72 65 64 20 66 6f 72 20 65 76   required for ev
18200 65 72 79 20 76 69 72 74 75 61 6c 20 74 61 62 6c  ery virtual tabl
18210 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  e..        /// i
18220 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d 0a  mplementation...
18230 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
18240 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
18250 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
18260 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
18270 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d  name="pCursor">.
18280 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
18290 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
182a0 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76  to the sqlite3_v
182b0 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69 76  tab_cursor deriv
182c0 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  ed structure... 
182d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
182e0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
182f0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
18300 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61      /// A standa
18310 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e  rd SQLite return
18320 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
18330 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
18340 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72          SQLiteEr
18350 72 6f 72 43 6f 64 65 20 78 43 6c 6f 73 65 28 0d  rorCode xClose(.
18360 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
18370 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20  Ptr pCursor..   
18380 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20           );.... 
18390 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
183a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
183b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
183c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
183d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
183e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
183f0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
18400 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
18410 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65       /// This me
18420 74 68 6f 64 20 62 65 67 69 6e 73 20 61 20 73 65  thod begins a se
18430 61 72 63 68 20 6f 66 20 61 20 76 69 72 74 75 61  arch of a virtua
18440 6c 20 74 61 62 6c 65 2e 20 54 68 65 20 66 69 72  l table. The fir
18450 73 74 20 61 72 67 75 6d 65 6e 74 0d 0a 20 20 20  st argument..   
18460 20 20 20 20 20 2f 2f 2f 20 69 73 20 61 20 63 75       /// is a cu
18470 72 73 6f 72 20 6f 70 65 6e 65 64 20 62 79 20 78  rsor opened by x
18480 4f 70 65 6e 2e 20 54 68 65 20 6e 65 78 74 20 74  Open. The next t
18490 77 6f 20 61 72 67 75 6d 65 6e 74 20 64 65 66 69  wo argument defi
184a0 6e 65 20 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ne a..        //
184b0 2f 20 70 61 72 74 69 63 75 6c 61 72 20 73 65 61  / particular sea
184c0 72 63 68 20 69 6e 64 65 78 20 70 72 65 76 69 6f  rch index previo
184d0 75 73 6c 79 20 63 68 6f 73 65 6e 20 62 79 20 78  usly chosen by x
184e0 42 65 73 74 49 6e 64 65 78 2e 20 54 68 65 0d 0a  BestIndex. The..
184f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 70 65 63          /// spec
18500 69 66 69 63 20 6d 65 61 6e 69 6e 67 73 20 6f 66  ific meanings of
18510 20 69 64 78 4e 75 6d 20 61 6e 64 20 69 64 78 53   idxNum and idxS
18520 74 72 20 61 72 65 20 75 6e 69 6d 70 6f 72 74 61  tr are unimporta
18530 6e 74 20 61 73 20 6c 6f 6e 67 20 61 73 0d 0a 20  nt as long as.. 
18540 20 20 20 20 20 20 20 2f 2f 2f 20 78 46 69 6c 74         /// xFilt
18550 65 72 20 61 6e 64 20 78 42 65 73 74 49 6e 64 65  er and xBestInde
18560 78 20 61 67 72 65 65 20 6f 6e 20 77 68 61 74 20  x agree on what 
18570 74 68 61 74 20 6d 65 61 6e 69 6e 67 20 69 73 2e  that meaning is.
18580 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
18590 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
185a0 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20  // <para>..     
185b0 20 20 20 2f 2f 2f 20 54 68 65 20 78 42 65 73 74     /// The xBest
185c0 49 6e 64 65 78 20 66 75 6e 63 74 69 6f 6e 20 6d  Index function m
185d0 61 79 20 68 61 76 65 20 72 65 71 75 65 73 74 65  ay have requeste
185e0 64 20 74 68 65 20 76 61 6c 75 65 73 20 6f 66 20  d the values of 
185f0 63 65 72 74 61 69 6e 0d 0a 20 20 20 20 20 20 20  certain..       
18600 20 2f 2f 2f 20 65 78 70 72 65 73 73 69 6f 6e 73   /// expressions
18610 20 75 73 69 6e 67 20 74 68 65 20 61 43 6f 6e 73   using the aCons
18620 74 72 61 69 6e 74 55 73 61 67 65 5b 5d 2e 61 72  traintUsage[].ar
18630 67 76 49 6e 64 65 78 20 76 61 6c 75 65 73 20 6f  gvIndex values o
18640 66 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  f the..        /
18650 2f 2f 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  // sqlite3_index
18660 5f 69 6e 66 6f 20 73 74 72 75 63 74 75 72 65 2e  _info structure.
18670 20 54 68 6f 73 65 20 76 61 6c 75 65 73 20 61 72   Those values ar
18680 65 20 70 61 73 73 65 64 20 74 6f 20 78 46 69 6c  e passed to xFil
18690 74 65 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ter..        ///
186a0 20 75 73 69 6e 67 20 74 68 65 20 61 72 67 63 20   using the argc 
186b0 61 6e 64 20 61 72 67 76 20 70 61 72 61 6d 65 74  and argv paramet
186c0 65 72 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ers...        //
186d0 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20  / </para>..     
186e0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20     /// <para>.. 
186f0 20 20 20 20 20 20 20 2f 2f 2f 20 49 66 20 74 68         /// If th
18700 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  e virtual table 
18710 63 6f 6e 74 61 69 6e 73 20 6f 6e 65 20 6f 72 20  contains one or 
18720 6d 6f 72 65 20 72 6f 77 73 20 74 68 61 74 20 6d  more rows that m
18730 61 74 63 68 20 74 68 65 0d 0a 20 20 20 20 20 20  atch the..      
18740 20 20 2f 2f 2f 20 73 65 61 72 63 68 20 63 72 69    /// search cri
18750 74 65 72 69 61 2c 20 74 68 65 6e 20 74 68 65 20  teria, then the 
18760 63 75 72 73 6f 72 20 6d 75 73 74 20 62 65 20 6c  cursor must be l
18770 65 66 74 20 70 6f 69 6e 74 20 61 74 20 74 68 65  eft point at the
18780 20 66 69 72 73 74 0d 0a 20 20 20 20 20 20 20 20   first..        
18790 2f 2f 2f 20 72 6f 77 2e 20 53 75 62 73 65 71 75  /// row. Subsequ
187a0 65 6e 74 20 63 61 6c 6c 73 20 74 6f 20 78 45 6f  ent calls to xEo
187b0 66 20 6d 75 73 74 20 72 65 74 75 72 6e 20 66 61  f must return fa
187c0 6c 73 65 20 28 7a 65 72 6f 29 2e 20 49 66 20 74  lse (zero). If t
187d0 68 65 72 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  here..        //
187e0 2f 20 61 72 65 20 6e 6f 20 72 6f 77 73 20 6d 61  / are no rows ma
187f0 74 63 68 2c 20 74 68 65 6e 20 74 68 65 20 63 75  tch, then the cu
18800 72 73 6f 72 20 6d 75 73 74 20 62 65 20 6c 65 66  rsor must be lef
18810 74 20 69 6e 20 61 20 73 74 61 74 65 20 74 68 61  t in a state tha
18820 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77  t..        /// w
18830 69 6c 6c 20 63 61 75 73 65 20 74 68 65 20 78 45  ill cause the xE
18840 6f 66 20 74 6f 20 72 65 74 75 72 6e 20 74 72 75  of to return tru
18850 65 20 28 6e 6f 6e 2d 7a 65 72 6f 29 2e 20 54 68  e (non-zero). Th
18860 65 20 53 51 4c 69 74 65 20 65 6e 67 69 6e 65 0d  e SQLite engine.
18870 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 6c  .        /// wil
18880 6c 20 75 73 65 20 74 68 65 20 78 43 6f 6c 75 6d  l use the xColum
18890 6e 20 61 6e 64 20 78 52 6f 77 69 64 20 6d 65 74  n and xRowid met
188a0 68 6f 64 73 20 74 6f 20 61 63 63 65 73 73 20 74  hods to access t
188b0 68 61 74 20 72 6f 77 20 63 6f 6e 74 65 6e 74 2e  hat row content.
188c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
188d0 65 20 78 4e 65 78 74 20 6d 65 74 68 6f 64 20 77  e xNext method w
188e0 69 6c 6c 20 62 65 20 75 73 65 64 20 74 6f 20 61  ill be used to a
188f0 64 76 61 6e 63 65 20 74 6f 20 74 68 65 20 6e 65  dvance to the ne
18900 78 74 20 72 6f 77 2e 0d 0a 20 20 20 20 20 20 20  xt row...       
18910 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
18920 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
18930 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
18940 69 73 20 6d 65 74 68 6f 64 20 6d 75 73 74 20 72  is method must r
18950 65 74 75 72 6e 20 53 51 4c 49 54 45 5f 4f 4b 20  eturn SQLITE_OK 
18960 69 66 20 73 75 63 63 65 73 73 66 75 6c 2c 20 6f  if successful, o
18970 72 20 61 6e 20 73 71 6c 69 74 65 20 65 72 72 6f  r an sqlite erro
18980 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  r..        /// c
18990 6f 64 65 20 69 66 20 61 6e 20 65 72 72 6f 72 20  ode if an error 
189a0 6f 63 63 75 72 73 2e 0d 0a 20 20 20 20 20 20 20  occurs...       
189b0 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
189c0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
189d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
189e0 65 20 78 46 69 6c 74 65 72 20 6d 65 74 68 6f 64  e xFilter method
189f0 20 69 73 20 72 65 71 75 69 72 65 64 20 66 6f 72   is required for
18a00 20 65 76 65 72 79 20 76 69 72 74 75 61 6c 20 74   every virtual t
18a10 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  able..        //
18a20 2f 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  / implementation
18a30 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
18a40 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
18a50 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
18a60 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
18a70 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72  am name="pCursor
18a80 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
18a90 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  The native point
18aa0 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65  er to the sqlite
18ab0 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 64 65  3_vtab_cursor de
18ac0 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2e  rived structure.
18ad0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
18ae0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
18af0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
18b00 22 69 64 78 4e 75 6d 22 3e 0d 0a 20 20 20 20 20  "idxNum">..     
18b10 20 20 20 2f 2f 2f 20 4e 75 6d 62 65 72 20 75 73     /// Number us
18b20 65 64 20 74 6f 20 68 65 6c 70 20 69 64 65 6e 74  ed to help ident
18b30 69 66 79 20 74 68 65 20 73 65 6c 65 63 74 65 64  ify the selected
18b40 20 69 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20 20   index...       
18b50 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
18b60 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
18b70 6d 20 6e 61 6d 65 3d 22 69 64 78 53 74 72 22 3e  m name="idxStr">
18b80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
18b90 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
18ba0 20 74 6f 20 74 68 65 20 55 54 46 2d 38 20 65 6e   to the UTF-8 en
18bb0 63 6f 64 65 64 20 73 74 72 69 6e 67 20 63 6f 6e  coded string con
18bc0 74 61 69 6e 69 6e 67 20 74 68 65 0d 0a 20 20 20  taining the..   
18bd0 20 20 20 20 20 2f 2f 2f 20 73 74 72 69 6e 67 20       /// string 
18be0 75 73 65 64 20 74 6f 20 68 65 6c 70 20 69 64 65  used to help ide
18bf0 6e 74 69 66 79 20 74 68 65 20 73 65 6c 65 63 74  ntify the select
18c00 65 64 20 69 6e 64 65 78 2e 0d 0a 20 20 20 20 20  ed index...     
18c10 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
18c20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
18c30 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 63 22 3e  ram name="argc">
18c40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
18c50 65 20 6e 75 6d 62 65 72 20 6f 66 20 6e 61 74 69  e number of nati
18c60 76 65 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 73  ve pointers to s
18c70 71 6c 69 74 65 33 5f 76 61 6c 75 65 20 73 74 72  qlite3_value str
18c80 75 63 74 75 72 65 73 20 73 70 65 63 69 66 69 65  uctures specifie
18c90 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  d..        /// i
18ca0 6e 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65  n <paramref name
18cb0 3d 22 61 72 67 76 22 20 2f 3e 2e 0d 0a 20 20 20  ="argv" />...   
18cc0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
18cd0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
18ce0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 76  param name="argv
18cf0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
18d00 41 6e 20 61 72 72 61 79 20 6f 66 20 6e 61 74 69  An array of nati
18d10 76 65 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 73  ve pointers to s
18d20 71 6c 69 74 65 33 5f 76 61 6c 75 65 20 73 74 72  qlite3_value str
18d30 75 63 74 75 72 65 73 20 63 6f 6e 74 61 69 6e 69  uctures containi
18d40 6e 67 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ng..        /// 
18d50 66 69 6c 74 65 72 69 6e 67 20 63 72 69 74 65 72  filtering criter
18d60 69 61 20 66 6f 72 20 74 68 65 20 73 65 6c 65 63  ia for the selec
18d70 74 65 64 20 69 6e 64 65 78 2e 0d 0a 20 20 20 20  ted index...    
18d80 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
18d90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
18da0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
18db0 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20   /// A standard 
18dc0 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f  SQLite return co
18dd0 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de...        ///
18de0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
18df0 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72       SQLiteError
18e00 43 6f 64 65 20 78 46 69 6c 74 65 72 28 0d 0a 20  Code xFilter(.. 
18e10 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
18e20 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20  r pCursor,..    
18e30 20 20 20 20 20 20 20 20 69 6e 74 20 69 64 78 4e          int idxN
18e40 75 6d 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  um,..           
18e50 20 49 6e 74 50 74 72 20 69 64 78 53 74 72 2c 0d   IntPtr idxStr,.
18e60 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
18e70 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20   argc,..        
18e80 20 20 20 20 49 6e 74 50 74 72 20 61 72 67 76 0d      IntPtr argv.
18e90 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d  .            );.
18ea0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
18eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18ef0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
18f00 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
18f10 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
18f20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
18f30 20 78 4e 65 78 74 20 6d 65 74 68 6f 64 20 61 64   xNext method ad
18f40 76 61 6e 63 65 73 20 61 20 76 69 72 74 75 61 6c  vances a virtual
18f50 20 74 61 62 6c 65 20 63 75 72 73 6f 72 20 74 6f   table cursor to
18f60 20 74 68 65 20 6e 65 78 74 20 72 6f 77 20 6f 66   the next row of
18f70 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 20  ..        /// a 
18f80 72 65 73 75 6c 74 20 73 65 74 20 69 6e 69 74 69  result set initi
18f90 61 74 65 64 20 62 79 20 78 46 69 6c 74 65 72 2e  ated by xFilter.
18fa0 20 49 66 20 74 68 65 20 63 75 72 73 6f 72 20 69   If the cursor i
18fb0 73 20 61 6c 72 65 61 64 79 0d 0a 20 20 20 20 20  s already..     
18fc0 20 20 20 2f 2f 2f 20 70 6f 69 6e 74 69 6e 67 20     /// pointing 
18fd0 61 74 20 74 68 65 20 6c 61 73 74 20 72 6f 77 20  at the last row 
18fe0 77 68 65 6e 20 74 68 69 73 20 72 6f 75 74 69 6e  when this routin
18ff0 65 20 69 73 20 63 61 6c 6c 65 64 2c 20 74 68 65  e is called, the
19000 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  n the..        /
19010 2f 2f 20 63 75 72 73 6f 72 20 6e 6f 20 6c 6f 6e  // cursor no lon
19020 67 65 72 20 70 6f 69 6e 74 73 20 74 6f 20 76 61  ger points to va
19030 6c 69 64 20 64 61 74 61 20 61 6e 64 20 61 20 73  lid data and a s
19040 75 62 73 65 71 75 65 6e 74 20 63 61 6c 6c 20 74  ubsequent call t
19050 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  o the..        /
19060 2f 2f 20 78 45 6f 66 20 6d 65 74 68 6f 64 20 6d  // xEof method m
19070 75 73 74 20 72 65 74 75 72 6e 20 74 72 75 65 20  ust return true 
19080 28 6e 6f 6e 2d 7a 65 72 6f 29 2e 20 49 66 20 74  (non-zero). If t
19090 68 65 20 63 75 72 73 6f 72 20 69 73 0d 0a 20 20  he cursor is..  
190a0 20 20 20 20 20 20 2f 2f 2f 20 73 75 63 63 65 73        /// succes
190b0 73 66 75 6c 6c 79 20 61 64 76 61 6e 63 65 64 20  sfully advanced 
190c0 74 6f 20 61 6e 6f 74 68 65 72 20 72 6f 77 20 6f  to another row o
190d0 66 20 63 6f 6e 74 65 6e 74 2c 20 74 68 65 6e 20  f content, then 
190e0 73 75 62 73 65 71 75 65 6e 74 0d 0a 20 20 20 20  subsequent..    
190f0 20 20 20 20 2f 2f 2f 20 63 61 6c 6c 73 20 74 6f      /// calls to
19100 20 78 45 6f 66 20 6d 75 73 74 20 72 65 74 75 72   xEof must retur
19110 6e 20 66 61 6c 73 65 20 28 7a 65 72 6f 29 2e 0d  n false (zero)..
19120 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
19130 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
19140 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
19150 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
19160 64 20 6d 75 73 74 20 72 65 74 75 72 6e 20 53 51  d must return SQ
19170 4c 49 54 45 5f 4f 4b 20 69 66 20 73 75 63 63 65  LITE_OK if succe
19180 73 73 66 75 6c 2c 20 6f 72 20 61 6e 20 73 71 6c  ssful, or an sql
19190 69 74 65 20 65 72 72 6f 72 0d 0a 20 20 20 20 20  ite error..     
191a0 20 20 20 2f 2f 2f 20 63 6f 64 65 20 69 66 20 61     /// code if a
191b0 6e 20 65 72 72 6f 72 20 6f 63 63 75 72 73 2e 0d  n error occurs..
191c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
191d0 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
191e0 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
191f0 20 20 2f 2f 2f 20 54 68 65 20 78 4e 65 78 74 20    /// The xNext 
19200 6d 65 74 68 6f 64 20 69 73 20 72 65 71 75 69 72  method is requir
19210 65 64 20 66 6f 72 20 65 76 65 72 79 20 76 69 72  ed for every vir
19220 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20  tual table..    
19230 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e      /// implemen
19240 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  tation...       
19250 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
19260 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
19270 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
19280 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
19290 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20  Cursor">..      
192a0 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
192b0 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
192c0 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72  sqlite3_vtab_cur
192d0 73 6f 72 20 64 65 72 69 76 65 64 20 73 74 72 75  sor derived stru
192e0 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  cture...        
192f0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
19300 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
19310 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
19320 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69   A standard SQLi
19330 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d  te return code..
19340 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
19350 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
19360 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
19370 20 78 4e 65 78 74 28 0d 0a 20 20 20 20 20 20 20   xNext(..       
19380 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72       IntPtr pCur
19390 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20  sor..           
193a0 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   );....        /
193b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
193c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
193d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
193e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
193f0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
19400 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
19410 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
19420 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
19430 20 54 68 65 20 78 45 6f 66 20 6d 65 74 68 6f 64   The xEof method
19440 20 6d 75 73 74 20 72 65 74 75 72 6e 20 66 61 6c   must return fal
19450 73 65 20 28 7a 65 72 6f 29 20 69 66 20 74 68 65  se (zero) if the
19460 20 73 70 65 63 69 66 69 65 64 20 63 75 72 73 6f   specified curso
19470 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  r..        /// c
19480 75 72 72 65 6e 74 6c 79 20 70 6f 69 6e 74 73 20  urrently points 
19490 74 6f 20 61 20 76 61 6c 69 64 20 72 6f 77 20 6f  to a valid row o
194a0 66 20 64 61 74 61 2c 20 6f 72 20 74 72 75 65 20  f data, or true 
194b0 28 6e 6f 6e 2d 7a 65 72 6f 29 0d 0a 20 20 20 20  (non-zero)..    
194c0 20 20 20 20 2f 2f 2f 20 6f 74 68 65 72 77 69 73      /// otherwis
194d0 65 2e 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69  e. This method i
194e0 73 20 63 61 6c 6c 65 64 20 62 79 20 74 68 65 20  s called by the 
194f0 53 51 4c 20 65 6e 67 69 6e 65 20 69 6d 6d 65 64  SQL engine immed
19500 69 61 74 65 6c 79 0d 0a 20 20 20 20 20 20 20 20  iately..        
19510 2f 2f 2f 20 61 66 74 65 72 20 65 61 63 68 20 78  /// after each x
19520 46 69 6c 74 65 72 20 61 6e 64 20 78 4e 65 78 74  Filter and xNext
19530 20 69 6e 76 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20   invocation...  
19540 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
19550 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
19560 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
19570 2f 2f 20 54 68 65 20 78 45 6f 66 20 6d 65 74 68  // The xEof meth
19580 6f 64 20 69 73 20 72 65 71 75 69 72 65 64 20 66  od is required f
19590 6f 72 20 65 76 65 72 79 20 76 69 72 74 75 61 6c  or every virtual
195a0 20 74 61 62 6c 65 20 69 6d 70 6c 65 6d 65 6e 74   table implement
195b0 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ation...        
195c0 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20  /// </para>..   
195d0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
195e0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
195f0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43   <param name="pC
19600 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20  ursor">..       
19610 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
19620 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73  pointer to the s
19630 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73  qlite3_vtab_curs
19640 6f 72 20 64 65 72 69 76 65 64 20 73 74 72 75 63  or derived struc
19650 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ture...        /
19660 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
19670 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
19680 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
19690 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 6e 6f 20 6d  Non-zero if no m
196a0 6f 72 65 20 72 6f 77 73 20 61 72 65 20 61 76 61  ore rows are ava
196b0 69 6c 61 62 6c 65 3b 20 7a 65 72 6f 20 6f 74 68  ilable; zero oth
196c0 65 72 77 69 73 65 2e 0d 0a 20 20 20 20 20 20 20  erwise...       
196d0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
196e0 0a 20 20 20 20 20 20 20 20 69 6e 74 20 78 45 6f  .        int xEo
196f0 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f(..            
19700 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a  IntPtr pCursor..
19710 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a              );..
19720 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
19730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19770 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
19780 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
19790 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a      /// <para>..
197a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
197b0 53 51 4c 69 74 65 20 63 6f 72 65 20 69 6e 76 6f  SQLite core invo
197c0 6b 65 73 20 74 68 69 73 20 6d 65 74 68 6f 64 20  kes this method 
197d0 69 6e 20 6f 72 64 65 72 20 74 6f 20 66 69 6e 64  in order to find
197e0 20 74 68 65 20 76 61 6c 75 65 20 66 6f 72 0d 0a   the value for..
197f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20          /// the 
19800 4e 2d 74 68 20 63 6f 6c 75 6d 6e 20 6f 66 20 74  N-th column of t
19810 68 65 20 63 75 72 72 65 6e 74 20 72 6f 77 2e 20  he current row. 
19820 4e 20 69 73 20 7a 65 72 6f 2d 62 61 73 65 64 20  N is zero-based 
19830 73 6f 20 74 68 65 20 66 69 72 73 74 0d 0a 20 20  so the first..  
19840 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6c 75 6d 6e        /// column
19850 20 69 73 20 6e 75 6d 62 65 72 65 64 20 30 2e 20   is numbered 0. 
19860 54 68 65 20 78 43 6f 6c 75 6d 6e 20 6d 65 74 68  The xColumn meth
19870 6f 64 20 6d 61 79 20 72 65 74 75 72 6e 20 69 74  od may return it
19880 73 20 72 65 73 75 6c 74 20 62 61 63 6b 0d 0a 20  s result back.. 
19890 20 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20 53 51         /// to SQ
198a0 4c 69 74 65 20 75 73 69 6e 67 20 6f 6e 65 20 6f  Lite using one o
198b0 66 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20  f the following 
198c0 69 6e 74 65 72 66 61 63 65 3a 0d 0a 20 20 20 20  interface:..    
198d0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d      /// </para>.
198e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 63 6f  .        /// <co
198f0 64 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de>..        ///
19900 20 20 20 20 20 73 71 6c 69 74 65 33 5f 72 65 73       sqlite3_res
19910 75 6c 74 5f 62 6c 6f 62 28 29 0d 0a 20 20 20 20  ult_blob()..    
19920 20 20 20 20 2f 2f 2f 20 20 20 20 20 73 71 6c 69      ///     sqli
19930 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62 6c  te3_result_doubl
19940 65 28 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e()..        ///
19950 20 20 20 20 20 73 71 6c 69 74 65 33 5f 72 65 73       sqlite3_res
19960 75 6c 74 5f 69 6e 74 28 29 0d 0a 20 20 20 20 20  ult_int()..     
19970 20 20 20 2f 2f 2f 20 20 20 20 20 73 71 6c 69 74     ///     sqlit
19980 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36 34 28  e3_result_int64(
19990 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20  )..        ///  
199a0 20 20 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c     sqlite3_resul
199b0 74 5f 6e 75 6c 6c 28 29 0d 0a 20 20 20 20 20 20  t_null()..      
199c0 20 20 2f 2f 2f 20 20 20 20 20 73 71 6c 69 74 65    ///     sqlite
199d0 33 5f 72 65 73 75 6c 74 5f 74 65 78 74 28 29 0d  3_result_text().
199e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20  .        ///    
199f0 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
19a00 74 65 78 74 31 36 28 29 0d 0a 20 20 20 20 20 20  text16()..      
19a10 20 20 2f 2f 2f 20 20 20 20 20 73 71 6c 69 74 65    ///     sqlite
19a20 33 5f 72 65 73 75 6c 74 5f 74 65 78 74 31 36 6c  3_result_text16l
19a30 65 28 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e()..        ///
19a40 20 20 20 20 20 73 71 6c 69 74 65 33 5f 72 65 73       sqlite3_res
19a50 75 6c 74 5f 74 65 78 74 31 36 62 65 28 29 0d 0a  ult_text16be()..
19a60 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20          ///     
19a70 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 7a  sqlite3_result_z
19a80 65 72 6f 62 6c 6f 62 28 29 0d 0a 20 20 20 20 20  eroblob()..     
19a90 20 20 20 2f 2f 2f 20 3c 2f 63 6f 64 65 3e 0d 0a     /// </code>..
19aa0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
19ab0 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
19ac0 49 66 20 74 68 65 20 78 43 6f 6c 75 6d 6e 20 6d  If the xColumn m
19ad0 65 74 68 6f 64 20 69 6d 70 6c 65 6d 65 6e 74 61  ethod implementa
19ae0 74 69 6f 6e 20 63 61 6c 6c 73 20 6e 6f 6e 65 20  tion calls none 
19af0 6f 66 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 73  of the functions
19b00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 62  ..        /// ab
19b10 6f 76 65 2c 20 74 68 65 6e 20 74 68 65 20 76 61  ove, then the va
19b20 6c 75 65 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d  lue of the colum
19b30 6e 20 64 65 66 61 75 6c 74 73 20 74 6f 20 61 6e  n defaults to an
19b40 20 53 51 4c 20 4e 55 4c 4c 2e 0d 0a 20 20 20 20   SQL NULL...    
19b50 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d      /// </para>.
19b60 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
19b70 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
19b80 20 54 6f 20 72 61 69 73 65 20 61 6e 20 65 72 72   To raise an err
19b90 6f 72 2c 20 74 68 65 20 78 43 6f 6c 75 6d 6e 20  or, the xColumn 
19ba0 6d 65 74 68 6f 64 20 73 68 6f 75 6c 64 20 75 73  method should us
19bb0 65 20 6f 6e 65 20 6f 66 20 74 68 65 0d 0a 20 20  e one of the..  
19bc0 20 20 20 20 20 20 2f 2f 2f 20 72 65 73 75 6c 74        /// result
19bd0 5f 74 65 78 74 28 29 20 6d 65 74 68 6f 64 73 20  _text() methods 
19be0 74 6f 20 73 65 74 20 74 68 65 20 65 72 72 6f 72  to set the error
19bf0 20 6d 65 73 73 61 67 65 20 74 65 78 74 2c 20 74   message text, t
19c00 68 65 6e 20 72 65 74 75 72 6e 20 61 6e 0d 0a 20  hen return an.. 
19c10 20 20 20 20 20 20 20 2f 2f 2f 20 61 70 70 72 6f         /// appro
19c20 70 72 69 61 74 65 20 65 72 72 6f 72 20 63 6f 64  priate error cod
19c30 65 2e 20 54 68 65 20 78 43 6f 6c 75 6d 6e 20 6d  e. The xColumn m
19c40 65 74 68 6f 64 20 6d 75 73 74 20 72 65 74 75 72  ethod must retur
19c50 6e 20 53 51 4c 49 54 45 5f 4f 4b 20 6f 6e 0d 0a  n SQLITE_OK on..
19c60 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 75 63 63          /// succ
19c70 65 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ess...        //
19c80 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20  / </para>..     
19c90 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20     /// <para>.. 
19ca0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 78         /// The x
19cb0 43 6f 6c 75 6d 6e 20 6d 65 74 68 6f 64 20 69 73  Column method is
19cc0 20 72 65 71 75 69 72 65 64 20 66 6f 72 20 65 76   required for ev
19cd0 65 72 79 20 76 69 72 74 75 61 6c 20 74 61 62 6c  ery virtual tabl
19ce0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  e..        /// i
19cf0 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d 0a  mplementation...
19d00 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
19d10 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
19d20 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
19d30 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
19d40 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d  name="pCursor">.
19d50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
19d60 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
19d70 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76  to the sqlite3_v
19d80 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69 76  tab_cursor deriv
19d90 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  ed structure... 
19da0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
19db0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
19dc0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43   <param name="pC
19dd0 6f 6e 74 65 78 74 22 3e 0d 0a 20 20 20 20 20 20  ontext">..      
19de0 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
19df0 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
19e00 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 20  sqlite3_context 
19e10 73 74 72 75 63 74 75 72 65 20 74 6f 20 62 65 20  structure to be 
19e20 75 73 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  used..        //
19e30 2f 20 66 6f 72 20 72 65 74 75 72 6e 69 6e 67 20  / for returning 
19e40 74 68 65 20 73 70 65 63 69 66 69 65 64 20 63 6f  the specified co
19e50 6c 75 6d 6e 20 76 61 6c 75 65 20 74 6f 20 74 68  lumn value to th
19e60 65 20 53 51 4c 69 74 65 20 63 6f 72 65 0d 0a 20  e SQLite core.. 
19e70 20 20 20 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61         /// libra
19e80 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry...        ///
19e90 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
19ea0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
19eb0 6d 65 3d 22 69 6e 64 65 78 22 3e 0d 0a 20 20 20  me="index">..   
19ec0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 7a 65 72       /// The zer
19ed0 6f 2d 62 61 73 65 64 20 69 6e 64 65 78 20 63 6f  o-based index co
19ee0 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 74  rresponding to t
19ef0 68 65 20 63 6f 6c 75 6d 6e 20 63 6f 6e 74 61 69  he column contai
19f00 6e 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20  ning the..      
19f10 20 20 2f 2f 2f 20 76 61 6c 75 65 20 74 6f 20 62    /// value to b
19f20 65 20 72 65 74 75 72 6e 65 64 2e 0d 0a 20 20 20  e returned...   
19f30 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
19f40 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
19f50 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
19f60 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64    /// A standard
19f70 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63   SQLite return c
19f80 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode...        //
19f90 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
19fa0 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f        SQLiteErro
19fb0 72 43 6f 64 65 20 78 43 6f 6c 75 6d 6e 28 0d 0a  rCode xColumn(..
19fc0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
19fd0 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20  tr pCursor,..   
19fe0 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
19ff0 70 43 6f 6e 74 65 78 74 2c 0d 0a 20 20 20 20 20  pContext,..     
1a000 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65 78         int index
1a010 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b  ..            );
1a020 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1a030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a070 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
1a080 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
1a090 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
1a0a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20  ..        /// A 
1a0b0 73 75 63 63 65 73 73 66 75 6c 20 69 6e 76 6f 63  successful invoc
1a0c0 61 74 69 6f 6e 20 6f 66 20 74 68 69 73 20 6d 65  ation of this me
1a0d0 74 68 6f 64 20 77 69 6c 6c 20 63 61 75 73 65 20  thod will cause 
1a0e0 2a 70 52 6f 77 69 64 20 74 6f 20 62 65 0d 0a 20  *pRowid to be.. 
1a0f0 20 20 20 20 20 20 20 2f 2f 2f 20 66 69 6c 6c 65         /// fille
1a100 64 20 77 69 74 68 20 74 68 65 20 72 6f 77 69 64  d with the rowid
1a110 20 6f 66 20 72 6f 77 20 74 68 61 74 20 74 68 65   of row that the
1a120 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 63   virtual table c
1a130 75 72 73 6f 72 20 70 43 75 72 20 69 73 0d 0a 20  ursor pCur is.. 
1a140 20 20 20 20 20 20 20 2f 2f 2f 20 63 75 72 72 65         /// curre
1a150 6e 74 6c 79 20 70 6f 69 6e 74 69 6e 67 20 61 74  ntly pointing at
1a160 2e 20 54 68 69 73 20 6d 65 74 68 6f 64 20 72 65  . This method re
1a170 74 75 72 6e 73 20 53 51 4c 49 54 45 5f 4f 4b 20  turns SQLITE_OK 
1a180 6f 6e 20 73 75 63 63 65 73 73 2e 20 49 74 0d 0a  on success. It..
1a190 20 20 20 20 20 20 20 20 2f 2f 2f 20 72 65 74 75          /// retu
1a1a0 72 6e 73 20 61 6e 20 61 70 70 72 6f 70 72 69 61  rns an appropria
1a1b0 74 65 20 65 72 72 6f 72 20 63 6f 64 65 20 6f 6e  te error code on
1a1c0 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20   failure...     
1a1d0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a     /// </para>..
1a1e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1a1f0 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
1a200 54 68 65 20 78 52 6f 77 69 64 20 6d 65 74 68 6f  The xRowid metho
1a210 64 20 69 73 20 72 65 71 75 69 72 65 64 20 66 6f  d is required fo
1a220 72 20 65 76 65 72 79 20 76 69 72 74 75 61 6c 20  r every virtual 
1a230 74 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f  table..        /
1a240 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  // implementatio
1a250 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  n...        /// 
1a260 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
1a270 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1a280 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1a290 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f  ram name="pCurso
1a2a0 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  r">..        ///
1a2b0 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e   The native poin
1a2c0 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74  ter to the sqlit
1a2d0 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 64  e3_vtab_cursor d
1a2e0 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65  erived structure
1a2f0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1a300 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1a310 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1a320 3d 22 72 6f 77 49 64 22 3e 0d 0a 20 20 20 20 20  ="rowId">..     
1a330 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63     /// Upon succ
1a340 65 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65  ess, this parame
1a350 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69  ter must be modi
1a360 66 69 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20  fied to contain 
1a370 74 68 65 20 75 6e 69 71 75 65 0d 0a 20 20 20 20  the unique..    
1a380 20 20 20 20 2f 2f 2f 20 69 6e 74 65 67 65 72 20      /// integer 
1a390 72 6f 77 20 69 64 65 6e 74 69 66 69 65 72 20 66  row identifier f
1a3a0 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 72  or the current r
1a3b0 6f 77 20 66 6f 72 20 74 68 65 20 73 70 65 63 69  ow for the speci
1a3c0 66 69 65 64 20 63 75 72 73 6f 72 2e 0d 0a 20 20  fied cursor...  
1a3d0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1a3e0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
1a3f0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
1a400 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72     /// A standar
1a410 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20  d SQLite return 
1a420 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  code...        /
1a430 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
1a440 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72         SQLiteErr
1a450 6f 72 43 6f 64 65 20 78 52 6f 77 49 64 28 0d 0a  orCode xRowId(..
1a460 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
1a470 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20  tr pCursor,..   
1a480 20 20 20 20 20 20 20 20 20 72 65 66 20 6c 6f 6e           ref lon
1a490 67 20 72 6f 77 49 64 0d 0a 20 20 20 20 20 20 20  g rowId..       
1a4a0 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20       );....     
1a4b0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1a4c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a4d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a4e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a4f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1a500 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
1a510 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1a520 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
1a530 20 2f 2f 2f 20 41 6c 6c 20 63 68 61 6e 67 65 73   /// All changes
1a540 20 74 6f 20 61 20 76 69 72 74 75 61 6c 20 74 61   to a virtual ta
1a550 62 6c 65 20 61 72 65 20 6d 61 64 65 20 75 73 69  ble are made usi
1a560 6e 67 20 74 68 65 20 78 55 70 64 61 74 65 20 6d  ng the xUpdate m
1a570 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
1a580 2f 2f 2f 20 54 68 69 73 20 6f 6e 65 20 6d 65 74  /// This one met
1a590 68 6f 64 20 63 61 6e 20 62 65 20 75 73 65 64 20  hod can be used 
1a5a0 74 6f 20 69 6e 73 65 72 74 2c 20 64 65 6c 65 74  to insert, delet
1a5b0 65 2c 20 6f 72 20 75 70 64 61 74 65 2e 0d 0a 20  e, or update... 
1a5c0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1a5d0 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
1a5e0 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
1a5f0 2f 2f 2f 20 54 68 65 20 61 72 67 63 20 70 61 72  /// The argc par
1a600 61 6d 65 74 65 72 20 73 70 65 63 69 66 69 65 73  ameter specifies
1a610 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 65   the number of e
1a620 6e 74 72 69 65 73 20 69 6e 20 74 68 65 20 61 72  ntries in the ar
1a630 67 76 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  gv..        /// 
1a640 61 72 72 61 79 2e 20 54 68 65 20 76 61 6c 75 65  array. The value
1a650 20 6f 66 20 61 72 67 63 20 77 69 6c 6c 20 62 65   of argc will be
1a660 20 31 20 66 6f 72 20 61 20 70 75 72 65 20 64 65   1 for a pure de
1a670 6c 65 74 65 20 6f 70 65 72 61 74 69 6f 6e 20 6f  lete operation o
1a680 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  r..        /// N
1a690 2b 32 20 66 6f 72 20 61 6e 20 69 6e 73 65 72 74  +2 for an insert
1a6a0 20 6f 72 20 72 65 70 6c 61 63 65 20 6f 72 20 75   or replace or u
1a6b0 70 64 61 74 65 20 77 68 65 72 65 20 4e 20 69 73  pdate where N is
1a6c0 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 0d 0a   the number of..
1a6d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6c 75          /// colu
1a6e0 6d 6e 73 20 69 6e 20 74 68 65 20 74 61 62 6c 65  mns in the table
1a6f0 2e 20 49 6e 20 74 68 65 20 70 72 65 76 69 6f 75  . In the previou
1a700 73 20 73 65 6e 74 65 6e 63 65 2c 20 4e 20 69 6e  s sentence, N in
1a710 63 6c 75 64 65 73 20 61 6e 79 0d 0a 20 20 20 20  cludes any..    
1a720 20 20 20 20 2f 2f 2f 20 68 69 64 64 65 6e 20 63      /// hidden c
1a730 6f 6c 75 6d 6e 73 2e 0d 0a 20 20 20 20 20 20 20  olumns...       
1a740 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
1a750 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
1a760 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 45 76  ..        /// Ev
1a770 65 72 79 20 61 72 67 76 20 65 6e 74 72 79 20 77  ery argv entry w
1a780 69 6c 6c 20 68 61 76 65 20 61 20 6e 6f 6e 2d 4e  ill have a non-N
1a790 55 4c 4c 20 76 61 6c 75 65 20 69 6e 20 43 20 62  ULL value in C b
1a7a0 75 74 20 6d 61 79 20 63 6f 6e 74 61 69 6e 0d 0a  ut may contain..
1a7b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20          /// the 
1a7c0 53 51 4c 20 76 61 6c 75 65 20 4e 55 4c 4c 2e 20  SQL value NULL. 
1a7d0 49 6e 20 6f 74 68 65 72 20 77 6f 72 64 73 2c 20  In other words, 
1a7e0 69 74 20 69 73 20 61 6c 77 61 79 73 20 74 72 75  it is always tru
1a7f0 65 20 74 68 61 74 0d 0a 20 20 20 20 20 20 20 20  e that..        
1a800 2f 2f 2f 20 61 72 67 76 5b 69 5d 21 3d 30 20 66  /// argv[i]!=0 f
1a810 6f 72 20 69 20 62 65 74 77 65 65 6e 20 30 20 61  or i between 0 a
1a820 6e 64 20 61 72 67 63 2d 31 2e 20 48 6f 77 65 76  nd argc-1. Howev
1a830 65 72 2c 20 69 74 20 6d 69 67 68 74 20 62 65 20  er, it might be 
1a840 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
1a850 20 63 61 73 65 20 74 68 61 74 20 73 71 6c 69 74   case that sqlit
1a860 65 33 5f 76 61 6c 75 65 5f 74 79 70 65 28 61 72  e3_value_type(ar
1a870 67 76 5b 69 5d 29 3d 3d 53 51 4c 49 54 45 5f 4e  gv[i])==SQLITE_N
1a880 55 4c 4c 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ULL...        //
1a890 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20  / </para>..     
1a8a0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20     /// <para>.. 
1a8b0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61         /// The a
1a8c0 72 67 76 5b 30 5d 20 70 61 72 61 6d 65 74 65 72  rgv[0] parameter
1a8d0 20 69 73 20 74 68 65 20 72 6f 77 69 64 20 6f 66   is the rowid of
1a8e0 20 61 20 72 6f 77 20 69 6e 20 74 68 65 20 76 69   a row in the vi
1a8f0 72 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20  rtual table..   
1a900 20 20 20 20 20 2f 2f 2f 20 74 6f 20 62 65 20 64       /// to be d
1a910 65 6c 65 74 65 64 2e 20 49 66 20 61 72 67 76 5b  eleted. If argv[
1a920 30 5d 20 69 73 20 61 6e 20 53 51 4c 20 4e 55 4c  0] is an SQL NUL
1a930 4c 2c 20 74 68 65 6e 20 6e 6f 20 64 65 6c 65 74  L, then no delet
1a940 69 6f 6e 20 6f 63 63 75 72 73 2e 0d 0a 20 20 20  ion occurs...   
1a950 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
1a960 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1a970 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
1a980 2f 20 54 68 65 20 61 72 67 76 5b 31 5d 20 70 61  / The argv[1] pa
1a990 72 61 6d 65 74 65 72 20 69 73 20 74 68 65 20 72  rameter is the r
1a9a0 6f 77 69 64 20 6f 66 20 61 20 6e 65 77 20 72 6f  owid of a new ro
1a9b0 77 20 74 6f 20 62 65 20 69 6e 73 65 72 74 65 64  w to be inserted
1a9c0 20 69 6e 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f   into..        /
1a9d0 2f 2f 20 74 68 65 20 76 69 72 74 75 61 6c 20 74  // the virtual t
1a9e0 61 62 6c 65 2e 20 49 66 20 61 72 67 76 5b 31 5d  able. If argv[1]
1a9f0 20 69 73 20 61 6e 20 53 51 4c 20 4e 55 4c 4c 2c   is an SQL NULL,
1aa00 20 74 68 65 6e 20 74 68 65 0d 0a 20 20 20 20 20   then the..     
1aa10 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74     /// implement
1aa20 61 74 69 6f 6e 20 6d 75 73 74 20 63 68 6f 6f 73  ation must choos
1aa30 65 20 61 20 72 6f 77 69 64 20 66 6f 72 20 74 68  e a rowid for th
1aa40 65 20 6e 65 77 6c 79 20 69 6e 73 65 72 74 65 64  e newly inserted
1aa50 20 72 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 2f   row...        /
1aa60 2f 2f 20 53 75 62 73 65 71 75 65 6e 74 20 61 72  // Subsequent ar
1aa70 67 76 5b 5d 20 65 6e 74 72 69 65 73 20 63 6f 6e  gv[] entries con
1aa80 74 61 69 6e 20 76 61 6c 75 65 73 20 6f 66 20 74  tain values of t
1aa90 68 65 20 63 6f 6c 75 6d 6e 73 20 6f 66 20 74 68  he columns of th
1aaa0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76  e..        /// v
1aab0 69 72 74 75 61 6c 20 74 61 62 6c 65 2c 20 69 6e  irtual table, in
1aac0 20 74 68 65 20 6f 72 64 65 72 20 74 68 61 74 20   the order that 
1aad0 74 68 65 20 63 6f 6c 75 6d 6e 73 20 77 65 72 65  the columns were
1aae0 20 64 65 63 6c 61 72 65 64 2e 20 54 68 65 0d 0a   declared. The..
1aaf0 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 75 6d 62          /// numb
1ab00 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 77 69  er of columns wi
1ab10 6c 6c 20 6d 61 74 63 68 20 74 68 65 20 74 61 62  ll match the tab
1ab20 6c 65 20 64 65 63 6c 61 72 61 74 69 6f 6e 20 74  le declaration t
1ab30 68 61 74 20 74 68 65 0d 0a 20 20 20 20 20 20 20  hat the..       
1ab40 20 2f 2f 2f 20 78 43 6f 6e 6e 65 63 74 20 6f 72   /// xConnect or
1ab50 20 78 43 72 65 61 74 65 20 6d 65 74 68 6f 64 20   xCreate method 
1ab60 6d 61 64 65 20 75 73 69 6e 67 20 74 68 65 20 73  made using the s
1ab70 71 6c 69 74 65 33 5f 64 65 63 6c 61 72 65 5f 76  qlite3_declare_v
1ab80 74 61 62 28 29 0d 0a 20 20 20 20 20 20 20 20 2f  tab()..        /
1ab90 2f 2f 20 63 61 6c 6c 2e 20 41 6c 6c 20 68 69 64  // call. All hid
1aba0 64 65 6e 20 63 6f 6c 75 6d 6e 73 20 61 72 65 20  den columns are 
1abb0 69 6e 63 6c 75 64 65 64 2e 0d 0a 20 20 20 20 20  included...     
1abc0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a     /// </para>..
1abd0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1abe0 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
1abf0 57 68 65 6e 20 64 6f 69 6e 67 20 61 6e 20 69 6e  When doing an in
1ac00 73 65 72 74 20 77 69 74 68 6f 75 74 20 61 20 72  sert without a r
1ac10 6f 77 69 64 20 28 61 72 67 63 3e 31 2c 20 61 72  owid (argc>1, ar
1ac20 67 76 5b 31 5d 20 69 73 20 61 6e 20 53 51 4c 0d  gv[1] is an SQL.
1ac30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 55 4c  .        /// NUL
1ac40 4c 29 2c 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e  L), the implemen
1ac50 74 61 74 69 6f 6e 20 6d 75 73 74 20 73 65 74 20  tation must set 
1ac60 2a 70 52 6f 77 69 64 20 74 6f 20 74 68 65 20 72  *pRowid to the r
1ac70 6f 77 69 64 20 6f 66 20 74 68 65 0d 0a 20 20 20  owid of the..   
1ac80 20 20 20 20 20 2f 2f 2f 20 6e 65 77 6c 79 20 69       /// newly i
1ac90 6e 73 65 72 74 65 64 20 72 6f 77 3b 20 74 68 69  nserted row; thi
1aca0 73 20 77 69 6c 6c 20 62 65 63 6f 6d 65 20 74 68  s will become th
1acb0 65 20 76 61 6c 75 65 20 72 65 74 75 72 6e 65 64  e value returned
1acc0 20 62 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20   by the..       
1acd0 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 6c 61 73   /// sqlite3_las
1ace0 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28 29  t_insert_rowid()
1acf0 20 66 75 6e 63 74 69 6f 6e 2e 20 53 65 74 74 69   function. Setti
1ad00 6e 67 20 74 68 69 73 20 76 61 6c 75 65 20 69 6e  ng this value in
1ad10 20 61 6c 6c 20 74 68 65 0d 0a 20 20 20 20 20 20   all the..      
1ad20 20 20 2f 2f 2f 20 6f 74 68 65 72 20 63 61 73 65    /// other case
1ad30 73 20 69 73 20 61 20 68 61 72 6d 6c 65 73 73 20  s is a harmless 
1ad40 6e 6f 2d 6f 70 3b 20 74 68 65 20 53 51 4c 69 74  no-op; the SQLit
1ad50 65 20 65 6e 67 69 6e 65 20 69 67 6e 6f 72 65 73  e engine ignores
1ad60 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
1ad70 2f 20 2a 70 52 6f 77 69 64 20 72 65 74 75 72 6e  / *pRowid return
1ad80 20 76 61 6c 75 65 20 69 66 20 61 72 67 63 3d 3d   value if argc==
1ad90 31 20 6f 72 20 61 72 67 76 5b 31 5d 20 69 73 20  1 or argv[1] is 
1ada0 6e 6f 74 20 61 6e 20 53 51 4c 20 4e 55 4c 4c 2e  not an SQL NULL.
1adb0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1adc0 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
1add0 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20  // <para>..     
1ade0 20 20 20 2f 2f 2f 20 45 61 63 68 20 63 61 6c 6c     /// Each call
1adf0 20 74 6f 20 78 55 70 64 61 74 65 20 77 69 6c 6c   to xUpdate will
1ae00 20 66 61 6c 6c 20 69 6e 74 6f 20 6f 6e 65 20 6f   fall into one o
1ae10 66 20 63 61 73 65 73 20 73 68 6f 77 6e 20 62 65  f cases shown be
1ae20 6c 6f 77 2e 20 4e 6f 74 65 0d 0a 20 20 20 20 20  low. Note..     
1ae30 20 20 20 2f 2f 2f 20 74 68 61 74 20 72 65 66 65     /// that refe
1ae40 72 65 6e 63 65 73 20 74 6f 20 61 72 67 76 5b 69  rences to argv[i
1ae50 5d 20 6d 65 61 6e 20 74 68 65 20 53 51 4c 20 76  ] mean the SQL v
1ae60 61 6c 75 65 20 68 65 6c 64 20 77 69 74 68 69 6e  alue held within
1ae70 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
1ae80 2f 20 61 72 67 76 5b 69 5d 20 6f 62 6a 65 63 74  / argv[i] object
1ae90 2c 20 6e 6f 74 20 74 68 65 20 61 72 67 76 5b 69  , not the argv[i
1aea0 5d 20 6f 62 6a 65 63 74 20 69 74 73 65 6c 66 2e  ] object itself.
1aeb0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1aec0 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
1aed0 2f 2f 20 3c 63 6f 64 65 3e 0d 0a 20 20 20 20 20  // <code>..     
1aee0 20 20 20 2f 2f 2f 20 20 20 20 20 61 72 67 63 20     ///     argc 
1aef0 3d 20 31 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  = 1..        ///
1af00 20 3c 2f 63 6f 64 65 3e 0d 0a 20 20 20 20 20 20   </code>..      
1af10 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20    /// <para>..  
1af20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20        ///       
1af30 20 20 54 68 65 20 73 69 6e 67 6c 65 20 72 6f 77    The single row
1af40 20 77 69 74 68 20 72 6f 77 69 64 20 65 71 75 61   with rowid equa
1af50 6c 20 74 6f 20 61 72 67 76 5b 30 5d 20 69 73 20  l to argv[0] is 
1af60 64 65 6c 65 74 65 64 2e 20 4e 6f 0d 0a 20 20 20  deleted. No..   
1af70 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20       ///        
1af80 20 69 6e 73 65 72 74 20 6f 63 63 75 72 73 2e 0d   insert occurs..
1af90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1afa0 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
1afb0 2f 20 3c 63 6f 64 65 3e 0d 0a 20 20 20 20 20 20  / <code>..      
1afc0 20 20 2f 2f 2f 20 20 20 20 20 61 72 67 63 20 3e    ///     argc >
1afd0 20 31 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20   1..        /// 
1afe0 20 20 20 20 61 72 67 76 5b 30 5d 20 3d 20 4e 55      argv[0] = NU
1aff0 4c 4c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  LL..        /// 
1b000 3c 2f 63 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20  </code>..       
1b010 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
1b020 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20       ///        
1b030 20 41 20 6e 65 77 20 72 6f 77 20 69 73 20 69 6e   A new row is in
1b040 73 65 72 74 65 64 20 77 69 74 68 20 61 20 72 6f  serted with a ro
1b050 77 69 64 20 61 72 67 76 5b 31 5d 20 61 6e 64 20  wid argv[1] and 
1b060 63 6f 6c 75 6d 6e 0d 0a 20 20 20 20 20 20 20 20  column..        
1b070 2f 2f 2f 20 20 20 20 20 20 20 20 20 76 61 6c 75  ///         valu
1b080 65 73 20 69 6e 20 61 72 67 76 5b 32 5d 20 61 6e  es in argv[2] an
1b090 64 20 66 6f 6c 6c 6f 77 69 6e 67 2e 20 49 66 20  d following. If 
1b0a0 61 72 67 76 5b 31 5d 20 69 73 20 61 6e 20 53 51  argv[1] is an SQ
1b0b0 4c 20 4e 55 4c 4c 2c 0d 0a 20 20 20 20 20 20 20  L NULL,..       
1b0c0 20 2f 2f 2f 20 20 20 20 20 20 20 20 20 74 68 65   ///         the
1b0d0 20 61 20 6e 65 77 20 75 6e 69 71 75 65 20 72 6f   a new unique ro
1b0e0 77 69 64 20 69 73 20 67 65 6e 65 72 61 74 65 64  wid is generated
1b0f0 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 0d   automatically..
1b100 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1b110 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
1b120 2f 20 3c 63 6f 64 65 3e 0d 0a 20 20 20 20 20 20  / <code>..      
1b130 20 20 2f 2f 2f 20 20 20 20 20 61 72 67 63 20 3e    ///     argc >
1b140 20 31 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20   1..        /// 
1b150 20 20 20 20 61 72 67 76 5b 30 5d 20 3f 20 4e 55      argv[0] ? NU
1b160 4c 4c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  LL..        /// 
1b170 20 20 20 20 61 72 67 76 5b 30 5d 20 3d 20 61 72      argv[0] = ar
1b180 67 76 5b 31 5d 0d 0a 20 20 20 20 20 20 20 20 2f  gv[1]..        /
1b190 2f 2f 20 3c 2f 63 6f 64 65 3e 0d 0a 20 20 20 20  // </code>..    
1b1a0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a      /// <para>..
1b1b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20          ///     
1b1c0 20 20 20 20 54 68 65 20 72 6f 77 20 77 69 74 68      The row with
1b1d0 20 72 6f 77 69 64 20 61 72 67 76 5b 30 5d 20 69   rowid argv[0] i
1b1e0 73 20 75 70 64 61 74 65 64 20 77 69 74 68 20 6e  s updated with n
1b1f0 65 77 20 76 61 6c 75 65 73 20 69 6e 0d 0a 20 20  ew values in..  
1b200 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20        ///       
1b210 20 20 61 72 67 76 5b 32 5d 20 61 6e 64 20 66 6f    argv[2] and fo
1b220 6c 6c 6f 77 69 6e 67 20 70 61 72 61 6d 65 74 65  llowing paramete
1b230 72 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  rs...        ///
1b240 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20   </para>..      
1b250 20 20 2f 2f 2f 20 3c 63 6f 64 65 3e 0d 0a 20 20    /// <code>..  
1b260 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 61 72        ///     ar
1b270 67 63 20 3e 20 31 0d 0a 20 20 20 20 20 20 20 20  gc > 1..        
1b280 2f 2f 2f 20 20 20 20 20 61 72 67 76 5b 30 5d 20  ///     argv[0] 
1b290 3f 20 4e 55 4c 4c 0d 0a 20 20 20 20 20 20 20 20  ? NULL..        
1b2a0 2f 2f 2f 20 20 20 20 20 61 72 67 76 5b 30 5d 20  ///     argv[0] 
1b2b0 3f 20 61 72 67 76 5b 31 5d 0d 0a 20 20 20 20 20  ? argv[1]..     
1b2c0 20 20 20 2f 2f 2f 20 3c 2f 63 6f 64 65 3e 0d 0a     /// </code>..
1b2d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1b2e0 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
1b2f0 20 20 20 20 20 20 20 20 54 68 65 20 72 6f 77 20          The row 
1b300 77 69 74 68 20 72 6f 77 69 64 20 61 72 67 76 5b  with rowid argv[
1b310 30 5d 20 69 73 20 75 70 64 61 74 65 64 20 77 69  0] is updated wi
1b320 74 68 20 72 6f 77 69 64 20 61 72 67 76 5b 31 5d  th rowid argv[1]
1b330 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20  ..        ///   
1b340 20 20 20 20 20 20 61 6e 64 20 6e 65 77 20 76 61        and new va
1b350 6c 75 65 73 20 69 6e 20 61 72 67 76 5b 32 5d 20  lues in argv[2] 
1b360 61 6e 64 20 66 6f 6c 6c 6f 77 69 6e 67 20 70 61  and following pa
1b370 72 61 6d 65 74 65 72 73 2e 20 54 68 69 73 0d 0a  rameters. This..
1b380 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20          ///     
1b390 20 20 20 20 77 69 6c 6c 20 6f 63 63 75 72 20 77      will occur w
1b3a0 68 65 6e 20 61 6e 20 53 51 4c 20 73 74 61 74 65  hen an SQL state
1b3b0 6d 65 6e 74 20 75 70 64 61 74 65 73 20 61 20 72  ment updates a r
1b3c0 6f 77 69 64 2c 20 61 73 20 69 6e 0d 0a 20 20 20  owid, as in..   
1b3d0 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20       ///        
1b3e0 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 3a 0d   the statement:.
1b3f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1b400 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
1b410 2f 20 3c 63 6f 64 65 3e 0d 0a 20 20 20 20 20 20  / <code>..      
1b420 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20 20 20    ///           
1b430 20 20 55 50 44 41 54 45 20 74 61 62 6c 65 20 53    UPDATE table S
1b440 45 54 20 72 6f 77 69 64 3d 72 6f 77 69 64 2b 31  ET rowid=rowid+1
1b450 20 57 48 45 52 45 20 2e 2e 2e 3b 0d 0a 20 20 20   WHERE ...;..   
1b460 20 20 20 20 20 2f 2f 2f 20 3c 2f 63 6f 64 65 3e       /// </code>
1b470 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1b480 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
1b490 2f 20 54 68 65 20 78 55 70 64 61 74 65 20 6d 65  / The xUpdate me
1b4a0 74 68 6f 64 20 6d 75 73 74 20 72 65 74 75 72 6e  thod must return
1b4b0 20 53 51 4c 49 54 45 5f 4f 4b 20 69 66 20 61 6e   SQLITE_OK if an
1b4c0 64 20 6f 6e 6c 79 20 69 66 20 69 74 20 69 73 0d  d only if it is.
1b4d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 75 63  .        /// suc
1b4e0 63 65 73 73 66 75 6c 2e 20 49 66 20 61 20 66 61  cessful. If a fa
1b4f0 69 6c 75 72 65 20 6f 63 63 75 72 73 2c 20 74 68  ilure occurs, th
1b500 65 20 78 55 70 64 61 74 65 20 6d 75 73 74 20 72  e xUpdate must r
1b510 65 74 75 72 6e 20 61 6e 0d 0a 20 20 20 20 20 20  eturn an..      
1b520 20 20 2f 2f 2f 20 61 70 70 72 6f 70 72 69 61 74    /// appropriat
1b530 65 20 65 72 72 6f 72 20 63 6f 64 65 2e 20 4f 6e  e error code. On
1b540 20 61 20 66 61 69 6c 75 72 65 2c 20 74 68 65 20   a failure, the 
1b550 70 56 54 61 62 2d 3e 7a 45 72 72 4d 73 67 20 65  pVTab->zErrMsg e
1b560 6c 65 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20 20  lement..        
1b570 2f 2f 2f 20 6d 61 79 20 6f 70 74 69 6f 6e 61 6c  /// may optional
1b580 6c 79 20 62 65 20 72 65 70 6c 61 63 65 64 20 77  ly be replaced w
1b590 69 74 68 20 65 72 72 6f 72 20 6d 65 73 73 61 67  ith error messag
1b5a0 65 20 74 65 78 74 20 73 74 6f 72 65 64 20 69 6e  e text stored in
1b5b0 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20 20   memory..       
1b5c0 20 2f 2f 2f 20 61 6c 6c 6f 63 61 74 65 64 20 66   /// allocated f
1b5d0 72 6f 6d 20 53 51 4c 69 74 65 20 75 73 69 6e 67  rom SQLite using
1b5e0 20 66 75 6e 63 74 69 6f 6e 73 20 73 75 63 68 20   functions such 
1b5f0 61 73 20 73 71 6c 69 74 65 33 5f 6d 70 72 69 6e  as sqlite3_mprin
1b600 74 66 28 29 20 6f 72 0d 0a 20 20 20 20 20 20 20  tf() or..       
1b610 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 6d 61 6c   /// sqlite3_mal
1b620 6c 6f 63 28 29 2e 0d 0a 20 20 20 20 20 20 20 20  loc()...        
1b630 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20  /// </para>..   
1b640 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
1b650 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 49 66 20  .        /// If 
1b660 74 68 65 20 78 55 70 64 61 74 65 20 6d 65 74 68  the xUpdate meth
1b670 6f 64 20 76 69 6f 6c 61 74 65 73 20 73 6f 6d 65  od violates some
1b680 20 63 6f 6e 73 74 72 61 69 6e 74 20 6f 66 20 74   constraint of t
1b690 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
1b6a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 28 69  ..        /// (i
1b6b0 6e 63 6c 75 64 69 6e 67 2c 20 62 75 74 20 6e 6f  ncluding, but no
1b6c0 74 20 6c 69 6d 69 74 65 64 20 74 6f 2c 20 61 74  t limited to, at
1b6d0 74 65 6d 70 74 69 6e 67 20 74 6f 20 73 74 6f 72  tempting to stor
1b6e0 65 20 61 20 76 61 6c 75 65 20 6f 66 20 74 68 65  e a value of the
1b6f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 72  ..        /// wr
1b700 6f 6e 67 20 64 61 74 61 74 79 70 65 2c 20 61 74  ong datatype, at
1b710 74 65 6d 70 74 69 6e 67 20 74 6f 20 73 74 6f 72  tempting to stor
1b720 65 20 61 20 76 61 6c 75 65 20 74 68 61 74 20 69  e a value that i
1b730 73 20 74 6f 6f 20 6c 61 72 67 65 20 6f 72 0d 0a  s too large or..
1b740 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 6f 6f 20          /// too 
1b750 73 6d 61 6c 6c 2c 20 6f 72 20 61 74 74 65 6d 70  small, or attemp
1b760 74 69 6e 67 20 74 6f 20 63 68 61 6e 67 65 20 61  ting to change a
1b770 20 72 65 61 64 2d 6f 6e 6c 79 20 76 61 6c 75 65   read-only value
1b780 29 20 74 68 65 6e 20 74 68 65 0d 0a 20 20 20 20  ) then the..    
1b790 20 20 20 20 2f 2f 2f 20 78 55 70 64 61 74 65 20      /// xUpdate 
1b7a0 6d 75 73 74 20 66 61 69 6c 20 77 69 74 68 20 61  must fail with a
1b7b0 6e 20 61 70 70 72 6f 70 72 69 61 74 65 20 65 72  n appropriate er
1b7c0 72 6f 72 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  ror code...     
1b7d0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a     /// </para>..
1b7e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1b7f0 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
1b800 54 68 65 72 65 20 6d 69 67 68 74 20 62 65 20 6f  There might be o
1b810 6e 65 20 6f 72 20 6d 6f 72 65 20 73 71 6c 69 74  ne or more sqlit
1b820 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 6f  e3_vtab_cursor o
1b830 62 6a 65 63 74 73 20 6f 70 65 6e 20 61 6e 64 20  bjects open and 
1b840 69 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  in..        /// 
1b850 75 73 65 20 6f 6e 20 74 68 65 20 76 69 72 74 75  use on the virtu
1b860 61 6c 20 74 61 62 6c 65 20 69 6e 73 74 61 6e 63  al table instanc
1b870 65 20 61 6e 64 20 70 65 72 68 61 70 73 20 65 76  e and perhaps ev
1b880 65 6e 20 6f 6e 20 74 68 65 20 72 6f 77 20 6f 66  en on the row of
1b890 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68  ..        /// th
1b8a0 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  e virtual table 
1b8b0 77 68 65 6e 20 74 68 65 20 78 55 70 64 61 74 65  when the xUpdate
1b8c0 20 6d 65 74 68 6f 64 20 69 73 20 69 6e 76 6f 6b   method is invok
1b8d0 65 64 2e 20 54 68 65 0d 0a 20 20 20 20 20 20 20  ed. The..       
1b8e0 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74 61 74   /// implementat
1b8f0 69 6f 6e 20 6f 66 20 78 55 70 64 61 74 65 20 6d  ion of xUpdate m
1b900 75 73 74 20 62 65 20 70 72 65 70 61 72 65 64 20  ust be prepared 
1b910 66 6f 72 20 61 74 74 65 6d 70 74 73 20 74 6f 20  for attempts to 
1b920 64 65 6c 65 74 65 0d 0a 20 20 20 20 20 20 20 20  delete..        
1b930 2f 2f 2f 20 6f 72 20 6d 6f 64 69 66 79 20 72 6f  /// or modify ro
1b940 77 73 20 6f 66 20 74 68 65 20 74 61 62 6c 65 20  ws of the table 
1b950 6f 75 74 20 66 72 6f 6d 20 6f 74 68 65 72 20 65  out from other e
1b960 78 69 73 74 69 6e 67 20 63 75 72 73 6f 72 73 2e  xisting cursors.
1b970 20 49 66 20 74 68 65 0d 0a 20 20 20 20 20 20 20   If the..       
1b980 20 2f 2f 2f 20 76 69 72 74 75 61 6c 20 74 61 62   /// virtual tab
1b990 6c 65 20 63 61 6e 6e 6f 74 20 61 63 63 6f 6d 6d  le cannot accomm
1b9a0 6f 64 61 74 65 20 73 75 63 68 20 63 68 61 6e 67  odate such chang
1b9b0 65 73 2c 20 74 68 65 20 78 55 70 64 61 74 65 20  es, the xUpdate 
1b9c0 6d 65 74 68 6f 64 0d 0a 20 20 20 20 20 20 20 20  method..        
1b9d0 2f 2f 2f 20 6d 75 73 74 20 72 65 74 75 72 6e 20  /// must return 
1b9e0 61 6e 20 65 72 72 6f 72 20 63 6f 64 65 2e 0d 0a  an error code...
1b9f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1ba00 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
1ba10 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
1ba20 20 2f 2f 2f 20 54 68 65 20 78 55 70 64 61 74 65   /// The xUpdate
1ba30 20 6d 65 74 68 6f 64 20 69 73 20 6f 70 74 69 6f   method is optio
1ba40 6e 61 6c 2e 20 49 66 20 74 68 65 20 78 55 70 64  nal. If the xUpd
1ba50 61 74 65 20 70 6f 69 6e 74 65 72 20 69 6e 20 74  ate pointer in t
1ba60 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
1ba70 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 66  sqlite3_module f
1ba80 6f 72 20 61 20 76 69 72 74 75 61 6c 20 74 61 62  or a virtual tab
1ba90 6c 65 20 69 73 20 61 20 4e 55 4c 4c 20 70 6f 69  le is a NULL poi
1baa0 6e 74 65 72 2c 20 74 68 65 6e 20 74 68 65 0d 0a  nter, then the..
1bab0 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 69 72 74          /// virt
1bac0 75 61 6c 20 74 61 62 6c 65 20 69 73 20 72 65 61  ual table is rea
1bad0 64 2d 6f 6e 6c 79 2e 0d 0a 20 20 20 20 20 20 20  d-only...       
1bae0 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
1baf0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
1bb00 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1bb10 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
1bb20 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
1bb30 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70  /// The native p
1bb40 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71  ointer to the sq
1bb50 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76  lite3_vtab deriv
1bb60 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  ed structure... 
1bb70 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1bb80 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1bb90 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72   <param name="ar
1bba0 67 63 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  gc">..        //
1bbb0 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  / The number of 
1bbc0 6e 65 77 20 6f 72 20 6d 6f 64 69 66 69 65 64 20  new or modified 
1bbd0 63 6f 6c 75 6d 6e 20 76 61 6c 75 65 73 20 63 6f  column values co
1bbe0 6e 74 61 69 6e 65 64 20 69 6e 0d 0a 20 20 20 20  ntained in..    
1bbf0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 72 65      /// <paramre
1bc00 66 20 6e 61 6d 65 3d 22 61 72 67 76 22 20 2f 3e  f name="argv" />
1bc10 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1bc20 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1bc30 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1bc40 3d 22 61 72 67 76 22 3e 0d 0a 20 20 20 20 20 20  ="argv">..      
1bc50 20 20 2f 2f 2f 20 54 68 65 20 61 72 72 61 79 20    /// The array 
1bc60 6f 66 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  of native pointe
1bc70 72 73 20 74 6f 20 73 71 6c 69 74 65 33 5f 76 61  rs to sqlite3_va
1bc80 6c 75 65 20 73 74 72 75 63 74 75 72 65 73 20 63  lue structures c
1bc90 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20 20 20 20  ontaining..     
1bca0 20 20 20 2f 2f 2f 20 74 68 65 20 6e 65 77 20 6f     /// the new o
1bcb0 72 20 6d 6f 64 69 66 69 65 64 20 63 6f 6c 75 6d  r modified colum
1bcc0 6e 20 76 61 6c 75 65 73 2c 20 69 66 20 61 6e 79  n values, if any
1bcd0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1bce0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1bcf0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1bd00 3d 22 72 6f 77 49 64 22 3e 0d 0a 20 20 20 20 20  ="rowId">..     
1bd10 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63     /// Upon succ
1bd20 65 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65  ess, this parame
1bd30 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69  ter must be modi
1bd40 66 69 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20  fied to contain 
1bd50 74 68 65 20 75 6e 69 71 75 65 0d 0a 20 20 20 20  the unique..    
1bd60 20 20 20 20 2f 2f 2f 20 69 6e 74 65 67 65 72 20      /// integer 
1bd70 72 6f 77 20 69 64 65 6e 74 69 66 69 65 72 20 66  row identifier f
1bd80 6f 72 20 74 68 65 20 72 6f 77 20 74 68 61 74 20  or the row that 
1bd90 77 61 73 20 69 6e 73 65 72 74 65 64 2c 20 69 66  was inserted, if
1bda0 20 61 6e 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f   any...        /
1bdb0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1bdc0 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
1bdd0 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
1bde0 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74  A standard SQLit
1bdf0 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a  e return code...
1be00 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
1be10 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
1be20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1be30 78 55 70 64 61 74 65 28 0d 0a 20 20 20 20 20 20  xUpdate(..      
1be40 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
1be50 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ab,..           
1be60 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20   int argc,..    
1be70 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 61          IntPtr a
1be80 72 67 76 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  rgv,..          
1be90 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64    ref long rowId
1bea0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b  ..            );
1beb0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1bec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bf00 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
1bf10 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
1bf20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
1bf30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1bf40 69 73 20 6d 65 74 68 6f 64 20 62 65 67 69 6e 73  is method begins
1bf50 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 6f   a transaction o
1bf60 6e 20 61 20 76 69 72 74 75 61 6c 20 74 61 62 6c  n a virtual tabl
1bf70 65 2e 20 54 68 69 73 20 69 73 20 6d 65 74 68 6f  e. This is metho
1bf80 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  d..        /// i
1bf90 73 20 6f 70 74 69 6f 6e 61 6c 2e 20 54 68 65 20  s optional. The 
1bfa0 78 42 65 67 69 6e 20 70 6f 69 6e 74 65 72 20 6f  xBegin pointer o
1bfb0 66 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65  f sqlite3_module
1bfc0 20 6d 61 79 20 62 65 20 4e 55 4c 4c 2e 0d 0a 20   may be NULL... 
1bfd0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1bfe0 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
1bff0 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
1c000 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20  /// This method 
1c010 69 73 20 61 6c 77 61 79 73 20 66 6f 6c 6c 6f 77  is always follow
1c020 65 64 20 62 79 20 6f 6e 65 20 63 61 6c 6c 20 74  ed by one call t
1c030 6f 20 65 69 74 68 65 72 20 74 68 65 20 78 43 6f  o either the xCo
1c040 6d 6d 69 74 20 6f 72 0d 0a 20 20 20 20 20 20 20  mmit or..       
1c050 20 2f 2f 2f 20 78 52 6f 6c 6c 62 61 63 6b 20 6d   /// xRollback m
1c060 65 74 68 6f 64 2e 20 56 69 72 74 75 61 6c 20 74  ethod. Virtual t
1c070 61 62 6c 65 20 74 72 61 6e 73 61 63 74 69 6f 6e  able transaction
1c080 73 20 64 6f 20 6e 6f 74 20 6e 65 73 74 2c 20 73  s do not nest, s
1c090 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  o the..        /
1c0a0 2f 2f 20 78 42 65 67 69 6e 20 6d 65 74 68 6f 64  // xBegin method
1c0b0 20 77 69 6c 6c 20 6e 6f 74 20 62 65 20 69 6e 76   will not be inv
1c0c0 6f 6b 65 64 20 6d 6f 72 65 20 74 68 61 6e 20 6f  oked more than o
1c0d0 6e 63 65 20 6f 6e 20 61 20 73 69 6e 67 6c 65 0d  nce on a single.
1c0e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 69 72  .        /// vir
1c0f0 74 75 61 6c 20 74 61 62 6c 65 20 77 69 74 68 6f  tual table witho
1c100 75 74 20 61 6e 20 69 6e 74 65 72 76 65 6e 69 6e  ut an intervenin
1c110 67 20 63 61 6c 6c 20 74 6f 20 65 69 74 68 65 72  g call to either
1c120 20 78 43 6f 6d 6d 69 74 20 6f 72 0d 0a 20 20 20   xCommit or..   
1c130 20 20 20 20 20 2f 2f 2f 20 78 52 6f 6c 6c 62 61       /// xRollba
1c140 63 6b 2e 20 4d 75 6c 74 69 70 6c 65 20 63 61 6c  ck. Multiple cal
1c150 6c 73 20 74 6f 20 6f 74 68 65 72 20 6d 65 74 68  ls to other meth
1c160 6f 64 73 20 63 61 6e 20 61 6e 64 20 6c 69 6b 65  ods can and like
1c170 6c 79 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20 20  ly will..       
1c180 20 2f 2f 2f 20 6f 63 63 75 72 20 69 6e 20 62 65   /// occur in be
1c190 74 77 65 65 6e 20 74 68 65 20 78 42 65 67 69 6e  tween the xBegin
1c1a0 20 61 6e 64 20 74 68 65 20 63 6f 72 72 65 73 70   and the corresp
1c1b0 6f 6e 64 69 6e 67 20 78 43 6f 6d 6d 69 74 20 6f  onding xCommit o
1c1c0 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 78  r..        /// x
1c1d0 52 6f 6c 6c 62 61 63 6b 2e 0d 0a 20 20 20 20 20  Rollback...     
1c1e0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a     /// </para>..
1c1f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
1c200 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1c210 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1c220 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20  "pVtab">..      
1c230 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
1c240 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
1c250 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72  sqlite3_vtab der
1c260 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d  ived structure..
1c270 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1c280 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
1c290 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
1c2a0 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e        /// A stan
1c2b0 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75  dard SQLite retu
1c2c0 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  rn code...      
1c2d0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
1c2e0 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65  ..        SQLite
1c2f0 45 72 72 6f 72 43 6f 64 65 20 78 42 65 67 69 6e  ErrorCode xBegin
1c300 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  (..            I
1c310 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20  ntPtr pVtab..   
1c320 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20           );.... 
1c330 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1c340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1c380 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1c390 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1c3a0 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
1c3b0 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65       /// This me
1c3c0 74 68 6f 64 20 73 69 67 6e 61 6c 73 20 74 68 65  thod signals the
1c3d0 20 73 74 61 72 74 20 6f 66 20 61 20 74 77 6f 2d   start of a two-
1c3e0 70 68 61 73 65 20 63 6f 6d 6d 69 74 20 6f 6e 20  phase commit on 
1c3f0 61 20 76 69 72 74 75 61 6c 0d 0a 20 20 20 20 20  a virtual..     
1c400 20 20 20 2f 2f 2f 20 74 61 62 6c 65 2e 20 54 68     /// table. Th
1c410 69 73 20 69 73 20 6d 65 74 68 6f 64 20 69 73 20  is is method is 
1c420 6f 70 74 69 6f 6e 61 6c 2e 20 54 68 65 20 78 53  optional. The xS
1c430 79 6e 63 20 70 6f 69 6e 74 65 72 20 6f 66 0d 0a  ync pointer of..
1c440 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69          /// sqli
1c450 74 65 33 5f 6d 6f 64 75 6c 65 20 6d 61 79 20 62  te3_module may b
1c460 65 20 4e 55 4c 4c 2e 0d 0a 20 20 20 20 20 20 20  e NULL...       
1c470 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
1c480 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
1c490 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1c4a0 69 73 20 6d 65 74 68 6f 64 20 69 73 20 6f 6e 6c  is method is onl
1c4b0 79 20 69 6e 76 6f 6b 65 64 20 61 66 74 65 72 20  y invoked after 
1c4c0 63 61 6c 6c 20 74 6f 20 74 68 65 20 78 42 65 67  call to the xBeg
1c4d0 69 6e 20 6d 65 74 68 6f 64 20 61 6e 64 0d 0a 20  in method and.. 
1c4e0 20 20 20 20 20 20 20 2f 2f 2f 20 70 72 69 6f 72         /// prior
1c4f0 20 74 6f 20 61 6e 20 78 43 6f 6d 6d 69 74 20 6f   to an xCommit o
1c500 72 20 78 52 6f 6c 6c 62 61 63 6b 2e 20 49 6e 20  r xRollback. In 
1c510 6f 72 64 65 72 20 74 6f 20 69 6d 70 6c 65 6d 65  order to impleme
1c520 6e 74 20 74 77 6f 2d 70 68 61 73 65 0d 0a 20 20  nt two-phase..  
1c530 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6d 6d 69 74        /// commit
1c540 2c 20 74 68 65 20 78 53 79 6e 63 20 6d 65 74 68  , the xSync meth
1c550 6f 64 20 6f 6e 20 61 6c 6c 20 76 69 72 74 75 61  od on all virtua
1c560 6c 20 74 61 62 6c 65 73 20 69 73 20 69 6e 76 6f  l tables is invo
1c570 6b 65 64 20 70 72 69 6f 72 20 74 6f 0d 0a 20 20  ked prior to..  
1c580 20 20 20 20 20 20 2f 2f 2f 20 69 6e 76 6f 6b 69        /// invoki
1c590 6e 67 20 74 68 65 20 78 43 6f 6d 6d 69 74 20 6d  ng the xCommit m
1c5a0 65 74 68 6f 64 20 6f 6e 20 61 6e 79 20 76 69 72  ethod on any vir
1c5b0 74 75 61 6c 20 74 61 62 6c 65 2e 20 49 66 20 61  tual table. If a
1c5c0 6e 79 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20  ny of the..     
1c5d0 20 20 20 2f 2f 2f 20 78 53 79 6e 63 20 6d 65 74     /// xSync met
1c5e0 68 6f 64 73 20 66 61 69 6c 2c 20 74 68 65 20 65  hods fail, the e
1c5f0 6e 74 69 72 65 20 74 72 61 6e 73 61 63 74 69 6f  ntire transactio
1c600 6e 20 69 73 20 72 6f 6c 6c 65 64 20 62 61 63 6b  n is rolled back
1c610 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1c620 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
1c630 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1c640 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1c650 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e  am name="pVtab">
1c660 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1c670 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
1c680 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
1c690 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74 72  vtab derived str
1c6a0 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ucture...       
1c6b0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1c6c0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
1c6d0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
1c6e0 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c  / A standard SQL
1c6f0 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e  ite return code.
1c700 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1c710 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1c720 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64    SQLiteErrorCod
1c730 65 20 78 53 79 6e 63 28 0d 0a 20 20 20 20 20 20  e xSync(..      
1c740 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
1c750 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ab..            
1c760 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  );....        //
1c770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c7a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c7b0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1c7c0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1c7d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1c7e0 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
1c7f0 54 68 69 73 20 6d 65 74 68 6f 64 20 63 61 75 73  This method caus
1c800 65 73 20 61 20 76 69 72 74 75 61 6c 20 74 61 62  es a virtual tab
1c810 6c 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 74  le transaction t
1c820 6f 20 63 6f 6d 6d 69 74 2e 20 54 68 69 73 20 69  o commit. This i
1c830 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d  s..        /// m
1c840 65 74 68 6f 64 20 69 73 20 6f 70 74 69 6f 6e 61  ethod is optiona
1c850 6c 2e 20 54 68 65 20 78 43 6f 6d 6d 69 74 20 70  l. The xCommit p
1c860 6f 69 6e 74 65 72 20 6f 66 20 73 71 6c 69 74 65  ointer of sqlite
1c870 33 5f 6d 6f 64 75 6c 65 20 6d 61 79 20 62 65 0d  3_module may be.
1c880 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 55 4c  .        /// NUL
1c890 4c 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  L...        /// 
1c8a0 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
1c8b0 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
1c8c0 20 20 20 20 20 2f 2f 2f 20 41 20 63 61 6c 6c 20       /// A call 
1c8d0 74 6f 20 74 68 69 73 20 6d 65 74 68 6f 64 20 61  to this method a
1c8e0 6c 77 61 79 73 20 66 6f 6c 6c 6f 77 73 20 61 20  lways follows a 
1c8f0 70 72 69 6f 72 20 63 61 6c 6c 20 74 6f 20 78 42  prior call to xB
1c900 65 67 69 6e 20 61 6e 64 0d 0a 20 20 20 20 20 20  egin and..      
1c910 20 20 2f 2f 2f 20 78 53 79 6e 63 2e 0d 0a 20 20    /// xSync...  
1c920 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1c930 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1c940 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1c950 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1c960 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20  me="pVtab">..   
1c970 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
1c980 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  ive pointer to t
1c990 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20  he sqlite3_vtab 
1c9a0 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72  derived structur
1c9b0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
1c9c0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
1c9d0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
1c9e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73  .        /// A s
1c9f0 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72  tandard SQLite r
1ca00 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20  eturn code...   
1ca10 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
1ca20 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c  ns>..        SQL
1ca30 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6f  iteErrorCode xCo
1ca40 6d 6d 69 74 28 0d 0a 20 20 20 20 20 20 20 20 20  mmit(..         
1ca50 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d     IntPtr pVtab.
1ca60 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d  .            );.
1ca70 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1ca80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ca90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1caa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cac0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
1cad0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1cae0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
1caf0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
1cb00 73 20 6d 65 74 68 6f 64 20 63 61 75 73 65 73 20  s method causes 
1cb10 61 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  a virtual table 
1cb20 74 72 61 6e 73 61 63 74 69 6f 6e 20 74 6f 20 72  transaction to r
1cb30 6f 6c 6c 62 61 63 6b 2e 20 54 68 69 73 20 69 73  ollback. This is
1cb40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65  ..        /// me
1cb50 74 68 6f 64 20 69 73 20 6f 70 74 69 6f 6e 61 6c  thod is optional
1cb60 2e 20 54 68 65 20 78 52 6f 6c 6c 62 61 63 6b 20  . The xRollback 
1cb70 70 6f 69 6e 74 65 72 20 6f 66 20 73 71 6c 69 74  pointer of sqlit
1cb80 65 33 5f 6d 6f 64 75 6c 65 20 6d 61 79 20 62 65  e3_module may be
1cb90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 55  ..        /// NU
1cba0 4c 4c 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  LL...        ///
1cbb0 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20   </para>..      
1cbc0 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20    /// <para>..  
1cbd0 20 20 20 20 20 20 2f 2f 2f 20 41 20 63 61 6c 6c        /// A call
1cbe0 20 74 6f 20 74 68 69 73 20 6d 65 74 68 6f 64 20   to this method 
1cbf0 61 6c 77 61 79 73 20 66 6f 6c 6c 6f 77 73 20 61  always follows a
1cc00 20 70 72 69 6f 72 20 63 61 6c 6c 20 74 6f 20 78   prior call to x
1cc10 42 65 67 69 6e 2e 0d 0a 20 20 20 20 20 20 20 20  Begin...        
1cc20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20  /// </para>..   
1cc30 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1cc40 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1cc50 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
1cc60 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  tab">..        /
1cc70 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f  // The native po
1cc80 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c  inter to the sql
1cc90 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65  ite3_vtab derive
1cca0 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20  d structure...  
1ccb0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1ccc0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
1ccd0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
1cce0 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72     /// A standar
1ccf0 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20  d SQLite return 
1cd00 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  code...        /
1cd10 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
1cd20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72         SQLiteErr
1cd30 6f 72 43 6f 64 65 20 78 52 6f 6c 6c 62 61 63 6b  orCode xRollback
1cd40 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  (..            I
1cd50 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20  ntPtr pVtab..   
1cd60 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20           );.... 
1cd70 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1cd80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cd90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cda0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cdb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1cdc0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1cdd0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1cde0 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
1cdf0 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65       /// This me
1ce00 74 68 6f 64 20 70 72 6f 76 69 64 65 73 20 6e 6f  thod provides no
1ce10 74 69 66 69 63 61 74 69 6f 6e 20 74 68 61 74 20  tification that 
1ce20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c  the virtual tabl
1ce30 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  e..        /// i
1ce40 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 74 68  mplementation th
1ce50 61 74 20 74 68 65 20 76 69 72 74 75 61 6c 20 74  at the virtual t
1ce60 61 62 6c 65 20 77 69 6c 6c 20 62 65 20 67 69 76  able will be giv
1ce70 65 6e 20 61 20 6e 65 77 20 6e 61 6d 65 2e 20 49  en a new name. I
1ce80 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  f..        /// t
1ce90 68 69 73 20 6d 65 74 68 6f 64 20 72 65 74 75 72  his method retur
1cea0 6e 73 20 53 51 4c 49 54 45 5f 4f 4b 20 74 68 65  ns SQLITE_OK the
1ceb0 6e 20 53 51 4c 69 74 65 20 72 65 6e 61 6d 65 73  n SQLite renames
1cec0 20 74 68 65 20 74 61 62 6c 65 2e 20 49 66 0d 0a   the table. If..
1ced0 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 69 73          /// this
1cee0 20 6d 65 74 68 6f 64 20 72 65 74 75 72 6e 73 20   method returns 
1cef0 61 6e 20 65 72 72 6f 72 20 63 6f 64 65 20 74 68  an error code th
1cf00 65 6e 20 74 68 65 20 72 65 6e 61 6d 69 6e 67 20  en the renaming 
1cf10 69 73 20 70 72 65 76 65 6e 74 65 64 2e 0d 0a 20  is prevented... 
1cf20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1cf30 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
1cf40 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
1cf50 2f 2f 2f 20 54 68 65 20 78 52 65 6e 61 6d 65 20  /// The xRename 
1cf60 6d 65 74 68 6f 64 20 69 73 20 72 65 71 75 69 72  method is requir
1cf70 65 64 20 66 6f 72 20 65 76 65 72 79 20 76 69 72  ed for every vir
1cf80 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20  tual table..    
1cf90 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e      /// implemen
1cfa0 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  tation...       
1cfb0 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
1cfc0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
1cfd0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1cfe0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
1cff0 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
1d000 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70  /// The native p
1d010 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71  ointer to the sq
1d020 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76  lite3_vtab deriv
1d030 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  ed structure... 
1d040 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1d050 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1d060 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 41   <param name="nA
1d070 72 67 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rg">..        //
1d080 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  / The number of 
1d090 61 72 67 75 6d 65 6e 74 73 20 74 6f 20 74 68 65  arguments to the
1d0a0 20 66 75 6e 63 74 69 6f 6e 20 62 65 69 6e 67 20   function being 
1d0b0 73 6f 75 67 68 74 2e 0d 0a 20 20 20 20 20 20 20  sought...       
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 7a 4e 61 6d 65 22 3e 0d  m name="zName">.
1d0f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1d100 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 66 75 6e   name of the fun
1d110 63 74 69 6f 6e 20 62 65 69 6e 67 20 73 6f 75 67  ction being soug
1d120 68 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ht...        ///
1d130 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1d140 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1d150 6d 65 3d 22 63 61 6c 6c 62 61 63 6b 22 3e 0d 0a  me="callback">..
1d160 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e          /// Upon
1d170 20 73 75 63 63 65 73 73 2c 20 74 68 69 73 20 70   success, this p
1d180 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65  arameter must be
1d190 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e   modified to con
1d1a0 74 61 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20  tain the..      
1d1b0 20 20 2f 2f 2f 20 64 65 6c 65 67 61 74 65 20 72    /// delegate r
1d1c0 65 73 70 6f 6e 73 69 62 6c 65 20 66 6f 72 20 69  esponsible for i
1d1d0 6d 70 6c 65 6d 65 6e 74 69 6e 67 20 74 68 65 20  mplementing the 
1d1e0 73 70 65 63 69 66 69 65 64 20 66 75 6e 63 74 69  specified functi
1d1f0 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  on...        ///
1d200 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1d210 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1d220 6d 65 3d 22 70 43 6c 69 65 6e 74 44 61 74 61 22  me="pClientData"
1d230 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55  >..        /// U
1d240 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69  pon success, thi
1d250 73 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74  s parameter must
1d260 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20   be modified to 
1d270 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20 20  contain the..   
1d280 20 20 20 20 20 2f 2f 2f 20 6e 61 74 69 76 65 20       /// native 
1d290 75 73 65 72 2d 64 61 74 61 20 70 6f 69 6e 74 65  user-data pointe
1d2a0 72 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  r associated wit
1d2b0 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  h..        /// <
1d2c0 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 63  paramref name="c
1d2d0 61 6c 6c 62 61 63 6b 22 20 2f 3e 2e 0d 0a 20 20  allback" />...  
1d2e0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1d2f0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
1d300 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
1d310 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
1d320 69 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64  if the specified
1d330 20 66 75 6e 63 74 69 6f 6e 20 77 61 73 20 66 6f   function was fo
1d340 75 6e 64 3b 20 7a 65 72 6f 20 6f 74 68 65 72 77  und; zero otherw
1d350 69 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ise...        //
1d360 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
1d370 20 20 20 20 20 20 69 6e 74 20 78 46 69 6e 64 46        int xFindF
1d380 75 6e 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20  unction(..      
1d390 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
1d3a0 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ab,..           
1d3b0 20 69 6e 74 20 6e 41 72 67 2c 0d 0a 20 20 20 20   int nArg,..    
1d3c0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 7a          IntPtr z
1d3d0 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  Name,..         
1d3e0 20 20 20 72 65 66 20 53 51 4c 69 74 65 43 61 6c     ref SQLiteCal
1d3f0 6c 62 61 63 6b 20 63 61 6c 6c 62 61 63 6b 2c 0d  lback callback,.
1d400 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66  .            ref
1d410 20 49 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44   IntPtr pClientD
1d420 61 74 61 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ata..           
1d430 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   );....        /
1d440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d480 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1d490 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1d4a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1d4b0 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
1d4c0 20 54 68 69 73 20 6d 65 74 68 6f 64 20 70 72 6f   This method pro
1d4d0 76 69 64 65 73 20 6e 6f 74 69 66 69 63 61 74 69  vides notificati
1d4e0 6f 6e 20 74 68 61 74 20 74 68 65 20 76 69 72 74  on that the virt
1d4f0 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20 20  ual table..     
1d500 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74     /// implement
1d510 61 74 69 6f 6e 20 74 68 61 74 20 74 68 65 20 76  ation that the v
1d520 69 72 74 75 61 6c 20 74 61 62 6c 65 20 77 69 6c  irtual table wil
1d530 6c 20 62 65 20 67 69 76 65 6e 20 61 20 6e 65 77  l be given a new
1d540 20 6e 61 6d 65 2e 20 49 66 0d 0a 20 20 20 20 20   name. If..     
1d550 20 20 20 2f 2f 2f 20 74 68 69 73 20 6d 65 74 68     /// this meth
1d560 6f 64 20 72 65 74 75 72 6e 73 20 53 51 4c 49 54  od returns SQLIT
1d570 45 5f 4f 4b 20 74 68 65 6e 20 53 51 4c 69 74 65  E_OK then SQLite
1d580 20 72 65 6e 61 6d 65 73 20 74 68 65 20 74 61 62   renames the tab
1d590 6c 65 2e 20 49 66 0d 0a 20 20 20 20 20 20 20 20  le. If..        
1d5a0 2f 2f 2f 20 74 68 69 73 20 6d 65 74 68 6f 64 20  /// this method 
1d5b0 72 65 74 75 72 6e 73 20 61 6e 20 65 72 72 6f 72  returns an error
1d5c0 20 63 6f 64 65 20 74 68 65 6e 20 74 68 65 20 72   code then the r
1d5d0 65 6e 61 6d 69 6e 67 20 69 73 20 70 72 65 76 65  enaming is preve
1d5e0 6e 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  nted...        /
1d5f0 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20  // </para>..    
1d600 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a      /// <para>..
1d610 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1d620 78 52 65 6e 61 6d 65 20 6d 65 74 68 6f 64 20 69  xRename method i
1d630 73 20 72 65 71 75 69 72 65 64 20 66 6f 72 20 65  s required for e
1d640 76 65 72 79 20 76 69 72 74 75 61 6c 20 74 61 62  very virtual tab
1d650 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  le..        /// 
1d660 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d  implementation..
1d670 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1d680 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
1d690 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1d6a0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1d6b0 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a   name="pVtab">..
1d6c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1d6d0 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
1d6e0 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74  o the sqlite3_vt
1d6f0 61 62 20 64 65 72 69 76 65 64 20 73 74 72 75 63  ab derived struc
1d700 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ture...        /
1d710 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1d720 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1d730 6e 61 6d 65 3d 22 7a 4e 65 77 22 3e 0d 0a 20 20  name="zNew">..  
1d740 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
1d750 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
1d760 74 68 65 20 55 54 46 2d 38 20 65 6e 63 6f 64 65  the UTF-8 encode
1d770 64 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e  d string contain
1d780 69 6e 67 20 74 68 65 20 6e 65 77 0d 0a 20 20 20  ing the new..   
1d790 20 20 20 20 20 2f 2f 2f 20 6e 61 6d 65 20 66 6f       /// name fo
1d7a0 72 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  r the virtual ta
1d7b0 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
1d7c0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1d7d0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
1d7e0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
1d7f0 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
1d800 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
1d810 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
1d820 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53  urns>..        S
1d830 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
1d840 52 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20  Rename(..       
1d850 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
1d860 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  b,..            
1d870 49 6e 74 50 74 72 20 7a 4e 65 77 0d 0a 20 20 20  IntPtr zNew..   
1d880 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20           );.... 
1d890 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1d8a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d8b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d8c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d8d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1d8e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1d8f0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1d900 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
1d910 20 20 20 20 20 2f 2f 2f 20 54 68 65 73 65 20 6d       /// These m
1d920 65 74 68 6f 64 73 20 70 72 6f 76 69 64 65 20 74  ethods provide t
1d930 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
1d940 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20   implementation 
1d950 61 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  an..        /// 
1d960 6f 70 70 6f 72 74 75 6e 69 74 79 20 74 6f 20 69  opportunity to i
1d970 6d 70 6c 65 6d 65 6e 74 20 6e 65 73 74 65 64 20  mplement nested 
1d980 74 72 61 6e 73 61 63 74 69 6f 6e 73 2e 20 54 68  transactions. Th
1d990 65 79 20 61 72 65 20 61 6c 77 61 79 73 0d 0a 20  ey are always.. 
1d9a0 20 20 20 20 20 20 20 2f 2f 2f 20 6f 70 74 69 6f         /// optio
1d9b0 6e 61 6c 20 61 6e 64 20 77 69 6c 6c 20 6f 6e 6c  nal and will onl
1d9c0 79 20 62 65 20 63 61 6c 6c 65 64 20 69 6e 20 53  y be called in S
1d9d0 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 20 33 2e  QLite version 3.
1d9e0 37 2e 37 20 61 6e 64 20 6c 61 74 65 72 2e 0d 0a  7.7 and later...
1d9f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1da00 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
1da10 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
1da20 20 2f 2f 2f 20 57 68 65 6e 20 78 53 61 76 65 70   /// When xSavep
1da30 6f 69 6e 74 28 58 2c 4e 29 20 69 73 20 69 6e 76  oint(X,N) is inv
1da40 6f 6b 65 64 2c 20 74 68 61 74 20 69 73 20 61 20  oked, that is a 
1da50 73 69 67 6e 61 6c 20 74 6f 20 74 68 65 20 76 69  signal to the vi
1da60 72 74 75 61 6c 0d 0a 20 20 20 20 20 20 20 20 2f  rtual..        /
1da70 2f 2f 20 74 61 62 6c 65 20 58 20 74 68 61 74 20  // table X that 
1da80 69 74 20 73 68 6f 75 6c 64 20 73 61 76 65 20 69  it should save i
1da90 74 73 20 63 75 72 72 65 6e 74 20 73 74 61 74 65  ts current state
1daa0 20 61 73 20 73 61 76 65 70 6f 69 6e 74 20 4e 2e   as savepoint N.
1dab0 20 41 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20   A..        /// 
1dac0 73 75 62 73 65 71 75 65 6e 74 20 63 61 6c 6c 20  subsequent call 
1dad0 74 6f 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 58  to xRollbackTo(X
1dae0 2c 52 29 20 6d 65 61 6e 73 20 74 68 61 74 20 74  ,R) means that t
1daf0 68 65 20 73 74 61 74 65 20 6f 66 20 74 68 65 0d  he state of the.
1db00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 69 72  .        /// vir
1db10 74 75 61 6c 20 74 61 62 6c 65 20 73 68 6f 75 6c  tual table shoul
1db20 64 20 72 65 74 75 72 6e 20 74 6f 20 77 68 61 74  d return to what
1db30 20 69 74 20 77 61 73 20 77 68 65 6e 20 78 53 61   it was when xSa
1db40 76 65 70 6f 69 6e 74 28 58 2c 52 29 20 77 61 73  vepoint(X,R) was
1db50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 61  ..        /// la
1db60 73 74 20 63 61 6c 6c 65 64 2e 20 54 68 65 20 63  st called. The c
1db70 61 6c 6c 20 74 6f 20 78 52 6f 6c 6c 62 61 63 6b  all to xRollback
1db80 54 6f 28 58 2c 52 29 20 77 69 6c 6c 20 69 6e 76  To(X,R) will inv
1db90 61 6c 69 64 61 74 65 20 61 6c 6c 0d 0a 20 20 20  alidate all..   
1dba0 20 20 20 20 20 2f 2f 2f 20 73 61 76 65 70 6f 69       /// savepoi
1dbb0 6e 74 73 20 77 69 74 68 20 4e 3e 52 3b 20 6e 6f  nts with N>R; no
1dbc0 6e 65 20 6f 66 20 74 68 65 20 69 6e 76 61 6c 69  ne of the invali
1dbd0 64 65 64 20 73 61 76 65 70 6f 69 6e 74 73 20 77  ded savepoints w
1dbe0 69 6c 6c 20 62 65 0d 0a 20 20 20 20 20 20 20 20  ill be..        
1dbf0 2f 2f 2f 20 72 6f 6c 6c 65 64 20 62 61 63 6b 20  /// rolled back 
1dc00 6f 72 20 72 65 6c 65 61 73 65 64 20 77 69 74 68  or released with
1dc10 6f 75 74 20 66 69 72 73 74 20 62 65 69 6e 67 20  out first being 
1dc20 72 65 69 6e 69 74 69 61 6c 69 7a 65 64 20 62 79  reinitialized by
1dc30 20 61 20 63 61 6c 6c 0d 0a 20 20 20 20 20 20 20   a call..       
1dc40 20 2f 2f 2f 20 74 6f 20 78 53 61 76 65 70 6f 69   /// to xSavepoi
1dc50 6e 74 28 29 2e 20 41 20 63 61 6c 6c 20 74 6f 20  nt(). A call to 
1dc60 78 52 65 6c 65 61 73 65 28 58 2c 4d 29 20 69 6e  xRelease(X,M) in
1dc70 76 61 6c 69 64 61 74 65 73 20 61 6c 6c 20 73 61  validates all sa
1dc80 76 65 70 6f 69 6e 74 73 0d 0a 20 20 20 20 20 20  vepoints..      
1dc90 20 20 2f 2f 2f 20 77 68 65 72 65 20 4e 3e 3d 4d    /// where N>=M
1dca0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1dcb0 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
1dcc0 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
1dcd0 20 20 20 20 2f 2f 2f 20 4e 6f 6e 65 20 6f 66 20      /// None of 
1dce0 74 68 65 20 78 53 61 76 65 70 6f 69 6e 74 28 29  the xSavepoint()
1dcf0 2c 20 78 52 65 6c 65 61 73 65 28 29 2c 20 6f 72  , xRelease(), or
1dd00 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 29 20 6d   xRollbackTo() m
1dd10 65 74 68 6f 64 73 20 77 69 6c 6c 0d 0a 20 20 20  ethods will..   
1dd20 20 20 20 20 20 2f 2f 2f 20 65 76 65 72 20 62 65       /// ever be
1dd30 20 63 61 6c 6c 65 64 20 65 78 63 65 70 74 20 69   called except i
1dd40 6e 20 62 65 74 77 65 65 6e 20 63 61 6c 6c 73 20  n between calls 
1dd50 74 6f 20 78 42 65 67 69 6e 28 29 20 61 6e 64 20  to xBegin() and 
1dd60 65 69 74 68 65 72 0d 0a 20 20 20 20 20 20 20 20  either..        
1dd70 2f 2f 2f 20 78 43 6f 6d 6d 69 74 28 29 20 6f 72  /// xCommit() or
1dd80 20 78 52 6f 6c 6c 62 61 63 6b 28 29 2e 0d 0a 20   xRollback()... 
1dd90 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1dda0 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
1ddb0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1ddc0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1ddd0 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20  ame="pVtab">..  
1dde0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
1ddf0 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
1de00 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62  the sqlite3_vtab
1de10 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75   derived structu
1de20 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
1de30 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1de40 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1de50 6d 65 3d 22 69 53 61 76 65 70 6f 69 6e 74 22 3e  me="iSavepoint">
1de60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1de70 69 73 20 69 73 20 61 6e 20 69 6e 74 65 67 65 72  is is an integer
1de80 20 69 64 65 6e 74 69 66 69 65 72 20 75 6e 64 65   identifier unde
1de90 72 20 77 68 69 63 68 20 74 68 65 20 74 68 65 20  r which the the 
1dea0 63 75 72 72 65 6e 74 20 73 74 61 74 65 20 6f 66  current state of
1deb0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68  ..        /// th
1dec0 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  e virtual table 
1ded0 73 68 6f 75 6c 64 20 62 65 20 73 61 76 65 64 2e  should be saved.
1dee0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1def0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1df00 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
1df10 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61         /// A sta
1df20 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74  ndard SQLite ret
1df30 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  urn code...     
1df40 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
1df50 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  >..        SQLit
1df60 65 45 72 72 6f 72 43 6f 64 65 20 78 53 61 76 65  eErrorCode xSave
1df70 70 6f 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20  point(..        
1df80 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
1df90 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ,..            i
1dfa0 6e 74 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20  nt iSavepoint.. 
1dfb0 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d             );...
1dfc0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1dfd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dfe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e010 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
1e020 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1e030 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20     /// <para>.. 
1e040 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 73 65         /// These
1e050 20 6d 65 74 68 6f 64 73 20 70 72 6f 76 69 64 65   methods provide
1e060 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
1e070 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  le implementatio
1e080 6e 20 61 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  n an..        //
1e090 2f 20 6f 70 70 6f 72 74 75 6e 69 74 79 20 74 6f  / opportunity to
1e0a0 20 69 6d 70 6c 65 6d 65 6e 74 20 6e 65 73 74 65   implement neste
1e0b0 64 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 2e 20  d transactions. 
1e0c0 54 68 65 79 20 61 72 65 20 61 6c 77 61 79 73 0d  They are always.
1e0d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 70 74  .        /// opt
1e0e0 69 6f 6e 61 6c 20 61 6e 64 20 77 69 6c 6c 20 6f  ional and will o
1e0f0 6e 6c 79 20 62 65 20 63 61 6c 6c 65 64 20 69 6e  nly be called in
1e100 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 20   SQLite version 
1e110 33 2e 37 2e 37 20 61 6e 64 20 6c 61 74 65 72 2e  3.7.7 and later.
1e120 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1e130 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
1e140 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20  // <para>..     
1e150 20 20 20 2f 2f 2f 20 57 68 65 6e 20 78 53 61 76     /// When xSav
1e160 65 70 6f 69 6e 74 28 58 2c 4e 29 20 69 73 20 69  epoint(X,N) is i
1e170 6e 76 6f 6b 65 64 2c 20 74 68 61 74 20 69 73 20  nvoked, that is 
1e180 61 20 73 69 67 6e 61 6c 20 74 6f 20 74 68 65 20  a signal to the 
1e190 76 69 72 74 75 61 6c 0d 0a 20 20 20 20 20 20 20  virtual..       
1e1a0 20 2f 2f 2f 20 74 61 62 6c 65 20 58 20 74 68 61   /// table X tha
1e1b0 74 20 69 74 20 73 68 6f 75 6c 64 20 73 61 76 65  t it should save
1e1c0 20 69 74 73 20 63 75 72 72 65 6e 74 20 73 74 61   its current sta
1e1d0 74 65 20 61 73 20 73 61 76 65 70 6f 69 6e 74 20  te as savepoint 
1e1e0 4e 2e 20 41 0d 0a 20 20 20 20 20 20 20 20 2f 2f  N. A..        //
1e1f0 2f 20 73 75 62 73 65 71 75 65 6e 74 20 63 61 6c  / subsequent cal
1e200 6c 20 74 6f 20 78 52 6f 6c 6c 62 61 63 6b 54 6f  l to xRollbackTo
1e210 28 58 2c 52 29 20 6d 65 61 6e 73 20 74 68 61 74  (X,R) means that
1e220 20 74 68 65 20 73 74 61 74 65 20 6f 66 20 74 68   the state of th
1e230 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76  e..        /// v
1e240 69 72 74 75 61 6c 20 74 61 62 6c 65 20 73 68 6f  irtual table sho
1e250 75 6c 64 20 72 65 74 75 72 6e 20 74 6f 20 77 68  uld return to wh
1e260 61 74 20 69 74 20 77 61 73 20 77 68 65 6e 20 78  at it was when x
1e270 53 61 76 65 70 6f 69 6e 74 28 58 2c 52 29 20 77  Savepoint(X,R) w
1e280 61 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  as..        /// 
1e290 6c 61 73 74 20 63 61 6c 6c 65 64 2e 20 54 68 65  last called. The
1e2a0 20 63 61 6c 6c 20 74 6f 20 78 52 6f 6c 6c 62 61   call to xRollba
1e2b0 63 6b 54 6f 28 58 2c 52 29 20 77 69 6c 6c 20 69  ckTo(X,R) will i
1e2c0 6e 76 61 6c 69 64 61 74 65 20 61 6c 6c 0d 0a 20  nvalidate all.. 
1e2d0 20 20 20 20 20 20 20 2f 2f 2f 20 73 61 76 65 70         /// savep
1e2e0 6f 69 6e 74 73 20 77 69 74 68 20 4e 3e 52 3b 20  oints with N>R; 
1e2f0 6e 6f 6e 65 20 6f 66 20 74 68 65 20 69 6e 76 61  none of the inva
1e300 6c 69 64 65 64 20 73 61 76 65 70 6f 69 6e 74 73  lided savepoints
1e310 20 77 69 6c 6c 20 62 65 0d 0a 20 20 20 20 20 20   will be..      
1e320 20 20 2f 2f 2f 20 72 6f 6c 6c 65 64 20 62 61 63    /// rolled bac
1e330 6b 20 6f 72 20 72 65 6c 65 61 73 65 64 20 77 69  k or released wi
1e340 74 68 6f 75 74 20 66 69 72 73 74 20 62 65 69 6e  thout first bein
1e350 67 20 72 65 69 6e 69 74 69 61 6c 69 7a 65 64 20  g reinitialized 
1e360 62 79 20 61 20 63 61 6c 6c 0d 0a 20 20 20 20 20  by a call..     
1e370 20 20 20 2f 2f 2f 20 74 6f 20 78 53 61 76 65 70     /// to xSavep
1e380 6f 69 6e 74 28 29 2e 20 41 20 63 61 6c 6c 20 74  oint(). A call t
1e390 6f 20 78 52 65 6c 65 61 73 65 28 58 2c 4d 29 20  o xRelease(X,M) 
1e3a0 69 6e 76 61 6c 69 64 61 74 65 73 20 61 6c 6c 20  invalidates all 
1e3b0 73 61 76 65 70 6f 69 6e 74 73 0d 0a 20 20 20 20  savepoints..    
1e3c0 20 20 20 20 2f 2f 2f 20 77 68 65 72 65 20 4e 3e      /// where N>
1e3d0 3d 4d 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  =M...        ///
1e3e0 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20   </para>..      
1e3f0 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20    /// <para>..  
1e400 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 65 20 6f        /// None o
1e410 66 20 74 68 65 20 78 53 61 76 65 70 6f 69 6e 74  f the xSavepoint
1e420 28 29 2c 20 78 52 65 6c 65 61 73 65 28 29 2c 20  (), xRelease(), 
1e430 6f 72 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 29  or xRollbackTo()
1e440 20 6d 65 74 68 6f 64 73 20 77 69 6c 6c 0d 0a 20   methods will.. 
1e450 20 20 20 20 20 20 20 2f 2f 2f 20 65 76 65 72 20         /// ever 
1e460 62 65 20 63 61 6c 6c 65 64 20 65 78 63 65 70 74  be called except
1e470 20 69 6e 20 62 65 74 77 65 65 6e 20 63 61 6c 6c   in between call
1e480 73 20 74 6f 20 78 42 65 67 69 6e 28 29 20 61 6e  s to xBegin() an
1e490 64 20 65 69 74 68 65 72 0d 0a 20 20 20 20 20 20  d either..      
1e4a0 20 20 2f 2f 2f 20 78 43 6f 6d 6d 69 74 28 29 20    /// xCommit() 
1e4b0 6f 72 20 78 52 6f 6c 6c 62 61 63 6b 28 29 2e 0d  or xRollback()..
1e4c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1e4d0 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
1e4e0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1e4f0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1e500 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a   name="pVtab">..
1e510 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1e520 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
1e530 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74  o the sqlite3_vt
1e540 61 62 20 64 65 72 69 76 65 64 20 73 74 72 75 63  ab derived struc
1e550 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ture...        /
1e560 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1e570 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1e580 6e 61 6d 65 3d 22 69 53 61 76 65 70 6f 69 6e 74  name="iSavepoint
1e590 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
1e5a0 54 68 69 73 20 69 73 20 61 6e 20 69 6e 74 65 67  This is an integ
1e5b0 65 72 20 75 73 65 64 20 74 6f 20 69 6e 64 69 63  er used to indic
1e5c0 61 74 65 20 74 68 61 74 20 61 6e 79 20 73 61 76  ate that any sav
1e5d0 65 64 20 73 74 61 74 65 73 20 77 69 74 68 20 61  ed states with a
1e5e0 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  n..        /// i
1e5f0 64 65 6e 74 69 66 69 65 72 20 67 72 65 61 74 65  dentifier greate
1e600 72 20 74 68 61 6e 20 6f 72 20 65 71 75 61 6c 20  r than or equal 
1e610 74 6f 20 74 68 69 73 20 73 68 6f 75 6c 64 20 62  to this should b
1e620 65 20 64 65 6c 65 74 65 64 20 62 79 20 74 68 65  e deleted by the
1e630 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 69  ..        /// vi
1e640 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20  rtual table...  
1e650 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1e660 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
1e670 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
1e680 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72     /// A standar
1e690 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20  d SQLite return 
1e6a0 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  code...        /
1e6b0 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
1e6c0 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72         SQLiteErr
1e6d0 6f 72 43 6f 64 65 20 78 52 65 6c 65 61 73 65 28  orCode xRelease(
1e6e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
1e6f0 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
1e700 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 53 61           int iSa
1e710 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20 20 20 20  vepoint..       
1e720 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20       );....     
1e730 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1e740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1e780 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
1e790 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1e7a0 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
1e7b0 20 2f 2f 2f 20 54 68 65 73 65 20 6d 65 74 68 6f   /// These metho
1e7c0 64 73 20 70 72 6f 76 69 64 65 20 74 68 65 20 76  ds provide the v
1e7d0 69 72 74 75 61 6c 20 74 61 62 6c 65 20 69 6d 70  irtual table imp
1e7e0 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 61 6e 0d 0a  lementation an..
1e7f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 70 70 6f          /// oppo
1e800 72 74 75 6e 69 74 79 20 74 6f 20 69 6d 70 6c 65  rtunity to imple
1e810 6d 65 6e 74 20 6e 65 73 74 65 64 20 74 72 61 6e  ment nested tran
1e820 73 61 63 74 69 6f 6e 73 2e 20 54 68 65 79 20 61  sactions. They a
1e830 72 65 20 61 6c 77 61 79 73 0d 0a 20 20 20 20 20  re always..     
1e840 20 20 20 2f 2f 2f 20 6f 70 74 69 6f 6e 61 6c 20     /// optional 
1e850 61 6e 64 20 77 69 6c 6c 20 6f 6e 6c 79 20 62 65  and will only be
1e860 20 63 61 6c 6c 65 64 20 69 6e 20 53 51 4c 69 74   called in SQLit
1e870 65 20 76 65 72 73 69 6f 6e 20 33 2e 37 2e 37 20  e version 3.7.7 
1e880 61 6e 64 20 6c 61 74 65 72 2e 0d 0a 20 20 20 20  and later...    
1e890 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d      /// </para>.
1e8a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1e8b0 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
1e8c0 20 57 68 65 6e 20 78 53 61 76 65 70 6f 69 6e 74   When xSavepoint
1e8d0 28 58 2c 4e 29 20 69 73 20 69 6e 76 6f 6b 65 64  (X,N) is invoked
1e8e0 2c 20 74 68 61 74 20 69 73 20 61 20 73 69 67 6e  , that is a sign
1e8f0 61 6c 20 74 6f 20 74 68 65 20 76 69 72 74 75 61  al to the virtua
1e900 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  l..        /// t
1e910 61 62 6c 65 20 58 20 74 68 61 74 20 69 74 20 73  able X that it s
1e920 68 6f 75 6c 64 20 73 61 76 65 20 69 74 73 20 63  hould save its c
1e930 75 72 72 65 6e 74 20 73 74 61 74 65 20 61 73 20  urrent state as 
1e940 73 61 76 65 70 6f 69 6e 74 20 4e 2e 20 41 0d 0a  savepoint N. A..
1e950 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 75 62 73          /// subs
1e960 65 71 75 65 6e 74 20 63 61 6c 6c 20 74 6f 20 78  equent call to x
1e970 52 6f 6c 6c 62 61 63 6b 54 6f 28 58 2c 52 29 20  RollbackTo(X,R) 
1e980 6d 65 61 6e 73 20 74 68 61 74 20 74 68 65 20 73  means that the s
1e990 74 61 74 65 20 6f 66 20 74 68 65 0d 0a 20 20 20  tate of the..   
1e9a0 20 20 20 20 20 2f 2f 2f 20 76 69 72 74 75 61 6c       /// virtual
1e9b0 20 74 61 62 6c 65 20 73 68 6f 75 6c 64 20 72 65   table should re
1e9c0 74 75 72 6e 20 74 6f 20 77 68 61 74 20 69 74 20  turn to what it 
1e9d0 77 61 73 20 77 68 65 6e 20 78 53 61 76 65 70 6f  was when xSavepo
1e9e0 69 6e 74 28 58 2c 52 29 20 77 61 73 0d 0a 20 20  int(X,R) was..  
1e9f0 20 20 20 20 20 20 2f 2f 2f 20 6c 61 73 74 20 63        /// last c
1ea00 61 6c 6c 65 64 2e 20 54 68 65 20 63 61 6c 6c 20  alled. The call 
1ea10 74 6f 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 58  to xRollbackTo(X
1ea20 2c 52 29 20 77 69 6c 6c 20 69 6e 76 61 6c 69 64  ,R) will invalid
1ea30 61 74 65 20 61 6c 6c 0d 0a 20 20 20 20 20 20 20  ate all..       
1ea40 20 2f 2f 2f 20 73 61 76 65 70 6f 69 6e 74 73 20   /// savepoints 
1ea50 77 69 74 68 20 4e 3e 52 3b 20 6e 6f 6e 65 20 6f  with N>R; none o
1ea60 66 20 74 68 65 20 69 6e 76 61 6c 69 64 65 64 20  f the invalided 
1ea70 73 61 76 65 70 6f 69 6e 74 73 20 77 69 6c 6c 20  savepoints will 
1ea80 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  be..        /// 
1ea90 72 6f 6c 6c 65 64 20 62 61 63 6b 20 6f 72 20 72  rolled back or r
1eaa0 65 6c 65 61 73 65 64 20 77 69 74 68 6f 75 74 20  eleased without 
1eab0 66 69 72 73 74 20 62 65 69 6e 67 20 72 65 69 6e  first being rein
1eac0 69 74 69 61 6c 69 7a 65 64 20 62 79 20 61 20 63  itialized by a c
1ead0 61 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  all..        ///
1eae0 20 74 6f 20 78 53 61 76 65 70 6f 69 6e 74 28 29   to xSavepoint()
1eaf0 2e 20 41 20 63 61 6c 6c 20 74 6f 20 78 52 65 6c  . A call to xRel
1eb00 65 61 73 65 28 58 2c 4d 29 20 69 6e 76 61 6c 69  ease(X,M) invali
1eb10 64 61 74 65 73 20 61 6c 6c 20 73 61 76 65 70 6f  dates all savepo
1eb20 69 6e 74 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ints..        //
1eb30 2f 20 77 68 65 72 65 20 4e 3e 3d 4d 2e 0d 0a 20  / where N>=M... 
1eb40 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1eb50 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
1eb60 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
1eb70 2f 2f 2f 20 4e 6f 6e 65 20 6f 66 20 74 68 65 20  /// None of the 
1eb80 78 53 61 76 65 70 6f 69 6e 74 28 29 2c 20 78 52  xSavepoint(), xR
1eb90 65 6c 65 61 73 65 28 29 2c 20 6f 72 20 78 52 6f  elease(), or xRo
1eba0 6c 6c 62 61 63 6b 54 6f 28 29 20 6d 65 74 68 6f  llbackTo() metho
1ebb0 64 73 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20 20  ds will..       
1ebc0 20 2f 2f 2f 20 65 76 65 72 20 62 65 20 63 61 6c   /// ever be cal
1ebd0 6c 65 64 20 65 78 63 65 70 74 20 69 6e 20 62 65  led except in be
1ebe0 74 77 65 65 6e 20 63 61 6c 6c 73 20 74 6f 20 78  tween calls to x
1ebf0 42 65 67 69 6e 28 29 20 61 6e 64 20 65 69 74 68  Begin() and eith
1ec00 65 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  er..        /// 
1ec10 78 43 6f 6d 6d 69 74 28 29 20 6f 72 20 78 52 6f  xCommit() or xRo
1ec20 6c 6c 62 61 63 6b 28 29 2e 0d 0a 20 20 20 20 20  llback()...     
1ec30 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a     /// </para>..
1ec40 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
1ec50 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1ec60 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1ec70 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20  "pVtab">..      
1ec80 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
1ec90 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
1eca0 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72  sqlite3_vtab der
1ecb0 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d  ived structure..
1ecc0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1ecd0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
1ece0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1ecf0 69 53 61 76 65 70 6f 69 6e 74 22 3e 0d 0a 20 20  iSavepoint">..  
1ed00 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69        /// This i
1ed10 73 20 61 6e 20 69 6e 74 65 67 65 72 20 69 64 65  s an integer ide
1ed20 6e 74 69 66 69 65 72 20 75 73 65 64 20 74 6f 20  ntifier used to 
1ed30 73 70 65 63 69 66 79 20 61 20 73 70 65 63 69 66  specify a specif
1ed40 69 63 20 73 61 76 65 64 0d 0a 20 20 20 20 20 20  ic saved..      
1ed50 20 20 2f 2f 2f 20 73 74 61 74 65 20 66 6f 72 20    /// state for 
1ed60 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c  the virtual tabl
1ed70 65 20 66 6f 72 20 69 74 20 74 6f 20 72 65 73 74  e for it to rest
1ed80 6f 72 65 20 69 74 73 65 6c 66 20 62 61 63 6b 20  ore itself back 
1ed90 74 6f 2c 20 77 68 69 63 68 0d 0a 20 20 20 20 20  to, which..     
1eda0 20 20 20 2f 2f 2f 20 73 68 6f 75 6c 64 20 61 6c     /// should al
1edb0 73 6f 20 68 61 76 65 20 74 68 65 20 65 66 66 65  so have the effe
1edc0 63 74 20 6f 66 20 64 65 6c 65 74 69 6e 67 20 61  ct of deleting a
1edd0 6c 6c 20 73 61 76 65 64 20 73 74 61 74 65 73 20  ll saved states 
1ede0 77 69 74 68 20 61 6e 0d 0a 20 20 20 20 20 20 20  with an..       
1edf0 20 2f 2f 2f 20 69 6e 74 65 67 65 72 20 69 64 65   /// integer ide
1ee00 6e 74 69 66 69 65 72 20 67 72 65 61 74 65 72 20  ntifier greater 
1ee10 74 68 61 6e 20 74 68 69 73 20 6f 6e 65 2e 0d 0a  than this one...
1ee20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1ee30 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
1ee40 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
1ee50 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64       /// A stand
1ee60 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72  ard SQLite retur
1ee70 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  n code...       
1ee80 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
1ee90 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45  .        SQLiteE
1eea0 72 72 6f 72 43 6f 64 65 20 78 52 6f 6c 6c 62 61  rrorCode xRollba
1eeb0 63 6b 54 6f 28 0d 0a 20 20 20 20 20 20 20 20 20  ckTo(..         
1eec0 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c     IntPtr pVtab,
1eed0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
1eee0 74 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20  t iSavepoint..  
1eef0 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 20 20            );..  
1ef00 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67    }..    #endreg
1ef10 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
1ef20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ef30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ef40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ef50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ef60 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
1ef70 65 67 69 6f 6e 20 49 53 51 4c 69 74 65 4d 61 6e  egion ISQLiteMan
1ef80 61 67 65 64 4d 6f 64 75 6c 65 20 49 6e 74 65 72  agedModule Inter
1ef90 66 61 63 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  face..    /// <s
1efa0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
1efb0 20 54 68 69 73 20 69 6e 74 65 72 66 61 63 65 20   This interface 
1efc0 72 65 70 72 65 73 65 6e 74 73 20 61 20 76 69 72  represents a vir
1efd0 74 75 61 6c 20 74 61 62 6c 65 20 69 6d 70 6c 65  tual table imple
1efe0 6d 65 6e 74 61 74 69 6f 6e 20 77 72 69 74 74 65  mentation writte
1eff0 6e 20 69 6e 0d 0a 20 20 20 20 2f 2f 2f 20 6d 61  n in..    /// ma
1f000 6e 61 67 65 64 20 63 6f 64 65 2e 0d 0a 20 20 20  naged code...   
1f010 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1f020 0a 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 65  .    public inte
1f030 72 66 61 63 65 20 49 53 51 4c 69 74 65 4d 61 6e  rface ISQLiteMan
1f040 61 67 65 64 4d 6f 64 75 6c 65 0d 0a 20 20 20 20  agedModule..    
1f050 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  {..        /// <
1f060 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1f070 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 6e 6f    /// Returns no
1f080 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 73 63  n-zero if the sc
1f090 68 65 6d 61 20 66 6f 72 20 74 68 65 20 76 69 72  hema for the vir
1f0a0 74 75 61 6c 20 74 61 62 6c 65 20 68 61 73 20 62  tual table has b
1f0b0 65 65 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  een..        ///
1f0c0 20 64 65 63 6c 61 72 65 64 2e 0d 0a 20 20 20 20   declared...    
1f0d0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1f0e0 79 3e 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c  y>..        bool
1f0f0 20 44 65 63 6c 61 72 65 64 20 7b 20 67 65 74 3b   Declared { get;
1f100 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f150 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1f160 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1f170 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65 74 75          /// Retu
1f180 72 6e 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20  rns the name of 
1f190 74 68 65 20 6d 6f 64 75 6c 65 20 61 73 20 69 74  the module as it
1f1a0 20 77 61 73 20 72 65 67 69 73 74 65 72 65 64 20   was registered 
1f1b0 77 69 74 68 20 74 68 65 20 53 51 4c 69 74 65 0d  with the SQLite.
1f1c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 72  .        /// cor
1f1d0 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20  e library...    
1f1e0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1f1f0 79 3e 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69  y>..        stri
1f200 6e 67 20 4e 61 6d 65 20 7b 20 67 65 74 3b 20 7d  ng Name { get; }
1f210 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1f220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f260 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
1f270 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
1f280 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d        /// This m
1f290 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20  ethod is called 
1f2a0 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74  in response to t
1f2b0 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
1f2c0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
1f2d0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
1f2e0 43 72 65 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f  Create" /> metho
1f2f0 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
1f300 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1f310 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1f320 61 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f 6e 22  ame="connection"
1f330 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1f340 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
1f350 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 22 20  LiteConnection" 
1f360 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
1f370 63 65 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  ce associated wi
1f380 74 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  th..        /// 
1f390 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c  the virtual tabl
1f3a0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
1f3b0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
1f3c0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1f3d0 65 3d 22 70 43 6c 69 65 6e 74 44 61 74 61 22 3e  e="pClientData">
1f3e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1f3f0 65 20 6e 61 74 69 76 65 20 75 73 65 72 2d 64 61  e native user-da
1f400 74 61 20 70 6f 69 6e 74 65 72 20 61 73 73 6f 63  ta pointer assoc
1f410 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20  iated with this 
1f420 6d 6f 64 75 6c 65 2c 20 61 73 20 69 74 20 77 61  module, as it wa
1f430 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70  s..        /// p
1f440 72 6f 76 69 64 65 64 20 74 6f 20 74 68 65 20 53  rovided to the S
1f450 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
1f460 72 79 20 77 68 65 6e 20 74 68 65 20 6e 61 74 69  ry when the nati
1f470 76 65 20 6d 6f 64 75 6c 65 20 69 6e 73 74 61 6e  ve module instan
1f480 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ce..        /// 
1f490 77 61 73 20 63 72 65 61 74 65 64 2e 0d 0a 20 20  was created...  
1f4a0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1f4b0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
1f4c0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67  <param name="arg
1f4d0 75 6d 65 6e 74 73 22 3e 0d 0a 20 20 20 20 20 20  uments">..      
1f4e0 20 20 2f 2f 2f 20 54 68 65 20 6d 6f 64 75 6c 65    /// The module
1f4f0 20 6e 61 6d 65 2c 20 64 61 74 61 62 61 73 65 20   name, database 
1f500 6e 61 6d 65 2c 20 76 69 72 74 75 61 6c 20 74 61  name, virtual ta
1f510 62 6c 65 20 6e 61 6d 65 2c 20 61 6e 64 20 61 6c  ble name, and al
1f520 6c 20 6f 74 68 65 72 0d 0a 20 20 20 20 20 20 20  l other..       
1f530 20 2f 2f 2f 20 61 72 67 75 6d 65 6e 74 73 20 70   /// arguments p
1f540 61 73 73 65 64 20 74 6f 20 74 68 65 20 43 52 45  assed to the CRE
1f550 41 54 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c  ATE VIRTUAL TABL
1f560 45 20 73 74 61 74 65 6d 65 6e 74 2e 0d 0a 20 20  E statement...  
1f570 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1f580 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
1f590 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62  <param name="tab
1f5a0 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  le">..        //
1f5b0 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20  / Upon success, 
1f5c0 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d  this parameter m
1f5d0 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64 20  ust be modified 
1f5e0 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a  to contain the..
1f5f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
1f600 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72   cref="SQLiteVir
1f610 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62  tualTable" /> ob
1f620 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73  ject instance as
1f630 73 6f 63 69 61 74 65 64 20 77 69 74 68 0d 0a 20  sociated with.. 
1f640 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 76         /// the v
1f650 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20  irtual table... 
1f660 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1f670 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1f680 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 65 72   <param name="er
1f690 72 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ror">..        /
1f6a0 2f 2f 20 55 70 6f 6e 20 66 61 69 6c 75 72 65 2c  // Upon failure,
1f6b0 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20   this parameter 
1f6c0 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64  must be modified
1f6d0 20 74 6f 20 63 6f 6e 74 61 69 6e 20 61 6e 20 65   to contain an e
1f6e0 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rror..        //
1f6f0 2f 20 6d 65 73 73 61 67 65 2e 0d 0a 20 20 20 20  / message...    
1f700 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1f710 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
1f720 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1f730 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20   /// A standard 
1f740 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f  SQLite return co
1f750 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de...        ///
1f760 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
1f770 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72       SQLiteError
1f780 43 6f 64 65 20 43 72 65 61 74 65 28 0d 0a 20 20  Code Create(..  
1f790 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
1f7a0 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e 65  Connection conne
1f7b0 63 74 69 6f 6e 2c 20 20 2f 2a 20 69 6e 20 2a 2f  ction,  /* in */
1f7c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
1f7d0 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61  tPtr pClientData
1f7e0 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69  ,           /* i
1f7f0 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
1f800 20 20 73 74 72 69 6e 67 5b 5d 20 61 72 67 75 6d    string[] argum
1f810 65 6e 74 73 2c 20 20 20 20 20 20 20 20 20 20 20  ents,           
1f820 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
1f830 20 20 20 20 20 20 72 65 66 20 53 51 4c 69 74 65        ref SQLite
1f840 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62  VirtualTable tab
1f850 6c 65 2c 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20  le, /* out */.. 
1f860 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 73             ref s
1f870 74 72 69 6e 67 20 65 72 72 6f 72 20 20 20 20 20  tring error     
1f880 20 20 20 20 20 20 20 20 20 2f 2a 20 6f 75 74 20           /* out 
1f890 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
1f8a0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  );....        //
1f8b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f8c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f8d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f8e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f8f0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1f900 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1f910 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
1f920 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65   method is calle
1f930 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f  d in response to
1f940 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
1f950 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  / <see cref="ISQ
1f960 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
1f970 2e 78 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65  .xConnect" /> me
1f980 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  thod...        /
1f990 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1f9a0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1f9b0 6d 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63 74 69  m name="connecti
1f9c0 6f 6e 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on">..        //
1f9d0 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
1f9e0 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f  "SQLiteConnectio
1f9f0 6e 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  n" /> object ins
1fa00 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64  tance associated
1fa10 20 77 69 74 68 0d 0a 20 20 20 20 20 20 20 20 2f   with..        /
1fa20 2f 2f 20 74 68 65 20 76 69 72 74 75 61 6c 20 74  // the virtual t
1fa30 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  able...        /
1fa40 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1fa50 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1fa60 6e 61 6d 65 3d 22 70 43 6c 69 65 6e 74 44 61 74  name="pClientDat
1fa70 61 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  a">..        ///
1fa80 20 54 68 65 20 6e 61 74 69 76 65 20 75 73 65 72   The native user
1fa90 2d 64 61 74 61 20 70 6f 69 6e 74 65 72 20 61 73  -data pointer as
1faa0 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
1fab0 69 73 20 6d 6f 64 75 6c 65 2c 20 61 73 20 69 74  is module, as it
1fac0 20 77 61 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f   was..        //
1fad0 2f 20 70 72 6f 76 69 64 65 64 20 74 6f 20 74 68  / provided to th
1fae0 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69  e SQLite core li
1faf0 62 72 61 72 79 20 77 68 65 6e 20 74 68 65 20 6e  brary when the n
1fb00 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 69 6e 73  ative module ins
1fb10 74 61 6e 63 65 0d 0a 20 20 20 20 20 20 20 20 2f  tance..        /
1fb20 2f 2f 20 77 61 73 20 63 72 65 61 74 65 64 2e 0d  // was created..
1fb30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1fb40 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
1fb50 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1fb60 61 72 67 75 6d 65 6e 74 73 22 3e 0d 0a 20 20 20  arguments">..   
1fb70 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 6f 64       /// The mod
1fb80 75 6c 65 20 6e 61 6d 65 2c 20 64 61 74 61 62 61  ule name, databa
1fb90 73 65 20 6e 61 6d 65 2c 20 76 69 72 74 75 61 6c  se name, virtual
1fba0 20 74 61 62 6c 65 20 6e 61 6d 65 2c 20 61 6e 64   table name, and
1fbb0 20 61 6c 6c 20 6f 74 68 65 72 0d 0a 20 20 20 20   all other..    
1fbc0 20 20 20 20 2f 2f 2f 20 61 72 67 75 6d 65 6e 74      /// argument
1fbd0 73 20 70 61 73 73 65 64 20 74 6f 20 74 68 65 20  s passed to the 
1fbe0 43 52 45 41 54 45 20 56 49 52 54 55 41 4c 20 54  CREATE VIRTUAL T
1fbf0 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 2e 0d  ABLE statement..
1fc00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1fc10 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
1fc20 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1fc30 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20  table">..       
1fc40 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73   /// Upon succes
1fc50 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65  s, this paramete
1fc60 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69  r must be modifi
1fc70 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68  ed to contain th
1fc80 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
1fc90 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
1fca0 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e  VirtualTable" />
1fcb0 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
1fcc0 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
1fcd0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68  ..        /// th
1fce0 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e  e virtual table.
1fcf0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1fd00 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1fd10 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1fd20 22 65 72 72 6f 72 22 3e 0d 0a 20 20 20 20 20 20  "error">..      
1fd30 20 20 2f 2f 2f 20 55 70 6f 6e 20 66 61 69 6c 75    /// Upon failu
1fd40 72 65 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74  re, this paramet
1fd50 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66  er must be modif
1fd60 69 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20 61  ied to contain a
1fd70 6e 20 65 72 72 6f 72 0d 0a 20 20 20 20 20 20 20  n error..       
1fd80 20 2f 2f 2f 20 6d 65 73 73 61 67 65 2e 0d 0a 20   /// message... 
1fd90 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1fda0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1fdb0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
1fdc0 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61      /// A standa
1fdd0 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e  rd SQLite return
1fde0 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
1fdf0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
1fe00 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72          SQLiteEr
1fe10 72 6f 72 43 6f 64 65 20 43 6f 6e 6e 65 63 74 28  rorCode Connect(
1fe20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
1fe30 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 63  LiteConnection c
1fe40 6f 6e 6e 65 63 74 69 6f 6e 2c 20 20 2f 2a 20 69  onnection,  /* i
1fe50 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
1fe60 20 20 49 6e 74 50 74 72 20 70 43 6c 69 65 6e 74    IntPtr pClient
1fe70 44 61 74 61 2c 20 20 20 20 20 20 20 20 20 20 20  Data,           
1fe80 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
1fe90 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 61        string[] a
1fea0 72 67 75 6d 65 6e 74 73 2c 20 20 20 20 20 20 20  rguments,       
1feb0 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20      /* in */..  
1fec0 20 20 20 20 20 20 20 20 20 20 72 65 66 20 53 51            ref SQ
1fed0 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
1fee0 20 74 61 62 6c 65 2c 20 2f 2a 20 6f 75 74 20 2a   table, /* out *
1fef0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  /..            r
1ff00 65 66 20 73 74 72 69 6e 67 20 65 72 72 6f 72 20  ef string error 
1ff10 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20               /* 
1ff20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  out */..        
1ff30 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20      );....      
1ff40 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1ff50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ff60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ff70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ff80 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1ff90 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
1ffa0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1ffb0 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63  This method is c
1ffc0 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73  alled in respons
1ffd0 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  e to the..      
1ffe0 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
1fff0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
20000 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 22  dule.xBestIndex"
20010 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
20020 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
20030 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
20040 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61   <param name="ta
20050 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ble">..        /
20060 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
20070 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  ="SQLiteVirtualT
20080 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20  able" /> object 
20090 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61  instance associa
200a0 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ted..        ///
200b0 20 77 69 74 68 20 74 68 69 73 20 76 69 72 74 75   with this virtu
200c0 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20  al table...     
200d0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
200e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
200f0 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78 22  ram name="index"
20100 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
20110 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
20120 4c 69 74 65 49 6e 64 65 78 22 20 2f 3e 20 6f 62  LiteIndex" /> ob
20130 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 63 6f  ject instance co
20140 6e 74 61 69 6e 69 6e 67 20 61 6c 6c 20 74 68 65  ntaining all the
20150 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 61  ..        /// da
20160 74 61 20 66 6f 72 20 74 68 65 20 69 6e 70 75 74  ta for the input
20170 73 20 61 6e 64 20 6f 75 74 70 75 74 73 20 72 65  s and outputs re
20180 6c 61 74 69 6e 67 20 74 6f 20 69 6e 64 65 78 20  lating to index 
20190 73 65 6c 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20  selection...    
201a0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
201b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
201c0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
201d0 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20   /// A standard 
201e0 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f  SQLite return co
201f0 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de...        ///
20200 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
20210 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72       SQLiteError
20220 43 6f 64 65 20 42 65 73 74 49 6e 64 65 78 28 0d  Code BestIndex(.
20230 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
20240 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20  iteVirtualTable 
20250 74 61 62 6c 65 2c 20 2f 2a 20 69 6e 20 2a 2f 0d  table, /* in */.
20260 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
20270 69 74 65 49 6e 64 65 78 20 69 6e 64 65 78 20 20  iteIndex index  
20280 20 20 20 20 20 20 20 2f 2a 20 69 6e 2c 20 6f 75         /* in, ou
20290 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  t */..          
202a0 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    );....        
202b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
202c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
202d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
202e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
202f0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
20300 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
20310 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
20320 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c  is method is cal
20330 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20  led in response 
20340 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
20350 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
20360 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
20370 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 22 20  le.xDisconnect" 
20380 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
20390 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
203a0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
203b0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62  <param name="tab
203c0 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  le">..        //
203d0 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
203e0 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  "SQLiteVirtualTa
203f0 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  ble" /> object i
20400 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74  nstance associat
20410 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
20420 77 69 74 68 20 74 68 69 73 20 76 69 72 74 75 61  with this virtua
20430 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  l table...      
20440 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
20450 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
20460 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
20470 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51  // A standard SQ
20480 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65  Lite return code
20490 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
204a0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
204b0 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f     SQLiteErrorCo
204c0 64 65 20 44 69 73 63 6f 6e 6e 65 63 74 28 0d 0a  de Disconnect(..
204d0 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
204e0 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74  teVirtualTable t
204f0 61 62 6c 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  able /* in */.. 
20500 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d             );...
20510 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
20520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20560 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
20570 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
20580 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68     /// This meth
20590 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20  od is called in 
205a0 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d  response to the.
205b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
205c0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
205d0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 65 73  ativeModule.xDes
205e0 74 72 6f 79 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  troy" /> method.
205f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
20600 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
20610 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
20620 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20  e="table">..    
20630 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
20640 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72   cref="SQLiteVir
20650 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62  tualTable" /> ob
20660 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73  ject instance as
20670 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20  sociated..      
20680 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20    /// with this 
20690 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a  virtual table...
206a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
206b0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
206c0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
206d0 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64       /// A stand
206e0 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72  ard SQLite retur
206f0 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  n code...       
20700 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
20710 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45  .        SQLiteE
20720 72 72 6f 72 43 6f 64 65 20 44 65 73 74 72 6f 79  rrorCode Destroy
20730 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
20740 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
20750 65 20 74 61 62 6c 65 20 2f 2a 20 69 6e 20 2a 2f  e table /* in */
20760 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b  ..            );
20770 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
20780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
207a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
207b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
207c0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
207d0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
207e0 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d        /// This m
207f0 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20  ethod is called 
20800 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74  in response to t
20810 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
20820 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
20830 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
20840 4f 70 65 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  Open" /> method.
20850 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
20860 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
20870 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
20880 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20  e="table">..    
20890 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
208a0 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72   cref="SQLiteVir
208b0 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62  tualTable" /> ob
208c0 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73  ject instance as
208d0 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20  sociated..      
208e0 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20    /// with this 
208f0 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a  virtual table...
20900 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
20910 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
20920 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63  / <param name="c
20930 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20  ursor">..       
20940 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73   /// Upon succes
20950 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65  s, this paramete
20960 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69  r must be modifi
20970 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68  ed to contain th
20980 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
20990 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
209a0 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73  VirtualTableCurs
209b0 6f 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  or" /> object in
209c0 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65  stance associate
209d0 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77  d..        /// w
209e0 69 74 68 20 74 68 65 20 6e 65 77 6c 79 20 6f 70  ith the newly op
209f0 65 6e 65 64 20 76 69 72 74 75 61 6c 20 74 61 62  ened virtual tab
20a00 6c 65 20 63 75 72 73 6f 72 2e 0d 0a 20 20 20 20  le cursor...    
20a10 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
20a20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
20a30 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
20a40 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20   /// A standard 
20a50 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f  SQLite return co
20a60 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de...        ///
20a70 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
20a80 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72       SQLiteError
20a90 43 6f 64 65 20 4f 70 65 6e 28 0d 0a 20 20 20 20  Code Open(..    
20aa0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69          SQLiteVi
20ab0 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65  rtualTable table
20ac0 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69  ,           /* i
20ad0 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
20ae0 20 20 72 65 66 20 53 51 4c 69 74 65 56 69 72 74    ref SQLiteVirt
20af0 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 20 63  ualTableCursor c
20b00 75 72 73 6f 72 20 2f 2a 20 6f 75 74 20 2a 2f 0d  ursor /* out */.
20b10 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d  .            );.
20b20 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
20b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20b70 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
20b80 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
20b90 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65       /// This me
20ba0 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69  thod is called i
20bb0 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68  n response to th
20bc0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
20bd0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
20be0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
20bf0 6c 6f 73 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  lose" /> method.
20c00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
20c10 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
20c20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
20c30 65 3d 22 63 75 72 73 6f 72 22 3e 0d 0a 20 20 20  e="cursor">..   
20c40 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
20c50 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69  e cref="SQLiteVi
20c60 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72  rtualTableCursor
20c70 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
20c80 61 6e 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ance..        //
20c90 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  / associated wit
20ca0 68 20 74 68 65 20 70 72 65 76 69 6f 75 73 6c 79  h the previously
20cb0 20 6f 70 65 6e 65 64 20 76 69 72 74 75 61 6c 20   opened virtual 
20cc0 74 61 62 6c 65 20 63 75 72 73 6f 72 20 74 6f 20  table cursor to 
20cd0 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  be..        /// 
20ce0 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  used...        /
20cf0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
20d00 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
20d10 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
20d20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74  A standard SQLit
20d30 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a  e return code...
20d40 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
20d50 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
20d60 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
20d70 43 6c 6f 73 65 28 0d 0a 20 20 20 20 20 20 20 20  Close(..        
20d80 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61      SQLiteVirtua
20d90 6c 54 61 62 6c 65 43 75 72 73 6f 72 20 63 75 72  lTableCursor cur
20da0 73 6f 72 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20  sor /* in */..  
20db0 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a            );....
20dc0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
20dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
20e10 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
20e20 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
20e30 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
20e40 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72  d is called in r
20e50 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a  esponse to the..
20e60 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
20e70 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
20e80 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74  tiveModule.xFilt
20e90 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  er" /> method...
20ea0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
20eb0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
20ec0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
20ed0 22 63 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20  "cursor">..     
20ee0 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
20ef0 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74  cref="SQLiteVirt
20f00 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 22 20  ualTableCursor" 
20f10 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
20f20 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ce..        /// 
20f30 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
20f40 74 68 65 20 70 72 65 76 69 6f 75 73 6c 79 20 6f  the previously o
20f50 70 65 6e 65 64 20 76 69 72 74 75 61 6c 20 74 61  pened virtual ta
20f60 62 6c 65 20 63 75 72 73 6f 72 20 74 6f 20 62 65  ble cursor to be
20f70 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 75 73  ..        /// us
20f80 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
20f90 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
20fa0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
20fb0 6d 65 3d 22 69 6e 64 65 78 4e 75 6d 62 65 72 22  me="indexNumber"
20fc0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
20fd0 75 6d 62 65 72 20 75 73 65 64 20 74 6f 20 68 65  umber used to he
20fe0 6c 70 20 69 64 65 6e 74 69 66 79 20 74 68 65 20  lp identify the 
20ff0 73 65 6c 65 63 74 65 64 20 69 6e 64 65 78 2e 0d  selected index..
21000 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
21010 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
21020 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
21030 69 6e 64 65 78 53 74 72 69 6e 67 22 3e 0d 0a 20  indexString">.. 
21040 20 20 20 20 20 20 20 2f 2f 2f 20 53 74 72 69 6e         /// Strin
21050 67 20 75 73 65 64 20 74 6f 20 68 65 6c 70 20 69  g used to help i
21060 64 65 6e 74 69 66 79 20 74 68 65 20 73 65 6c 65  dentify the sele
21070 63 74 65 64 20 69 6e 64 65 78 2e 0d 0a 20 20 20  cted index...   
21080 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
21090 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
210a0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75  param name="valu
210b0 65 73 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  es">..        //
210c0 2f 20 54 68 65 20 76 61 6c 75 65 73 20 63 6f 72  / The values cor
210d0 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 65 61  responding to ea
210e0 63 68 20 63 6f 6c 75 6d 6e 20 69 6e 20 74 68 65  ch column in the
210f0 20 73 65 6c 65 63 74 65 64 20 69 6e 64 65 78 2e   selected index.
21100 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
21110 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
21120 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
21130 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61         /// A sta
21140 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74  ndard SQLite ret
21150 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  urn code...     
21160 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
21170 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  >..        SQLit
21180 65 45 72 72 6f 72 43 6f 64 65 20 46 69 6c 74 65  eErrorCode Filte
21190 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
211a0 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
211b0 6c 65 43 75 72 73 6f 72 20 63 75 72 73 6f 72 2c  leCursor cursor,
211c0 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
211d0 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65 78         int index
211e0 4e 75 6d 62 65 72 2c 20 20 20 20 20 20 20 20 20  Number,         
211f0 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f          /* in */
21200 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74  ..            st
21210 72 69 6e 67 20 69 6e 64 65 78 53 74 72 69 6e 67  ring indexString
21220 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  ,              /
21230 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
21240 20 20 20 20 20 53 51 4c 69 74 65 56 61 6c 75 65       SQLiteValue
21250 5b 5d 20 76 61 6c 75 65 73 20 20 20 20 20 20 20  [] values       
21260 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a        /* in */..
21270 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a              );..
21280 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
21290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
212a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
212b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
212c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
212d0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
212e0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
212f0 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74      /// This met
21300 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e  hod is called in
21310 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65   response to the
21320 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
21330 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
21340 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4e 65  NativeModule.xNe
21350 78 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  xt" /> method...
21360 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
21370 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
21380 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
21390 22 63 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20  "cursor">..     
213a0 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
213b0 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74  cref="SQLiteVirt
213c0 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 22 20  ualTableCursor" 
213d0 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
213e0 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ce..        /// 
213f0 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
21400 74 68 65 20 70 72 65 76 69 6f 75 73 6c 79 20 6f  the previously o
21410 70 65 6e 65 64 20 76 69 72 74 75 61 6c 20 74 61  pened virtual ta
21420 62 6c 65 20 63 75 72 73 6f 72 20 74 6f 20 62 65  ble cursor to be
21430 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 75 73  ..        /// us
21440 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
21450 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
21460 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
21470 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20  ..        /// A 
21480 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20  standard SQLite 
21490 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20  return code...  
214a0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
214b0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51  rns>..        SQ
214c0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 4e 65  LiteErrorCode Ne
214d0 78 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  xt(..           
214e0 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
214f0 62 6c 65 43 75 72 73 6f 72 20 63 75 72 73 6f 72  bleCursor cursor
21500 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
21510 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20         );....   
21520 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
21530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
21570 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
21580 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
21590 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69  // This method i
215a0 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70  s called in resp
215b0 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20  onse to the..   
215c0 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
215d0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
215e0 65 4d 6f 64 75 6c 65 2e 78 45 6f 66 22 20 2f 3e  eModule.xEof" />
215f0 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
21600 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
21610 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
21620 61 72 61 6d 20 6e 61 6d 65 3d 22 63 75 72 73 6f  aram name="curso
21630 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  r">..        ///
21640 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
21650 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
21660 6c 65 43 75 72 73 6f 72 22 20 2f 3e 20 6f 62 6a  leCursor" /> obj
21670 65 63 74 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20  ect instance..  
21680 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69        /// associ
21690 61 74 65 64 20 77 69 74 68 20 74 68 65 20 70 72  ated with the pr
216a0 65 76 69 6f 75 73 6c 79 20 6f 70 65 6e 65 64 20  eviously opened 
216b0 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 63 75  virtual table cu
216c0 72 73 6f 72 20 74 6f 20 62 65 0d 0a 20 20 20 20  rsor to be..    
216d0 20 20 20 20 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20      /// used... 
216e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
216f0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
21700 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
21710 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
21720 20 69 66 20 6e 6f 20 6d 6f 72 65 20 72 6f 77 73   if no more rows
21730 20 61 72 65 20 61 76 61 69 6c 61 62 6c 65 3b 20   are available; 
21740 7a 65 72 6f 20 6f 74 68 65 72 77 69 73 65 2e 0d  zero otherwise..
21750 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
21760 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
21770 20 62 6f 6f 6c 20 45 6f 66 28 0d 0a 20 20 20 20   bool Eof(..    
21780 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69          SQLiteVi
21790 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72  rtualTableCursor
217a0 20 63 75 72 73 6f 72 20 2f 2a 20 69 6e 20 2a 2f   cursor /* in */
217b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b  ..            );
217c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
217d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
217e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
217f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21810 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
21820 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
21830 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d        /// This m
21840 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20  ethod is called 
21850 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74  in response to t
21860 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
21870 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
21880 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
21890 43 6f 6c 75 6d 6e 22 20 2f 3e 20 6d 65 74 68 6f  Column" /> metho
218a0 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
218b0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
218c0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
218d0 61 6d 65 3d 22 63 75 72 73 6f 72 22 3e 0d 0a 20  ame="cursor">.. 
218e0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
218f0 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
21900 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73  VirtualTableCurs
21910 6f 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  or" /> object in
21920 73 74 61 6e 63 65 0d 0a 20 20 20 20 20 20 20 20  stance..        
21930 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77  /// associated w
21940 69 74 68 20 74 68 65 20 70 72 65 76 69 6f 75 73  ith the previous
21950 6c 79 20 6f 70 65 6e 65 64 20 76 69 72 74 75 61  ly opened virtua
21960 6c 20 74 61 62 6c 65 20 63 75 72 73 6f 72 20 74  l table cursor t
21970 6f 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  o be..        //
21980 2f 20 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 20  / used...       
21990 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
219a0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
219b0 6d 20 6e 61 6d 65 3d 22 63 6f 6e 74 65 78 74 22  m name="context"
219c0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
219d0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
219e0 4c 69 74 65 43 6f 6e 74 65 78 74 22 20 2f 3e 20  LiteContext" /> 
219f0 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
21a00 74 6f 20 62 65 20 75 73 65 64 20 66 6f 72 0d 0a  to be used for..
21a10 20 20 20 20 20 20 20 20 2f 2f 2f 20 72 65 74 75          /// retu
21a20 72 6e 69 6e 67 20 74 68 65 20 73 70 65 63 69 66  rning the specif
21a30 69 65 64 20 63 6f 6c 75 6d 6e 20 76 61 6c 75 65  ied column value
21a40 20 74 6f 20 74 68 65 20 53 51 4c 69 74 65 20 63   to the SQLite c
21a50 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ore library...  
21a60 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
21a70 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
21a80 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64  <param name="ind
21a90 65 78 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ex">..        //
21aa0 2f 20 54 68 65 20 7a 65 72 6f 2d 62 61 73 65 64  / The zero-based
21ab0 20 69 6e 64 65 78 20 63 6f 72 72 65 73 70 6f 6e   index correspon
21ac0 64 69 6e 67 20 74 6f 20 74 68 65 20 63 6f 6c 75  ding to the colu
21ad0 6d 6e 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68  mn containing th
21ae0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76  e..        /// v
21af0 61 6c 75 65 20 74 6f 20 62 65 20 72 65 74 75 72  alue to be retur
21b00 6e 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ned...        //
21b10 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
21b20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
21b30 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
21b40 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
21b50 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
21b60 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
21b70 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53  urns>..        S
21b80 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 43  QLiteErrorCode C
21b90 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20 20 20 20 20  olumn(..        
21ba0 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61      SQLiteVirtua
21bb0 6c 54 61 62 6c 65 43 75 72 73 6f 72 20 63 75 72  lTableCursor cur
21bc0 73 6f 72 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  sor, /* in */.. 
21bd0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
21be0 65 43 6f 6e 74 65 78 74 20 63 6f 6e 74 65 78 74  eContext context
21bf0 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69  ,           /* i
21c00 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
21c10 20 20 69 6e 74 20 69 6e 64 65 78 20 20 20 20 20    int index     
21c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21c30 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20     /* in */..   
21c40 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20           );.... 
21c50 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
21c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
21ca0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
21cb0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
21cc0 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64   /// This method
21cd0 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65   is called in re
21ce0 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20  sponse to the.. 
21cf0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
21d00 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
21d10 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64  iveModule.xRowId
21d20 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
21d30 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
21d40 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
21d50 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63  / <param name="c
21d60 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20  ursor">..       
21d70 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
21d80 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61  ef="SQLiteVirtua
21d90 6c 54 61 62 6c 65 43 75 72 73 6f 72 22 20 2f 3e  lTableCursor" />
21da0 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
21db0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 73  ..        /// as
21dc0 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
21dd0 65 20 70 72 65 76 69 6f 75 73 6c 79 20 6f 70 65  e previously ope
21de0 6e 65 64 20 76 69 72 74 75 61 6c 20 74 61 62 6c  ned virtual tabl
21df0 65 20 63 75 72 73 6f 72 20 74 6f 20 62 65 0d 0a  e cursor to be..
21e00 20 20 20 20 20 20 20 20 2f 2f 2f 20 75 73 65 64          /// used
21e10 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
21e20 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
21e30 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
21e40 3d 22 72 6f 77 49 64 22 3e 0d 0a 20 20 20 20 20  ="rowId">..     
21e50 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63     /// Upon succ
21e60 65 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65  ess, this parame
21e70 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69  ter must be modi
21e80 66 69 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20  fied to contain 
21e90 74 68 65 20 75 6e 69 71 75 65 0d 0a 20 20 20 20  the unique..    
21ea0 20 20 20 20 2f 2f 2f 20 69 6e 74 65 67 65 72 20      /// integer 
21eb0 72 6f 77 20 69 64 65 6e 74 69 66 69 65 72 20 66  row identifier f
21ec0 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 72  or the current r
21ed0 6f 77 20 66 6f 72 20 74 68 65 20 73 70 65 63 69  ow for the speci
21ee0 66 69 65 64 20 63 75 72 73 6f 72 2e 0d 0a 20 20  fied cursor...  
21ef0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
21f00 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
21f10 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
21f20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72     /// A standar
21f30 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20  d SQLite return 
21f40 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  code...        /
21f50 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
21f60 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72         SQLiteErr
21f70 6f 72 43 6f 64 65 20 52 6f 77 49 64 28 0d 0a 20  orCode RowId(.. 
21f80 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
21f90 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72  eVirtualTableCur
21fa0 73 6f 72 20 63 75 72 73 6f 72 2c 20 2f 2a 20 69  sor cursor, /* i
21fb0 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
21fc0 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64    ref long rowId
21fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21fe0 20 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20     /* out */..  
21ff0 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a            );....
22000 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
22010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
22050 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
22060 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
22070 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
22080 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72  d is called in r
22090 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a  esponse to the..
220a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
220b0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
220c0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61  tiveModule.xUpda
220d0 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  te" /> method...
220e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
220f0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
22100 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
22110 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20  "table">..      
22120 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
22130 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75  ref="SQLiteVirtu
22140 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65  alTable" /> obje
22150 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f  ct instance asso
22160 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20  ciated..        
22170 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20 76 69  /// with this vi
22180 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20  rtual table...  
22190 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
221a0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
221b0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c  <param name="val
221c0 75 65 73 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ues">..        /
221d0 2f 2f 20 54 68 65 20 61 72 72 61 79 20 6f 66 20  // The array of 
221e0 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
221f0 65 56 61 6c 75 65 22 20 2f 3e 20 6f 62 6a 65 63  eValue" /> objec
22200 74 20 69 6e 73 74 61 6e 63 65 73 20 63 6f 6e 74  t instances cont
22210 61 69 6e 69 6e 67 0d 0a 20 20 20 20 20 20 20 20  aining..        
22220 2f 2f 2f 20 74 68 65 20 6e 65 77 20 6f 72 20 6d  /// the new or m
22230 6f 64 69 66 69 65 64 20 63 6f 6c 75 6d 6e 20 76  odified column v
22240 61 6c 75 65 73 2c 20 69 66 20 61 6e 79 2e 0d 0a  alues, if any...
22250 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
22260 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
22270 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 72  / <param name="r
22280 6f 77 49 64 22 3e 0d 0a 20 20 20 20 20 20 20 20  owId">..        
22290 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73  /// Upon success
222a0 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72  , this parameter
222b0 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65   must be modifie
222c0 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65  d to contain the
222d0 20 75 6e 69 71 75 65 0d 0a 20 20 20 20 20 20 20   unique..       
222e0 20 2f 2f 2f 20 69 6e 74 65 67 65 72 20 72 6f 77   /// integer row
222f0 20 69 64 65 6e 74 69 66 69 65 72 20 66 6f 72 20   identifier for 
22300 74 68 65 20 72 6f 77 20 74 68 61 74 20 77 61 73  the row that was
22310 20 69 6e 73 65 72 74 65 64 2c 20 69 66 20 61 6e   inserted, if an
22320 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y...        /// 
22330 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
22340 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
22350 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73  .        /// A s
22360 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72  tandard SQLite r
22370 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20  eturn code...   
22380 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
22390 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c  ns>..        SQL
223a0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 55 70 64  iteErrorCode Upd
223b0 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ate(..          
223c0 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54    SQLiteVirtualT
223d0 61 62 6c 65 20 74 61 62 6c 65 2c 20 2f 2a 20 69  able table, /* i
223e0 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
223f0 20 20 53 51 4c 69 74 65 56 61 6c 75 65 5b 5d 20    SQLiteValue[] 
22400 76 61 6c 75 65 73 2c 20 20 20 20 20 2f 2a 20 69  values,     /* i
22410 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
22420 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64    ref long rowId
22430 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 6f              /* o
22440 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ut */..         
22450 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20     );....       
22460 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
22470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
224a0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
224b0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
224c0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
224d0 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61  his method is ca
224e0 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65  lled in response
224f0 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20   to the..       
22500 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
22510 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
22520 75 6c 65 2e 78 42 65 67 69 6e 22 20 2f 3e 20 6d  ule.xBegin" /> m
22530 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
22540 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
22550 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
22560 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e  am name="table">
22570 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
22580 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
22590 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22  iteVirtualTable"
225a0 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
225b0 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a  nce associated..
225c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68          /// with
225d0 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61   this virtual ta
225e0 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
225f0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
22600 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
22610 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
22620 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
22630 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
22640 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
22650 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53  urns>..        S
22660 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 42  QLiteErrorCode B
22670 65 67 69 6e 28 0d 0a 20 20 20 20 20 20 20 20 20  egin(..         
22680 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c     SQLiteVirtual
22690 54 61 62 6c 65 20 74 61 62 6c 65 20 2f 2a 20 69  Table table /* i
226a0 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
226b0 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    );....        
226c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
226d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
226e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
226f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22700 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
22710 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
22720 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
22730 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c  is method is cal
22740 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20  led in response 
22750 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
22760 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
22770 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
22780 6c 65 2e 78 53 79 6e 63 22 20 2f 3e 20 6d 65 74  le.xSync" /> met
22790 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
227a0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
227b0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
227c0 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a   name="table">..
227d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
227e0 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
227f0 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f  eVirtualTable" /
22800 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
22810 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20  e associated..  
22820 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74        /// with t
22830 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c  his virtual tabl
22840 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
22850 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
22860 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
22870 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73  .        /// A s
22880 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72  tandard SQLite r
22890 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20  eturn code...   
228a0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
228b0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c  ns>..        SQL
228c0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 53 79 6e  iteErrorCode Syn
228d0 63 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  c(..            
228e0 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
228f0 6c 65 20 74 61 62 6c 65 20 2f 2a 20 69 6e 20 2a  le table /* in *
22900 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  /..            )
22910 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
22920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22960 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
22970 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
22980 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
22990 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64  method is called
229a0 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20   in response to 
229b0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
229c0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
229d0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
229e0 78 43 6f 6d 6d 69 74 22 20 2f 3e 20 6d 65 74 68  xCommit" /> meth
229f0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  od...        ///
22a00 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
22a10 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
22a20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20  name="table">.. 
22a30 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
22a40 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
22a50 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e  VirtualTable" />
22a60 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
22a70 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20   associated..   
22a80 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68       /// with th
22a90 69 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  is virtual table
22aa0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
22ab0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
22ac0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
22ad0 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74          /// A st
22ae0 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65  andard SQLite re
22af0 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20  turn code...    
22b00 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
22b10 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69  s>..        SQLi
22b20 74 65 45 72 72 6f 72 43 6f 64 65 20 43 6f 6d 6d  teErrorCode Comm
22b30 69 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  it(..           
22b40 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
22b50 62 6c 65 20 74 61 62 6c 65 20 2f 2a 20 69 6e 20  ble table /* in 
22b60 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
22b70 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  );....        //
22b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22bc0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
22bd0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
22be0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
22bf0 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65   method is calle
22c00 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f  d in response to
22c10 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
22c20 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  / <see cref="ISQ
22c30 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
22c40 2e 78 52 6f 6c 6c 62 61 63 6b 22 20 2f 3e 20 6d  .xRollback" /> m
22c50 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
22c60 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
22c70 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
22c80 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e  am name="table">
22c90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
22ca0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
22cb0 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22  iteVirtualTable"
22cc0 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
22cd0 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a  nce associated..
22ce0 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68          /// with
22cf0 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61   this virtual ta
22d00 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
22d10 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
22d20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
22d30 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
22d40 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
22d50 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
22d60 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
22d70 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53  urns>..        S
22d80 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 52  QLiteErrorCode R
22d90 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20 20  ollback(..      
22da0 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74        SQLiteVirt
22db0 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 20 2f  ualTable table /
22dc0 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
22dd0 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20       );....     
22de0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
22df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
22e30 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
22e40 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
22e50 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20   This method is 
22e60 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e  called in respon
22e70 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20  se to the..     
22e80 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
22e90 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
22ea0 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74  odule.xFindFunct
22eb0 69 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ion" /> method..
22ec0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
22ed0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
22ee0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
22ef0 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20  ="table">..     
22f00 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
22f10 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74  cref="SQLiteVirt
22f20 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a  ualTable" /> obj
22f30 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73  ect instance ass
22f40 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20  ociated..       
22f50 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20 76   /// with this v
22f60 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20  irtual table... 
22f70 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
22f80 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
22f90 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72   <param name="ar
22fa0 67 75 6d 65 6e 74 43 6f 75 6e 74 22 3e 0d 0a 20  gumentCount">.. 
22fb0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
22fc0 75 6d 62 65 72 20 6f 66 20 61 72 67 75 6d 65 6e  umber of argumen
22fd0 74 73 20 74 6f 20 74 68 65 20 66 75 6e 63 74 69  ts to the functi
22fe0 6f 6e 20 62 65 69 6e 67 20 73 6f 75 67 68 74 2e  on being sought.
22ff0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
23000 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
23010 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
23020 22 6e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 20  "name">..       
23030 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66   /// The name of
23040 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 62 65   the function be
23050 69 6e 67 20 73 6f 75 67 68 74 2e 0d 0a 20 20 20  ing sought...   
23060 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
23070 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
23080 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 75 6e 63  param name="func
23090 74 69 6f 6e 22 3e 0d 0a 20 20 20 20 20 20 20 20  tion">..        
230a0 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73  /// Upon success
230b0 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72  , this parameter
230c0 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65   must be modifie
230d0 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65  d to contain the
230e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
230f0 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 46  ee cref="SQLiteF
23100 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6f 62 6a 65  unction" /> obje
23110 63 74 20 69 6e 73 74 61 6e 63 65 20 72 65 73 70  ct instance resp
23120 6f 6e 73 69 62 6c 65 20 66 6f 72 0d 0a 20 20 20  onsible for..   
23130 20 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65       /// impleme
23140 6e 74 69 6e 67 20 74 68 65 20 73 70 65 63 69 66  nting the specif
23150 69 65 64 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20  ied function... 
23160 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
23170 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
23180 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43   <param name="pC
23190 6c 69 65 6e 74 44 61 74 61 22 3e 0d 0a 20 20 20  lientData">..   
231a0 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75       /// Upon su
231b0 63 63 65 73 73 2c 20 74 68 69 73 20 70 61 72 61  ccess, this para
231c0 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f  meter must be mo
231d0 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74 61 69  dified to contai
231e0 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  n the..        /
231f0 2f 2f 20 6e 61 74 69 76 65 20 75 73 65 72 2d 64  // native user-d
23200 61 74 61 20 70 6f 69 6e 74 65 72 20 61 73 73 6f  ata pointer asso
23210 63 69 61 74 65 64 20 77 69 74 68 0d 0a 20 20 20  ciated with..   
23220 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 72       /// <paramr
23230 65 66 20 6e 61 6d 65 3d 22 66 75 6e 63 74 69 6f  ef name="functio
23240 6e 22 20 2f 3e 2e 0d 0a 20 20 20 20 20 20 20 20  n" />...        
23250 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
23260 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
23270 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
23280 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65   Non-zero if the
23290 20 73 70 65 63 69 66 69 65 64 20 66 75 6e 63 74   specified funct
232a0 69 6f 6e 20 77 61 73 20 66 6f 75 6e 64 3b 20 7a  ion was found; z
232b0 65 72 6f 20 6f 74 68 65 72 77 69 73 65 2e 0d 0a  ero otherwise...
232c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
232d0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
232e0 62 6f 6f 6c 20 46 69 6e 64 46 75 6e 63 74 69 6f  bool FindFunctio
232f0 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n(..            
23300 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
23310 6c 65 20 74 61 62 6c 65 2c 20 20 20 20 2f 2a 20  le table,    /* 
23320 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
23330 20 20 20 69 6e 74 20 61 72 67 75 6d 65 6e 74 43     int argumentC
23340 6f 75 6e 74 2c 20 20 20 20 20 20 20 20 20 20 20  ount,           
23350 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
23360 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d        string nam
23370 65 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20  e,              
23380 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20     /* in */..   
23390 20 20 20 20 20 20 20 20 20 72 65 66 20 53 51 4c           ref SQL
233a0 69 74 65 46 75 6e 63 74 69 6f 6e 20 66 75 6e 63  iteFunction func
233b0 74 69 6f 6e 2c 20 2f 2a 20 6f 75 74 20 2a 2f 0d  tion, /* out */.
233c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66  .            ref
233d0 20 49 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44   IntPtr pClientD
233e0 61 74 61 20 20 20 20 20 20 20 2f 2a 20 6f 75 74  ata       /* out
233f0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
23400 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   );....        /
23410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23450 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
23460 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
23470 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
23480 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c  s method is call
23490 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74  ed in response t
234a0 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  o the..        /
234b0 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  // <see cref="IS
234c0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
234d0 65 2e 78 52 65 6e 61 6d 65 22 20 2f 3e 20 6d 65  e.xRename" /> me
234e0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  thod...        /
234f0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
23500 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
23510 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d  m name="table">.
23520 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
23530 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
23540 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20  teVirtualTable" 
23550 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
23560 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20  ce associated.. 
23570 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20         /// with 
23580 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62  this virtual tab
23590 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le...        ///
235a0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
235b0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
235c0 6d 65 3d 22 6e 65 77 4e 61 6d 65 22 3e 0d 0a 20  me="newName">.. 
235d0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
235e0 65 77 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20  ew name for the 
235f0 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a  virtual table...
23600 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
23610 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
23620 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
23630 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64       /// A stand
23640 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72  ard SQLite retur
23650 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  n code...       
23660 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
23670 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45  .        SQLiteE
23680 72 72 6f 72 43 6f 64 65 20 52 65 6e 61 6d 65 28  rrorCode Rename(
23690 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
236a0 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
236b0 20 74 61 62 6c 65 2c 20 2f 2a 20 69 6e 20 2a 2f   table, /* in */
236c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74  ..            st
236d0 72 69 6e 67 20 6e 65 77 4e 61 6d 65 20 20 20 20  ring newName    
236e0 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f          /* in */
236f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b  ..            );
23700 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
23710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23750 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
23760 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
23770 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d        /// This m
23780 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20  ethod is called 
23790 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74  in response to t
237a0 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
237b0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
237c0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
237d0 53 61 76 65 70 6f 69 6e 74 22 20 2f 3e 20 6d 65  Savepoint" /> me
237e0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  thod...        /
237f0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
23800 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
23810 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d  m name="table">.
23820 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
23830 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
23840 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20  teVirtualTable" 
23850 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
23860 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20  ce associated.. 
23870 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20         /// with 
23880 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62  this virtual tab
23890 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le...        ///
238a0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
238b0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
238c0 6d 65 3d 22 73 61 76 65 70 6f 69 6e 74 22 3e 0d  me="savepoint">.
238d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
238e0 73 20 69 73 20 61 6e 20 69 6e 74 65 67 65 72 20  s is an integer 
238f0 69 64 65 6e 74 69 66 69 65 72 20 75 6e 64 65 72  identifier under
23900 20 77 68 69 63 68 20 74 68 65 20 74 68 65 20 63   which the the c
23910 75 72 72 65 6e 74 20 73 74 61 74 65 20 6f 66 0d  urrent state of.
23920 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  .        /// the
23930 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 73   virtual table s
23940 68 6f 75 6c 64 20 62 65 20 73 61 76 65 64 2e 0d  hould be saved..
23950 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
23960 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
23970 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
23980 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e        /// A stan
23990 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75  dard SQLite retu
239a0 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  rn code...      
239b0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
239c0 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65  ..        SQLite
239d0 45 72 72 6f 72 43 6f 64 65 20 53 61 76 65 70 6f  ErrorCode Savepo
239e0 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  int(..          
239f0 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54    SQLiteVirtualT
23a00 61 62 6c 65 20 74 61 62 6c 65 2c 20 2f 2a 20 69  able table, /* i
23a10 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
23a20 20 20 69 6e 74 20 73 61 76 65 70 6f 69 6e 74 20    int savepoint 
23a30 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69              /* i
23a40 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
23a50 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    );....        
23a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23aa0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
23ab0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
23ac0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
23ad0 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c  is method is cal
23ae0 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20  led in response 
23af0 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
23b00 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
23b10 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
23b20 6c 65 2e 78 52 65 6c 65 61 73 65 22 20 2f 3e 20  le.xRelease" /> 
23b30 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
23b40 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
23b50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
23b60 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22  ram name="table"
23b70 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
23b80 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
23b90 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
23ba0 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
23bb0 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d  ance associated.
23bc0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74  .        /// wit
23bd0 68 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74  h this virtual t
23be0 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  able...        /
23bf0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
23c00 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
23c10 6e 61 6d 65 3d 22 73 61 76 65 70 6f 69 6e 74 22  name="savepoint"
23c20 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
23c30 68 69 73 20 69 73 20 61 6e 20 69 6e 74 65 67 65  his is an intege
23c40 72 20 75 73 65 64 20 74 6f 20 69 6e 64 69 63 61  r used to indica
23c50 74 65 20 74 68 61 74 20 61 6e 79 20 73 61 76 65  te that any save
23c60 64 20 73 74 61 74 65 73 20 77 69 74 68 20 61 6e  d states with an
23c70 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 64  ..        /// id
23c80 65 6e 74 69 66 69 65 72 20 67 72 65 61 74 65 72  entifier greater
23c90 20 74 68 61 6e 20 6f 72 20 65 71 75 61 6c 20 74   than or equal t
23ca0 6f 20 74 68 69 73 20 73 68 6f 75 6c 64 20 62 65  o this should be
23cb0 20 64 65 6c 65 74 65 64 20 62 79 20 74 68 65 0d   deleted by the.
23cc0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 69 72  .        /// vir
23cd0 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20  tual table...   
23ce0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
23cf0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
23d00 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
23d10 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64    /// A standard
23d20 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63   SQLite return c
23d30 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode...        //
23d40 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
23d50 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f        SQLiteErro
23d60 72 43 6f 64 65 20 52 65 6c 65 61 73 65 28 0d 0a  rCode Release(..
23d70 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
23d80 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74  teVirtualTable t
23d90 61 62 6c 65 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a  able, /* in */..
23da0 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
23db0 73 61 76 65 70 6f 69 6e 74 20 20 20 20 20 20 20  savepoint       
23dc0 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a        /* in */..
23dd0 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a              );..
23de0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
23df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23e30 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
23e40 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
23e50 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74      /// This met
23e60 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e  hod is called in
23e70 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65   response to the
23e80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
23e90 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
23ea0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f  NativeModule.xRo
23eb0 6c 6c 62 61 63 6b 54 6f 22 20 2f 3e 20 6d 65 74  llbackTo" /> met
23ec0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
23ed0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
23ee0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
23ef0 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a   name="table">..
23f00 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
23f10 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
23f20 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f  eVirtualTable" /
23f30 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
23f40 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20  e associated..  
23f50 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74        /// with t
23f60 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c  his virtual tabl
23f70 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
23f80 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
23f90 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
23fa0 65 3d 22 73 61 76 65 70 6f 69 6e 74 22 3e 0d 0a  e="savepoint">..
23fb0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
23fc0 20 69 73 20 61 6e 20 69 6e 74 65 67 65 72 20 69   is an integer i
23fd0 64 65 6e 74 69 66 69 65 72 20 75 73 65 64 20 74  dentifier used t
23fe0 6f 20 73 70 65 63 69 66 79 20 61 20 73 70 65 63  o specify a spec
23ff0 69 66 69 63 20 73 61 76 65 64 0d 0a 20 20 20 20  ific saved..    
24000 20 20 20 20 2f 2f 2f 20 73 74 61 74 65 20 66 6f      /// state fo
24010 72 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  r the virtual ta
24020 62 6c 65 20 66 6f 72 20 69 74 20 74 6f 20 72 65  ble for it to re
24030 73 74 6f 72 65 20 69 74 73 65 6c 66 20 62 61 63  store itself bac
24040 6b 20 74 6f 2c 20 77 68 69 63 68 0d 0a 20 20 20  k to, which..   
24050 20 20 20 20 20 2f 2f 2f 20 73 68 6f 75 6c 64 20       /// should 
24060 61 6c 73 6f 20 68 61 76 65 20 74 68 65 20 65 66  also have the ef
24070 66 65 63 74 20 6f 66 20 64 65 6c 65 74 69 6e 67  fect of deleting
24080 20 61 6c 6c 20 73 61 76 65 64 20 73 74 61 74 65   all saved state
24090 73 20 77 69 74 68 20 61 6e 0d 0a 20 20 20 20 20  s with an..     
240a0 20 20 20 2f 2f 2f 20 69 6e 74 65 67 65 72 20 69     /// integer i
240b0 64 65 6e 74 69 66 69 65 72 20 67 72 65 61 74 65  dentifier greate
240c0 72 20 74 68 61 6e 20 74 68 69 73 20 6f 6e 65 2e  r than this one.
240d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
240e0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
240f0 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
24100 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61         /// A sta
24110 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74  ndard SQLite ret
24120 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  urn code...     
24130 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
24140 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  >..        SQLit
24150 65 45 72 72 6f 72 43 6f 64 65 20 52 6f 6c 6c 62  eErrorCode Rollb
24160 61 63 6b 54 6f 28 0d 0a 20 20 20 20 20 20 20 20  ackTo(..        
24170 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61      SQLiteVirtua
24180 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c 20 2f 2a  lTable table, /*
24190 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
241a0 20 20 20 20 69 6e 74 20 73 61 76 65 70 6f 69 6e      int savepoin
241b0 74 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a  t             /*
241c0 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
241d0 20 20 20 20 29 3b 0d 0a 20 20 20 20 7d 0d 0a 20      );..    }.. 
241e0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
241f0 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
24200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24240 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
24250 53 51 4c 69 74 65 4d 65 6d 6f 72 79 20 53 74 61  SQLiteMemory Sta
24260 74 69 63 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f  tic Class..    /
24270 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
24280 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73    /// This class
24290 20 63 6f 6e 74 61 69 6e 73 20 73 74 61 74 69 63   contains static
242a0 20 6d 65 74 68 6f 64 73 20 74 68 61 74 20 61 72   methods that ar
242b0 65 20 75 73 65 64 20 74 6f 20 61 6c 6c 6f 63 61  e used to alloca
242c0 74 65 2c 0d 0a 20 20 20 20 2f 2f 2f 20 6d 61 6e  te,..    /// man
242d0 69 70 75 6c 61 74 65 2c 20 61 6e 64 20 66 72 65  ipulate, and fre
242e0 65 20 6e 61 74 69 76 65 20 6d 65 6d 6f 72 79 20  e native memory 
242f0 70 72 6f 76 69 64 65 64 20 62 79 20 74 68 65 20  provided by the 
24300 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
24310 61 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ary...    /// </
24320 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 69 6e  summary>..    in
24330 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 63 6c  ternal static cl
24340 61 73 73 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79  ass SQLiteMemory
24350 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
24360 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65   #region Private
24370 20 44 61 74 61 0d 0a 23 69 66 20 54 52 41 43 4b   Data..#if TRACK
24380 5f 4d 45 4d 4f 52 59 5f 42 59 54 45 53 0d 0a 20  _MEMORY_BYTES.. 
24390 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
243a0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
243b0 2f 20 54 68 69 73 20 6f 62 6a 65 63 74 20 69 6e  / This object in
243c0 73 74 61 6e 63 65 20 69 73 20 75 73 65 64 20 74  stance is used t
243d0 6f 20 73 79 6e 63 68 72 6f 6e 69 7a 65 20 61 63  o synchronize ac
243e0 63 65 73 73 20 74 6f 20 74 68 65 20 6f 74 68 65  cess to the othe
243f0 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  r..        /// s
24400 74 61 74 69 63 20 66 69 65 6c 64 73 20 6f 66 20  tatic fields of 
24410 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20  this class...   
24420 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
24430 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
24440 76 61 74 65 20 73 74 61 74 69 63 20 6f 62 6a 65  vate static obje
24450 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65  ct syncRoot = ne
24460 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 0d 0a 20  w object();.... 
24470 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
244c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
244d0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
244e0 20 2f 2f 2f 20 54 68 65 20 74 6f 74 61 6c 20 6e   /// The total n
244f0 75 6d 62 65 72 20 6f 66 20 6f 75 74 73 74 61 6e  umber of outstan
24500 64 69 6e 67 20 6d 65 6d 6f 72 79 20 62 79 74 65  ding memory byte
24510 73 20 61 6c 6c 6f 63 61 74 65 64 20 62 79 20 74  s allocated by t
24520 68 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  his..        ///
24530 20 63 6c 61 73 73 20 75 73 69 6e 67 20 74 68 65   class using the
24540 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62   SQLite core lib
24550 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f  rary...        /
24560 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
24570 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73         private s
24580 74 61 74 69 63 20 69 6e 74 20 62 79 74 65 73 41  tatic int bytesA
24590 6c 6c 6f 63 61 74 65 64 3b 0d 0a 0d 0a 20 20 20  llocated;....   
245a0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
245b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
245c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
245d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
245e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
245f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
24600 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
24610 2f 2f 20 54 68 65 20 6d 61 78 69 6d 75 6d 20 6e  // The maximum n
24620 75 6d 62 65 72 20 6f 66 20 6f 75 74 73 74 61 6e  umber of outstan
24630 64 69 6e 67 20 6d 65 6d 6f 72 79 20 62 79 74 65  ding memory byte
24640 73 20 65 76 65 72 20 61 6c 6c 6f 63 61 74 65 64  s ever allocated
24650 20 62 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   by..        ///
24660 20 74 68 69 73 20 63 6c 61 73 73 20 75 73 69 6e   this class usin
24670 67 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  g the SQLite cor
24680 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20  e library...    
24690 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
246a0 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  y>..        priv
246b0 61 74 65 20 73 74 61 74 69 63 20 69 6e 74 20 6d  ate static int m
246c0 61 78 69 6d 75 6d 42 79 74 65 73 41 6c 6c 6f 63  aximumBytesAlloc
246d0 61 74 65 64 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  ated;..#endif.. 
246e0 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
246f0 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
24700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24740 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
24750 23 72 65 67 69 6f 6e 20 4d 65 6d 6f 72 79 20 41  #region Memory A
24760 6c 6c 6f 63 61 74 69 6f 6e 20 48 65 6c 70 65 72  llocation Helper
24770 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
24780 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
24790 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 6c 6c  .        /// All
247a0 6f 63 61 74 65 73 20 61 74 20 6c 65 61 73 74 20  ocates at least 
247b0 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6e 75  the specified nu
247c0 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20 6f 66  mber of bytes of
247d0 20 6e 61 74 69 76 65 20 6d 65 6d 6f 72 79 0d 0a   native memory..
247e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 69 61 20          /// via 
247f0 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
24800 6c 69 62 72 61 72 79 20 73 71 6c 69 74 65 33 5f  library sqlite3_
24810 6d 61 6c 6c 6f 63 28 29 20 66 75 6e 63 74 69 6f  malloc() functio
24820 6e 20 61 6e 64 20 72 65 74 75 72 6e 73 0d 0a 20  n and returns.. 
24830 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 72         /// the r
24840 65 73 75 6c 74 69 6e 67 20 6e 61 74 69 76 65 20  esulting native 
24850 70 6f 69 6e 74 65 72 2e 0d 0a 20 20 20 20 20 20  pointer...      
24860 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
24870 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
24880 61 72 61 6d 20 6e 61 6d 65 3d 22 73 69 7a 65 22  aram name="size"
24890 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
248a0 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74  he number of byt
248b0 65 73 20 74 6f 20 61 6c 6c 6f 63 61 74 65 2e 0d  es to allocate..
248c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
248d0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
248e0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
248f0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
24900 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 68 61  tive pointer tha
24910 74 20 70 6f 69 6e 74 73 20 74 6f 20 61 20 62 6c  t points to a bl
24920 6f 63 6b 20 6f 66 20 6d 65 6d 6f 72 79 20 6f 66  ock of memory of
24930 20 61 74 20 6c 65 61 73 74 20 74 68 65 0d 0a 20   at least the.. 
24940 20 20 20 20 20 20 20 2f 2f 2f 20 73 70 65 63 69         /// speci
24950 66 69 65 64 20 73 69 7a 65 20 2d 4f 52 2d 20 3c  fied size -OR- <
24960 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72  see cref="IntPtr
24970 2e 5a 65 72 6f 22 20 2f 3e 20 69 66 20 74 68 65  .Zero" /> if the
24980 20 6d 65 6d 6f 72 79 20 63 6f 75 6c 64 0d 0a 20   memory could.. 
24990 20 20 20 20 20 20 20 2f 2f 2f 20 6e 6f 74 20 62         /// not b
249a0 65 20 61 6c 6c 6f 63 61 74 65 64 2e 0d 0a 20 20  e allocated...  
249b0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
249c0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  rns>..        pu
249d0 62 6c 69 63 20 73 74 61 74 69 63 20 49 6e 74 50  blic static IntP
249e0 74 72 20 41 6c 6c 6f 63 61 74 65 28 69 6e 74 20  tr Allocate(int 
249f0 73 69 7a 65 29 0d 0a 20 20 20 20 20 20 20 20 7b  size)..        {
24a00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
24a10 74 50 74 72 20 70 4d 65 6d 6f 72 79 20 3d 20 55  tPtr pMemory = U
24a20 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
24a30 64 73 2e 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f  ds.sqlite3_mallo
24a40 63 28 73 69 7a 65 29 3b 0d 0a 0d 0a 23 69 66 20  c(size);....#if 
24a50 54 52 41 43 4b 5f 4d 45 4d 4f 52 59 5f 42 59 54  TRACK_MEMORY_BYT
24a60 45 53 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ES..            
24a70 69 66 20 28 70 4d 65 6d 6f 72 79 20 21 3d 20 49  if (pMemory != I
24a80 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
24a90 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
24aa0 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
24ab0 62 6c 6f 63 6b 53 69 7a 65 20 3d 20 53 69 7a 65  blockSize = Size
24ac0 28 70 4d 65 6d 6f 72 79 29 3b 0d 0a 0d 0a 20 20  (pMemory);....  
24ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
24ae0 20 28 62 6c 6f 63 6b 53 69 7a 65 20 3e 20 30 29   (blockSize > 0)
24af0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24b00 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
24b10 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
24b20 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
24b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
24b40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24b50 20 20 20 20 20 20 20 20 20 62 79 74 65 73 41 6c           bytesAl
24b60 6c 6f 63 61 74 65 64 20 2b 3d 20 62 6c 6f 63 6b  located += block
24b70 53 69 7a 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Size;....       
24b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24b90 20 69 66 20 28 62 79 74 65 73 41 6c 6c 6f 63 61   if (bytesAlloca
24ba0 74 65 64 20 3e 20 6d 61 78 69 6d 75 6d 42 79 74  ted > maximumByt
24bb0 65 73 41 6c 6c 6f 63 61 74 65 64 29 0d 0a 20 20  esAllocated)..  
24bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24bd0 20 20 20 20 20 20 20 20 20 20 6d 61 78 69 6d 75            maximu
24be0 6d 42 79 74 65 73 41 6c 6c 6f 63 61 74 65 64 20  mBytesAllocated 
24bf0 3d 20 62 79 74 65 73 41 6c 6c 6f 63 61 74 65 64  = bytesAllocated
24c00 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
24c10 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
24c20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
24c30 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
24c40 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  if....          
24c50 20 20 72 65 74 75 72 6e 20 70 4d 65 6d 6f 72 79    return pMemory
24c60 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
24c70 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
24c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
24cc0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
24cd0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
24ce0 20 20 2f 2f 2f 20 47 65 74 73 20 61 6e 64 20 72    /// Gets and r
24cf0 65 74 75 72 6e 73 20 74 68 65 20 61 63 74 75 61  eturns the actua
24d00 6c 20 73 69 7a 65 20 6f 66 20 74 68 65 20 73 70  l size of the sp
24d10 65 63 69 66 69 65 64 20 6d 65 6d 6f 72 79 20 62  ecified memory b
24d20 6c 6f 63 6b 20 74 68 61 74 0d 0a 20 20 20 20 20  lock that..     
24d30 20 20 20 2f 2f 2f 20 77 61 73 20 70 72 65 76 69     /// was previ
24d40 6f 75 73 6c 79 20 6f 62 74 61 69 6e 65 64 20 66  ously obtained f
24d50 72 6f 6d 20 74 68 65 20 3c 73 65 65 20 63 72 65  rom the <see cre
24d60 66 3d 22 41 6c 6c 6f 63 61 74 65 22 20 2f 3e 20  f="Allocate" /> 
24d70 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
24d80 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
24d90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
24da0 72 61 6d 20 6e 61 6d 65 3d 22 70 4d 65 6d 6f 72  ram name="pMemor
24db0 79 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  y">..        ///
24dc0 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e   The native poin
24dd0 74 65 72 20 74 6f 20 74 68 65 20 6d 65 6d 6f 72  ter to the memor
24de0 79 20 62 6c 6f 63 6b 20 70 72 65 76 69 6f 75 73  y block previous
24df0 6c 79 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d  ly obtained from
24e00 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
24e10 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 41 6c 6c  / <see cref="All
24e20 6f 63 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64  ocate" /> method
24e30 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
24e40 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
24e50 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
24e60 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
24e70 61 63 74 75 61 6c 20 73 69 7a 65 2c 20 69 6e 20  actual size, in 
24e80 62 79 74 65 73 2c 20 6f 66 20 74 68 65 20 6d 65  bytes, of the me
24e90 6d 6f 72 79 20 62 6c 6f 63 6b 20 73 70 65 63 69  mory block speci
24ea0 66 69 65 64 20 76 69 61 20 74 68 65 0d 0a 20 20  fied via the..  
24eb0 20 20 20 20 20 20 2f 2f 2f 20 6e 61 74 69 76 65        /// native
24ec0 20 70 6f 69 6e 74 65 72 2e 0d 0a 20 20 20 20 20   pointer...     
24ed0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
24ee0 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
24ef0 63 20 73 74 61 74 69 63 20 69 6e 74 20 53 69 7a  c static int Siz
24f00 65 28 49 6e 74 50 74 72 20 70 4d 65 6d 6f 72 79  e(IntPtr pMemory
24f10 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
24f20 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  f !SQLITE_STANDA
24f30 52 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RD..            
24f40 72 65 74 75 72 6e 20 55 6e 73 61 66 65 4e 61 74  return UnsafeNat
24f50 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
24f60 65 33 5f 6d 61 6c 6c 6f 63 5f 73 69 7a 65 5f 69  e3_malloc_size_i
24f70 6e 74 65 72 6f 70 28 70 4d 65 6d 6f 72 79 29 3b  nterop(pMemory);
24f80 0d 0a 23 65 6c 69 66 20 54 52 41 43 4b 5f 4d 45  ..#elif TRACK_ME
24f90 4d 4f 52 59 5f 42 59 54 45 53 0d 0a 20 20 20 20  MORY_BYTES..    
24fa0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
24fb0 20 20 20 20 20 20 20 20 2f 2f 20 48 41 43 4b 3a          // HACK:
24fc0 20 4f 6b 2c 20 77 65 20 63 61 6e 6e 6f 74 20 64   Ok, we cannot d
24fd0 65 74 65 72 6d 69 6e 65 20 74 68 65 20 73 69 7a  etermine the siz
24fe0 65 20 6f 66 20 74 68 65 20 6d 65 6d 6f 72 79 20  e of the memory 
24ff0 62 6c 6f 63 6b 3b 0d 0a 20 20 20 20 20 20 20 20  block;..        
25000 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65      //       the
25010 72 65 66 6f 72 65 2c 20 6a 75 73 74 20 74 72 61  refore, just tra
25020 63 6b 20 6e 75 6d 62 65 72 20 6f 66 20 61 6c 6c  ck number of all
25030 6f 63 61 74 69 6f 6e 73 20 69 6e 73 74 65 61 64  ocations instead
25040 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
25050 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  /..            r
25060 65 74 75 72 6e 20 28 70 4d 65 6d 6f 72 79 20 21  eturn (pMemory !
25070 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20 3f  = IntPtr.Zero) ?
25080 20 31 20 3a 20 30 3b 0d 0a 23 65 6c 73 65 0d 0a   1 : 0;..#else..
25090 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
250a0 72 6e 20 30 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  rn 0;..#endif.. 
250b0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
250c0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
250d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
250e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
250f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
25110 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
25120 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
25130 2f 20 46 72 65 65 73 20 61 20 6d 65 6d 6f 72 79  / Frees a memory
25140 20 62 6c 6f 63 6b 20 70 72 65 76 69 6f 75 73 6c   block previousl
25150 79 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20  y obtained from 
25160 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
25170 20 3c 73 65 65 20 63 72 65 66 3d 22 41 6c 6c 6f   <see cref="Allo
25180 63 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  cate" /> method.
25190 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
251a0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
251b0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
251c0 65 3d 22 70 4d 65 6d 6f 72 79 22 3e 0d 0a 20 20  e="pMemory">..  
251d0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
251e0 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
251f0 74 68 65 20 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b  the memory block
25200 20 70 72 65 76 69 6f 75 73 6c 79 20 6f 62 74 61   previously obta
25210 69 6e 65 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20  ined from the.. 
25220 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
25230 63 72 65 66 3d 22 41 6c 6c 6f 63 61 74 65 22 20  cref="Allocate" 
25240 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
25250 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
25260 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
25270 20 73 74 61 74 69 63 20 76 6f 69 64 20 46 72 65   static void Fre
25280 65 28 49 6e 74 50 74 72 20 70 4d 65 6d 6f 72 79  e(IntPtr pMemory
25290 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
252a0 66 20 54 52 41 43 4b 5f 4d 45 4d 4f 52 59 5f 42  f TRACK_MEMORY_B
252b0 59 54 45 53 0d 0a 20 20 20 20 20 20 20 20 20 20  YTES..          
252c0 20 20 69 66 20 28 70 4d 65 6d 6f 72 79 20 21 3d    if (pMemory !=
252d0 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
252e0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
252f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
25300 74 20 62 6c 6f 63 6b 53 69 7a 65 20 3d 20 53 69  t blockSize = Si
25310 7a 65 28 70 4d 65 6d 6f 72 79 29 3b 0d 0a 0d 0a  ze(pMemory);....
25320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25330 69 66 20 28 62 6c 6f 63 6b 53 69 7a 65 20 3e 20  if (blockSize > 
25340 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  0)..            
25350 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
25360 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
25370 28 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  (syncRoot)..    
25380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25390 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
253a0 20 20 20 20 20 20 20 20 20 20 20 62 79 74 65 73             bytes
253b0 41 6c 6c 6f 63 61 74 65 64 20 2d 3d 20 62 6c 6f  Allocated -= blo
253c0 63 6b 53 69 7a 65 3b 0d 0a 20 20 20 20 20 20 20  ckSize;..       
253d0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
253e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
253f0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
25400 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
25410 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61          UnsafeNa
25420 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
25430 74 65 33 5f 66 72 65 65 28 70 4d 65 6d 6f 72 79  te3_free(pMemory
25440 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  );..        }.. 
25450 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
25460 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65  n..    }..    #e
25470 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
25480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
254a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
254b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
254c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
254d0 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74     #region SQLit
254e0 65 53 74 72 69 6e 67 20 53 74 61 74 69 63 20 43  eString Static C
254f0 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  lass..    /// <s
25500 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
25510 20 54 68 69 73 20 63 6c 61 73 73 20 63 6f 6e 74   This class cont
25520 61 69 6e 73 20 73 74 61 74 69 63 20 6d 65 74 68  ains static meth
25530 6f 64 73 20 74 68 61 74 20 61 72 65 20 75 73 65  ods that are use
25540 64 20 74 6f 20 64 65 61 6c 20 77 69 74 68 20 6e  d to deal with n
25550 61 74 69 76 65 0d 0a 20 20 20 20 2f 2f 2f 20 55  ative..    /// U
25560 54 46 2d 38 20 73 74 72 69 6e 67 20 70 6f 69 6e  TF-8 string poin
25570 74 65 72 73 20 74 6f 20 62 65 20 75 73 65 64 20  ters to be used 
25580 77 69 74 68 20 74 68 65 20 53 51 4c 69 74 65 20  with the SQLite 
25590 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20  core library... 
255a0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
255b0 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  >..    internal 
255c0 73 74 61 74 69 63 20 63 6c 61 73 73 20 53 51 4c  static class SQL
255d0 69 74 65 53 74 72 69 6e 67 0d 0a 20 20 20 20 7b  iteString..    {
255e0 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
255f0 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74 61  n Private Consta
25600 6e 74 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  nts..        ///
25610 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
25620 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20      /// This is 
25630 74 68 65 20 6d 61 78 69 6d 75 6d 20 70 6f 73 73  the maximum poss
25640 69 62 6c 65 20 6c 65 6e 67 74 68 20 66 6f 72 20  ible length for 
25650 74 68 65 20 6e 61 74 69 76 65 20 55 54 46 2d 38  the native UTF-8
25660 20 65 6e 63 6f 64 65 64 0d 0a 20 20 20 20 20 20   encoded..      
25670 20 20 2f 2f 2f 20 73 74 72 69 6e 67 73 20 75 73    /// strings us
25680 65 64 20 77 69 74 68 20 74 68 65 20 53 51 4c 69  ed with the SQLi
25690 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e  te core library.
256a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
256b0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
256c0 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
256d0 20 69 6e 74 20 54 68 69 72 74 79 42 69 74 73 20   int ThirtyBits 
256e0 3d 20 30 78 33 66 66 66 66 66 66 66 3b 0d 0a 0d  = 0x3fffffff;...
256f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
25700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25740 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
25750 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
25760 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74     /// This is t
25770 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 45 6e  he <see cref="En
25780 63 6f 64 69 6e 67 22 20 2f 3e 20 6f 62 6a 65 63  coding" /> objec
25790 74 20 69 6e 73 74 61 6e 63 65 20 75 73 65 64 20  t instance used 
257a0 74 6f 20 68 61 6e 64 6c 65 0d 0a 20 20 20 20 20  to handle..     
257b0 20 20 20 2f 2f 2f 20 63 6f 6e 76 65 72 73 69 6f     /// conversio
257c0 6e 73 20 66 72 6f 6d 2f 74 6f 20 55 54 46 2d 38  ns from/to UTF-8
257d0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
257e0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
257f0 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
25800 63 20 72 65 61 64 6f 6e 6c 79 20 45 6e 63 6f 64  c readonly Encod
25810 69 6e 67 20 55 74 66 38 45 6e 63 6f 64 69 6e 67  ing Utf8Encoding
25820 20 3d 20 45 6e 63 6f 64 69 6e 67 2e 55 54 46 38   = Encoding.UTF8
25830 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  ;..        #endr
25840 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
25850 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
25860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25890 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
258a0 20 20 20 20 23 72 65 67 69 6f 6e 20 55 54 46 2d      #region UTF-
258b0 38 20 45 6e 63 6f 64 69 6e 67 20 48 65 6c 70 65  8 Encoding Helpe
258c0 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20  r Methods..     
258d0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
258e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f  ..        /// Co
258f0 6e 76 65 72 74 73 20 74 68 65 20 73 70 65 63 69  nverts the speci
25900 66 69 65 64 20 6d 61 6e 61 67 65 64 20 73 74 72  fied managed str
25910 69 6e 67 20 69 6e 74 6f 20 74 68 65 20 55 54 46  ing into the UTF
25920 2d 38 20 65 6e 63 6f 64 69 6e 67 20 61 6e 64 0d  -8 encoding and.
25930 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 72 65 74  .        /// ret
25940 75 72 6e 73 20 74 68 65 20 61 72 72 61 79 20 6f  urns the array o
25950 66 20 62 79 74 65 73 20 63 6f 6e 74 61 69 6e 69  f bytes containi
25960 6e 67 20 69 74 73 20 72 65 70 72 65 73 65 6e 74  ng its represent
25970 61 74 69 6f 6e 20 69 6e 20 74 68 61 74 0d 0a 20  ation in that.. 
25980 20 20 20 20 20 20 20 2f 2f 2f 20 65 6e 63 6f 64         /// encod
25990 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ing...        //
259a0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
259b0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
259c0 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a   name="value">..
259d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
259e0 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67 20 74  managed string t
259f0 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20  o convert...    
25a00 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
25a10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
25a20 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
25a30 20 2f 2f 2f 20 54 68 65 20 61 72 72 61 79 20 6f   /// The array o
25a40 66 20 62 79 74 65 73 20 63 6f 6e 74 61 69 6e 69  f bytes containi
25a50 6e 67 20 74 68 65 20 72 65 70 72 65 73 65 6e 74  ng the represent
25a60 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 6d 61 6e  ation of the man
25a70 61 67 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  aged..        //
25a80 2f 20 73 74 72 69 6e 67 20 69 6e 20 74 68 65 20  / string in the 
25a90 55 54 46 2d 38 20 65 6e 63 6f 64 69 6e 67 20 6f  UTF-8 encoding o
25aa0 72 20 6e 75 6c 6c 20 75 70 6f 6e 20 66 61 69 6c  r null upon fail
25ab0 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
25ac0 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
25ad0 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
25ae0 74 69 63 20 62 79 74 65 5b 5d 20 47 65 74 55 74  tic byte[] GetUt
25af0 66 38 42 79 74 65 73 46 72 6f 6d 53 74 72 69 6e  f8BytesFromStrin
25b00 67 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g(..            
25b10 73 74 72 69 6e 67 20 76 61 6c 75 65 0d 0a 20 20  string value..  
25b20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
25b30 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
25b40 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d      if (value ==
25b50 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
25b60 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
25b70 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
25b80 20 20 20 20 72 65 74 75 72 6e 20 55 74 66 38 45      return Utf8E
25b90 6e 63 6f 64 69 6e 67 2e 47 65 74 42 79 74 65 73  ncoding.GetBytes
25ba0 28 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20  (value);..      
25bb0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
25bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25c00 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
25c10 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
25c20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e  .        /// Con
25c30 76 65 72 74 73 20 74 68 65 20 73 70 65 63 69 66  verts the specif
25c40 69 65 64 20 61 72 72 61 79 20 6f 66 20 62 79 74  ied array of byt
25c50 65 73 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20  es representing 
25c60 61 20 73 74 72 69 6e 67 20 69 6e 20 74 68 65 0d  a string in the.
25c70 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 54 46  .        /// UTF
25c80 2d 38 20 65 6e 63 6f 64 69 6e 67 20 61 6e 64 20  -8 encoding and 
25c90 72 65 74 75 72 6e 73 20 61 20 6d 61 6e 61 67 65  returns a manage
25ca0 64 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 20  d string...     
25cb0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
25cc0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
25cd0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 62 79 74 65  param name="byte
25ce0 73 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  s">..        ///
25cf0 20 54 68 65 20 61 72 72 61 79 20 6f 66 20 62 79   The array of by
25d00 74 65 73 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d  tes to convert..
25d10 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
25d20 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
25d30 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
25d40 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61        /// The ma
25d50 6e 61 67 65 64 20 73 74 72 69 6e 67 20 6f 72 20  naged string or 
25d60 6e 75 6c 6c 20 75 70 6f 6e 20 66 61 69 6c 75 72  null upon failur
25d70 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
25d80 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
25d90 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
25da0 63 20 73 74 72 69 6e 67 20 47 65 74 53 74 72 69  c string GetStri
25db0 6e 67 46 72 6f 6d 55 74 66 38 42 79 74 65 73 28  ngFromUtf8Bytes(
25dc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 79  ..            by
25dd0 74 65 5b 5d 20 62 79 74 65 73 0d 0a 20 20 20 20  te[] bytes..    
25de0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
25df0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
25e00 20 20 69 66 20 28 62 79 74 65 73 20 3d 3d 20 6e    if (bytes == n
25e10 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
25e20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
25e30 6c 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  l;....#if !PLATF
25e40 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
25e50 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
25e60 20 20 72 65 74 75 72 6e 20 55 74 66 38 45 6e 63    return Utf8Enc
25e70 6f 64 69 6e 67 2e 47 65 74 53 74 72 69 6e 67 28  oding.GetString(
25e80 62 79 74 65 73 29 3b 0d 0a 23 65 6c 73 65 0d 0a  bytes);..#else..
25e90 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
25ea0 72 6e 20 55 74 66 38 45 6e 63 6f 64 69 6e 67 2e  rn Utf8Encoding.
25eb0 47 65 74 53 74 72 69 6e 67 28 62 79 74 65 73 2c  GetString(bytes,
25ec0 20 30 2c 20 62 79 74 65 73 2e 4c 65 6e 67 74 68   0, bytes.Length
25ed0 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
25ee0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
25ef0 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
25f00 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
25f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
25f50 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
25f60 55 54 46 2d 38 20 53 74 72 69 6e 67 20 48 65 6c  UTF-8 String Hel
25f70 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20  per Methods..   
25f80 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
25f90 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
25fa0 50 72 6f 62 65 73 20 61 20 6e 61 74 69 76 65 20  Probes a native 
25fb0 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 73 74 72  pointer to a str
25fc0 69 6e 67 20 69 6e 20 74 68 65 20 55 54 46 2d 38  ing in the UTF-8
25fd0 20 65 6e 63 6f 64 69 6e 67 20 66 6f 72 20 69 74   encoding for it
25fe0 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  s..        /// t
25ff0 65 72 6d 69 6e 61 74 69 6e 67 20 4e 55 4c 20 63  erminating NUL c
26000 68 61 72 61 63 74 65 72 2c 20 77 69 74 68 69 6e  haracter, within
26010 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6c   the specified l
26020 65 6e 67 74 68 20 6c 69 6d 69 74 2e 0d 0a 20 20  ength limit...  
26030 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
26040 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
26050 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
26060 56 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20  Value">..       
26070 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
26080 4e 55 4c 2d 74 65 72 6d 69 6e 61 74 65 64 20 73  NUL-terminated s
26090 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 2e 0d 0a  tring pointer...
260a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
260b0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
260c0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c  / <param name="l
260d0 69 6d 69 74 22 3e 0d 0a 20 20 20 20 20 20 20 20  imit">..        
260e0 2f 2f 2f 20 54 68 65 20 6d 61 78 69 6d 75 6d 20  /// The maximum 
260f0 6c 65 6e 67 74 68 20 6f 66 20 74 68 65 20 6e 61  length of the na
26100 74 69 76 65 20 73 74 72 69 6e 67 2c 20 69 6e 20  tive string, in 
26110 62 79 74 65 73 2e 0d 0a 20 20 20 20 20 20 20 20  bytes...        
26120 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
26130 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
26140 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
26150 20 54 68 65 20 6c 65 6e 67 74 68 20 6f 66 20 74   The length of t
26160 68 65 20 6e 61 74 69 76 65 20 73 74 72 69 6e 67  he native string
26170 2c 20 69 6e 20 62 79 74 65 73 20 2d 4f 52 2d 20  , in bytes -OR- 
26180 7a 65 72 6f 20 69 66 20 74 68 65 20 6c 65 6e 67  zero if the leng
26190 74 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  th..        /// 
261a0 63 6f 75 6c 64 20 6e 6f 74 20 62 65 20 64 65 74  could not be det
261b0 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20  ermined...      
261c0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
261d0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
261e0 20 73 74 61 74 69 63 20 69 6e 74 20 50 72 6f 62   static int Prob
261f0 65 46 6f 72 55 74 66 38 42 79 74 65 4c 65 6e 67  eForUtf8ByteLeng
26200 74 68 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  th(..           
26210 20 49 6e 74 50 74 72 20 70 56 61 6c 75 65 2c 0d   IntPtr pValue,.
26220 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
26230 20 6c 69 6d 69 74 0d 0a 20 20 20 20 20 20 20 20   limit..        
26240 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
26250 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
26260 74 20 6c 65 6e 67 74 68 20 3d 20 30 3b 0d 0a 0d  t length = 0;...
26270 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
26280 28 28 70 56 61 6c 75 65 20 21 3d 20 49 6e 74 50  ((pValue != IntP
26290 74 72 2e 5a 65 72 6f 29 20 26 26 20 28 6c 69 6d  tr.Zero) && (lim
262a0 69 74 20 3e 20 30 29 29 0d 0a 20 20 20 20 20 20  it > 0))..      
262b0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
262c0 20 20 20 20 20 20 20 20 20 64 6f 0d 0a 20 20 20           do..   
262d0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
262e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
262f0 20 20 20 20 69 66 20 28 4d 61 72 73 68 61 6c 2e      if (Marshal.
26300 52 65 61 64 42 79 74 65 28 70 56 61 6c 75 65 2c  ReadByte(pValue,
26310 20 6c 65 6e 67 74 68 29 20 3d 3d 20 30 29 0d 0a   length) == 0)..
26320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26330 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a          break;..
26340 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26350 20 20 20 20 20 20 69 66 20 28 6c 65 6e 67 74 68        if (length
26360 20 3e 3d 20 6c 69 6d 69 74 29 0d 0a 20 20 20 20   >= limit)..    
26370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26380 20 20 20 20 62 72 65 61 6b 3b 0d 0a 0d 0a 20 20      break;....  
26390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
263a0 20 20 6c 65 6e 67 74 68 2b 2b 3b 0d 0a 20 20 20    length++;..   
263b0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 77               } w
263c0 68 69 6c 65 20 28 74 72 75 65 29 3b 0d 0a 20 20  hile (true);..  
263d0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
263e0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
263f0 6e 20 6c 65 6e 67 74 68 3b 0d 0a 20 20 20 20 20  n length;..     
26400 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
26410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26450 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
26460 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
26470 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f  ..        /// Co
26480 6e 76 65 72 74 73 20 74 68 65 20 73 70 65 63 69  nverts the speci
26490 66 69 65 64 20 6e 61 74 69 76 65 20 4e 55 4c 2d  fied native NUL-
264a0 74 65 72 6d 69 6e 61 74 65 64 20 55 54 46 2d 38  terminated UTF-8
264b0 20 73 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 0d   string pointer.
264c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74  .        /// int
264d0 6f 20 61 20 6d 61 6e 61 67 65 64 20 73 74 72 69  o a managed stri
264e0 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ng...        ///
264f0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
26500 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
26510 6e 61 6d 65 3d 22 70 56 61 6c 75 65 22 3e 0d 0a  name="pValue">..
26520 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
26530 6e 61 74 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69  native NUL-termi
26540 6e 61 74 65 64 20 55 54 46 2d 38 20 73 74 72 69  nated UTF-8 stri
26550 6e 67 20 70 6f 69 6e 74 65 72 2e 0d 0a 20 20 20  ng pointer...   
26560 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
26570 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
26580 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
26590 20 20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65    /// The manage
265a0 64 20 73 74 72 69 6e 67 20 6f 72 20 6e 75 6c 6c  d string or null
265b0 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a   upon failure...
265c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
265d0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
265e0 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 73 74  public static st
265f0 72 69 6e 67 20 53 74 72 69 6e 67 46 72 6f 6d 55  ring StringFromU
26600 74 66 38 49 6e 74 50 74 72 28 0d 0a 20 20 20 20  tf8IntPtr(..    
26610 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
26620 56 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20  Value..         
26630 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
26640 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
26650 75 72 6e 20 53 74 72 69 6e 67 46 72 6f 6d 55 74  urn StringFromUt
26660 66 38 49 6e 74 50 74 72 28 70 56 61 6c 75 65 2c  f8IntPtr(pValue,
26670 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26680 20 20 50 72 6f 62 65 46 6f 72 55 74 66 38 42 79    ProbeForUtf8By
26690 74 65 4c 65 6e 67 74 68 28 70 56 61 6c 75 65 2c  teLength(pValue,
266a0 20 54 68 69 72 74 79 42 69 74 73 29 29 3b 0d 0a   ThirtyBits));..
266b0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
266c0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
266d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
266e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
266f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
26710 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
26720 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
26730 2f 2f 20 43 6f 6e 76 65 72 74 73 20 74 68 65 20  // Converts the 
26740 73 70 65 63 69 66 69 65 64 20 6e 61 74 69 76 65  specified native
26750 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20 70 6f   UTF-8 string po
26760 69 6e 74 65 72 20 6f 66 20 74 68 65 20 73 70 65  inter of the spe
26770 63 69 66 69 65 64 0d 0a 20 20 20 20 20 20 20 20  cified..        
26780 2f 2f 2f 20 6c 65 6e 67 74 68 20 69 6e 74 6f 20  /// length into 
26790 61 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67  a managed string
267a0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
267b0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
267c0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
267d0 6d 65 3d 22 70 56 61 6c 75 65 22 3e 0d 0a 20 20  me="pValue">..  
267e0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
267f0 74 69 76 65 20 55 54 46 2d 38 20 73 74 72 69 6e  tive UTF-8 strin
26800 67 20 70 6f 69 6e 74 65 72 2e 0d 0a 20 20 20 20  g pointer...    
26810 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
26820 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
26830 61 72 61 6d 20 6e 61 6d 65 3d 22 6c 65 6e 67 74  aram name="lengt
26840 68 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  h">..        ///
26850 20 54 68 65 20 6c 65 6e 67 74 68 20 6f 66 20 74   The length of t
26860 68 65 20 6e 61 74 69 76 65 20 73 74 72 69 6e 67  he native string
26870 2c 20 69 6e 20 62 79 74 65 73 2e 0d 0a 20 20 20  , in bytes...   
26880 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
26890 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
268a0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
268b0 20 20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65    /// The manage
268c0 64 20 73 74 72 69 6e 67 20 6f 72 20 6e 75 6c 6c  d string or null
268d0 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a   upon failure...
268e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
268f0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
26900 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 73 74  public static st
26910 72 69 6e 67 20 53 74 72 69 6e 67 46 72 6f 6d 55  ring StringFromU
26920 74 66 38 49 6e 74 50 74 72 28 0d 0a 20 20 20 20  tf8IntPtr(..    
26930 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
26940 56 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20 20 20  Value,..        
26950 20 20 20 20 69 6e 74 20 6c 65 6e 67 74 68 0d 0a      int length..
26960 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
26970 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
26980 20 20 20 20 20 20 69 66 20 28 70 56 61 6c 75 65        if (pValue
26990 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
269a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
269b0 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
269c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
269d0 20 28 6c 65 6e 67 74 68 20 3e 20 30 29 0d 0a 20   (length > 0).. 
269e0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
269f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 79                by
26a00 74 65 5b 5d 20 62 79 74 65 73 20 3d 20 6e 65 77  te[] bytes = new
26a10 20 62 79 74 65 5b 6c 65 6e 67 74 68 5d 3b 0d 0a   byte[length];..
26a20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26a30 20 20 4d 61 72 73 68 61 6c 2e 43 6f 70 79 28 70    Marshal.Copy(p
26a40 56 61 6c 75 65 2c 20 62 79 74 65 73 2c 20 30 2c  Value, bytes, 0,
26a50 20 6c 65 6e 67 74 68 29 3b 0d 0a 0d 0a 20 20 20   length);....   
26a60 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
26a70 75 72 6e 20 47 65 74 53 74 72 69 6e 67 46 72 6f  urn GetStringFro
26a80 6d 55 74 66 38 42 79 74 65 73 28 62 79 74 65 73  mUtf8Bytes(bytes
26a90 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
26aa0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
26ab0 20 72 65 74 75 72 6e 20 53 74 72 69 6e 67 2e 45   return String.E
26ac0 6d 70 74 79 3b 0d 0a 20 20 20 20 20 20 20 20 7d  mpty;..        }
26ad0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
26ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26b20 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
26b30 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
26b40 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72        /// Conver
26b50 74 73 20 74 68 65 20 73 70 65 63 69 66 69 65 64  ts the specified
26b60 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67 20   managed string 
26b70 69 6e 74 6f 20 61 20 6e 61 74 69 76 65 20 4e 55  into a native NU
26b80 4c 2d 74 65 72 6d 69 6e 61 74 65 64 0d 0a 20 20  L-terminated..  
26b90 20 20 20 20 20 20 2f 2f 2f 20 55 54 46 2d 38 20        /// UTF-8 
26ba0 73 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 20 75  string pointer u
26bb0 73 69 6e 67 20 6d 65 6d 6f 72 79 20 6f 62 74 61  sing memory obta
26bc0 69 6e 65 64 20 66 72 6f 6d 20 74 68 65 20 53 51  ined from the SQ
26bd0 4c 69 74 65 20 63 6f 72 65 0d 0a 20 20 20 20 20  Lite core..     
26be0 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79 2e 0d     /// library..
26bf0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
26c00 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
26c10 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
26c20 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20  ="value">..     
26c30 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67     /// The manag
26c40 65 64 20 73 74 72 69 6e 67 20 74 6f 20 63 6f 6e  ed string to con
26c50 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f  vert...        /
26c60 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
26c70 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
26c80 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
26c90 54 68 65 20 6e 61 74 69 76 65 20 4e 55 4c 2d 74  The native NUL-t
26ca0 65 72 6d 69 6e 61 74 65 64 20 55 54 46 2d 38 20  erminated UTF-8 
26cb0 73 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 20 6f  string pointer o
26cc0 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  r..        /// <
26cd0 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72  see cref="IntPtr
26ce0 2e 5a 65 72 6f 22 20 2f 3e 20 75 70 6f 6e 20 66  .Zero" /> upon f
26cf0 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ailure...       
26d00 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
26d10 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
26d20 73 74 61 74 69 63 20 49 6e 74 50 74 72 20 55 74  static IntPtr Ut
26d30 66 38 49 6e 74 50 74 72 46 72 6f 6d 53 74 72 69  f8IntPtrFromStri
26d40 6e 67 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng(..           
26d50 20 73 74 72 69 6e 67 20 76 61 6c 75 65 0d 0a 20   string value.. 
26d60 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
26d70 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
26d80 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d       if (value =
26d90 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
26da0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
26db0 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a  IntPtr.Zero;....
26dc0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
26dd0 74 72 20 72 65 73 75 6c 74 20 3d 20 49 6e 74 50  tr result = IntP
26de0 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20  tr.Zero;..      
26df0 20 20 20 20 20 20 62 79 74 65 5b 5d 20 62 79 74        byte[] byt
26e00 65 73 20 3d 20 47 65 74 55 74 66 38 42 79 74 65  es = GetUtf8Byte
26e10 73 46 72 6f 6d 53 74 72 69 6e 67 28 76 61 6c 75  sFromString(valu
26e20 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
26e30 20 20 20 69 66 20 28 62 79 74 65 73 20 3d 3d 20     if (bytes == 
26e40 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
26e50 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e         return In
26e60 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20  tPtr.Zero;....  
26e70 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6c 65            int le
26e80 6e 67 74 68 20 3d 20 62 79 74 65 73 2e 4c 65 6e  ngth = bytes.Len
26e90 67 74 68 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gth;....        
26ea0 20 20 20 20 72 65 73 75 6c 74 20 3d 20 53 51 4c      result = SQL
26eb0 69 74 65 4d 65 6d 6f 72 79 2e 41 6c 6c 6f 63 61  iteMemory.Alloca
26ec0 74 65 28 6c 65 6e 67 74 68 20 2b 20 31 29 3b 0d  te(length + 1);.
26ed0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
26ee0 66 20 28 72 65 73 75 6c 74 20 3d 3d 20 49 6e 74  f (result == Int
26ef0 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
26f00 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
26f10 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  n IntPtr.Zero;..
26f20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 4d 61  ..            Ma
26f30 72 73 68 61 6c 2e 43 6f 70 79 28 62 79 74 65 73  rshal.Copy(bytes
26f40 2c 20 30 2c 20 72 65 73 75 6c 74 2c 20 6c 65 6e  , 0, result, len
26f50 67 74 68 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  gth);..         
26f60 20 20 20 4d 61 72 73 68 61 6c 2e 57 72 69 74 65     Marshal.Write
26f70 42 79 74 65 28 72 65 73 75 6c 74 2c 20 6c 65 6e  Byte(result, len
26f80 67 74 68 2c 20 30 29 3b 0d 0a 0d 0a 20 20 20 20  gth, 0);....    
26f90 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72          return r
26fa0 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20  esult;..        
26fb0 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
26fc0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
26fd0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
26fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27010 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
27020 20 20 20 20 23 72 65 67 69 6f 6e 20 55 54 46 2d      #region UTF-
27030 38 20 53 74 72 69 6e 67 20 41 72 72 61 79 20 48  8 String Array H
27040 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20  elper Methods.. 
27050 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
27060 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
27070 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 6c 6f 67  / Converts a log
27080 69 63 61 6c 20 61 72 72 61 79 20 6f 66 20 6e 61  ical array of na
27090 74 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69 6e 61  tive NUL-termina
270a0 74 65 64 20 55 54 46 2d 38 20 73 74 72 69 6e 67  ted UTF-8 string
270b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 6f  ..        /// po
270c0 69 6e 74 65 72 73 20 69 6e 74 6f 20 61 6e 20 61  inters into an a
270d0 72 72 61 79 20 6f 66 20 6d 61 6e 61 67 65 64 20  rray of managed 
270e0 73 74 72 69 6e 67 73 2e 0d 0a 20 20 20 20 20 20  strings...      
270f0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
27100 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
27110 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 63 22  aram name="argc"
27120 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
27130 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 65 6c 65  he number of ele
27140 6d 65 6e 74 73 20 69 6e 20 74 68 65 20 6c 6f 67  ments in the log
27150 69 63 61 6c 20 61 72 72 61 79 20 6f 66 20 6e 61  ical array of na
27160 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tive..        //
27170 2f 20 4e 55 4c 2d 74 65 72 6d 69 6e 61 74 65 64  / NUL-terminated
27180 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20 70 6f   UTF-8 string po
27190 69 6e 74 65 72 73 2e 0d 0a 20 20 20 20 20 20 20  inters...       
271a0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
271b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
271c0 6d 20 6e 61 6d 65 3d 22 61 72 67 76 22 3e 0d 0a  m name="argv">..
271d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
271e0 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
271f0 6f 20 74 68 65 20 6c 6f 67 69 63 61 6c 20 61 72  o the logical ar
27200 72 61 79 20 6f 66 20 6e 61 74 69 76 65 20 4e 55  ray of native NU
27210 4c 2d 74 65 72 6d 69 6e 61 74 65 64 0d 0a 20 20  L-terminated..  
27220 20 20 20 20 20 20 2f 2f 2f 20 55 54 46 2d 38 20        /// UTF-8 
27230 73 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 73 20  string pointers 
27240 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20  to convert...   
27250 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
27260 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
27270 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
27280 20 20 2f 2f 2f 20 54 68 65 20 61 72 72 61 79 20    /// The array 
27290 6f 66 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e  of managed strin
272a0 67 73 20 6f 72 20 6e 75 6c 6c 20 75 70 6f 6e 20  gs or null upon 
272b0 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20  failure...      
272c0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
272d0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
272e0 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 5b 5d   static string[]
272f0 20 53 74 72 69 6e 67 41 72 72 61 79 46 72 6f 6d   StringArrayFrom
27300 55 74 66 38 53 69 7a 65 41 6e 64 49 6e 74 50 74  Utf8SizeAndIntPt
27310 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
27320 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20  int argc,..     
27330 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 61 72         IntPtr ar
27340 67 76 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  gv..            
27350 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
27360 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61 72            if (ar
27370 67 63 20 3c 20 30 29 0d 0a 20 20 20 20 20 20 20  gc < 0)..       
27380 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
27390 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
273a0 20 20 20 20 20 69 66 20 28 61 72 67 76 20 3d 3d       if (argv ==
273b0 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
273c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
273d0 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  eturn null;.... 
273e0 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
273f0 67 5b 5d 20 72 65 73 75 6c 74 20 3d 20 6e 65 77  g[] result = new
27400 20 73 74 72 69 6e 67 5b 61 72 67 63 5d 3b 0d 0a   string[argc];..
27410 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f  ..            fo
27420 72 20 28 69 6e 74 20 69 6e 64 65 78 20 3d 20 30  r (int index = 0
27430 2c 20 6f 66 66 73 65 74 20 3d 20 30 3b 0d 0a 20  , offset = 0;.. 
27440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27450 20 20 20 69 6e 64 65 78 20 3c 20 72 65 73 75 6c     index < resul
27460 74 2e 4c 65 6e 67 74 68 3b 0d 0a 20 20 20 20 20  t.Length;..     
27470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
27480 6e 64 65 78 2b 2b 2c 20 6f 66 66 73 65 74 20 2b  ndex++, offset +
27490 3d 20 49 6e 74 50 74 72 2e 53 69 7a 65 29 0d 0a  = IntPtr.Size)..
274a0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
274b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
274c0 6e 74 50 74 72 20 70 41 72 67 20 3d 20 53 51 4c  ntPtr pArg = SQL
274d0 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49  iteMarshal.ReadI
274e0 6e 74 50 74 72 28 61 72 67 76 2c 20 6f 66 66 73  ntPtr(argv, offs
274f0 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  et);....        
27500 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 5b 69          result[i
27510 6e 64 65 78 5d 20 3d 20 28 70 41 72 67 20 21 3d  ndex] = (pArg !=
27520 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20 3f 0d   IntPtr.Zero) ?.
27530 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27540 20 20 20 20 20 53 74 72 69 6e 67 46 72 6f 6d 55       StringFromU
27550 74 66 38 49 6e 74 50 74 72 28 70 41 72 67 29 20  tf8IntPtr(pArg) 
27560 3a 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  : null;..       
27570 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
27580 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73        return res
27590 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ult;..        }.
275a0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
275b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
275c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
275d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
275e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
275f0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
27600 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
27610 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74       /// Convert
27620 73 20 61 6e 20 61 72 72 61 79 20 6f 66 20 6d 61  s an array of ma
27630 6e 61 67 65 64 20 73 74 72 69 6e 67 73 20 69 6e  naged strings in
27640 74 6f 20 61 6e 20 61 72 72 61 79 20 6f 66 20 6e  to an array of n
27650 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f  ative..        /
27660 2f 2f 20 4e 55 4c 2d 74 65 72 6d 69 6e 61 74 65  // NUL-terminate
27670 64 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20 70  d UTF-8 string p
27680 6f 69 6e 74 65 72 73 2e 0d 0a 20 20 20 20 20 20  ointers...      
27690 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
276a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
276b0 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65  aram name="value
276c0 73 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  s">..        ///
276d0 20 54 68 65 20 61 72 72 61 79 20 6f 66 20 6d 61   The array of ma
276e0 6e 61 67 65 64 20 73 74 72 69 6e 67 73 20 74 6f  naged strings to
276f0 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20   convert...     
27700 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
27710 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
27720 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
27730 2f 2f 2f 20 54 68 65 20 61 72 72 61 79 20 6f 66  /// The array of
27740 20 6e 61 74 69 76 65 20 4e 55 4c 2d 74 65 72 6d   native NUL-term
27750 69 6e 61 74 65 64 20 55 54 46 2d 38 20 73 74 72  inated UTF-8 str
27760 69 6e 67 20 70 6f 69 6e 74 65 72 73 20 6f 72 20  ing pointers or 
27770 6e 75 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f  null..        //
27780 2f 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d  / upon failure..
27790 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
277a0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
277b0 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 49   public static I
277c0 6e 74 50 74 72 5b 5d 20 55 74 66 38 49 6e 74 50  ntPtr[] Utf8IntP
277d0 74 72 41 72 72 61 79 46 72 6f 6d 53 74 72 69 6e  trArrayFromStrin
277e0 67 41 72 72 61 79 28 0d 0a 20 20 20 20 20 20 20  gArray(..       
277f0 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 76 61       string[] va
27800 6c 75 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20  lues..          
27810 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
27820 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
27830 76 61 6c 75 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d  values == null).
27840 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27850 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d   return null;...
27860 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
27870 50 74 72 5b 5d 20 72 65 73 75 6c 74 20 3d 20 6e  Ptr[] result = n
27880 65 77 20 49 6e 74 50 74 72 5b 76 61 6c 75 65 73  ew IntPtr[values
27890 2e 4c 65 6e 67 74 68 5d 3b 0d 0a 0d 0a 20 20 20  .Length];....   
278a0 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 69 6e           for (in
278b0 74 20 69 6e 64 65 78 20 3d 20 30 3b 20 69 6e 64  t index = 0; ind
278c0 65 78 20 3c 20 72 65 73 75 6c 74 2e 4c 65 6e 67  ex < result.Leng
278d0 74 68 3b 20 69 6e 64 65 78 2b 2b 29 0d 0a 20 20  th; index++)..  
278e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
278f0 73 75 6c 74 5b 69 6e 64 65 78 5d 20 3d 20 55 74  sult[index] = Ut
27900 66 38 49 6e 74 50 74 72 46 72 6f 6d 53 74 72 69  f8IntPtrFromStri
27910 6e 67 28 76 61 6c 75 65 73 5b 69 6e 64 65 78 5d  ng(values[index]
27920 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
27930 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b    return result;
27940 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
27950 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
27960 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64  .    }..    #end
27970 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
27980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
279a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
279b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
279c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
279d0 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 42   #region SQLiteB
279e0 79 74 65 73 20 53 74 61 74 69 63 20 43 6c 61 73  ytes Static Clas
279f0 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  s..    /// <summ
27a00 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
27a10 69 73 20 63 6c 61 73 73 20 63 6f 6e 74 61 69 6e  is class contain
27a20 73 20 73 74 61 74 69 63 20 6d 65 74 68 6f 64 73  s static methods
27a30 20 74 68 61 74 20 61 72 65 20 75 73 65 64 20 74   that are used t
27a40 6f 20 64 65 61 6c 20 77 69 74 68 20 6e 61 74 69  o deal with nati
27a50 76 65 0d 0a 20 20 20 20 2f 2f 2f 20 70 6f 69 6e  ve..    /// poin
27a60 74 65 72 73 20 74 6f 20 6d 65 6d 6f 72 79 20 62  ters to memory b
27a70 6c 6f 63 6b 73 20 74 68 61 74 20 6c 6f 67 69 63  locks that logic
27a80 61 6c 6c 79 20 63 6f 6e 74 61 69 6e 20 61 72 72  ally contain arr
27a90 61 79 73 20 6f 66 20 62 79 74 65 73 20 74 6f 20  ays of bytes to 
27aa0 62 65 0d 0a 20 20 20 20 2f 2f 2f 20 75 73 65 64  be..    /// used
27ab0 20 77 69 74 68 20 74 68 65 20 53 51 4c 69 74 65   with the SQLite
27ac0 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a   core library...
27ad0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
27ae0 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  y>..    internal
27af0 20 73 74 61 74 69 63 20 63 6c 61 73 73 20 53 51   static class SQ
27b00 4c 69 74 65 42 79 74 65 73 0d 0a 20 20 20 20 7b  LiteBytes..    {
27b10 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
27b20 6e 20 42 79 74 65 20 41 72 72 61 79 20 48 65 6c  n Byte Array Hel
27b30 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20  per Methods..   
27b40 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
27b50 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
27b60 43 6f 6e 76 65 72 74 73 20 61 20 6e 61 74 69 76  Converts a nativ
27b70 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6c  e pointer to a l
27b80 6f 67 69 63 61 6c 20 61 72 72 61 79 20 6f 66 20  ogical array of 
27b90 62 79 74 65 73 20 6f 66 20 74 68 65 0d 0a 20 20  bytes of the..  
27ba0 20 20 20 20 20 20 2f 2f 2f 20 73 70 65 63 69 66        /// specif
27bb0 69 65 64 20 6c 65 6e 67 74 68 20 69 6e 74 6f 20  ied length into 
27bc0 61 20 6d 61 6e 61 67 65 64 20 62 79 74 65 20 61  a managed byte a
27bd0 72 72 61 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f  rray...        /
27be0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
27bf0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
27c00 6d 20 6e 61 6d 65 3d 22 70 56 61 6c 75 65 22 3e  m name="pValue">
27c10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
27c20 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
27c30 20 74 6f 20 74 68 65 20 6c 6f 67 69 63 61 6c 20   to the logical 
27c40 61 72 72 61 79 20 6f 66 20 62 79 74 65 73 20 74  array of bytes t
27c50 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20  o convert...    
27c60 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
27c70 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
27c80 61 72 61 6d 20 6e 61 6d 65 3d 22 6c 65 6e 67 74  aram name="lengt
27c90 68 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  h">..        ///
27ca0 20 54 68 65 20 6c 65 6e 67 74 68 2c 20 69 6e 20   The length, in 
27cb0 62 79 74 65 73 2c 20 6f 66 20 74 68 65 20 6c 6f  bytes, of the lo
27cc0 67 69 63 61 6c 20 61 72 72 61 79 20 6f 66 20 62  gical array of b
27cd0 79 74 65 73 20 74 6f 20 63 6f 6e 76 65 72 74 2e  ytes to convert.
27ce0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
27cf0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
27d00 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
27d10 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d         /// The m
27d20 61 6e 61 67 65 64 20 62 79 74 65 20 61 72 72 61  anaged byte arra
27d30 79 20 6f 72 20 6e 75 6c 6c 20 75 70 6f 6e 20 66  y or null upon f
27d40 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ailure...       
27d50 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
27d60 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
27d70 73 74 61 74 69 63 20 62 79 74 65 5b 5d 20 46 72  static byte[] Fr
27d80 6f 6d 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20  omIntPtr(..     
27d90 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
27da0 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  alue,..         
27db0 20 20 20 69 6e 74 20 6c 65 6e 67 74 68 0d 0a 20     int length.. 
27dc0 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
27dd0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
27de0 20 20 20 20 20 69 66 20 28 70 56 61 6c 75 65 20       if (pValue 
27df0 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  == IntPtr.Zero).
27e00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27e10 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d   return null;...
27e20 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
27e30 28 6c 65 6e 67 74 68 20 3d 3d 20 30 29 0d 0a 20  (length == 0).. 
27e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
27e50 65 74 75 72 6e 20 6e 65 77 20 62 79 74 65 5b 30  eturn new byte[0
27e60 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  ];....          
27e70 20 20 62 79 74 65 5b 5d 20 72 65 73 75 6c 74 20    byte[] result 
27e80 3d 20 6e 65 77 20 62 79 74 65 5b 6c 65 6e 67 74  = new byte[lengt
27e90 68 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  h];....         
27ea0 20 20 20 4d 61 72 73 68 61 6c 2e 43 6f 70 79 28     Marshal.Copy(
27eb0 70 56 61 6c 75 65 2c 20 72 65 73 75 6c 74 2c 20  pValue, result, 
27ec0 30 2c 20 6c 65 6e 67 74 68 29 3b 0d 0a 0d 0a 20  0, length);.... 
27ed0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
27ee0 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20  n result;..     
27ef0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
27f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27f40 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
27f50 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
27f60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f  ..        /// Co
27f70 6e 76 65 72 74 73 20 61 20 6d 61 6e 61 67 65 64  nverts a managed
27f80 20 62 79 74 65 20 61 72 72 61 79 20 69 6e 74 6f   byte array into
27f90 20 61 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65   a native pointe
27fa0 72 20 74 6f 20 61 20 6c 6f 67 69 63 61 6c 0d 0a  r to a logical..
27fb0 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 72 72 61          /// arra
27fc0 79 20 6f 66 20 62 79 74 65 73 2e 0d 0a 20 20 20  y of bytes...   
27fd0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
27fe0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
27ff0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61   <param name="va
28000 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  lue">..        /
28010 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20 62  // The managed b
28020 79 74 65 20 61 72 72 61 79 20 74 6f 20 63 6f 6e  yte array to con
28030 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f  vert...        /
28040 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
28050 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
28060 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
28070 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  The native point
28080 65 72 20 74 6f 20 61 20 6c 6f 67 69 63 61 6c 20  er to a logical 
28090 62 79 74 65 20 61 72 72 61 79 20 6f 72 20 6e 75  byte array or nu
280a0 6c 6c 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e  ll upon failure.
280b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
280c0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
280d0 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
280e0 49 6e 74 50 74 72 20 54 6f 49 6e 74 50 74 72 28  IntPtr ToIntPtr(
280f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 79  ..            by
28100 74 65 5b 5d 20 76 61 6c 75 65 0d 0a 20 20 20 20  te[] value..    
28110 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
28120 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
28130 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e    if (value == n
28140 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
28150 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74        return Int
28160 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20  Ptr.Zero;....   
28170 20 20 20 20 20 20 20 20 20 69 6e 74 20 6c 65 6e           int len
28180 67 74 68 20 3d 20 76 61 6c 75 65 2e 4c 65 6e 67  gth = value.Leng
28190 74 68 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  th;....         
281a0 20 20 20 69 66 20 28 6c 65 6e 67 74 68 20 3d 3d     if (length ==
281b0 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20   0)..           
281c0 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50       return IntP
281d0 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20  tr.Zero;....    
281e0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 72          IntPtr r
281f0 65 73 75 6c 74 20 3d 20 53 51 4c 69 74 65 4d 65  esult = SQLiteMe
28200 6d 6f 72 79 2e 41 6c 6c 6f 63 61 74 65 28 6c 65  mory.Allocate(le
28210 6e 67 74 68 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ngth);....      
28220 20 20 20 20 20 20 69 66 20 28 72 65 73 75 6c 74        if (result
28230 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
28240 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28250 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e    return IntPtr.
28260 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Zero;....       
28270 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 43 6f 70       Marshal.Cop
28280 79 28 76 61 6c 75 65 2c 20 30 2c 20 72 65 73 75  y(value, 0, resu
28290 6c 74 2c 20 6c 65 6e 67 74 68 29 3b 0d 0a 0d 0a  lt, length);....
282a0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
282b0 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20  rn result;..    
282c0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
282d0 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d  endregion..    }
282e0 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
282f0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
28300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28340 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69  ///....    #regi
28350 6f 6e 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c  on SQLiteMarshal
28360 20 53 74 61 74 69 63 20 43 6c 61 73 73 0d 0a 20   Static Class.. 
28370 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
28380 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63  ..    /// This c
28390 6c 61 73 73 20 63 6f 6e 74 61 69 6e 73 20 73 74  lass contains st
283a0 61 74 69 63 20 6d 65 74 68 6f 64 73 20 74 68 61  atic methods tha
283b0 74 20 61 72 65 20 75 73 65 64 20 74 6f 20 70 65  t are used to pe
283c0 72 66 6f 72 6d 20 73 65 76 65 72 61 6c 0d 0a 20  rform several.. 
283d0 20 20 20 2f 2f 2f 20 6c 6f 77 2d 6c 65 76 65 6c     /// low-level
283e0 20 64 61 74 61 20 6d 61 72 73 68 61 6c 6c 69 6e   data marshallin
283f0 67 20 74 61 73 6b 73 20 62 65 74 77 65 65 6e 20  g tasks between 
28400 6e 61 74 69 76 65 20 61 6e 64 20 6d 61 6e 61 67  native and manag
28410 65 64 20 63 6f 64 65 2e 0d 0a 20 20 20 20 2f 2f  ed code...    //
28420 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
28430 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
28440 63 20 63 6c 61 73 73 20 53 51 4c 69 74 65 4d 61  c class SQLiteMa
28450 72 73 68 61 6c 0d 0a 20 20 20 20 7b 0d 0a 20 20  rshal..    {..  
28460 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 6e        #region In
28470 74 50 74 72 20 48 65 6c 70 65 72 20 4d 65 74 68  tPtr Helper Meth
28480 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ods..        ///
28490 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
284a0 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20      /// Returns 
284b0 61 20 6e 65 77 20 3c 73 65 65 20 63 72 65 66 3d  a new <see cref=
284c0 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65  "IntPtr" /> obje
284d0 63 74 20 69 6e 73 74 61 6e 63 65 20 62 61 73 65  ct instance base
284e0 64 20 6f 6e 20 74 68 65 0d 0a 20 20 20 20 20 20  d on the..      
284f0 20 20 2f 2f 2f 20 73 70 65 63 69 66 69 65 64 20    /// specified 
28500 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74  <see cref="IntPt
28510 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  r" /> object ins
28520 74 61 6e 63 65 20 61 6e 64 20 61 6e 20 69 6e 74  tance and an int
28530 65 67 65 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f  eger..        //
28540 2f 20 6f 66 66 73 65 74 2e 0d 0a 20 20 20 20 20  / offset...     
28550 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
28560 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
28570 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e  param name="poin
28580 74 65 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ter">..        /
28590 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
285a0 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a  ="IntPtr" /> obj
285b0 65 63 74 20 69 6e 73 74 61 6e 63 65 20 72 65 70  ect instance rep
285c0 72 65 73 65 6e 74 69 6e 67 20 74 68 65 20 62 61  resenting the ba
285d0 73 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  se..        /// 
285e0 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e  memory location.
285f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
28600 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
28610 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
28620 22 6f 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20  "offset">..     
28630 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67     /// The integ
28640 65 72 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74  er offset from t
28650 68 65 20 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c  he base memory l
28660 6f 63 61 74 69 6f 6e 20 74 68 61 74 20 74 68 65  ocation that the
28670 20 6e 65 77 0d 0a 20 20 20 20 20 20 20 20 2f 2f   new..        //
28680 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74  / <see cref="Int
28690 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  Ptr" /> object i
286a0 6e 73 74 61 6e 63 65 20 73 68 6f 75 6c 64 20 70  nstance should p
286b0 6f 69 6e 74 20 74 6f 2e 0d 0a 20 20 20 20 20 20  oint to...      
286c0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
286d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
286e0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
286f0 2f 2f 20 54 68 65 20 6e 65 77 20 3c 73 65 65 20  // The new <see 
28700 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e  cref="IntPtr" />
28710 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
28720 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
28730 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
28740 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
28750 20 49 6e 74 50 74 72 20 49 6e 74 50 74 72 46 6f   IntPtr IntPtrFo
28760 72 4f 66 66 73 65 74 28 0d 0a 20 20 20 20 20 20  rOffset(..      
28770 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 6f 69        IntPtr poi
28780 6e 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20  nter,..         
28790 20 20 20 69 6e 74 20 6f 66 66 73 65 74 0d 0a 20     int offset.. 
287a0 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
287b0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
287c0 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20       return new 
287d0 49 6e 74 50 74 72 28 70 6f 69 6e 74 65 72 2e 54  IntPtr(pointer.T
287e0 6f 49 6e 74 36 34 28 29 20 2b 20 6f 66 66 73 65  oInt64() + offse
287f0 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  t);..        }..
28800 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
28810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28850 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
28860 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
28870 20 20 20 20 2f 2f 2f 20 52 6f 75 6e 64 73 20 75      /// Rounds u
28880 70 20 61 6e 20 69 6e 74 65 67 65 72 20 73 69 7a  p an integer siz
28890 65 20 74 6f 20 74 68 65 20 6e 65 78 74 20 6d 75  e to the next mu
288a0 6c 74 69 70 6c 65 20 6f 66 20 74 68 65 20 61 6c  ltiple of the al
288b0 69 67 6e 6d 65 6e 74 2e 0d 0a 20 20 20 20 20 20  ignment...      
288c0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
288d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
288e0 61 72 61 6d 20 6e 61 6d 65 3d 22 73 69 7a 65 22  aram name="size"
288f0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
28900 68 65 20 73 69 7a 65 2c 20 69 6e 20 62 79 74 65  he size, in byte
28910 73 2c 20 74 6f 20 62 65 20 72 6f 75 6e 64 65 64  s, to be rounded
28920 20 75 70 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f   up...        //
28930 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
28940 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
28950 61 6d 65 3d 22 61 6c 69 67 6e 6d 65 6e 74 22 3e  ame="alignment">
28960 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
28970 65 20 72 65 71 75 69 72 65 64 20 61 6c 69 67 6e  e required align
28980 6d 65 6e 74 20 66 6f 72 20 74 68 65 20 72 65 74  ment for the ret
28990 75 72 6e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20  urn value...    
289a0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
289b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
289c0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
289d0 20 2f 2f 2f 20 54 68 65 20 73 69 7a 65 2c 20 69   /// The size, i
289e0 6e 20 62 79 74 65 73 2c 20 72 6f 75 6e 64 65 64  n bytes, rounded
289f0 20 75 70 20 74 6f 20 74 68 65 20 6e 65 78 74 20   up to the next 
28a00 6d 75 6c 74 69 70 6c 65 20 6f 66 20 74 68 65 0d  multiple of the.
28a10 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 6c 69  .        /// ali
28a20 67 6e 6d 65 6e 74 2e 20 20 54 68 69 73 20 76 61  gnment.  This va
28a30 6c 75 65 20 6d 61 79 20 65 6e 64 20 75 70 20 62  lue may end up b
28a40 65 69 6e 67 20 74 68 65 20 73 61 6d 65 20 61 73  eing the same as
28a50 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 0d 0a 20   the original.. 
28a60 20 20 20 20 20 20 20 2f 2f 2f 20 73 69 7a 65 2e         /// size.
28a70 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
28a80 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
28a90 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
28aa0 69 6e 74 20 52 6f 75 6e 64 55 70 28 0d 0a 20 20  int RoundUp(..  
28ab0 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 73 69            int si
28ac0 7a 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ze,..           
28ad0 20 69 6e 74 20 61 6c 69 67 6e 6d 65 6e 74 0d 0a   int alignment..
28ae0 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
28af0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
28b00 20 20 20 20 20 20 69 6e 74 20 61 6c 69 67 6e 6d        int alignm
28b10 65 6e 74 4d 69 6e 75 73 4f 6e 65 20 3d 20 61 6c  entMinusOne = al
28b20 69 67 6e 6d 65 6e 74 20 2d 20 31 3b 0d 0a 20 20  ignment - 1;..  
28b30 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
28b40 20 28 28 73 69 7a 65 20 2b 20 61 6c 69 67 6e 6d   ((size + alignm
28b50 65 6e 74 4d 69 6e 75 73 4f 6e 65 29 20 26 20 7e  entMinusOne) & ~
28b60 61 6c 69 67 6e 6d 65 6e 74 4d 69 6e 75 73 4f 6e  alignmentMinusOn
28b70 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  e);..        }..
28b80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
28b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28bd0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
28be0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
28bf0 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e      /// Determin
28c00 65 73 20 74 68 65 20 6f 66 66 73 65 74 2c 20 69  es the offset, i
28c10 6e 20 62 79 74 65 73 2c 20 6f 66 20 74 68 65 20  n bytes, of the 
28c20 6e 65 78 74 20 73 74 72 75 63 74 75 72 65 20 6d  next structure m
28c30 65 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20 20 20  ember...        
28c40 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
28c50 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
28c60 61 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22  am name="offset"
28c70 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
28c80 68 65 20 6f 66 66 73 65 74 2c 20 69 6e 20 62 79  he offset, in by
28c90 74 65 73 2c 20 6f 66 20 74 68 65 20 63 75 72 72  tes, of the curr
28ca0 65 6e 74 20 73 74 72 75 63 74 75 72 65 20 6d 65  ent structure me
28cb0 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f  mber...        /
28cc0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
28cd0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
28ce0 6e 61 6d 65 3d 22 73 69 7a 65 22 3e 0d 0a 20 20  name="size">..  
28cf0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 69        /// The si
28d00 7a 65 2c 20 69 6e 20 62 79 74 65 73 2c 20 6f 66  ze, in bytes, of
28d10 20 74 68 65 20 63 75 72 72 65 6e 74 20 73 74 72   the current str
28d20 75 63 74 75 72 65 20 6d 65 6d 62 65 72 2e 0d 0a  ucture member...
28d30 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
28d40 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
28d50 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61  / <param name="a
28d60 6c 69 67 6e 6d 65 6e 74 22 3e 0d 0a 20 20 20 20  lignment">..    
28d70 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 6c 69 67      /// The alig
28d80 6e 6d 65 6e 74 2c 20 69 6e 20 62 79 74 65 73 2c  nment, in bytes,
28d90 20 6f 66 20 74 68 65 20 6e 65 78 74 20 73 74 72   of the next str
28da0 75 63 74 75 72 65 20 6d 65 6d 62 65 72 2e 0d 0a  ucture member...
28db0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
28dc0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
28dd0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
28de0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 66 66       /// The off
28df0 73 65 74 2c 20 69 6e 20 62 79 74 65 73 2c 20 6f  set, in bytes, o
28e00 66 20 74 68 65 20 6e 65 78 74 20 73 74 72 75 63  f the next struc
28e10 74 75 72 65 20 6d 65 6d 62 65 72 2e 0d 0a 20 20  ture member...  
28e20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
28e30 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  rns>..        pu
28e40 62 6c 69 63 20 73 74 61 74 69 63 20 69 6e 74 20  blic static int 
28e50 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20  NextOffsetOf(.. 
28e60 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f             int o
28e70 66 66 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20  ffset,..        
28e80 20 20 20 20 69 6e 74 20 73 69 7a 65 2c 0d 0a 20      int size,.. 
28e90 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 61             int a
28ea0 6c 69 67 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20  lignment..      
28eb0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
28ec0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
28ed0 72 65 74 75 72 6e 20 52 6f 75 6e 64 55 70 28 6f  return RoundUp(o
28ee0 66 66 73 65 74 20 2b 20 73 69 7a 65 2c 20 61 6c  ffset + size, al
28ef0 69 67 6e 6d 65 6e 74 29 3b 0d 0a 20 20 20 20 20  ignment);..     
28f00 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
28f10 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
28f20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
28f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
28f70 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 4d         #region M
28f80 61 72 73 68 61 6c 20 52 65 61 64 20 48 65 6c 70  arshal Read Help
28f90 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20  er Methods..    
28fa0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
28fb0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52  >..        /// R
28fc0 65 61 64 73 20 61 20 3c 73 65 65 20 63 72 65 66  eads a <see cref
28fd0 3d 22 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75  ="Int32" /> valu
28fe0 65 20 66 72 6f 6d 20 74 68 65 20 73 70 65 63 69  e from the speci
28ff0 66 69 65 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20  fied memory..   
29000 20 20 20 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f       /// locatio
29010 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  n...        /// 
29020 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
29030 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
29040 61 6d 65 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a  ame="pointer">..
29050 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
29060 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74  <see cref="IntPt
29070 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  r" /> object ins
29080 74 61 6e 63 65 20 72 65 70 72 65 73 65 6e 74 69  tance representi
29090 6e 67 20 74 68 65 20 62 61 73 65 0d 0a 20 20 20  ng the base..   
290a0 20 20 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20       /// memory 
290b0 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  location...     
290c0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
290d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
290e0 72 61 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74  ram name="offset
290f0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
29100 54 68 65 20 69 6e 74 65 67 65 72 20 6f 66 66 73  The integer offs
29110 65 74 20 66 72 6f 6d 20 74 68 65 20 62 61 73 65  et from the base
29120 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e   memory location
29130 20 77 68 65 72 65 20 74 68 65 0d 0a 20 20 20 20   where the..    
29140 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
29150 66 3d 22 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c  f="Int32" /> val
29160 75 65 20 74 6f 20 62 65 20 72 65 61 64 20 69 73  ue to be read is
29170 20 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20 20   located...     
29180 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
29190 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
291a0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
291b0 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
291c0 66 3d 22 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c  f="Int32" /> val
291d0 75 65 20 61 74 20 74 68 65 20 73 70 65 63 69 66  ue at the specif
291e0 69 65 64 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74  ied memory locat
291f0 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ion...        //
29200 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
29210 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
29220 74 69 63 20 69 6e 74 20 52 65 61 64 49 6e 74 33  tic int ReadInt3
29230 32 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  2(..            
29240 49 6e 74 50 74 72 20 70 6f 69 6e 74 65 72 2c 0d  IntPtr pointer,.
29250 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
29260 20 6f 66 66 73 65 74 0d 0a 20 20 20 20 20 20 20   offset..       
29270 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
29280 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  {..#if !PLATFORM
29290 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
292a0 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  K..            r
292b0 65 74 75 72 6e 20 4d 61 72 73 68 61 6c 2e 52 65  eturn Marshal.Re
292c0 61 64 49 6e 74 33 32 28 70 6f 69 6e 74 65 72 2c  adInt32(pointer,
292d0 20 6f 66 66 73 65 74 29 3b 0d 0a 23 65 6c 73 65   offset);..#else
292e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
292f0 74 75 72 6e 20 4d 61 72 73 68 61 6c 2e 52 65 61  turn Marshal.Rea
29300 64 49 6e 74 33 32 28 49 6e 74 50 74 72 46 6f 72  dInt32(IntPtrFor
29310 4f 66 66 73 65 74 28 70 6f 69 6e 74 65 72 2c 20  Offset(pointer, 
29320 6f 66 66 73 65 74 29 29 3b 0d 0a 23 65 6e 64 69  offset));..#endi
29330 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
29340 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
29350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
29390 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
293a0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
293b0 20 20 2f 2f 2f 20 52 65 61 64 73 20 61 20 3c 73    /// Reads a <s
293c0 65 65 20 63 72 65 66 3d 22 44 6f 75 62 6c 65 22  ee cref="Double"
293d0 20 2f 3e 20 76 61 6c 75 65 20 66 72 6f 6d 20 74   /> value from t
293e0 68 65 20 73 70 65 63 69 66 69 65 64 20 6d 65 6d  he specified mem
293f0 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ory..        ///
29400 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20   location...    
29410 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
29420 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
29430 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69  <param name="poi
29440 6e 74 65 72 22 3e 0d 0a 20 20 20 20 20 20 20 20  nter">..        
29450 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
29460 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62  f="IntPtr" /> ob
29470 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 72 65  ject instance re
29480 70 72 65 73 65 6e 74 69 6e 67 20 74 68 65 20 62  presenting the b
29490 61 73 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ase..        ///
294a0 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e   memory location
294b0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
294c0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
294d0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
294e0 3d 22 6f 66 66 73 65 74 22 3e 0d 0a 20 20 20 20  ="offset">..    
294f0 20 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65      /// The inte
29500 67 65 72 20 6f 66 66 73 65 74 20 66 72 6f 6d 20  ger offset from 
29510 74 68 65 20 62 61 73 65 20 6d 65 6d 6f 72 79 20  the base memory 
29520 6c 6f 63 61 74 69 6f 6e 20 77 68 65 72 65 20 74  location where t
29530 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
29540 3c 73 65 65 20 63 72 65 66 3d 22 44 6f 75 62 6c  <see cref="Doubl
29550 65 22 20 2f 3e 20 74 6f 20 62 65 20 72 65 61 64  e" /> to be read
29560 20 69 73 20 6c 6f 63 61 74 65 64 2e 0d 0a 20 20   is located...  
29570 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
29580 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
29590 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
295a0 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
295b0 63 72 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f 3e  cref="Double" />
295c0 20 76 61 6c 75 65 20 61 74 20 74 68 65 20 73 70   value at the sp
295d0 65 63 69 66 69 65 64 20 6d 65 6d 6f 72 79 20 6c  ecified memory l
295e0 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ocation...      
295f0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
29600 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
29610 20 73 74 61 74 69 63 20 64 6f 75 62 6c 65 20 52   static double R
29620 65 61 64 44 6f 75 62 6c 65 28 0d 0a 20 20 20 20  eadDouble(..    
29630 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
29640 6f 69 6e 74 65 72 2c 0d 0a 20 20 20 20 20 20 20  ointer,..       
29650 20 20 20 20 20 69 6e 74 20 6f 66 66 73 65 74 0d       int offset.
29660 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
29670 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
29680 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
29690 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
296a0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 42 69         return Bi
296b0 74 43 6f 6e 76 65 72 74 65 72 2e 49 6e 74 36 34  tConverter.Int64
296c0 42 69 74 73 54 6f 44 6f 75 62 6c 65 28 4d 61 72  BitsToDouble(Mar
296d0 73 68 61 6c 2e 52 65 61 64 49 6e 74 36 34 28 0d  shal.ReadInt64(.
296e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
296f0 20 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74   pointer, offset
29700 29 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  ));..#else..    
29710 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 42          return B
29720 69 74 43 6f 6e 76 65 72 74 65 72 2e 54 6f 44 6f  itConverter.ToDo
29730 75 62 6c 65 28 42 69 74 43 6f 6e 76 65 72 74 65  uble(BitConverte
29740 72 2e 47 65 74 42 79 74 65 73 28 0d 0a 20 20 20  r.GetBytes(..   
29750 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72               Mar
29760 73 68 61 6c 2e 52 65 61 64 49 6e 74 36 34 28 49  shal.ReadInt64(I
29770 6e 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28 70  ntPtrForOffset(p
29780 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 29  ointer, offset))
29790 29 2c 20 30 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ), 0);..#endif..
297a0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
297b0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
297c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
297d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
297e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
297f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
29800 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
29810 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
29820 2f 2f 20 52 65 61 64 73 20 61 6e 20 3c 73 65 65  // Reads an <see
29830 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f   cref="IntPtr" /
29840 3e 20 76 61 6c 75 65 20 66 72 6f 6d 20 74 68 65  > value from the
29850 20 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72   specified memor
29860 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c  y..        /// l
29870 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ocation...      
29880 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
29890 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
298a0 61 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74  aram name="point
298b0 65 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  er">..        //
298c0 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
298d0 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65  "IntPtr" /> obje
298e0 63 74 20 69 6e 73 74 61 6e 63 65 20 72 65 70 72  ct instance repr
298f0 65 73 65 6e 74 69 6e 67 20 74 68 65 20 62 61 73  esenting the bas
29900 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d  e..        /// m
29910 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d  emory location..
29920 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
29930 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
29940 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
29950 6f 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20  offset">..      
29960 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67 65    /// The intege
29970 72 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68  r offset from th
29980 65 20 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f  e base memory lo
29990 63 61 74 69 6f 6e 20 77 68 65 72 65 20 74 68 65  cation where the
299a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
299b0 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22  ee cref="IntPtr"
299c0 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 62 65 20   /> value to be 
299d0 72 65 61 64 20 69 73 20 6c 6f 63 61 74 65 64 2e  read is located.
299e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
299f0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
29a00 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
29a10 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
29a20 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72  see cref="IntPtr
29a30 22 20 2f 3e 20 76 61 6c 75 65 20 61 74 20 74 68  " /> value at th
29a40 65 20 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f  e specified memo
29a50 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20  ry location...  
29a60 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
29a70 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  rns>..        pu
29a80 62 6c 69 63 20 73 74 61 74 69 63 20 49 6e 74 50  blic static IntP
29a90 74 72 20 52 65 61 64 49 6e 74 50 74 72 28 0d 0a  tr ReadIntPtr(..
29aa0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
29ab0 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a 20 20 20  tr pointer,..   
29ac0 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66           int off
29ad0 73 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  set..           
29ae0 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23   )..        {..#
29af0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
29b00 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
29b10 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
29b20 6e 20 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e  n Marshal.ReadIn
29b30 74 50 74 72 28 70 6f 69 6e 74 65 72 2c 20 6f 66  tPtr(pointer, of
29b40 66 73 65 74 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20  fset);..#else.. 
29b50 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
29b60 6e 20 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e  n Marshal.ReadIn
29b70 74 50 74 72 28 49 6e 74 50 74 72 46 6f 72 4f 66  tPtr(IntPtrForOf
29b80 66 73 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f 66  fset(pointer, of
29b90 66 73 65 74 29 29 3b 0d 0a 23 65 6e 64 69 66 0d  fset));..#endif.
29ba0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
29bb0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
29bc0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
29bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29c10 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
29c20 67 69 6f 6e 20 4d 61 72 73 68 61 6c 20 57 72 69  gion Marshal Wri
29c30 74 65 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64  te Helper Method
29c40 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
29c50 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
29c60 20 20 2f 2f 2f 20 57 72 69 74 65 73 20 61 6e 20    /// Writes an 
29c70 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 33 32  <see cref="Int32
29c80 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 74 68  " /> value to th
29c90 65 20 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f  e specified memo
29ca0 72 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ry..        /// 
29cb0 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  location...     
29cc0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
29cd0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
29ce0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e  param name="poin
29cf0 74 65 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ter">..        /
29d00 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
29d10 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a  ="IntPtr" /> obj
29d20 65 63 74 20 69 6e 73 74 61 6e 63 65 20 72 65 70  ect instance rep
29d30 72 65 73 65 6e 74 69 6e 67 20 74 68 65 20 62 61  resenting the ba
29d40 73 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  se..        /// 
29d50 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e  memory location.
29d60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
29d70 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
29d80 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
29d90 22 6f 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20  "offset">..     
29da0 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67     /// The integ
29db0 65 72 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74  er offset from t
29dc0 68 65 20 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c  he base memory l
29dd0 6f 63 61 74 69 6f 6e 20 77 68 65 72 65 20 74 68  ocation where th
29de0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
29df0 73 65 65 20 63 72 65 66 3d 22 49 6e 74 33 32 22  see cref="Int32"
29e00 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 62 65 20   /> value to be 
29e10 77 72 69 74 74 65 6e 20 69 73 20 6c 6f 63 61 74  written is locat
29e20 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
29e30 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
29e40 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
29e50 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20  me="value">..   
29e60 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
29e70 65 20 63 72 65 66 3d 22 49 6e 74 33 32 22 20 2f  e cref="Int32" /
29e80 3e 20 76 61 6c 75 65 20 74 6f 20 77 72 69 74 65  > value to write
29e90 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
29ea0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
29eb0 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 76   public static v
29ec0 6f 69 64 20 57 72 69 74 65 49 6e 74 33 32 28 0d  oid WriteInt32(.
29ed0 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
29ee0 50 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a 20 20  Ptr pointer,..  
29ef0 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66            int of
29f00 66 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  fset,..         
29f10 20 20 20 69 6e 74 20 76 61 6c 75 65 0d 0a 20 20     int value..  
29f20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
29f30 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41       {..#if !PLA
29f40 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
29f50 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
29f60 20 20 20 20 4d 61 72 73 68 61 6c 2e 57 72 69 74      Marshal.Writ
29f70 65 49 6e 74 33 32 28 70 6f 69 6e 74 65 72 2c 20  eInt32(pointer, 
29f80 6f 66 66 73 65 74 2c 20 76 61 6c 75 65 29 3b 0d  offset, value);.
29f90 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
29fa0 20 20 20 20 4d 61 72 73 68 61 6c 2e 57 72 69 74      Marshal.Writ
29fb0 65 49 6e 74 33 32 28 49 6e 74 50 74 72 46 6f 72  eInt32(IntPtrFor
29fc0 4f 66 66 73 65 74 28 70 6f 69 6e 74 65 72 2c 20  Offset(pointer, 
29fd0 6f 66 66 73 65 74 29 2c 20 76 61 6c 75 65 29 3b  offset), value);
29fe0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
29ff0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
2a000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a040 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2a050 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
2a060 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 57 72 69  .        /// Wri
2a070 74 65 73 20 61 6e 20 3c 73 65 65 20 63 72 65 66  tes an <see cref
2a080 3d 22 49 6e 74 36 34 22 20 2f 3e 20 76 61 6c 75  ="Int64" /> valu
2a090 65 20 74 6f 20 74 68 65 20 73 70 65 63 69 66 69  e to the specifi
2a0a0 65 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20  ed memory..     
2a0b0 20 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e     /// location.
2a0c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
2a0d0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2a0e0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2a0f0 65 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20  e="pointer">..  
2a100 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
2a110 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22  ee cref="IntPtr"
2a120 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
2a130 6e 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e 67  nce representing
2a140 20 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20   the base..     
2a150 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f     /// memory lo
2a160 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  cation...       
2a170 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
2a180 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
2a190 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e  m name="offset">
2a1a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
2a1b0 65 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65 74  e integer offset
2a1c0 20 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20 6d   from the base m
2a1d0 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77  emory location w
2a1e0 68 65 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20  here the..      
2a1f0 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
2a200 22 49 6e 74 36 34 22 20 2f 3e 20 76 61 6c 75 65  "Int64" /> value
2a210 20 74 6f 20 62 65 20 77 72 69 74 74 65 6e 20 69   to be written i
2a220 73 20 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20  s located...    
2a230 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2a240 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
2a250 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65  aram name="value
2a260 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
2a270 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  The <see cref="I
2a280 6e 74 36 34 22 20 2f 3e 20 76 61 6c 75 65 20 74  nt64" /> value t
2a290 6f 20 77 72 69 74 65 2e 0d 0a 20 20 20 20 20 20  o write...      
2a2a0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2a2b0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
2a2c0 74 61 74 69 63 20 76 6f 69 64 20 57 72 69 74 65  tatic void Write
2a2d0 49 6e 74 36 34 28 0d 0a 20 20 20 20 20 20 20 20  Int64(..        
2a2e0 20 20 20 20 49 6e 74 50 74 72 20 70 6f 69 6e 74      IntPtr point
2a2f0 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  er,..           
2a300 20 69 6e 74 20 6f 66 66 73 65 74 2c 0d 0a 20 20   int offset,..  
2a310 20 20 20 20 20 20 20 20 20 20 6c 6f 6e 67 20 76            long v
2a320 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20  alue..          
2a330 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
2a340 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
2a350 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
2a360 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73              Mars
2a370 68 61 6c 2e 57 72 69 74 65 49 6e 74 36 34 28 70  hal.WriteInt64(p
2a380 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 2c 20  ointer, offset, 
2a390 76 61 6c 75 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a  value);..#else..
2a3a0 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73              Mars
2a3b0 68 61 6c 2e 57 72 69 74 65 49 6e 74 36 34 28 49  hal.WriteInt64(I
2a3c0 6e 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28 70  ntPtrForOffset(p
2a3d0 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 2c  ointer, offset),
2a3e0 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66   value);..#endif
2a3f0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
2a400 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2a410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2a450 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
2a460 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2a470 20 2f 2f 2f 20 57 72 69 74 65 73 20 61 20 3c 73   /// Writes a <s
2a480 65 65 20 63 72 65 66 3d 22 44 6f 75 62 6c 65 22  ee cref="Double"
2a490 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 74 68 65   /> value to the
2a4a0 20 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72   specified memor
2a4b0 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c  y..        /// l
2a4c0 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ocation...      
2a4d0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2a4e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
2a4f0 61 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74  aram name="point
2a500 65 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  er">..        //
2a510 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
2a520 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65  "IntPtr" /> obje
2a530 63 74 20 69 6e 73 74 61 6e 63 65 20 72 65 70 72  ct instance repr
2a540 65 73 65 6e 74 69 6e 67 20 74 68 65 20 62 61 73  esenting the bas
2a550 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d  e..        /// m
2a560 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d  emory location..
2a570 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
2a580 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
2a590 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
2a5a0 6f 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20  offset">..      
2a5b0 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67 65    /// The intege
2a5c0 72 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68  r offset from th
2a5d0 65 20 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f  e base memory lo
2a5e0 63 61 74 69 6f 6e 20 77 68 65 72 65 20 74 68 65  cation where the
2a5f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
2a600 65 65 20 63 72 65 66 3d 22 44 6f 75 62 6c 65 22  ee cref="Double"
2a610 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 62 65 20   /> value to be 
2a620 77 72 69 74 74 65 6e 20 69 73 20 6c 6f 63 61 74  written is locat
2a630 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
2a640 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
2a650 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2a660 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20  me="value">..   
2a670 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
2a680 65 20 63 72 65 66 3d 22 44 6f 75 62 6c 65 22 20  e cref="Double" 
2a690 2f 3e 20 76 61 6c 75 65 20 74 6f 20 77 72 69 74  /> value to writ
2a6a0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
2a6b0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
2a6c0 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
2a6d0 76 6f 69 64 20 57 72 69 74 65 44 6f 75 62 6c 65  void WriteDouble
2a6e0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  (..            I
2a6f0 6e 74 50 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a  ntPtr pointer,..
2a700 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
2a710 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20 20 20 20  offset,..       
2a720 20 20 20 20 20 64 6f 75 62 6c 65 20 76 61 6c 75       double valu
2a730 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  e..            )
2a740 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
2a750 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
2a760 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
2a770 20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c           Marshal
2a780 2e 57 72 69 74 65 49 6e 74 36 34 28 70 6f 69 6e  .WriteInt64(poin
2a790 74 65 72 2c 20 6f 66 66 73 65 74 2c 0d 0a 20 20  ter, offset,..  
2a7a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 69                Bi
2a7b0 74 43 6f 6e 76 65 72 74 65 72 2e 44 6f 75 62 6c  tConverter.Doubl
2a7c0 65 54 6f 49 6e 74 36 34 42 69 74 73 28 76 61 6c  eToInt64Bits(val
2a7d0 75 65 29 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  ue));..#else..  
2a7e0 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61            Marsha
2a7f0 6c 2e 57 72 69 74 65 49 6e 74 36 34 28 49 6e 74  l.WriteInt64(Int
2a800 50 74 72 46 6f 72 4f 66 66 73 65 74 28 70 6f 69  PtrForOffset(poi
2a810 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 2c 0d 0a  nter, offset),..
2a820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a830 42 69 74 43 6f 6e 76 65 72 74 65 72 2e 54 6f 49  BitConverter.ToI
2a840 6e 74 36 34 28 42 69 74 43 6f 6e 76 65 72 74 65  nt64(BitConverte
2a850 72 2e 47 65 74 42 79 74 65 73 28 76 61 6c 75 65  r.GetBytes(value
2a860 29 2c 20 30 29 29 3b 0d 0a 23 65 6e 64 69 66 0d  ), 0));..#endif.
2a870 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
2a880 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2a890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a8a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a8b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a8c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2a8d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
2a8e0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2a8f0 2f 2f 2f 20 57 72 69 74 65 73 20 61 20 3c 73 65  /// Writes a <se
2a900 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20  e cref="IntPtr" 
2a910 2f 3e 20 76 61 6c 75 65 20 74 6f 20 74 68 65 20  /> value to the 
2a920 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72 79  specified memory
2a930 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 6f  ..        /// lo
2a940 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  cation...       
2a950 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2a960 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
2a970 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74 65  ram name="pointe
2a980 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  r">..        ///
2a990 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
2a9a0 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63  IntPtr" /> objec
2a9b0 74 20 69 6e 73 74 61 6e 63 65 20 72 65 70 72 65  t instance repre
2a9c0 73 65 6e 74 69 6e 67 20 74 68 65 20 62 61 73 65  senting the base
2a9d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65  ..        /// me
2a9e0 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a  mory location...
2a9f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
2aa00 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
2aa10 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f  / <param name="o
2aa20 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20 20  ffset">..       
2aa30 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67 65 72   /// The integer
2aa40 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68 65   offset from the
2aa50 20 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f 63   base memory loc
2aa60 61 74 69 6f 6e 20 77 68 65 72 65 20 74 68 65 0d  ation where the.
2aa70 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
2aa80 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20  e cref="IntPtr" 
2aa90 2f 3e 20 76 61 6c 75 65 20 74 6f 20 62 65 20 77  /> value to be w
2aaa0 72 69 74 74 65 6e 20 69 73 20 6c 6f 63 61 74 65  ritten is locate
2aab0 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
2aac0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
2aad0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2aae0 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20  e="value">..    
2aaf0 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
2ab00 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f   cref="IntPtr" /
2ab10 3e 20 76 61 6c 75 65 20 74 6f 20 77 72 69 74 65  > value to write
2ab20 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
2ab30 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
2ab40 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 76   public static v
2ab50 6f 69 64 20 57 72 69 74 65 49 6e 74 50 74 72 28  oid WriteIntPtr(
2ab60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
2ab70 74 50 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a 20  tPtr pointer,.. 
2ab80 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f             int o
2ab90 66 66 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20  ffset,..        
2aba0 20 20 20 20 49 6e 74 50 74 72 20 76 61 6c 75 65      IntPtr value
2abb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
2abc0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
2abd0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
2abe0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
2abf0 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e          Marshal.
2ac00 57 72 69 74 65 49 6e 74 50 74 72 28 70 6f 69 6e  WriteIntPtr(poin
2ac10 74 65 72 2c 20 6f 66 66 73 65 74 2c 20 76 61 6c  ter, offset, val
2ac20 75 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  ue);..#else..   
2ac30 20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c           Marshal
2ac40 2e 57 72 69 74 65 49 6e 74 50 74 72 28 49 6e 74  .WriteIntPtr(Int
2ac50 50 74 72 46 6f 72 4f 66 66 73 65 74 28 70 6f 69  PtrForOffset(poi
2ac60 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 2c 20 76  nter, offset), v
2ac70 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  alue);..#endif..
2ac80 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2ac90 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
2aca0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
2acb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2acc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2acd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ace0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2acf0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
2ad00 69 6f 6e 20 4f 62 6a 65 63 74 20 48 65 6c 70 65  ion Object Helpe
2ad10 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20  r Methods..     
2ad20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2ad30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 47 65  ..        /// Ge
2ad40 6e 65 72 61 74 65 73 20 61 20 68 61 73 68 20 63  nerates a hash c
2ad50 6f 64 65 20 76 61 6c 75 65 20 66 6f 72 20 74 68  ode value for th
2ad60 65 20 6f 62 6a 65 63 74 2e 0d 0a 20 20 20 20 20  e object...     
2ad70 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
2ad80 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
2ad90 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75  param name="valu
2ada0 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
2adb0 20 54 68 65 20 6f 62 6a 65 63 74 20 69 6e 73 74   The object inst
2adc0 61 6e 63 65 20 75 73 65 64 20 74 6f 20 63 61 6c  ance used to cal
2add0 63 75 6c 61 74 65 20 74 68 65 20 68 61 73 68 20  culate the hash 
2ade0 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  code...        /
2adf0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
2ae00 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
2ae10 6e 61 6d 65 3d 22 69 64 65 6e 74 69 74 79 22 3e  name="identity">
2ae20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  ..        /// No
2ae30 6e 2d 7a 65 72 6f 20 69 66 20 64 69 66 66 65 72  n-zero if differ
2ae40 65 6e 74 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  ent object insta
2ae50 6e 63 65 73 20 77 69 74 68 20 74 68 65 20 73 61  nces with the sa
2ae60 6d 65 20 76 61 6c 75 65 20 73 68 6f 75 6c 64 0d  me value should.
2ae70 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 67 65 6e  .        /// gen
2ae80 65 72 61 74 65 20 64 69 66 66 65 72 65 6e 74 20  erate different 
2ae90 68 61 73 68 20 63 6f 64 65 73 2c 20 77 68 65 72  hash codes, wher
2aea0 65 20 61 70 70 6c 69 63 61 62 6c 65 2e 20 20 54  e applicable.  T
2aeb0 68 69 73 20 70 61 72 61 6d 65 74 65 72 0d 0a 20  his parameter.. 
2aec0 20 20 20 20 20 20 20 2f 2f 2f 20 68 61 73 20 6e         /// has n
2aed0 6f 20 65 66 66 65 63 74 20 6f 6e 20 74 68 65 20  o effect on the 
2aee0 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61  .NET Compact Fra
2aef0 6d 65 77 6f 72 6b 2e 0d 0a 20 20 20 20 20 20 20  mework...       
2af00 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
2af10 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
2af20 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
2af30 2f 20 54 68 65 20 68 61 73 68 20 63 6f 64 65 20  / The hash code 
2af40 76 61 6c 75 65 20 2d 4f 52 2d 20 7a 65 72 6f 20  value -OR- zero 
2af50 69 66 20 74 68 65 20 6f 62 6a 65 63 74 20 69 73  if the object is
2af60 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 20 20   null...        
2af70 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
2af80 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
2af90 74 61 74 69 63 20 69 6e 74 20 47 65 74 48 61 73  tatic int GetHas
2afa0 68 43 6f 64 65 28 0d 0a 20 20 20 20 20 20 20 20  hCode(..        
2afb0 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65      object value
2afc0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62  ,..            b
2afd0 6f 6f 6c 20 69 64 65 6e 74 69 74 79 0d 0a 20 20  ool identity..  
2afe0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
2aff0 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41       {..#if !PLA
2b000 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2b010 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
2b020 20 20 20 20 69 66 20 28 69 64 65 6e 74 69 74 79      if (identity
2b030 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2b040 20 20 20 72 65 74 75 72 6e 20 52 75 6e 74 69 6d     return Runtim
2b050 65 48 65 6c 70 65 72 73 2e 47 65 74 48 61 73 68  eHelpers.GetHash
2b060 43 6f 64 65 28 76 61 6c 75 65 29 3b 0d 0a 23 65  Code(value);..#e
2b070 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
2b080 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d      if (value ==
2b090 20 6e 75 6c 6c 29 20 72 65 74 75 72 6e 20 30 3b   null) return 0;
2b0a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
2b0b0 74 75 72 6e 20 76 61 6c 75 65 2e 47 65 74 48 61  turn value.GetHa
2b0c0 73 68 43 6f 64 65 28 29 3b 0d 0a 20 20 20 20 20  shCode();..     
2b0d0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
2b0e0 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d  ndregion..    }.
2b0f0 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
2b100 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
2b110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b150 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
2b160 6e 20 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20 42  n SQLiteModule B
2b170 61 73 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f  ase Class..    /
2b180 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
2b190 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73    /// This class
2b1a0 20 72 65 70 72 65 73 65 6e 74 73 20 61 20 6d 61   represents a ma
2b1b0 6e 61 67 65 64 20 76 69 72 74 75 61 6c 20 74 61  naged virtual ta
2b1c0 62 6c 65 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65  ble module imple
2b1d0 6d 65 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20  mentation...    
2b1e0 2f 2f 2f 20 49 74 20 69 73 20 6e 6f 74 20 73 65  /// It is not se
2b1f0 61 6c 65 64 20 61 6e 64 20 6d 75 73 74 20 62 65  aled and must be
2b200 20 75 73 65 64 20 61 73 20 74 68 65 20 62 61 73   used as the bas
2b210 65 20 63 6c 61 73 73 20 66 6f 72 20 61 6e 79 0d  e class for any.
2b220 0a 20 20 20 20 2f 2f 2f 20 75 73 65 72 2d 64 65  .    /// user-de
2b230 66 69 6e 65 64 20 76 69 72 74 75 61 6c 20 74 61  fined virtual ta
2b240 62 6c 65 20 6d 6f 64 75 6c 65 20 63 6c 61 73 73  ble module class
2b250 65 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 69  es implemented i
2b260 6e 20 6d 61 6e 61 67 65 64 20 63 6f 64 65 2e 0d  n managed code..
2b270 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
2b280 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  ry>..    public 
2b290 61 62 73 74 72 61 63 74 20 63 6c 61 73 73 20 53  abstract class S
2b2a0 51 4c 69 74 65 4d 6f 64 75 6c 65 20 3a 0d 0a 20  QLiteModule :.. 
2b2b0 20 20 20 20 20 20 20 20 20 20 20 49 53 51 4c 69             ISQLi
2b2c0 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2c  teManagedModule,
2b2d0 20 2f 2a 49 53 51 4c 69 74 65 4e 61 74 69 76 65   /*ISQLiteNative
2b2e0 4d 6f 64 75 6c 65 2c 2a 2f 0d 0a 20 20 20 20 20  Module,*/..     
2b2f0 20 20 20 20 20 20 20 49 44 69 73 70 6f 73 61 62         IDisposab
2b300 6c 65 20 2f 2a 20 4e 4f 54 20 53 45 41 4c 45 44  le /* NOT SEALED
2b310 20 2a 2f 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20   */..    {..    
2b320 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69      #region SQLi
2b330 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20 50  teNativeModule P
2b340 72 69 76 61 74 65 20 43 6c 61 73 73 0d 0a 20 20  rivate Class..  
2b350 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
2b360 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
2b370 20 54 68 69 73 20 63 6c 61 73 73 20 69 6d 70 6c   This class impl
2b380 65 6d 65 6e 74 73 20 74 68 65 20 3c 73 65 65 20  ements the <see 
2b390 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
2b3a0 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 0d 0a 20  iveModule" />.. 
2b3b0 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65 72         /// inter
2b3c0 66 61 63 65 20 62 79 20 66 6f 72 77 61 72 64 69  face by forwardi
2b3d0 6e 67 20 74 68 6f 73 65 20 6d 65 74 68 6f 64 20  ng those method 
2b3e0 63 61 6c 6c 73 20 74 6f 20 74 68 65 0d 0a 20 20  calls to the..  
2b3f0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
2b400 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c  ref="SQLiteModul
2b410 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  e" /> object ins
2b420 74 61 6e 63 65 20 69 74 20 63 6f 6e 74 61 69 6e  tance it contain
2b430 73 2e 20 20 49 66 20 74 68 65 0d 0a 20 20 20 20  s.  If the..    
2b440 20 20 20 20 2f 2f 2f 20 63 6f 6e 74 61 69 6e 65      /// containe
2b450 64 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  d <see cref="SQL
2b460 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62  iteModule" /> ob
2b470 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 69 73  ject instance is
2b480 20 6e 75 6c 6c 2c 20 61 6c 6c 0d 0a 20 20 20 20   null, all..    
2b490 20 20 20 20 2f 2f 2f 20 74 68 65 20 3c 73 65 65      /// the <see
2b4a0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
2b4b0 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6d  tiveModule" /> m
2b4c0 65 74 68 6f 64 73 20 73 69 6d 70 6c 79 20 67 65  ethods simply ge
2b4d0 6e 65 72 61 74 65 20 61 6e 0d 0a 20 20 20 20 20  nerate an..     
2b4e0 20 20 20 2f 2f 2f 20 65 72 72 6f 72 2e 0d 0a 20     /// error... 
2b4f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
2b500 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
2b510 72 69 76 61 74 65 20 73 65 61 6c 65 64 20 63 6c  rivate sealed cl
2b520 61 73 73 20 53 51 4c 69 74 65 4e 61 74 69 76 65  ass SQLiteNative
2b530 4d 6f 64 75 6c 65 20 3a 0d 0a 20 20 20 20 20 20  Module :..      
2b540 20 20 20 20 20 20 20 20 20 20 49 53 51 4c 69 74            ISQLit
2b550 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2c 20 49  eNativeModule, I
2b560 44 69 73 70 6f 73 61 62 6c 65 0d 0a 20 20 20 20  Disposable..    
2b570 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2b580 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
2b590 74 65 20 43 6f 6e 73 74 61 6e 74 73 0d 0a 20 20  te Constants..  
2b5a0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73            /// <s
2b5b0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2b5c0 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73       /// This is
2b5d0 20 74 68 65 20 76 61 6c 75 65 20 74 68 61 74 20   the value that 
2b5e0 69 73 20 61 6c 77 61 79 73 20 75 73 65 64 20 66  is always used f
2b5f0 6f 72 20 74 68 65 20 22 6c 6f 67 45 72 72 6f 72  or the "logError
2b600 73 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s"..            
2b610 2f 2f 2f 20 70 61 72 61 6d 65 74 65 72 20 74 6f  /// parameter to
2b620 20 74 68 65 20 76 61 72 69 6f 75 73 20 73 74 61   the various sta
2b630 74 69 63 20 65 72 72 6f 72 20 68 61 6e 64 6c 69  tic error handli
2b640 6e 67 20 6d 65 74 68 6f 64 73 20 70 72 6f 76 69  ng methods provi
2b650 64 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ded..           
2b660 20 2f 2f 2f 20 62 79 20 74 68 65 20 3c 73 65 65   /// by the <see
2b670 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64   cref="SQLiteMod
2b680 75 6c 65 22 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a  ule" /> class...
2b690 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2b6a0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
2b6b0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
2b6c0 63 6f 6e 73 74 20 62 6f 6f 6c 20 44 65 66 61 75  const bool Defau
2b6d0 6c 74 4c 6f 67 45 72 72 6f 72 73 20 3d 20 74 72  ltLogErrors = tr
2b6e0 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ue;....         
2b6f0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2b700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b730 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2b740 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
2b750 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
2b760 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65   /// This is the
2b770 20 76 61 6c 75 65 20 74 68 61 74 20 69 73 20 61   value that is a
2b780 6c 77 61 79 73 20 75 73 65 64 20 66 6f 72 20 74  lways used for t
2b790 68 65 20 22 6c 6f 67 45 78 63 65 70 74 69 6f 6e  he "logException
2b7a0 73 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s"..            
2b7b0 2f 2f 2f 20 70 61 72 61 6d 65 74 65 72 20 74 6f  /// parameter to
2b7c0 20 74 68 65 20 76 61 72 69 6f 75 73 20 73 74 61   the various sta
2b7d0 74 69 63 20 65 72 72 6f 72 20 68 61 6e 64 6c 69  tic error handli
2b7e0 6e 67 20 6d 65 74 68 6f 64 73 20 70 72 6f 76 69  ng methods provi
2b7f0 64 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ded..           
2b800 20 2f 2f 2f 20 62 79 20 74 68 65 20 3c 73 65 65   /// by the <see
2b810 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64   cref="SQLiteMod
2b820 75 6c 65 22 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a  ule" /> class...
2b830 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2b840 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
2b850 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
2b860 63 6f 6e 73 74 20 62 6f 6f 6c 20 44 65 66 61 75  const bool Defau
2b870 6c 74 4c 6f 67 45 78 63 65 70 74 69 6f 6e 73 20  ltLogExceptions 
2b880 3d 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 20  = true;....     
2b890 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2b8a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b8b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b8c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b8d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2b8e0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73            /// <s
2b8f0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2b900 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73       /// This is
2b910 20 74 68 65 20 65 72 72 6f 72 20 6d 65 73 73 61   the error messa
2b920 67 65 20 74 65 78 74 20 75 73 65 64 20 77 68 65  ge text used whe
2b930 6e 20 74 68 65 20 63 6f 6e 74 61 69 6e 65 64 0d  n the contained.
2b940 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2b950 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
2b960 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a  teModule" /> obj
2b970 65 63 74 20 69 6e 73 74 61 6e 63 65 20 69 73 20  ect instance is 
2b980 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65 0d 0a 20  not available.. 
2b990 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 66             /// f
2b9a0 6f 72 20 61 6e 79 20 72 65 61 73 6f 6e 2e 0d 0a  or any reason...
2b9b0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2b9c0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
2b9d0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
2b9e0 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 4d 6f 64  const string Mod
2b9f0 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 45  uleNotAvailableE
2ba00 72 72 6f 72 4d 65 73 73 61 67 65 20 3d 0d 0a 20  rrorMessage =.. 
2ba10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
2ba20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 69 6d  native module im
2ba30 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6e 6f 74  plementation not
2ba40 20 61 76 61 69 6c 61 62 6c 65 22 3b 0d 0a 20 20   available";..  
2ba50 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65            #endre
2ba60 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
2ba70 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2ba80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ba90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2baa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bab0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2bac0 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
2bad0 72 69 76 61 74 65 20 44 61 74 61 0d 0a 20 20 20  rivate Data..   
2bae0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75           /// <su
2baf0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2bb00 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
2bb10 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64   cref="SQLiteMod
2bb20 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  ule" /> object i
2bb30 6e 73 74 61 6e 63 65 20 75 73 65 64 20 74 6f 20  nstance used to 
2bb40 70 72 6f 76 69 64 65 0d 0a 20 20 20 20 20 20 20  provide..       
2bb50 20 20 20 20 20 2f 2f 2f 20 61 6e 20 69 6d 70 6c       /// an impl
2bb60 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68  ementation of th
2bb70 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
2bb80 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2bb90 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  " />..          
2bba0 20 20 2f 2f 2f 20 69 6e 74 65 72 66 61 63 65 2e    /// interface.
2bbb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2bbc0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2bbd0 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
2bbe0 65 20 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20 6d  e SQLiteModule m
2bbf0 6f 64 75 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20  odule;..        
2bc00 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
2bc10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2bc20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bc30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bc40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bc50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bc60 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
2bc70 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
2bc80 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20  Constructors..  
2bc90 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73            /// <s
2bca0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2bcb0 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75       /// Constru
2bcc0 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20  cts an instance 
2bcd0 6f 66 20 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a  of this class...
2bce0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2bcf0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
2bd00 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
2bd10 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c 65 22  am name="module"
2bd20 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2bd30 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
2bd40 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20  ="SQLiteModule" 
2bd50 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
2bd60 63 65 20 75 73 65 64 20 74 6f 20 70 72 6f 76 69  ce used to provi
2bd70 64 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  de..            
2bd80 2f 2f 2f 20 61 6e 20 69 6d 70 6c 65 6d 65 6e 74  /// an implement
2bd90 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 3c 73 65  ation of the <se
2bda0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
2bdb0 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 0d  ativeModule" />.
2bdc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2bdd0 20 69 6e 74 65 72 66 61 63 65 2e 0d 0a 20 20 20   interface...   
2bde0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
2bdf0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
2be00 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
2be10 4e 61 74 69 76 65 4d 6f 64 75 6c 65 28 0d 0a 20  NativeModule(.. 
2be20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
2be30 51 4c 69 74 65 4d 6f 64 75 6c 65 20 6d 6f 64 75  QLiteModule modu
2be40 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  le..            
2be50 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
2be60 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2be70 20 20 20 20 20 20 74 68 69 73 2e 6d 6f 64 75 6c        this.modul
2be80 65 20 3d 20 6d 6f 64 75 6c 65 3b 0d 0a 20 20 20  e = module;..   
2be90 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
2bea0 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
2beb0 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  on....          
2bec0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2bed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bf00 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2bf10 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69       #region Pri
2bf20 76 61 74 65 20 53 74 61 74 69 63 20 4d 65 74 68  vate Static Meth
2bf30 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ods..           
2bf40 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
2bf50 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2bf60 53 65 74 73 20 74 68 65 20 74 61 62 6c 65 20 65  Sets the table e
2bf70 72 72 6f 72 20 6d 65 73 73 61 67 65 20 74 6f 20  rror message to 
2bf80 6f 6e 65 20 74 68 61 74 20 69 6e 64 69 63 61 74  one that indicat
2bf90 65 73 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20  es the native.. 
2bfa0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d             /// m
2bfb0 6f 64 75 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61  odule implementa
2bfc0 74 69 6f 6e 20 69 73 20 6e 6f 74 20 61 76 61 69  tion is not avai
2bfd0 6c 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20  lable...        
2bfe0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2bff0 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
2c000 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
2c010 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20  "pVtab">..      
2c020 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
2c030 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
2c040 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62  the sqlite3_vtab
2c050 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75   derived structu
2c060 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re...           
2c070 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
2c080 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2c090 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
2c0a0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61        /// The va
2c0b0 6c 75 65 20 6f 66 20 3c 73 65 65 20 63 72 65 66  lue of <see cref
2c0c0 3d 22 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  ="SQLiteErrorCod
2c0d0 65 2e 45 72 72 6f 72 22 20 2f 3e 2e 0d 0a 20 20  e.Error" />...  
2c0e0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2c0f0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
2c100 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
2c110 61 74 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72  atic SQLiteError
2c120 43 6f 64 65 20 4d 6f 64 75 6c 65 4e 6f 74 41 76  Code ModuleNotAv
2c130 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f  ailableTableErro
2c140 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
2c150 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
2c160 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2c170 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
2c180 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2c190 20 20 20 20 53 65 74 54 61 62 6c 65 45 72 72 6f      SetTableErro
2c1a0 72 28 6e 75 6c 6c 2c 20 70 56 74 61 62 2c 20 44  r(null, pVtab, D
2c1b0 65 66 61 75 6c 74 4c 6f 67 45 72 72 6f 72 73 2c  efaultLogErrors,
2c1c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2c1d0 20 20 20 20 20 20 44 65 66 61 75 6c 74 4c 6f 67        DefaultLog
2c1e0 45 78 63 65 70 74 69 6f 6e 73 2c 20 4d 6f 64 75  Exceptions, Modu
2c1f0 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 45 72  leNotAvailableEr
2c200 72 6f 72 4d 65 73 73 61 67 65 29 3b 0d 0a 0d 0a  rorMessage);....
2c210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c220 72 65 74 75 72 6e 20 53 51 4c 69 74 65 45 72 72  return SQLiteErr
2c230 6f 72 43 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a 20  orCode.Error;.. 
2c240 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
2c250 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
2c260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2c2a0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2c2b0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
2c2c0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2c2d0 74 73 20 74 68 65 20 74 61 62 6c 65 20 65 72 72  ts the table err
2c2e0 6f 72 20 6d 65 73 73 61 67 65 20 74 6f 20 6f 6e  or message to on
2c2f0 65 20 74 68 61 74 20 69 6e 64 69 63 61 74 65 73  e that indicates
2c300 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20   the native..   
2c310 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 6f 64           /// mod
2c320 75 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  ule implementati
2c330 6f 6e 20 69 73 20 6e 6f 74 20 61 76 61 69 6c 61  on is not availa
2c340 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ble...          
2c350 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2c360 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2c370 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
2c380 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20  Cursor">..      
2c390 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
2c3a0 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
2c3b0 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62  the sqlite3_vtab
2c3c0 5f 63 75 72 73 6f 72 20 64 65 72 69 76 65 64 0d  _cursor derived.
2c3d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2c3e0 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
2c3f0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
2c400 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
2c410 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
2c420 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2c430 2f 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20 3c  / The value of <
2c440 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
2c450 45 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 22  ErrorCode.Error"
2c460 20 2f 3e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20   />...          
2c470 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
2c480 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
2c490 69 76 61 74 65 20 73 74 61 74 69 63 20 53 51 4c  ivate static SQL
2c4a0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 4d 6f 64  iteErrorCode Mod
2c4b0 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43  uleNotAvailableC
2c4c0 75 72 73 6f 72 45 72 72 6f 72 28 0d 0a 20 20 20  ursorError(..   
2c4d0 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
2c4e0 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20  Ptr pCursor..   
2c4f0 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
2c500 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2c510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
2c520 65 74 43 75 72 73 6f 72 45 72 72 6f 72 28 6e 75  etCursorError(nu
2c530 6c 6c 2c 20 70 43 75 72 73 6f 72 2c 20 44 65 66  ll, pCursor, Def
2c540 61 75 6c 74 4c 6f 67 45 72 72 6f 72 73 2c 0d 0a  aultLogErrors,..
2c550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c560 20 20 20 20 44 65 66 61 75 6c 74 4c 6f 67 45 78      DefaultLogEx
2c570 63 65 70 74 69 6f 6e 73 2c 20 4d 6f 64 75 6c 65  ceptions, Module
2c580 4e 6f 74 41 76 61 69 6c 61 62 6c 65 45 72 72 6f  NotAvailableErro
2c590 72 4d 65 73 73 61 67 65 29 3b 0d 0a 0d 0a 20 20  rMessage);....  
2c5a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2c5b0 74 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  turn SQLiteError
2c5c0 43 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20  Code.Error;..   
2c5d0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
2c5e0 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
2c5f0 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  on....          
2c600 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2c610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c640 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2c650 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 53 51       #region ISQ
2c660 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2c670 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20   Members..      
2c680 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
2c690 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
2c6a0 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
2c6b0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
2c6c0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65  ativeModule.xCre
2c6d0 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ate" /> method..
2c6e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2c6f0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
2c700 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
2c710 72 61 6d 20 6e 61 6d 65 3d 22 70 44 62 22 3e 0d  ram name="pDb">.
2c720 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2c730 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
2c740 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
2c750 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 22  eModule.xCreate"
2c760 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
2c770 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
2c780 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
2c790 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2c7a0 6d 65 3d 22 70 41 75 78 22 3e 0d 0a 20 20 20 20  me="pAux">..    
2c7b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
2c7c0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
2c7d0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2c7e0 6c 65 2e 78 43 72 65 61 74 65 22 20 2f 3e 20 6d  le.xCreate" /> m
2c7f0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2c800 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2c810 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2c820 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61  / <param name="a
2c830 72 67 63 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  rgc">..         
2c840 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2c850 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2c860 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
2c870 72 65 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64  reate" /> method
2c880 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2c890 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
2c8a0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
2c8b0 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 76 22 3e  ram name="argv">
2c8c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2c8d0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
2c8e0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
2c8f0 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65  veModule.xCreate
2c900 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
2c910 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2c920 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
2c930 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
2c940 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20  ame="pVtab">..  
2c950 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2c960 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
2c970 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2c980 64 75 6c 65 2e 78 43 72 65 61 74 65 22 20 2f 3e  dule.xCreate" />
2c990 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
2c9a0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
2c9b0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
2c9c0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
2c9d0 22 70 45 72 72 6f 72 22 3e 0d 0a 20 20 20 20 20  "pError">..     
2c9e0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
2c9f0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
2ca00 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2ca10 65 2e 78 43 72 65 61 74 65 22 20 2f 3e 20 6d 65  e.xCreate" /> me
2ca20 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2ca30 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
2ca40 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2ca50 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
2ca60 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
2ca70 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
2ca80 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2ca90 6c 65 2e 78 43 72 65 61 74 65 22 20 2f 3e 20 6d  le.xCreate" /> m
2caa0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2cab0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
2cac0 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
2cad0 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72  public SQLiteErr
2cae0 6f 72 43 6f 64 65 20 78 43 72 65 61 74 65 28 0d  orCode xCreate(.
2caf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2cb00 20 49 6e 74 50 74 72 20 70 44 62 2c 0d 0a 20 20   IntPtr pDb,..  
2cb10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
2cb20 74 50 74 72 20 70 41 75 78 2c 0d 0a 20 20 20 20  tPtr pAux,..    
2cb30 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
2cb40 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 20  argc,..         
2cb50 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 61 72         IntPtr ar
2cb60 67 76 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  gv,..           
2cb70 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20       ref IntPtr 
2cb80 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20  pVtab,..        
2cb90 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50          ref IntP
2cba0 74 72 20 70 45 72 72 6f 72 0d 0a 20 20 20 20 20  tr pError..     
2cbb0 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
2cbc0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2cbd0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
2cbe0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2cbf0 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64   // NOTE: Called
2cc00 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e   by native code.
2cc10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2cc20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
2cc30 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69        // CheckDi
2cc40 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45  sposed(); /* EXE
2cc50 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20  MPT */....      
2cc60 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f            if (mo
2cc70 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  dule == null).. 
2cc80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
2cc90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2cca0 20 20 20 20 20 20 70 45 72 72 6f 72 20 3d 20 53        pError = S
2ccb0 51 4c 69 74 65 53 74 72 69 6e 67 2e 55 74 66 38  QLiteString.Utf8
2ccc0 49 6e 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67  IntPtrFromString
2ccd0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2cce0 20 20 20 20 20 20 20 20 20 20 20 4d 6f 64 75 6c             Modul
2ccf0 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 45 72 72  eNotAvailableErr
2cd00 6f 72 4d 65 73 73 61 67 65 29 3b 0d 0a 0d 0a 20  orMessage);.... 
2cd10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cd20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65     return SQLite
2cd30 45 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 3b  ErrorCode.Error;
2cd40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2cd50 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
2cd60 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f         return mo
2cd70 64 75 6c 65 2e 78 43 72 65 61 74 65 28 0d 0a 20  dule.xCreate(.. 
2cd80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cd90 20 20 20 70 44 62 2c 20 70 41 75 78 2c 20 61 72     pDb, pAux, ar
2cda0 67 63 2c 20 61 72 67 76 2c 20 72 65 66 20 70 56  gc, argv, ref pV
2cdb0 74 61 62 2c 20 72 65 66 20 70 45 72 72 6f 72 29  tab, ref pError)
2cdc0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
2cdd0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2cde0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cdf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ce00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ce10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ce20 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
2ce30 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2ce40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2ce50 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
2ce60 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
2ce70 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63  veModule.xConnec
2ce80 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  t" /> method... 
2ce90 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2cea0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
2ceb0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
2cec0 6d 20 6e 61 6d 65 3d 22 70 44 62 22 3e 0d 0a 20  m name="pDb">.. 
2ced0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
2cee0 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
2cef0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
2cf00 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 22 20  odule.xConnect" 
2cf10 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2cf20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
2cf30 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
2cf40 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2cf50 65 3d 22 70 41 75 78 22 3e 0d 0a 20 20 20 20 20  e="pAux">..     
2cf60 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
2cf70 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
2cf80 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2cf90 65 2e 78 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d  e.xConnect" /> m
2cfa0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2cfb0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2cfc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2cfd0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61  / <param name="a
2cfe0 72 67 63 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  rgc">..         
2cff0 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2d000 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2d010 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
2d020 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f  onnect" /> metho
2d030 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
2d040 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
2d050 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
2d060 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 76 22  aram name="argv"
2d070 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2d080 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
2d090 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
2d0a0 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65  iveModule.xConne
2d0b0 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  ct" /> method...
2d0c0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2d0d0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
2d0e0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
2d0f0 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a   name="pVtab">..
2d100 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2d110 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
2d120 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
2d130 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 22  Module.xConnect"
2d140 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
2d150 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
2d160 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
2d170 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2d180 6d 65 3d 22 70 45 72 72 6f 72 22 3e 0d 0a 20 20  me="pError">..  
2d190 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2d1a0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
2d1b0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2d1c0 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 22 20 2f  dule.xConnect" /
2d1d0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
2d1e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
2d1f0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
2d200 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
2d210 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2d220 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
2d230 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
2d240 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 22  Module.xConnect"
2d250 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
2d260 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72           /// </r
2d270 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
2d280 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69       public SQLi
2d290 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6f 6e  teErrorCode xCon
2d2a0 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20  nect(..         
2d2b0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 44         IntPtr pD
2d2c0 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  b,..            
2d2d0 20 20 20 20 49 6e 74 50 74 72 20 70 41 75 78 2c      IntPtr pAux,
2d2e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d2f0 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20    int argc,..   
2d300 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
2d310 50 74 72 20 61 72 67 76 2c 0d 0a 20 20 20 20 20  Ptr argv,..     
2d320 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 49             ref I
2d330 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
2d340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2d350 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72 0d  f IntPtr pError.
2d360 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d370 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
2d380 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2d390 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
2d3a0 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
2d3b0 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65  Called by native
2d3c0 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
2d3d0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
2d3e0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43              // C
2d3f0 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20  heckDisposed(); 
2d400 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a  /* EXEMPT */....
2d410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d420 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75  if (module == nu
2d430 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
2d440 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2d450 20 20 20 20 20 20 20 20 20 20 20 20 70 45 72 72              pErr
2d460 6f 72 20 3d 20 53 51 4c 69 74 65 53 74 72 69 6e  or = SQLiteStrin
2d470 67 2e 55 74 66 38 49 6e 74 50 74 72 46 72 6f 6d  g.Utf8IntPtrFrom
2d480 53 74 72 69 6e 67 28 0d 0a 20 20 20 20 20 20 20  String(..       
2d490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d4a0 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61   ModuleNotAvaila
2d4b0 62 6c 65 45 72 72 6f 72 4d 65 73 73 61 67 65 29  bleErrorMessage)
2d4c0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2d4d0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2d4e0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e  SQLiteErrorCode.
2d4f0 45 72 72 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20  Error;..        
2d500 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2d510 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2d520 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 43 6f 6e 6e  urn module.xConn
2d530 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ect(..          
2d540 20 20 20 20 20 20 20 20 20 20 70 44 62 2c 20 70            pDb, p
2d550 41 75 78 2c 20 61 72 67 63 2c 20 61 72 67 76 2c  Aux, argc, argv,
2d560 20 72 65 66 20 70 56 74 61 62 2c 20 72 65 66 20   ref pVtab, ref 
2d570 70 45 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20  pError);..      
2d580 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2d590 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2d5a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d5b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d5d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2d5e0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73            /// <s
2d5f0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2d600 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2d610 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2d620 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2d630 78 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 20 6d  xBestIndex" /> m
2d640 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2d650 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2d660 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
2d670 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
2d680 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20  "pVtab">..      
2d690 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
2d6a0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
2d6b0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2d6c0 2e 78 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 20  .xBestIndex" /> 
2d6d0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2d6e0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2d6f0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2d700 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
2d710 70 49 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20 20  pIndex">..      
2d720 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
2d730 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
2d740 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2d750 2e 78 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 20  .xBestIndex" /> 
2d760 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2d770 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2d780 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2d790 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
2d7a0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2d7b0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
2d7c0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2d7d0 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 22  dule.xBestIndex"
2d7e0 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
2d7f0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72           /// </r
2d800 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
2d810 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69       public SQLi
2d820 74 65 45 72 72 6f 72 43 6f 64 65 20 78 42 65 73  teErrorCode xBes
2d830 74 49 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20  tIndex(..       
2d840 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
2d850 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20  pVtab,..        
2d860 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
2d870 49 6e 64 65 78 0d 0a 20 20 20 20 20 20 20 20 20  Index..         
2d880 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
2d890 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2d8a0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
2d8b0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2d8c0 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20  NOTE: Called by 
2d8d0 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20  native code...  
2d8e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2d8f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d900 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73    // CheckDispos
2d910 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20  ed(); /* EXEMPT 
2d920 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  */....          
2d930 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65        if (module
2d940 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
2d950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2d960 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41  eturn ModuleNotA
2d970 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72  vailableTableErr
2d980 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20  or(pVtab);....  
2d990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2d9a0 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 42 65 73  turn module.xBes
2d9b0 74 49 6e 64 65 78 28 70 56 74 61 62 2c 20 70 49  tIndex(pVtab, pI
2d9c0 6e 64 65 78 29 3b 0d 0a 20 20 20 20 20 20 20 20  ndex);..        
2d9d0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2d9e0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2d9f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2da00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2da10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2da20 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2da30 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
2da40 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
2da50 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2da60 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2da70 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44  eNativeModule.xD
2da80 69 73 63 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65  isconnect" /> me
2da90 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2daa0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
2dab0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2dac0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
2dad0 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20  pVtab">..       
2dae0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2daf0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2db00 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2db10 78 44 69 73 63 6f 6e 6e 65 63 74 22 20 2f 3e 20  xDisconnect" /> 
2db20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2db30 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2db40 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2db50 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
2db60 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2db70 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
2db80 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2db90 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74  dule.xDisconnect
2dba0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
2dbb0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2dbc0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
2dbd0 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c        public SQL
2dbe0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 44 69  iteErrorCode xDi
2dbf0 73 63 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20  sconnect(..     
2dc00 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
2dc10 72 20 70 56 74 61 62 0d 0a 20 20 20 20 20 20 20  r pVtab..       
2dc20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
2dc30 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2dc40 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
2dc50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2dc60 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62  / NOTE: Called b
2dc70 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a  y native code...
2dc80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dc90 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
2dca0 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70      // CheckDisp
2dcb0 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50  osed(); /* EXEMP
2dcc0 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  T */....        
2dcd0 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75          if (modu
2dce0 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  le == null)..   
2dcf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dd00 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f   return ModuleNo
2dd10 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45  tAvailableTableE
2dd20 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a  rror(pVtab);....
2dd30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dd40 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 44  return module.xD
2dd50 69 73 63 6f 6e 6e 65 63 74 28 70 56 74 61 62 29  isconnect(pVtab)
2dd60 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
2dd70 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2dd80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dd90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dda0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ddb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ddc0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
2ddd0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2dde0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2ddf0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
2de00 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
2de10 76 65 4d 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f  veModule.xDestro
2de20 79 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  y" /> method... 
2de30 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2de40 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
2de50 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
2de60 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d  m name="pVtab">.
2de70 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2de80 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
2de90 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
2dea0 65 4d 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f 79  eModule.xDestroy
2deb0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
2dec0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2ded0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
2dee0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
2def0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2df00 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
2df10 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
2df20 69 76 65 4d 6f 64 75 6c 65 2e 78 44 65 73 74 72  iveModule.xDestr
2df30 6f 79 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  oy" /> method...
2df40 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2df50 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
2df60 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53          public S
2df70 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
2df80 44 65 73 74 72 6f 79 28 0d 0a 20 20 20 20 20 20  Destroy(..      
2df90 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
2dfa0 20 70 56 74 61 62 0d 0a 20 20 20 20 20 20 20 20   pVtab..        
2dfb0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
2dfc0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2dfd0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
2dfe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2dff0 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79   NOTE: Called by
2e000 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20   native code... 
2e010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2e020 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
2e030 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f     // CheckDispo
2e040 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54  sed(); /* EXEMPT
2e050 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   */....         
2e060 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c         if (modul
2e070 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
2e080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e090 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74  return ModuleNot
2e0a0 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72  AvailableTableEr
2e0b0 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20  ror(pVtab);.... 
2e0c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2e0d0 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 44 65  eturn module.xDe
2e0e0 73 74 72 6f 79 28 70 56 74 61 62 29 3b 0d 0a 20  stroy(pVtab);.. 
2e0f0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
2e100 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
2e110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2e150 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2e160 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
2e170 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2e180 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
2e190 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2e1a0 64 75 6c 65 2e 78 4f 70 65 6e 22 20 2f 3e 20 6d  dule.xOpen" /> m
2e1b0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2e1c0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2e1d0 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
2e1e0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
2e1f0 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20  "pVtab">..      
2e200 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
2e210 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
2e220 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2e230 2e 78 4f 70 65 6e 22 20 2f 3e 20 6d 65 74 68 6f  .xOpen" /> metho
2e240 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
2e250 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
2e260 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
2e270 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73  aram name="pCurs
2e280 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  or">..          
2e290 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
2e2a0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2e2b0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4f 70  NativeModule.xOp
2e2c0 65 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  en" /> method...
2e2d0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2e2e0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
2e2f0 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
2e300 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
2e310 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
2e320 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
2e330 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4f 70 65  ativeModule.xOpe
2e340 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  n" /> method... 
2e350 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2e360 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
2e370 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51         public SQ
2e380 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 4f  LiteErrorCode xO
2e390 70 65 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  pen(..          
2e3a0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
2e3b0 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ab,..           
2e3c0 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20       ref IntPtr 
2e3d0 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20  pCursor..       
2e3e0 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
2e3f0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2e400 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
2e410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2e420 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62  / NOTE: Called b
2e430 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a  y native code...
2e440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e450 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
2e460 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70      // CheckDisp
2e470 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50  osed(); /* EXEMP
2e480 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  T */....        
2e490 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75          if (modu
2e4a0 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  le == null)..   
2e4b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e4c0 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f   return ModuleNo
2e4d0 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45  tAvailableTableE
2e4e0 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a  rror(pVtab);....
2e4f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e500 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 4f  return module.xO
2e510 70 65 6e 28 70 56 74 61 62 2c 20 72 65 66 20 70  pen(pVtab, ref p
2e520 43 75 72 73 6f 72 29 3b 0d 0a 20 20 20 20 20 20  Cursor);..      
2e530 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2e540 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2e550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2e590 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73            /// <s
2e5a0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2e5b0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2e5c0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2e5d0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2e5e0 78 43 6c 6f 73 65 22 20 2f 3e 20 6d 65 74 68 6f  xClose" /> metho
2e5f0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
2e600 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
2e610 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2e620 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75  <param name="pCu
2e630 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20  rsor">..        
2e640 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
2e650 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
2e660 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
2e670 43 6c 6f 73 65 22 20 2f 3e 20 6d 65 74 68 6f 64  Close" /> method
2e680 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2e690 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
2e6a0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65           /// <re
2e6b0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
2e6c0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
2e6d0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
2e6e0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
2e6f0 43 6c 6f 73 65 22 20 2f 3e 20 6d 65 74 68 6f 64  Close" /> method
2e700 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2e710 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
2e720 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
2e730 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  c SQLiteErrorCod
2e740 65 20 78 43 6c 6f 73 65 28 0d 0a 20 20 20 20 20  e xClose(..     
2e750 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
2e760 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 20  r pCursor..     
2e770 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
2e780 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2e790 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
2e7a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e7b0 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64   // NOTE: Called
2e7c0 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e   by native code.
2e7d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e7e0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
2e7f0 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69        // CheckDi
2e800 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45  sposed(); /* EXE
2e810 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20  MPT */....      
2e820 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f            if (mo
2e830 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  dule == null).. 
2e840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e850 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65     return Module
2e860 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43 75 72 73  NotAvailableCurs
2e870 6f 72 45 72 72 6f 72 28 70 43 75 72 73 6f 72 29  orError(pCursor)
2e880 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2e890 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75       return modu
2e8a0 6c 65 2e 78 43 6c 6f 73 65 28 70 43 75 72 73 6f  le.xClose(pCurso
2e8b0 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r);..           
2e8c0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
2e8d0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2e8e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e8f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e910 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2e920 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
2e930 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
2e940 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
2e950 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
2e960 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74  tiveModule.xFilt
2e970 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  er" /> method...
2e980 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2e990 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
2e9a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
2e9b0 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72  am name="pCursor
2e9c0 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
2e9d0 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
2e9e0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
2e9f0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74  tiveModule.xFilt
2ea00 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  er" /> method...
2ea10 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2ea20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
2ea30 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
2ea40 20 6e 61 6d 65 3d 22 69 64 78 4e 75 6d 22 3e 0d   name="idxNum">.
2ea50 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2ea60 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
2ea70 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
2ea80 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 22  eModule.xFilter"
2ea90 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
2eaa0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
2eab0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
2eac0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2ead0 6d 65 3d 22 69 64 78 53 74 72 22 3e 0d 0a 20 20  me="idxStr">..  
2eae0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2eaf0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
2eb00 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2eb10 64 75 6c 65 2e 78 46 69 6c 74 65 72 22 20 2f 3e  dule.xFilter" />
2eb20 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
2eb30 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
2eb40 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
2eb50 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
2eb60 22 61 72 67 63 22 3e 0d 0a 20 20 20 20 20 20 20  "argc">..       
2eb70 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2eb80 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2eb90 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2eba0 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68  xFilter" /> meth
2ebb0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
2ebc0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
2ebd0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2ebe0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 76  param name="argv
2ebf0 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
2ec00 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
2ec10 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
2ec20 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74  tiveModule.xFilt
2ec30 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  er" /> method...
2ec40 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2ec50 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
2ec60 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
2ec70 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
2ec80 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
2ec90 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
2eca0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c  ativeModule.xFil
2ecb0 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ter" /> method..
2ecc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2ecd0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
2ece0 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
2ecf0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
2ed00 78 46 69 6c 74 65 72 28 0d 0a 20 20 20 20 20 20  xFilter(..      
2ed10 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
2ed20 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20   pCursor,..     
2ed30 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69             int i
2ed40 64 78 4e 75 6d 2c 0d 0a 20 20 20 20 20 20 20 20  dxNum,..        
2ed50 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 69          IntPtr i
2ed60 64 78 53 74 72 2c 0d 0a 20 20 20 20 20 20 20 20  dxStr,..        
2ed70 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63          int argc
2ed80 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2ed90 20 20 20 49 6e 74 50 74 72 20 61 72 67 76 0d 0a     IntPtr argv..
2eda0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2edb0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
2edc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2edd0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
2ede0 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43        // NOTE: C
2edf0 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20  alled by native 
2ee00 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  code...         
2ee10 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
2ee20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68             // Ch
2ee30 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f  eckDisposed(); /
2ee40 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20  * EXEMPT */.... 
2ee50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
2ee60 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c  f (module == nul
2ee70 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
2ee80 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d          return M
2ee90 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c  oduleNotAvailabl
2eea0 65 43 75 72 73 6f 72 45 72 72 6f 72 28 70 43 75  eCursorError(pCu
2eeb0 72 73 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  rsor);....      
2eec0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2eed0 20 6d 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 28   module.xFilter(
2eee0 70 43 75 72 73 6f 72 2c 20 69 64 78 4e 75 6d 2c  pCursor, idxNum,
2eef0 20 69 64 78 53 74 72 2c 20 61 72 67 63 2c 20 61   idxStr, argc, a
2ef00 72 67 76 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  rgv);..         
2ef10 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
2ef20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2ef30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ef40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ef50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ef60 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2ef70 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
2ef80 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
2ef90 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
2efa0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2efb0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4e 65  NativeModule.xNe
2efc0 78 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  xt" /> method...
2efd0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2efe0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
2eff0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
2f000 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72  am name="pCursor
2f010 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
2f020 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
2f030 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
2f040 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4e 65 78 74  tiveModule.xNext
2f050 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
2f060 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2f070 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
2f080 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
2f090 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2f0a0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
2f0b0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
2f0c0 69 76 65 4d 6f 64 75 6c 65 2e 78 4e 65 78 74 22  iveModule.xNext"
2f0d0 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
2f0e0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72           /// </r
2f0f0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
2f100 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69       public SQLi
2f110 74 65 45 72 72 6f 72 43 6f 64 65 20 78 4e 65 78  teErrorCode xNex
2f120 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
2f130 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73      IntPtr pCurs
2f140 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  or..            
2f150 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
2f160 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2f170 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
2f180 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
2f190 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74  E: Called by nat
2f1a0 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  ive code...     
2f1b0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
2f1c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2f1d0 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  / CheckDisposed(
2f1e0 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d  ); /* EXEMPT */.
2f1f0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2f200 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d     if (module ==
2f210 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
2f220 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2f230 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69  rn ModuleNotAvai
2f240 6c 61 62 6c 65 43 75 72 73 6f 72 45 72 72 6f 72  lableCursorError
2f250 28 70 43 75 72 73 6f 72 29 3b 0d 0a 0d 0a 20 20  (pCursor);....  
2f260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2f270 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 4e 65 78  turn module.xNex
2f280 74 28 70 43 75 72 73 6f 72 29 3b 0d 0a 20 20 20  t(pCursor);..   
2f290 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
2f2a0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
2f2b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f2c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f2d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f2e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2f2f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2f300 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2f310 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
2f320 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
2f330 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2f340 6c 65 2e 78 45 6f 66 22 20 2f 3e 20 6d 65 74 68  le.xEof" /> meth
2f350 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
2f360 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2f370 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2f380 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43   <param name="pC
2f390 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20  ursor">..       
2f3a0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2f3b0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2f3c0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2f3d0 78 45 6f 66 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  xEof" /> method.
2f3e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2f3f0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
2f400 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
2f410 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
2f420 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2f430 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2f440 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 45  eNativeModule.xE
2f450 6f 66 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  of" /> method...
2f460 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2f470 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
2f480 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69          public i
2f490 6e 74 20 78 45 6f 66 28 0d 0a 20 20 20 20 20 20  nt xEof(..      
2f4a0 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
2f4b0 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 20 20   pCursor..      
2f4c0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
2f4d0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2f4e0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
2f4f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f500 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20  // NOTE: Called 
2f510 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d  by native code..
2f520 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f530 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
2f540 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73       // CheckDis
2f550 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d  posed(); /* EXEM
2f560 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  PT */....       
2f570 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64           if (mod
2f580 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ule == null)..  
2f590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2f5a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f5b0 20 20 20 20 20 4d 6f 64 75 6c 65 4e 6f 74 41 76       ModuleNotAv
2f5c0 61 69 6c 61 62 6c 65 43 75 72 73 6f 72 45 72 72  ailableCursorErr
2f5d0 6f 72 28 70 43 75 72 73 6f 72 29 3b 0d 0a 20 20  or(pCursor);..  
2f5e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f5f0 20 20 72 65 74 75 72 6e 20 31 3b 0d 0a 20 20 20    return 1;..   
2f600 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2f610 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f620 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e    return module.
2f630 78 45 6f 66 28 70 43 75 72 73 6f 72 29 3b 0d 0a  xEof(pCursor);..
2f640 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
2f650 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2f660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f6a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2f6b0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2f6c0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
2f6d0 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
2f6e0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
2f6f0 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 22 20 2f  odule.xColumn" /
2f700 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
2f710 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
2f720 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
2f730 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2f740 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20  me="pCursor">.. 
2f750 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
2f760 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
2f770 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
2f780 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 22 20 2f  odule.xColumn" /
2f790 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
2f7a0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
2f7b0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
2f7c0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2f7d0 3d 22 70 43 6f 6e 74 65 78 74 22 3e 0d 0a 20 20  ="pContext">..  
2f7e0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2f7f0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
2f800 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2f810 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 22 20 2f 3e  dule.xColumn" />
2f820 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
2f830 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
2f840 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
2f850 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
2f860 22 69 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20 20  "index">..      
2f870 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
2f880 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
2f890 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2f8a0 2e 78 43 6f 6c 75 6d 6e 22 20 2f 3e 20 6d 65 74  .xColumn" /> met
2f8b0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
2f8c0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2f8d0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2f8e0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
2f8f0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
2f900 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
2f910 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2f920 65 2e 78 43 6f 6c 75 6d 6e 22 20 2f 3e 20 6d 65  e.xColumn" /> me
2f930 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2f940 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
2f950 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
2f960 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f  ublic SQLiteErro
2f970 72 43 6f 64 65 20 78 43 6f 6c 75 6d 6e 28 0d 0a  rCode xColumn(..
2f980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f990 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 2c 0d  IntPtr pCursor,.
2f9a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f9b0 20 49 6e 74 50 74 72 20 70 43 6f 6e 74 65 78 74   IntPtr pContext
2f9c0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2f9d0 20 20 20 69 6e 74 20 69 6e 64 65 78 0d 0a 20 20     int index..  
2f9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
2f9f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
2fa00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fa10 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
2fa20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c      // NOTE: Cal
2fa30 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f  led by native co
2fa40 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  de...           
2fa50 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
2fa60 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63           // Chec
2fa70 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20  kDisposed(); /* 
2fa80 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20  EXEMPT */....   
2fa90 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2faa0 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29  (module == null)
2fab0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2fac0 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64        return Mod
2fad0 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43  uleNotAvailableC
2fae0 75 72 73 6f 72 45 72 72 6f 72 28 70 43 75 72 73  ursorError(pCurs
2faf0 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  or);....        
2fb00 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d          return m
2fb10 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 28 70 43  odule.xColumn(pC
2fb20 75 72 73 6f 72 2c 20 70 43 6f 6e 74 65 78 74 2c  ursor, pContext,
2fb30 20 69 6e 64 65 78 29 3b 0d 0a 20 20 20 20 20 20   index);..      
2fb40 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2fb50 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2fb60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fb70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fb80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fb90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2fba0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73            /// <s
2fbb0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2fbc0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2fbd0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2fbe0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2fbf0 78 52 6f 77 49 64 22 20 2f 3e 20 6d 65 74 68 6f  xRowId" /> metho
2fc00 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
2fc10 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
2fc20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2fc30 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75  <param name="pCu
2fc40 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20  rsor">..        
2fc50 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
2fc60 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
2fc70 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
2fc80 52 6f 77 49 64 22 20 2f 3e 20 6d 65 74 68 6f 64  RowId" /> method
2fc90 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2fca0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
2fcb0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
2fcc0 72 61 6d 20 6e 61 6d 65 3d 22 72 6f 77 49 64 22  ram name="rowId"
2fcd0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2fce0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
2fcf0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
2fd00 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64  iveModule.xRowId
2fd10 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
2fd20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2fd30 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
2fd40 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
2fd50 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2fd60 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
2fd70 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
2fd80 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64  iveModule.xRowId
2fd90 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
2fda0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2fdb0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
2fdc0 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c        public SQL
2fdd0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52 6f  iteErrorCode xRo
2fde0 77 49 64 28 0d 0a 20 20 20 20 20 20 20 20 20 20  wId(..          
2fdf0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75        IntPtr pCu
2fe00 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 20  rsor,..         
2fe10 20 20 20 20 20 20 20 72 65 66 20 6c 6f 6e 67 20         ref long 
2fe20 72 6f 77 49 64 0d 0a 20 20 20 20 20 20 20 20 20  rowId..         
2fe30 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
2fe40 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2fe50 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
2fe60 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2fe70 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20  NOTE: Called by 
2fe80 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20  native code...  
2fe90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2fea0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2feb0 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73    // CheckDispos
2fec0 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20  ed(); /* EXEMPT 
2fed0 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  */....          
2fee0 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65        if (module
2fef0 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
2ff00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2ff10 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41  eturn ModuleNotA
2ff20 76 61 69 6c 61 62 6c 65 43 75 72 73 6f 72 45 72  vailableCursorEr
2ff30 72 6f 72 28 70 43 75 72 73 6f 72 29 3b 0d 0a 0d  ror(pCursor);...
2ff40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ff50 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78   return module.x
2ff60 52 6f 77 49 64 28 70 43 75 72 73 6f 72 2c 20 72  RowId(pCursor, r
2ff70 65 66 20 72 6f 77 49 64 29 3b 0d 0a 20 20 20 20  ef rowId);..    
2ff80 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2ff90 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
2ffa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ffb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ffc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ffd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2ffe0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2fff0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
30000 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
30010 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
30020 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
30030 65 2e 78 55 70 64 61 74 65 22 20 2f 3e 20 6d 65  e.xUpdate" /> me
30040 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
30050 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
30060 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
30070 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
30080 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20  pVtab">..       
30090 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
300a0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
300b0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
300c0 78 55 70 64 61 74 65 22 20 2f 3e 20 6d 65 74 68  xUpdate" /> meth
300d0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
300e0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
300f0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
30100 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 63  param name="argc
30110 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
30120 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
30130 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
30140 74 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61  tiveModule.xUpda
30150 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  te" /> method...
30160 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
30170 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
30180 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
30190 20 6e 61 6d 65 3d 22 61 72 67 76 22 3e 0d 0a 20   name="argv">.. 
301a0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
301b0 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
301c0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
301d0 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 22 20 2f  odule.xUpdate" /
301e0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
301f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
30200 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
30210 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
30220 3d 22 72 6f 77 49 64 22 3e 0d 0a 20 20 20 20 20  ="rowId">..     
30230 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
30240 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
30250 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
30260 65 2e 78 55 70 64 61 74 65 22 20 2f 3e 20 6d 65  e.xUpdate" /> me
30270 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
30280 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
30290 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
302a0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
302b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
302c0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
302d0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
302e0 6c 65 2e 78 55 70 64 61 74 65 22 20 2f 3e 20 6d  le.xUpdate" /> m
302f0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
30300 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
30310 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
30320 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72  public SQLiteErr
30330 6f 72 43 6f 64 65 20 78 55 70 64 61 74 65 28 0d  orCode xUpdate(.
30340 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30350 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
30360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30370 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20  int argc,..     
30380 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
30390 72 20 61 72 67 76 2c 0d 0a 20 20 20 20 20 20 20  r argv,..       
303a0 20 20 20 20 20 20 20 20 20 72 65 66 20 6c 6f 6e           ref lon
303b0 67 20 72 6f 77 49 64 0d 0a 20 20 20 20 20 20 20  g rowId..       
303c0 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
303d0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
303e0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
303f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
30400 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62  / NOTE: Called b
30410 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a  y native code...
30420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30430 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
30440 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70      // CheckDisp
30450 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50  osed(); /* EXEMP
30460 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  T */....        
30470 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75          if (modu
30480 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  le == null)..   
30490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
304a0 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f   return ModuleNo
304b0 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45  tAvailableTableE
304c0 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a  rror(pVtab);....
304d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
304e0 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 55  return module.xU
304f0 70 64 61 74 65 28 70 56 74 61 62 2c 20 61 72 67  pdate(pVtab, arg
30500 63 2c 20 61 72 67 76 2c 20 72 65 66 20 72 6f 77  c, argv, ref row
30510 49 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  Id);..          
30520 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
30530 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
30540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30570 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
30580 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
30590 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
305a0 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
305b0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
305c0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 67  ativeModule.xBeg
305d0 69 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  in" /> method...
305e0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
305f0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
30600 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
30610 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e  am name="pVtab">
30620 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
30630 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
30640 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
30650 76 65 4d 6f 64 75 6c 65 2e 78 42 65 67 69 6e 22  veModule.xBegin"
30660 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
30670 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
30680 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
30690 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
306a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
306b0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
306c0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
306d0 76 65 4d 6f 64 75 6c 65 2e 78 42 65 67 69 6e 22  veModule.xBegin"
306e0 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
306f0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72           /// </r
30700 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
30710 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69       public SQLi
30720 74 65 45 72 72 6f 72 43 6f 64 65 20 78 42 65 67  teErrorCode xBeg
30730 69 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  in(..           
30740 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
30750 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  b..             
30760 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
30770 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
30780 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
30790 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
307a0 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69  : Called by nati
307b0 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  ve code...      
307c0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
307d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
307e0 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
307f0 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a  ; /* EXEMPT */..
30800 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30810 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20    if (module == 
30820 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
30830 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
30840 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c  n ModuleNotAvail
30850 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72 28 70  ableTableError(p
30860 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Vtab);....      
30870 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
30880 20 6d 6f 64 75 6c 65 2e 78 42 65 67 69 6e 28 70   module.xBegin(p
30890 56 74 61 62 29 3b 0d 0a 20 20 20 20 20 20 20 20  Vtab);..        
308a0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
308b0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
308c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
308d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
308e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
308f0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
30900 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
30910 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
30920 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
30930 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
30940 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53  eNativeModule.xS
30950 79 6e 63 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ync" /> method..
30960 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
30970 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
30980 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
30990 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22  ram name="pVtab"
309a0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
309b0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
309c0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
309d0 69 76 65 4d 6f 64 75 6c 65 2e 78 53 79 6e 63 22  iveModule.xSync"
309e0 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
309f0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
30a00 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
30a10 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
30a20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
30a30 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
30a40 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
30a50 76 65 4d 6f 64 75 6c 65 2e 78 53 79 6e 63 22 20  veModule.xSync" 
30a60 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
30a70 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
30a80 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
30a90 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
30aa0 65 45 72 72 6f 72 43 6f 64 65 20 78 53 79 6e 63  eErrorCode xSync
30ab0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
30ac0 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d     IntPtr pVtab.
30ad0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30ae0 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
30af0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
30b00 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
30b10 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
30b20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65  Called by native
30b30 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
30b40 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
30b50 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43              // C
30b60 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20  heckDisposed(); 
30b70 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a  /* EXEMPT */....
30b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30b90 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75  if (module == nu
30ba0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
30bb0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
30bc0 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62  ModuleNotAvailab
30bd0 6c 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74  leTableError(pVt
30be0 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ab);....        
30bf0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d          return m
30c00 6f 64 75 6c 65 2e 78 53 79 6e 63 28 70 56 74 61  odule.xSync(pVta
30c10 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  b);..           
30c20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
30c30 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
30c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30c70 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
30c80 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
30c90 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
30ca0 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
30cb0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
30cc0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6d 6d  tiveModule.xComm
30cd0 69 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  it" /> method...
30ce0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
30cf0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
30d00 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
30d10 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e  am name="pVtab">
30d20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
30d30 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
30d40 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
30d50 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74  veModule.xCommit
30d60 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
30d70 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
30d80 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
30d90 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
30da0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
30db0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
30dc0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
30dd0 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69  iveModule.xCommi
30de0 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  t" /> method... 
30df0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
30e00 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
30e10 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51         public SQ
30e20 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43  LiteErrorCode xC
30e30 6f 6d 6d 69 74 28 0d 0a 20 20 20 20 20 20 20 20  ommit(..        
30e40 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
30e50 56 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20  Vtab..          
30e60 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
30e70 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
30e80 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
30e90 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
30ea0 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e  OTE: Called by n
30eb0 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20  ative code...   
30ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
30ed0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30ee0 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65   // CheckDispose
30ef0 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a  d(); /* EXEMPT *
30f00 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
30f10 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20       if (module 
30f20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
30f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
30f40 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76  turn ModuleNotAv
30f50 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f  ailableTableErro
30f60 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20  r(pVtab);....   
30f70 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
30f80 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 43 6f 6d 6d  urn module.xComm
30f90 69 74 28 70 56 74 61 62 29 3b 0d 0a 20 20 20 20  it(pVtab);..    
30fa0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
30fb0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
30fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
31000 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
31010 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
31020 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
31030 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
31040 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
31050 65 2e 78 52 6f 6c 6c 62 61 63 6b 22 20 2f 3e 20  e.xRollback" /> 
31060 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
31070 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
31080 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
31090 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
310a0 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20  ="pVtab">..     
310b0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
310c0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
310d0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
310e0 65 2e 78 52 6f 6c 6c 62 61 63 6b 22 20 2f 3e 20  e.xRollback" /> 
310f0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
31100 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
31110 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
31120 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
31130 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
31140 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
31150 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
31160 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 22 20  dule.xRollback" 
31170 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
31180 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
31190 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
311a0 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
311b0 65 45 72 72 6f 72 43 6f 64 65 20 78 52 6f 6c 6c  eErrorCode xRoll
311c0 62 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 20  back(..         
311d0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
311e0 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tab..           
311f0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
31200 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
31210 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
31220 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
31230 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61  TE: Called by na
31240 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20  tive code...    
31250 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
31260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31270 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64  // CheckDisposed
31280 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f  (); /* EXEMPT */
31290 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
312a0 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d      if (module =
312b0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
312c0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
312d0 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61  urn ModuleNotAva
312e0 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72  ilableTableError
312f0 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20  (pVtab);....    
31300 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
31310 72 6e 20 6d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62  rn module.xRollb
31320 61 63 6b 28 70 56 74 61 62 29 3b 0d 0a 20 20 20  ack(pVtab);..   
31330 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
31340 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
31350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
31390 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
313a0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
313b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
313c0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
313d0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
313e0 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e  le.xFindFunction
313f0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
31400 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
31410 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
31420 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
31430 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a   name="pVtab">..
31440 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
31450 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
31460 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
31470 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63  Module.xFindFunc
31480 74 69 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  tion" /> method.
31490 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
314a0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
314b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
314c0 61 6d 20 6e 61 6d 65 3d 22 6e 41 72 67 22 3e 0d  am name="nArg">.
314d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
314e0 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
314f0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
31500 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e  eModule.xFindFun
31510 63 74 69 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64  ction" /> method
31520 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
31530 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
31540 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
31550 72 61 6d 20 6e 61 6d 65 3d 22 7a 4e 61 6d 65 22  ram name="zName"
31560 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
31570 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
31580 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
31590 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46  iveModule.xFindF
315a0 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6d 65 74 68  unction" /> meth
315b0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
315c0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
315d0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
315e0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 61 6c 6c  param name="call
315f0 62 61 63 6b 22 3e 0d 0a 20 20 20 20 20 20 20 20  back">..        
31600 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
31610 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
31620 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
31630 46 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e  FindFunction" />
31640 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
31650 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
31660 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
31670 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
31680 22 70 43 6c 69 65 6e 74 44 61 74 61 22 3e 0d 0a  "pClientData">..
31690 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
316a0 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
316b0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
316c0 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63  Module.xFindFunc
316d0 74 69 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  tion" /> method.
316e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
316f0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
31700 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
31710 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
31720 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
31730 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
31740 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46  eNativeModule.xF
31750 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20  indFunction" /> 
31760 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
31770 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
31780 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
31790 20 70 75 62 6c 69 63 20 69 6e 74 20 78 46 69 6e   public int xFin
317a0 64 46 75 6e 63 74 69 6f 6e 28 0d 0a 20 20 20 20  dFunction(..    
317b0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
317c0 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
317d0 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6e             int n
317e0 41 72 67 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  Arg,..          
317f0 20 20 20 20 20 20 49 6e 74 50 74 72 20 7a 4e 61        IntPtr zNa
31800 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me,..           
31810 20 20 20 20 20 72 65 66 20 53 51 4c 69 74 65 43       ref SQLiteC
31820 61 6c 6c 62 61 63 6b 20 63 61 6c 6c 62 61 63 6b  allback callback
31830 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
31840 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 43     ref IntPtr pC
31850 6c 69 65 6e 74 44 61 74 61 0d 0a 20 20 20 20 20  lientData..     
31860 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
31870 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
31880 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
31890 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
318a0 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64   // NOTE: Called
318b0 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e   by native code.
318c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
318d0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
318e0 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69        // CheckDi
318f0 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45  sposed(); /* EXE
31900 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20  MPT */....      
31910 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f            if (mo
31920 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  dule == null).. 
31930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
31940 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31950 20 20 20 20 20 20 4d 6f 64 75 6c 65 4e 6f 74 41        ModuleNotA
31960 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72  vailableTableErr
31970 6f 72 28 70 56 74 61 62 29 3b 0d 0a 20 20 20 20  or(pVtab);..    
31980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31990 72 65 74 75 72 6e 20 30 3b 0d 0a 20 20 20 20 20  return 0;..     
319a0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
319b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
319c0 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 46  return module.xF
319d0 69 6e 64 46 75 6e 63 74 69 6f 6e 28 0d 0a 20 20  indFunction(..  
319e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
319f0 20 20 70 56 74 61 62 2c 20 6e 41 72 67 2c 20 7a    pVtab, nArg, z
31a00 4e 61 6d 65 2c 20 72 65 66 20 63 61 6c 6c 62 61  Name, ref callba
31a10 63 6b 2c 20 72 65 66 20 70 43 6c 69 65 6e 74 44  ck, ref pClientD
31a20 61 74 61 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ata);..         
31a30 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
31a40 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
31a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31a80 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
31a90 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
31aa0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
31ab0 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
31ac0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
31ad0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65  NativeModule.xRe
31ae0 6e 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  name" /> method.
31af0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
31b00 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
31b10 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
31b20 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62  aram name="pVtab
31b30 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
31b40 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
31b50 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
31b60 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6e 61  tiveModule.xRena
31b70 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  me" /> method...
31b80 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
31b90 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
31ba0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
31bb0 20 6e 61 6d 65 3d 22 7a 4e 65 77 22 3e 0d 0a 20   name="zNew">.. 
31bc0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
31bd0 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
31be0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
31bf0 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65 22 20 2f  odule.xRename" /
31c00 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
31c10 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
31c20 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
31c30 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
31c40 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
31c50 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
31c60 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
31c70 4d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65 22 20  Module.xRename" 
31c80 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
31c90 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
31ca0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
31cb0 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
31cc0 65 45 72 72 6f 72 43 6f 64 65 20 78 52 65 6e 61  eErrorCode xRena
31cd0 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me(..           
31ce0 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
31cf0 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  b,..            
31d00 20 20 20 20 49 6e 74 50 74 72 20 7a 4e 65 77 0d      IntPtr zNew.
31d10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31d20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
31d30 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
31d40 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
31d50 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
31d60 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65  Called by native
31d70 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
31d80 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
31d90 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43              // C
31da0 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20  heckDisposed(); 
31db0 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a  /* EXEMPT */....
31dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31dd0 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75  if (module == nu
31de0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
31df0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
31e00 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62  ModuleNotAvailab
31e10 6c 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74  leTableError(pVt
31e20 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ab);....        
31e30 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d          return m
31e40 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65 28 70 56  odule.xRename(pV
31e50 74 61 62 2c 20 7a 4e 65 77 29 3b 0d 0a 20 20 20  tab, zNew);..   
31e60 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
31e70 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
31e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
31ec0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
31ed0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
31ee0 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
31ef0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
31f00 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
31f10 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74 22 20 2f  le.xSavepoint" /
31f20 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
31f30 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
31f40 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
31f50 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
31f60 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20  me="pVtab">..   
31f70 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
31f80 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
31f90 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
31fa0 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74 22 20  ule.xSavepoint" 
31fb0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
31fc0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
31fd0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
31fe0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
31ff0 65 3d 22 69 53 61 76 65 70 6f 69 6e 74 22 3e 0d  e="iSavepoint">.
32000 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
32010 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
32020 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
32030 65 4d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69  eModule.xSavepoi
32040 6e 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  nt" /> method...
32050 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
32060 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
32070 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
32080 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
32090 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
320a0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
320b0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53 61 76  ativeModule.xSav
320c0 65 70 6f 69 6e 74 22 20 2f 3e 20 6d 65 74 68 6f  epoint" /> metho
320d0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
320e0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
320f0 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
32100 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  ic SQLiteErrorCo
32110 64 65 20 78 53 61 76 65 70 6f 69 6e 74 28 0d 0a  de xSavepoint(..
32120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32130 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
32140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
32150 6e 74 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20  nt iSavepoint.. 
32160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
32170 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
32180 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32190 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
321a0 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61       // NOTE: Ca
321b0 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63  lled by native c
321c0 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ode...          
321d0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
321e0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65            // Che
321f0 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a  ckDisposed(); /*
32200 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20   EXEMPT */....  
32210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
32220 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c   (module == null
32230 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
32240 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f         return Mo
32250 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65  duleNotAvailable
32260 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62  TableError(pVtab
32270 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
32280 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64        return mod
32290 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74 28 70  ule.xSavepoint(p
322a0 56 74 61 62 2c 20 69 53 61 76 65 70 6f 69 6e 74  Vtab, iSavepoint
322b0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
322c0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
322d0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
322e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
322f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32310 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
32320 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
32330 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
32340 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
32350 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
32360 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6c 65 61  iveModule.xRelea
32370 73 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  se" /> method...
32380 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
32390 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
323a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
323b0 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e  am name="pVtab">
323c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
323d0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
323e0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
323f0 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73  veModule.xReleas
32400 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
32410 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
32420 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
32430 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
32440 6e 61 6d 65 3d 22 69 53 61 76 65 70 6f 69 6e 74  name="iSavepoint
32450 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
32460 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
32470 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
32480 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6c 65  tiveModule.xRele
32490 61 73 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ase" /> method..
324a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
324b0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
324c0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
324d0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
324e0 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
324f0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
32500 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65  NativeModule.xRe
32510 6c 65 61 73 65 22 20 2f 3e 20 6d 65 74 68 6f 64  lease" /> method
32520 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
32530 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
32540 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
32550 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  c SQLiteErrorCod
32560 65 20 78 52 65 6c 65 61 73 65 28 0d 0a 20 20 20  e xRelease(..   
32570 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
32580 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
32590 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
325a0 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20  iSavepoint..    
325b0 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
325c0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
325d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
325e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
325f0 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65    // NOTE: Calle
32600 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65  d by native code
32610 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
32620 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
32630 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44         // CheckD
32640 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58  isposed(); /* EX
32650 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20  EMPT */....     
32660 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d             if (m
32670 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  odule == null)..
32680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32690 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c      return Modul
326a0 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62  eNotAvailableTab
326b0 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d  leError(pVtab);.
326c0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
326d0 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65     return module
326e0 2e 78 52 65 6c 65 61 73 65 28 70 56 74 61 62 2c  .xRelease(pVtab,
326f0 20 69 53 61 76 65 70 6f 69 6e 74 29 3b 0d 0a 20   iSavepoint);.. 
32700 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
32710 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
32720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
32760 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
32770 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
32780 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
32790 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
327a0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
327b0 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f  dule.xRollbackTo
327c0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
327d0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
327e0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
327f0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
32800 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a   name="pVtab">..
32810 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
32820 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
32830 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
32840 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b  Module.xRollback
32850 54 6f 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  To" /> method...
32860 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
32870 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
32880 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
32890 20 6e 61 6d 65 3d 22 69 53 61 76 65 70 6f 69 6e   name="iSavepoin
328a0 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t">..           
328b0 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
328c0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
328d0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c  ativeModule.xRol
328e0 6c 62 61 63 6b 54 6f 22 20 2f 3e 20 6d 65 74 68  lbackTo" /> meth
328f0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
32900 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
32910 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
32920 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
32930 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
32940 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
32950 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
32960 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 22 20 2f 3e  .xRollbackTo" />
32970 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
32980 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
32990 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
329a0 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45    public SQLiteE
329b0 72 72 6f 72 43 6f 64 65 20 78 52 6f 6c 6c 62 61  rrorCode xRollba
329c0 63 6b 54 6f 28 0d 0a 20 20 20 20 20 20 20 20 20  ckTo(..         
329d0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
329e0 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  tab,..          
329f0 20 20 20 20 20 20 69 6e 74 20 69 53 61 76 65 70        int iSavep
32a00 6f 69 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20  oint..          
32a10 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
32a20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
32a30 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
32a40 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
32a50 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e  OTE: Called by n
32a60 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20  ative code...   
32a70 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
32a80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32a90 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65   // CheckDispose
32aa0 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a  d(); /* EXEMPT *
32ab0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
32ac0 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20       if (module 
32ad0 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
32ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
32af0 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76  turn ModuleNotAv
32b00 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f  ailableTableErro
32b10 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20  r(pVtab);....   
32b20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
32b30 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 52 6f 6c 6c  urn module.xRoll
32b40 62 61 63 6b 54 6f 28 70 56 74 61 62 2c 20 69 53  backTo(pVtab, iS
32b50 61 76 65 70 6f 69 6e 74 29 3b 0d 0a 20 20 20 20  avepoint);..    
32b60 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
32b70 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
32b80 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n....           
32b90 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
32ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32bd0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
32be0 20 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73      #region IDis
32bf0 70 6f 73 61 62 6c 65 20 4d 65 6d 62 65 72 73 0d  posable Members.
32c00 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
32c10 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
32c20 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 69 73 70          /// Disp
32c30 6f 73 65 73 20 6f 66 20 74 68 69 73 20 6f 62 6a  oses of this obj
32c40 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20  ect instance... 
32c50 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
32c60 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
32c70 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f         public vo
32c80 69 64 20 44 69 73 70 6f 73 65 28 29 0d 0a 20 20  id Dispose()..  
32c90 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
32ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 44 69 73               Dis
32cb0 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20 20 20  pose(true);..   
32cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 47 43 2e               GC.
32cd0 53 75 70 70 72 65 73 73 46 69 6e 61 6c 69 7a 65  SuppressFinalize
32ce0 28 74 68 69 73 29 3b 0d 0a 20 20 20 20 20 20 20  (this);..       
32cf0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
32d00 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
32d10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
32d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32d60 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
32d70 20 23 72 65 67 69 6f 6e 20 49 44 69 73 70 6f 73   #region IDispos
32d80 61 62 6c 65 20 22 50 61 74 74 65 72 6e 22 20 4d  able "Pattern" M
32d90 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20  embers..        
32da0 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c      private bool
32db0 20 64 69 73 70 6f 73 65 64 3b 0d 0a 20 20 20 20   disposed;..    
32dc0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
32dd0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
32de0 20 20 20 2f 2f 2f 20 54 68 72 6f 77 73 20 61 6e     /// Throws an
32df0 20 3c 73 65 65 20 63 72 65 66 3d 22 4f 62 6a 65   <see cref="Obje
32e00 63 74 44 69 73 70 6f 73 65 64 45 78 63 65 70 74  ctDisposedExcept
32e10 69 6f 6e 22 20 2f 3e 20 69 66 20 74 68 69 73 20  ion" /> if this 
32e20 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20  object..        
32e30 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63 65      /// instance
32e40 20 68 61 73 20 62 65 65 6e 20 64 69 73 70 6f 73   has been dispos
32e50 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ed...           
32e60 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
32e70 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
32e80 76 61 74 65 20 76 6f 69 64 20 43 68 65 63 6b 44  vate void CheckD
32e90 69 73 70 6f 73 65 64 28 29 20 2f 2a 20 74 68 72  isposed() /* thr
32ea0 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
32eb0 20 20 20 7b 0d 0a 23 69 66 20 54 48 52 4f 57 5f     {..#if THROW_
32ec0 4f 4e 5f 44 49 53 50 4f 53 45 44 0d 0a 20 20 20  ON_DISPOSED..   
32ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
32ee0 28 64 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20  (disposed)..    
32ef0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
32f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32f10 20 20 20 74 68 72 6f 77 20 6e 65 77 20 4f 62 6a     throw new Obj
32f20 65 63 74 44 69 73 70 6f 73 65 64 45 78 63 65 70  ectDisposedExcep
32f30 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20  tion(..         
32f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
32f50 79 70 65 6f 66 28 53 51 4c 69 74 65 4e 61 74 69  ypeof(SQLiteNati
32f60 76 65 4d 6f 64 75 6c 65 29 2e 4e 61 6d 65 29 3b  veModule).Name);
32f70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
32f80 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
32f90 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
32fa0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
32fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
32ff0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
33000 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
33010 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 69 73 70          /// Disp
33020 6f 73 65 73 20 6f 66 20 74 68 69 73 20 6f 62 6a  oses of this obj
33030 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20  ect instance... 
33040 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
33050 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
33060 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
33070 6d 20 6e 61 6d 65 3d 22 64 69 73 70 6f 73 69 6e  m name="disposin
33080 67 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  g">..           
33090 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66   /// Non-zero if
330a0 20 74 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20   this method is 
330b0 62 65 69 6e 67 20 63 61 6c 6c 65 64 20 66 72 6f  being called fro
330c0 6d 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20  m the..         
330d0 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
330e0 3d 22 44 69 73 70 6f 73 65 28 29 22 20 2f 3e 20  ="Dispose()" /> 
330f0 6d 65 74 68 6f 64 2e 20 20 5a 65 72 6f 20 69 66  method.  Zero if
33100 20 74 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20   this method is 
33110 62 65 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 20  being..         
33120 20 20 20 2f 2f 2f 20 63 61 6c 6c 65 64 20 66 72     /// called fr
33130 6f 6d 20 74 68 65 20 66 69 6e 61 6c 69 7a 65 72  om the finalizer
33140 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
33150 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
33160 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
33170 20 2f 2a 20 70 72 6f 74 65 63 74 65 64 20 76 69   /* protected vi
33180 72 74 75 61 6c 20 2a 2f 20 76 6f 69 64 20 44 69  rtual */ void Di
33190 73 70 6f 73 65 28 62 6f 6f 6c 20 64 69 73 70 6f  spose(bool dispo
331a0 73 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 20  sing)..         
331b0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
331c0 20 20 20 20 20 20 69 66 20 28 21 64 69 73 70 6f        if (!dispo
331d0 73 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20  sed)..          
331e0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
331f0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 69               //i
33200 66 20 28 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20  f (disposing).. 
33210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33220 20 20 20 2f 2f 7b 0d 0a 20 20 20 20 20 20 20 20     //{..        
33230 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
33240 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
33250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33260 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20  //////..        
33270 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
33280 20 20 2f 2f 20 64 69 73 70 6f 73 65 20 6d 61 6e    // dispose man
33290 61 67 65 64 20 72 65 73 6f 75 72 63 65 73 20 68  aged resources h
332a0 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20  ere.....        
332b0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
332c0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
332d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
332e0 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20  //////..        
332f0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 7d 0d              //}.
33300 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
33310 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
33320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
33340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33350 20 20 20 2f 2f 20 72 65 6c 65 61 73 65 20 75 6e     // release un
33360 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72 63 65  managed resource
33370 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20  s here.....     
33380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
33390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
333a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
333b0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
333c0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
333d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
333e0 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68       // NOTE: Th
333f0 65 20 6d 6f 64 75 6c 65 20 69 73 20 6e 6f 74 20  e module is not 
33400 6f 77 6e 65 64 20 62 79 20 75 73 3b 20 74 68 65  owned by us; the
33410 72 65 66 6f 72 65 2c 20 64 6f 20 6e 6f 74 0d 0a  refore, do not..
33420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33430 20 20 20 20 2f 2f 20 20 20 20 20 20 20 64 69 73      //       dis
33440 70 6f 73 65 20 69 74 2e 0d 0a 20 20 20 20 20 20  pose it...      
33450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
33460 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
33470 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65        if (module
33480 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
33490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
334a0 20 20 20 6d 6f 64 75 6c 65 20 3d 20 6e 75 6c 6c     module = null
334b0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
334c0 20 20 20 20 20 20 20 20 20 64 69 73 70 6f 73 65           dispose
334d0 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  d = true;..     
334e0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
334f0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
33500 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67           #endreg
33510 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ion....         
33520 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
33530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33560 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
33570 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44 65        #region De
33580 73 74 72 75 63 74 6f 72 0d 0a 20 20 20 20 20 20  structor..      
33590 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
335a0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
335b0 20 2f 2f 2f 20 46 69 6e 61 6c 69 7a 65 73 20 74   /// Finalizes t
335c0 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  his object insta
335d0 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  nce...          
335e0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
335f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7e 53  ..            ~S
33600 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
33610 65 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e()..           
33620 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
33630 20 20 20 20 44 69 73 70 6f 73 65 28 66 61 6c 73      Dispose(fals
33640 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
33650 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
33660 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20  #endregion..    
33670 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
33680 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
33690 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
336a0 2f 2f 2f 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 0d 0a 0d 0a  ////////////....
336e0 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
336f0 50 72 69 76 61 74 65 20 43 6f 6e 73 74 61 6e 74  Private Constant
33700 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
33710 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
33720 20 20 2f 2f 2f 20 54 68 65 20 64 65 66 61 75 6c    /// The defaul
33730 74 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65  t version of the
33740 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f   native sqlite3_
33750 6d 6f 64 75 6c 65 20 73 74 72 75 63 74 75 72 65  module structure
33760 20 69 6e 20 75 73 65 2e 0d 0a 20 20 20 20 20 20   in use...      
33770 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
33780 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
33790 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c  e static readonl
337a0 79 20 69 6e 74 20 44 65 66 61 75 6c 74 4d 6f 64  y int DefaultMod
337b0 75 6c 65 56 65 72 73 69 6f 6e 20 3d 20 32 3b 0d  uleVersion = 2;.
337c0 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
337d0 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
337e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
337f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33820 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
33830 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74    #region Privat
33840 65 20 44 61 74 61 0d 0a 20 20 20 20 20 20 20 20  e Data..        
33850 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
33860 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
33870 66 69 65 6c 64 20 69 73 20 75 73 65 64 20 74 6f  field is used to
33880 20 73 74 6f 72 65 20 74 68 65 20 6e 61 74 69 76   store the nativ
33890 65 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65  e sqlite3_module
338a0 20 73 74 72 75 63 74 75 72 65 0d 0a 20 20 20 20   structure..    
338b0 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74      /// associat
338c0 65 64 20 77 69 74 68 20 74 68 69 73 20 6f 62 6a  ed with this obj
338d0 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20  ect instance... 
338e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
338f0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
33900 72 69 76 61 74 65 20 55 6e 73 61 66 65 4e 61 74  rivate UnsafeNat
33910 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
33920 65 33 5f 6d 6f 64 75 6c 65 20 6e 61 74 69 76 65  e3_module native
33930 4d 6f 64 75 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20  Module;....     
33940 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
33950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
33990 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
339a0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
339b0 20 54 68 69 73 20 66 69 65 6c 64 20 69 73 20 75   This field is u
339c0 73 65 64 20 74 6f 20 73 74 6f 72 65 20 74 68 65  sed to store the
339d0 20 64 65 73 74 72 75 63 74 6f 72 20 64 65 6c 65   destructor dele
339e0 67 61 74 65 20 74 6f 20 62 65 20 70 61 73 73 65  gate to be passe
339f0 64 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f  d to..        //
33a00 2f 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  / the SQLite cor
33a10 65 20 6c 69 62 72 61 72 79 20 76 69 61 20 74 68  e library via th
33a20 65 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65  e sqlite3_create
33a30 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75  _disposable_modu
33a40 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f  le()..        //
33a50 2f 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20  / function...   
33a60 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
33a70 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
33a80 76 61 74 65 20 55 6e 73 61 66 65 4e 61 74 69 76  vate UnsafeNativ
33a90 65 4d 65 74 68 6f 64 73 2e 78 44 65 73 74 72 6f  eMethods.xDestro
33aa0 79 4d 6f 64 75 6c 65 20 64 65 73 74 72 6f 79 4d  yModule destroyM
33ab0 6f 64 75 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  odule;....      
33ac0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
33ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ae0 2f 2f 2f 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 0d 0a 0d 0a 20 20 20  /////////....   
33b10 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
33b20 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
33b30 54 68 69 73 20 66 69 65 6c 64 20 69 73 20 75 73  This field is us
33b40 65 64 20 74 6f 20 73 74 6f 72 65 20 61 20 70 6f  ed to store a po
33b50 69 6e 74 65 72 20 74 6f 20 74 68 65 20 6e 61 74  inter to the nat
33b60 69 76 65 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75  ive sqlite3_modu
33b70 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  le..        /// 
33b80 73 74 72 75 63 74 75 72 65 20 72 65 74 75 72 6e  structure return
33b90 65 64 20 62 79 20 74 68 65 20 73 71 6c 69 74 65  ed by the sqlite
33ba0 33 5f 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61  3_create_disposa
33bb0 62 6c 65 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20 20  ble_module..    
33bc0 20 20 20 20 2f 2f 2f 20 66 75 6e 63 74 69 6f 6e      /// function
33bd0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
33be0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
33bf0 20 20 20 70 72 69 76 61 74 65 20 49 6e 74 50 74     private IntPt
33c00 72 20 64 69 73 70 6f 73 61 62 6c 65 4d 6f 64 75  r disposableModu
33c10 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  le;....        /
33c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33c60 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c  //////....#if PL
33c70 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
33c80 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
33c90 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
33ca0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
33cb0 20 66 69 65 6c 64 20 69 73 20 75 73 65 64 20 74   field is used t
33cc0 6f 20 68 6f 6c 64 20 74 68 65 20 62 6c 6f 63 6b  o hold the block
33cd0 20 6f 66 20 6e 61 74 69 76 65 20 6d 65 6d 6f 72   of native memor
33ce0 79 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 0d  y that contains.
33cf0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  .        /// the
33d00 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f   native sqlite3_
33d10 6d 6f 64 75 6c 65 20 73 74 72 75 63 74 75 72 65  module structure
33d20 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
33d30 20 74 68 69 73 20 6f 62 6a 65 63 74 0d 0a 20 20   this object..  
33d40 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e        /// instan
33d50 63 65 20 77 68 65 6e 20 72 75 6e 6e 69 6e 67 20  ce when running 
33d60 6f 6e 20 74 68 65 20 2e 4e 45 54 20 43 6f 6d 70  on the .NET Comp
33d70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2e 0d 0a  act Framework...
33d80 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
33d90 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
33da0 70 72 69 76 61 74 65 20 49 6e 74 50 74 72 20 70  private IntPtr p
33db0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 3b 0d 0a 23  NativeModule;..#
33dc0 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
33dd0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
33de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33e10 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
33e20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
33e30 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
33e40 68 69 73 20 66 69 65 6c 64 20 69 73 20 75 73 65  his field is use
33e50 64 20 74 6f 20 73 74 6f 72 65 20 74 68 65 20 76  d to store the v
33e60 69 72 74 75 61 6c 20 74 61 62 6c 65 20 69 6e 73  irtual table ins
33e70 74 61 6e 63 65 73 20 61 73 73 6f 63 69 61 74 65  tances associate
33e80 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77  d..        /// w
33e90 69 74 68 20 74 68 69 73 20 6d 6f 64 75 6c 65 2e  ith this module.
33ea0 20 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69    The native poi
33eb0 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69  nter to the sqli
33ec0 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64  te3_vtab derived
33ed0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74  ..        /// st
33ee0 72 75 63 74 75 72 65 20 69 73 20 75 73 65 64 20  ructure is used 
33ef0 74 6f 20 6b 65 79 20 69 6e 74 6f 20 74 68 69 73  to key into this
33f00 20 63 6f 6c 6c 65 63 74 69 6f 6e 2e 0d 0a 20 20   collection...  
33f10 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
33f20 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  ary>..        pr
33f30 69 76 61 74 65 20 44 69 63 74 69 6f 6e 61 72 79  ivate Dictionary
33f40 3c 49 6e 74 50 74 72 2c 20 53 51 4c 69 74 65 56  <IntPtr, SQLiteV
33f50 69 72 74 75 61 6c 54 61 62 6c 65 3e 20 74 61 62  irtualTable> tab
33f60 6c 65 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  les;....        
33f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33fb0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
33fc0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
33fd0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
33fe0 69 73 20 66 69 65 6c 64 20 69 73 20 75 73 65 64  is field is used
33ff0 20 74 6f 20 73 74 6f 72 65 20 74 68 65 20 76 69   to store the vi
34000 72 74 75 61 6c 20 74 61 62 6c 65 20 63 75 72 73  rtual table curs
34010 6f 72 20 69 6e 73 74 61 6e 63 65 73 0d 0a 20 20  or instances..  
34020 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69        /// associ
34030 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20 6d  ated with this m
34040 6f 64 75 6c 65 2e 20 20 54 68 65 20 6e 61 74 69  odule.  The nati
34050 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
34060 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  e..        /// s
34070 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73  qlite3_vtab_curs
34080 6f 72 20 64 65 72 69 76 65 64 20 73 74 72 75 63  or derived struc
34090 74 75 72 65 20 69 73 20 75 73 65 64 20 74 6f 20  ture is used to 
340a0 6b 65 79 20 69 6e 74 6f 20 74 68 69 73 0d 0a 20  key into this.. 
340b0 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6c 6c 65         /// colle
340c0 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ction...        
340d0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
340e0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
340f0 44 69 63 74 69 6f 6e 61 72 79 3c 49 6e 74 50 74  Dictionary<IntPt
34100 72 2c 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c  r, SQLiteVirtual
34110 54 61 62 6c 65 43 75 72 73 6f 72 3e 20 63 75 72  TableCursor> cur
34120 73 6f 72 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  sors;....       
34130 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
34140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34170 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
34180 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
34190 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
341a0 68 69 73 20 66 69 65 6c 64 20 69 73 20 75 73 65  his field is use
341b0 64 20 74 6f 20 73 74 6f 72 65 20 74 68 65 20 76  d to store the v
341c0 69 72 74 75 61 6c 20 74 61 62 6c 65 20 66 75 6e  irtual table fun
341d0 63 74 69 6f 6e 20 69 6e 73 74 61 6e 63 65 73 0d  ction instances.
341e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 73 73  .        /// ass
341f0 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69  ociated with thi
34200 73 20 6d 6f 64 75 6c 65 2e 20 20 54 68 65 20 63  s module.  The c
34210 61 73 65 2d 69 6e 73 65 6e 73 69 74 69 76 65 20  ase-insensitive 
34220 66 75 6e 63 74 69 6f 6e 20 6e 61 6d 65 0d 0a 20  function name.. 
34230 20 20 20 20 20 20 20 2f 2f 2f 20 61 6e 64 20 74         /// and t
34240 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 61 72 67  he number of arg
34250 75 6d 65 6e 74 73 20 28 77 69 74 68 20 2d 31 20  uments (with -1 
34260 6d 65 61 6e 69 6e 67 20 22 61 6e 79 22 29 20 61  meaning "any") a
34270 72 65 20 75 73 65 64 20 74 6f 0d 0a 20 20 20 20  re used to..    
34280 20 20 20 20 2f 2f 2f 20 63 6f 6e 73 74 72 75 63      /// construc
34290 74 20 74 68 65 20 73 74 72 69 6e 67 20 74 68 61  t the string tha
342a0 74 20 69 73 20 75 73 65 64 20 74 6f 20 6b 65 79  t is used to key
342b0 20 69 6e 74 6f 20 74 68 69 73 20 63 6f 6c 6c 65   into this colle
342c0 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ction...        
342d0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
342e0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
342f0 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e  Dictionary<strin
34300 67 2c 20 53 51 4c 69 74 65 46 75 6e 63 74 69 6f  g, SQLiteFunctio
34310 6e 3e 20 66 75 6e 63 74 69 6f 6e 73 3b 0d 0a 20  n> functions;.. 
34320 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
34330 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
34340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34380 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
34390 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 43  #region Public C
343a0 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20  onstructors..   
343b0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
343c0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
343d0 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e  Constructs an in
343e0 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63  stance of this c
343f0 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  lass...        /
34400 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
34410 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
34420 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a  m name="name">..
34430 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
34440 6e 61 6d 65 20 6f 66 20 74 68 65 20 6d 6f 64 75  name of the modu
34450 6c 65 2e 20 20 54 68 69 73 20 70 61 72 61 6d 65  le.  This parame
34460 74 65 72 20 63 61 6e 6e 6f 74 20 62 65 20 6e 75  ter cannot be nu
34470 6c 6c 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ll...        ///
34480 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
34490 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
344a0 4d 6f 64 75 6c 65 28 73 74 72 69 6e 67 20 6e 61  Module(string na
344b0 6d 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  me)..        {..
344c0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
344d0 6e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  name == null).. 
344e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
344f0 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65 6e  hrow new Argumen
34500 74 4e 75 6c 6c 45 78 63 65 70 74 69 6f 6e 28 22  tNullException("
34510 6e 61 6d 65 22 29 3b 0d 0a 0d 0a 20 20 20 20 20  name");....     
34520 20 20 20 20 20 20 20 74 68 69 73 2e 6e 61 6d 65         this.name
34530 20 3d 20 6e 61 6d 65 3b 0d 0a 20 20 20 20 20 20   = name;..      
34540 20 20 20 20 20 20 74 68 69 73 2e 74 61 62 6c 65        this.table
34550 73 20 3d 20 6e 65 77 20 44 69 63 74 69 6f 6e 61  s = new Dictiona
34560 72 79 3c 49 6e 74 50 74 72 2c 20 53 51 4c 69 74  ry<IntPtr, SQLit
34570 65 56 69 72 74 75 61 6c 54 61 62 6c 65 3e 28 29  eVirtualTable>()
34580 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ;..            t
34590 68 69 73 2e 63 75 72 73 6f 72 73 20 3d 20 6e 65  his.cursors = ne
345a0 77 20 44 69 63 74 69 6f 6e 61 72 79 3c 49 6e 74  w Dictionary<Int
345b0 50 74 72 2c 20 53 51 4c 69 74 65 56 69 72 74 75  Ptr, SQLiteVirtu
345c0 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 3e 28 29  alTableCursor>()
345d0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ;..            t
345e0 68 69 73 2e 66 75 6e 63 74 69 6f 6e 73 20 3d 20  his.functions = 
345f0 6e 65 77 20 44 69 63 74 69 6f 6e 61 72 79 3c 73  new Dictionary<s
34600 74 72 69 6e 67 2c 20 53 51 4c 69 74 65 46 75 6e  tring, SQLiteFun
34610 63 74 69 6f 6e 3e 28 29 3b 0d 0a 20 20 20 20 20  ction>();..     
34620 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
34630 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
34640 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
34650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
34690 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49         #region I
346a0 6e 74 65 72 6e 61 6c 20 4d 65 74 68 6f 64 73 0d  nternal Methods.
346b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
346c0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
346d0 2f 2f 2f 20 43 61 6c 6c 73 20 74 68 65 20 6e 61  /// Calls the na
346e0 74 69 76 65 20 53 51 4c 69 74 65 20 63 6f 72 65  tive SQLite core
346f0 20 6c 69 62 72 61 72 79 20 69 6e 20 6f 72 64 65   library in orde
34700 72 20 74 6f 20 63 72 65 61 74 65 20 61 20 6e 65  r to create a ne
34710 77 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64  w..        /// d
34720 69 73 70 6f 73 61 62 6c 65 20 6d 6f 64 75 6c 65  isposable module
34730 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20   containing the 
34740 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f  implementation o
34750 66 20 61 20 76 69 72 74 75 61 6c 20 74 61 62 6c  f a virtual tabl
34760 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
34770 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
34780 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
34790 61 6d 65 3d 22 70 44 62 22 3e 0d 0a 20 20 20 20  ame="pDb">..    
347a0 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
347b0 76 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  ve database conn
347c0 65 63 74 69 6f 6e 20 70 6f 69 6e 74 65 72 20 74  ection pointer t
347d0 6f 20 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20  o use...        
347e0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
347f0 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
34800 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
34810 20 4e 6f 6e 2d 7a 65 72 6f 20 75 70 6f 6e 20 73   Non-zero upon s
34820 75 63 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 20  uccess...       
34830 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
34840 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61  .        interna
34850 6c 20 62 6f 6f 6c 20 43 72 65 61 74 65 44 69 73  l bool CreateDis
34860 70 6f 73 61 62 6c 65 4d 6f 64 75 6c 65 28 0d 0a  posableModule(..
34870 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
34880 74 72 20 70 44 62 0d 0a 20 20 20 20 20 20 20 20  tr pDb..        
34890 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
348a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
348b0 20 28 64 69 73 70 6f 73 61 62 6c 65 4d 6f 64 75   (disposableModu
348c0 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72  le != IntPtr.Zer
348d0 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
348e0 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b      return true;
348f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
34900 49 6e 74 50 74 72 20 70 4e 61 6d 65 20 3d 20 49  IntPtr pName = I
34910 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20  ntPtr.Zero;.... 
34920 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
34930 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
34940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
34950 4e 61 6d 65 20 3d 20 53 51 4c 69 74 65 53 74 72  Name = SQLiteStr
34960 69 6e 67 2e 55 74 66 38 49 6e 74 50 74 72 46 72  ing.Utf8IntPtrFr
34970 6f 6d 53 74 72 69 6e 67 28 6e 61 6d 65 29 3b 0d  omString(name);.
34980 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
34990 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
349a0 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d  ethods.sqlite3_m
349b0 6f 64 75 6c 65 20 6e 61 74 69 76 65 4d 6f 64 75  odule nativeModu
349c0 6c 65 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20  le =..          
349d0 20 20 20 20 20 20 20 20 20 20 41 6c 6c 6f 63 61            Alloca
349e0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 28 29  teNativeModule()
349f0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
34a00 20 20 20 20 20 64 65 73 74 72 6f 79 4d 6f 64 75       destroyModu
34a10 6c 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  le = new UnsafeN
34a20 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 44 65  ativeMethods.xDe
34a30 73 74 72 6f 79 4d 6f 64 75 6c 65 28 0d 0a 20 20  stroyModule(..  
34a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34a50 20 20 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65    xDestroyModule
34a60 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
34a70 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
34a80 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
34a90 20 20 20 20 20 20 64 69 73 70 6f 73 61 62 6c 65        disposable
34aa0 4d 6f 64 75 6c 65 20 3d 0d 0a 20 20 20 20 20 20  Module =..      
34ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e                Un
34ac0 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
34ad0 73 2e 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65  s.sqlite3_create
34ae0 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75  _disposable_modu
34af0 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le(..           
34b00 20 20 20 20 20 20 20 20 20 20 20 20 20 70 44 62               pDb
34b10 2c 20 70 4e 61 6d 65 2c 20 72 65 66 20 6e 61 74  , pName, ref nat
34b20 69 76 65 4d 6f 64 75 6c 65 2c 20 49 6e 74 50 74  iveModule, IntPt
34b30 72 2e 5a 65 72 6f 2c 20 64 65 73 74 72 6f 79 4d  r.Zero, destroyM
34b40 6f 64 75 6c 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  odule);....     
34b50 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
34b60 6e 20 28 64 69 73 70 6f 73 61 62 6c 65 4d 6f 64  n (disposableMod
34b70 75 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  ule != IntPtr.Ze
34b80 72 6f 29 3b 0d 0a 23 65 6c 69 66 20 21 53 51 4c  ro);..#elif !SQL
34b90 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20  ITE_STANDARD..  
34ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 69                di
34bb0 73 70 6f 73 61 62 6c 65 4d 6f 64 75 6c 65 20 3d  sposableModule =
34bc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
34bd0 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69        UnsafeNati
34be0 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
34bf0 33 5f 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61  3_create_disposa
34c00 62 6c 65 5f 6d 6f 64 75 6c 65 5f 69 6e 74 65 72  ble_module_inter
34c10 6f 70 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  op(..           
34c20 20 20 20 20 20 20 20 20 20 20 20 20 70 44 62 2c              pDb,
34c30 20 70 4e 61 6d 65 2c 20 41 6c 6c 6f 63 61 74 65   pName, Allocate
34c40 4e 61 74 69 76 65 4d 6f 64 75 6c 65 49 6e 74 65  NativeModuleInte
34c50 72 6f 70 28 29 2c 0d 0a 20 20 20 20 20 20 20 20  rop(),..        
34c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
34c70 61 74 69 76 65 4d 6f 64 75 6c 65 2e 69 56 65 72  ativeModule.iVer
34c80 73 69 6f 6e 2c 20 6e 61 74 69 76 65 4d 6f 64 75  sion, nativeModu
34c90 6c 65 2e 78 43 72 65 61 74 65 2c 0d 0a 20 20 20  le.xCreate,..   
34ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34cb0 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
34cc0 2e 78 43 6f 6e 6e 65 63 74 2c 20 6e 61 74 69 76  .xConnect, nativ
34cd0 65 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64  eModule.xBestInd
34ce0 65 78 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ex,..           
34cf0 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
34d00 76 65 4d 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e  veModule.xDiscon
34d10 6e 65 63 74 2c 20 6e 61 74 69 76 65 4d 6f 64 75  nect, nativeModu
34d20 6c 65 2e 78 44 65 73 74 72 6f 79 2c 0d 0a 20 20  le.xDestroy,..  
34d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34d40 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
34d50 65 2e 78 4f 70 65 6e 2c 20 6e 61 74 69 76 65 4d  e.xOpen, nativeM
34d60 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 2c 0d 0a 20  odule.xClose,.. 
34d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34d80 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
34d90 6c 65 2e 78 46 69 6c 74 65 72 2c 20 6e 61 74 69  le.xFilter, nati
34da0 76 65 4d 6f 64 75 6c 65 2e 78 4e 65 78 74 2c 0d  veModule.xNext,.
34db0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
34dc0 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
34dd0 64 75 6c 65 2e 78 45 6f 66 2c 20 6e 61 74 69 76  dule.xEof, nativ
34de0 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 2c  eModule.xColumn,
34df0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
34e00 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
34e10 6f 64 75 6c 65 2e 78 52 6f 77 49 64 2c 20 6e 61  odule.xRowId, na
34e20 74 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61  tiveModule.xUpda
34e30 74 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  te,..           
34e40 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
34e50 76 65 4d 6f 64 75 6c 65 2e 78 42 65 67 69 6e 2c  veModule.xBegin,
34e60 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53   nativeModule.xS
34e70 79 6e 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ync,..          
34e80 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
34e90 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69  iveModule.xCommi
34ea0 74 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  t, nativeModule.
34eb0 78 52 6f 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20  xRollback,..    
34ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34ed0 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
34ee0 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 2c 20 6e  xFindFunction, n
34ef0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6e  ativeModule.xRen
34f00 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ame,..          
34f10 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
34f20 69 76 65 4d 6f 64 75 6c 65 2e 78 53 61 76 65 70  iveModule.xSavep
34f30 6f 69 6e 74 2c 20 6e 61 74 69 76 65 4d 6f 64 75  oint, nativeModu
34f40 6c 65 2e 78 52 65 6c 65 61 73 65 2c 0d 0a 20 20  le.xRelease,..  
34f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34f60 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
34f70 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 2c 20 49  e.xRollbackTo, I
34f80 6e 74 50 74 72 2e 5a 65 72 6f 2c 20 64 65 73 74  ntPtr.Zero, dest
34f90 72 6f 79 4d 6f 64 75 6c 65 29 3b 0d 0a 0d 0a 20  royModule);.... 
34fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
34fb0 65 74 75 72 6e 20 28 64 69 73 70 6f 73 61 62 6c  eturn (disposabl
34fc0 65 4d 6f 64 75 6c 65 20 21 3d 20 49 6e 74 50 74  eModule != IntPt
34fd0 72 2e 5a 65 72 6f 29 3b 0d 0a 23 65 6c 73 65 0d  r.Zero);..#else.
34fe0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
34ff0 20 74 68 72 6f 77 20 6e 65 77 20 4e 6f 74 49 6d   throw new NotIm
35000 70 6c 65 6d 65 6e 74 65 64 45 78 63 65 70 74 69  plementedExcepti
35010 6f 6e 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  on();..#endif.. 
35020 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
35030 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c            finall
35040 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
35050 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
35060 20 20 69 66 20 28 70 4e 61 6d 65 20 21 3d 20 49    if (pName != I
35070 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
35080 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
35090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
350a0 20 20 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79      SQLiteMemory
350b0 2e 46 72 65 65 28 70 4e 61 6d 65 29 3b 0d 0a 20  .Free(pName);.. 
350c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
350d0 20 20 20 70 4e 61 6d 65 20 3d 20 49 6e 74 50 74     pName = IntPt
350e0 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20  r.Zero;..       
350f0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
35100 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
35110 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
35120 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
35130 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
35140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
35180 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
35190 72 69 76 61 74 65 20 4d 65 74 68 6f 64 73 0d 0a  rivate Methods..
351a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
351b0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
351c0 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69  // This method i
351d0 73 20 63 61 6c 6c 65 64 20 62 79 20 74 68 65 20  s called by the 
351e0 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
351f0 61 72 79 20 77 68 65 6e 20 74 68 65 20 6e 61 74  ary when the nat
35200 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ive..        ///
35210 20 6d 6f 64 75 6c 65 20 61 73 73 6f 63 69 61 74   module associat
35220 65 64 20 77 69 74 68 20 74 68 69 73 20 6f 62 6a  ed with this obj
35230 65 63 74 20 69 6e 73 74 61 6e 63 65 20 69 73 20  ect instance is 
35240 62 65 69 6e 67 20 64 65 73 74 72 6f 79 65 64 20  being destroyed 
35250 64 75 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  due..        ///
35260 20 74 6f 20 69 74 73 20 70 61 72 65 6e 74 20 63   to its parent c
35270 6f 6e 6e 65 63 74 69 6f 6e 20 62 65 69 6e 67 20  onnection being 
35280 63 6c 6f 73 65 64 2e 20 20 49 74 20 6d 61 79 20  closed.  It may 
35290 61 6c 73 6f 20 62 65 20 63 61 6c 6c 65 64 20 62  also be called b
352a0 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  y..        /// t
352b0 68 65 20 22 76 74 73 68 69 6d 22 20 6d 6f 64 75  he "vtshim" modu
352c0 6c 65 20 69 66 2f 77 68 65 6e 20 74 68 65 20 73  le if/when the s
352d0 71 6c 69 74 65 33 5f 64 69 73 70 6f 73 65 5f 6d  qlite3_dispose_m
352e0 6f 64 75 6c 65 28 29 20 66 75 6e 63 74 69 6f 6e  odule() function
352f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 73  ..        /// is
35300 20 63 61 6c 6c 65 64 2e 0d 0a 20 20 20 20 20 20   called...      
35310 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
35320 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
35330 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 6c 69 65  aram name="pClie
35340 6e 74 44 61 74 61 22 3e 0d 0a 20 20 20 20 20 20  ntData">..      
35350 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
35360 20 75 73 65 72 2d 64 61 74 61 20 70 6f 69 6e 74   user-data point
35370 65 72 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  er associated wi
35380 74 68 20 74 68 69 73 20 6d 6f 64 75 6c 65 2c 20  th this module, 
35390 61 73 20 69 74 20 77 61 73 0d 0a 20 20 20 20 20  as it was..     
353a0 20 20 20 2f 2f 2f 20 70 72 6f 76 69 64 65 64 20     /// provided 
353b0 74 6f 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  to the SQLite co
353c0 72 65 20 6c 69 62 72 61 72 79 20 77 68 65 6e 20  re library when 
353d0 74 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c  the native modul
353e0 65 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20  e instance..    
353f0 20 20 20 20 2f 2f 2f 20 77 61 73 20 63 72 65 61      /// was crea
35400 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ted...        //
35410 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
35420 20 20 20 20 70 72 69 76 61 74 65 20 76 6f 69 64      private void
35430 20 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 28   xDestroyModule(
35440 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
35450 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61  tPtr pClientData
35460 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d   /* NOT USED */.
35470 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
35480 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
35490 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
354a0 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
354b0 41 74 20 74 68 69 73 20 70 6f 69 6e 74 2c 20 6a  At this point, j
354c0 75 73 74 20 6d 61 6b 65 20 73 75 72 65 20 74 68  ust make sure th
354d0 61 74 20 74 68 69 73 20 6e 61 74 69 76 65 20 6d  at this native m
354e0 6f 64 75 6c 65 0d 0a 20 20 20 20 20 20 20 20 20  odule..         
354f0 20 20 20 2f 2f 20 20 20 20 20 20 20 68 61 6e 64     //       hand
35500 6c 65 20 69 73 20 6e 6f 74 20 72 65 75 73 65 64  le is not reused
35510 2c 20 6e 6f 72 20 70 61 73 73 65 64 20 69 6e 74  , nor passed int
35520 6f 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20  o the native..  
35530 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
35540 20 20 20 73 71 6c 69 74 65 33 5f 64 69 73 70 6f     sqlite3_dispo
35550 73 65 5f 6d 6f 64 75 6c 65 28 29 20 66 75 6e 63  se_module() func
35560 74 69 6f 6e 20 6c 61 74 65 72 20 28 69 2e 65 2e  tion later (i.e.
35570 20 69 66 2f 77 68 65 6e 0d 0a 20 20 20 20 20 20   if/when..      
35580 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74        //       t
35590 68 65 20 44 69 73 70 6f 73 65 28 29 20 6d 65 74  he Dispose() met
355a0 68 6f 64 20 6f 66 20 74 68 69 73 20 6f 62 6a 65  hod of this obje
355b0 63 74 20 69 6e 73 74 61 6e 63 65 20 69 73 20 63  ct instance is c
355c0 61 6c 6c 65 64 29 2e 0d 0a 20 20 20 20 20 20 20  alled)...       
355d0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
355e0 20 20 20 20 20 64 69 73 70 6f 73 61 62 6c 65 4d       disposableM
355f0 6f 64 75 6c 65 20 3d 20 49 6e 74 50 74 72 2e 5a  odule = IntPtr.Z
35600 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ero;..        }.
35610 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
35620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35660 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
35670 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
35680 20 20 20 20 20 2f 2f 2f 20 43 72 65 61 74 65 73       /// Creates
35690 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65   and returns the
356a0 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 5f 6d   native sqlite_m
356b0 6f 64 75 6c 65 20 73 74 72 75 63 74 75 72 65 20  odule structure 
356c0 75 73 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20  using the..     
356d0 20 20 20 2f 2f 2f 20 63 6f 6e 66 69 67 75 72 65     /// configure
356e0 64 20 28 6f 72 20 64 65 66 61 75 6c 74 29 20 3c  d (or default) <
356f0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
35700 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f  eNativeModule" /
35710 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  >..        /// i
35720 6e 74 65 72 66 61 63 65 20 69 6d 70 6c 65 6d 65  nterface impleme
35730 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ntation...      
35740 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
35750 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
35760 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
35770 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
35780 73 71 6c 69 74 65 5f 6d 6f 64 75 6c 65 20 73 74  sqlite_module st
35790 72 75 63 74 75 72 65 20 75 73 69 6e 67 20 74 68  ructure using th
357a0 65 20 63 6f 6e 66 69 67 75 72 65 64 20 28 6f 72  e configured (or
357b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 65  ..        /// de
357c0 66 61 75 6c 74 29 20 3c 73 65 65 20 63 72 65 66  fault) <see cref
357d0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
357e0 6f 64 75 6c 65 22 20 2f 3e 20 69 6e 74 65 72 66  odule" /> interf
357f0 61 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ace..        ///
35800 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e   implementation.
35810 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
35820 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
35830 20 20 70 72 69 76 61 74 65 20 55 6e 73 61 66 65    private Unsafe
35840 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
35850 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 41 6c 6c  lite3_module All
35860 6f 63 61 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  ocateNativeModul
35870 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  e()..        {..
35880 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
35890 72 6e 20 41 6c 6c 6f 63 61 74 65 4e 61 74 69 76  rn AllocateNativ
358a0 65 4d 6f 64 75 6c 65 28 47 65 74 4e 61 74 69 76  eModule(GetNativ
358b0 65 4d 6f 64 75 6c 65 49 6d 70 6c 28 29 29 3b 0d  eModuleImpl());.
358c0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
358d0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
358e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
358f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
35920 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
35930 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
35940 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
35950 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
35960 2f 2f 20 43 72 65 61 74 65 73 20 61 6e 64 20 72  // Creates and r
35970 65 74 75 72 6e 73 20 61 20 6d 65 6d 6f 72 79 20  eturns a memory 
35980 62 6c 6f 63 6b 20 6f 62 74 61 69 6e 65 64 20 66  block obtained f
35990 72 6f 6d 20 74 68 65 20 53 51 4c 69 74 65 20 63  rom the SQLite c
359a0 6f 72 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ore..        ///
359b0 20 6c 69 62 72 61 72 79 20 75 73 65 64 20 74 6f   library used to
359c0 20 73 74 6f 72 65 20 74 68 65 20 6e 61 74 69 76   store the nativ
359d0 65 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65  e sqlite3_module
359e0 20 73 74 72 75 63 74 75 72 65 20 66 6f 72 20 74   structure for t
359f0 68 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  his..        ///
35a00 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
35a10 20 77 68 65 6e 20 72 75 6e 6e 69 6e 67 20 6f 6e   when running on
35a20 20 74 68 65 20 2e 4e 45 54 20 43 6f 6d 70 61 63   the .NET Compac
35a30 74 20 46 72 61 6d 65 77 6f 72 6b 2e 0d 0a 20 20  t Framework...  
35a40 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
35a50 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
35a60 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
35a70 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
35a80 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  ive pointer to t
35a90 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65  he native sqlite
35aa0 33 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63 74 75  3_module structu
35ab0 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
35ac0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
35ad0 20 20 20 20 20 70 72 69 76 61 74 65 20 49 6e 74       private Int
35ae0 50 74 72 20 41 6c 6c 6f 63 61 74 65 4e 61 74 69  Ptr AllocateNati
35af0 76 65 4d 6f 64 75 6c 65 49 6e 74 65 72 6f 70 28  veModuleInterop(
35b00 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
35b10 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 4e            if (pN
35b20 61 74 69 76 65 4d 6f 64 75 6c 65 20 3d 3d 20 49  ativeModule == I
35b30 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
35b40 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
35b50 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
35b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35b70 2f 2f 20 48 41 43 4b 3a 20 4e 6f 20 65 61 73 79  // HACK: No easy
35b80 20 77 61 79 20 74 6f 20 64 65 74 65 72 6d 69 6e   way to determin
35b90 65 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68  e the size of th
35ba0 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20  e native..      
35bb0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
35bc0 20 20 20 73 71 6c 69 74 65 5f 6d 6f 64 75 6c 65     sqlite_module
35bd0 20 73 74 72 75 63 74 75 72 65 20 77 68 65 6e 20   structure when 
35be0 72 75 6e 6e 69 6e 67 20 6f 6e 20 74 68 65 20 2e  running on the .
35bf0 4e 45 54 0d 0a 20 20 20 20 20 20 20 20 20 20 20  NET..           
35c00 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 43 6f       //       Co
35c10 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 3b  mpact Framework;
35c20 20 74 68 65 72 65 66 6f 72 65 2c 20 6a 75 73 74   therefore, just
35c30 20 62 61 73 65 20 74 68 65 20 73 69 7a 65 0d 0a   base the size..
35c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35c50 2f 2f 20 20 20 20 20 20 20 6f 6e 20 77 68 61 74  //       on what
35c60 20 77 65 20 6b 6e 6f 77 3a 0d 0a 20 20 20 20 20   we know:..     
35c70 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
35c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
35c90 2f 20 20 20 20 20 20 20 54 68 65 72 65 20 69 73  /       There is
35ca0 20 6f 6e 65 20 69 6e 74 65 67 65 72 20 6d 65 6d   one integer mem
35cb0 62 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ber...          
35cc0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 54        //       T
35cd0 68 65 72 65 20 61 72 65 20 32 32 20 66 75 6e 63  here are 22 func
35ce0 74 69 6f 6e 20 70 6f 69 6e 74 65 72 20 6d 65 6d  tion pointer mem
35cf0 62 65 72 73 2e 0d 0a 20 20 20 20 20 20 20 20 20  bers...         
35d00 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
35d10 20 20 20 20 20 20 20 20 20 20 20 70 4e 61 74 69             pNati
35d20 76 65 4d 6f 64 75 6c 65 20 3d 20 53 51 4c 69 74  veModule = SQLit
35d30 65 4d 65 6d 6f 72 79 2e 41 6c 6c 6f 63 61 74 65  eMemory.Allocate
35d40 28 32 33 20 2a 20 49 6e 74 50 74 72 2e 53 69 7a  (23 * IntPtr.Siz
35d50 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
35d60 20 20 20 20 20 20 20 69 66 20 28 70 4e 61 74 69         if (pNati
35d70 76 65 4d 6f 64 75 6c 65 20 3d 3d 20 49 6e 74 50  veModule == IntP
35d80 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
35d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
35da0 72 6f 77 20 6e 65 77 20 4f 75 74 4f 66 4d 65 6d  row new OutOfMem
35db0 6f 72 79 45 78 63 65 70 74 69 6f 6e 28 22 73 71  oryException("sq
35dc0 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 22 29 3b 0d  lite3_module");.
35dd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
35de0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
35df0 74 75 72 6e 20 70 4e 61 74 69 76 65 4d 6f 64 75  turn pNativeModu
35e00 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  le;..        }..
35e10 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
35e20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
35e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
35e70 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
35e80 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
35e90 43 72 65 61 74 65 73 20 61 6e 64 20 72 65 74 75  Creates and retu
35ea0 72 6e 73 20 74 68 65 20 6e 61 74 69 76 65 20 73  rns the native s
35eb0 71 6c 69 74 65 5f 6d 6f 64 75 6c 65 20 73 74 72  qlite_module str
35ec0 75 63 74 75 72 65 20 75 73 69 6e 67 20 74 68 65  ucture using the
35ed0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 70  ..        /// sp
35ee0 65 63 69 66 69 65 64 20 3c 73 65 65 20 63 72 65  ecified <see cre
35ef0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
35f00 4d 6f 64 75 6c 65 22 20 2f 3e 20 69 6e 74 65 72  Module" /> inter
35f10 66 61 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  face..        //
35f20 2f 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  / implementation
35f30 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
35f40 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
35f50 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
35f60 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20  me="module">..  
35f70 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
35f80 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
35f90 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e  NativeModule" />
35fa0 20 69 6e 74 65 72 66 61 63 65 20 69 6d 70 6c 65   interface imple
35fb0 6d 65 6e 74 61 74 69 6f 6e 20 74 6f 0d 0a 20 20  mentation to..  
35fc0 20 20 20 20 20 20 2f 2f 2f 20 75 73 65 2e 0d 0a        /// use...
35fd0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
35fe0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
35ff0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
36000 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
36010 69 76 65 20 73 71 6c 69 74 65 5f 6d 6f 64 75 6c  ive sqlite_modul
36020 65 20 73 74 72 75 63 74 75 72 65 20 75 73 69 6e  e structure usin
36030 67 20 74 68 65 20 73 70 65 63 69 66 69 65 64 0d  g the specified.
36040 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
36050 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
36060 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 20  ativeModule" /> 
36070 69 6e 74 65 72 66 61 63 65 20 69 6d 70 6c 65 6d  interface implem
36080 65 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  entation...     
36090 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
360a0 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
360b0 74 65 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  te UnsafeNativeM
360c0 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d  ethods.sqlite3_m
360d0 6f 64 75 6c 65 20 41 6c 6c 6f 63 61 74 65 4e 61  odule AllocateNa
360e0 74 69 76 65 4d 6f 64 75 6c 65 28 0d 0a 20 20 20  tiveModule(..   
360f0 20 20 20 20 20 20 20 20 20 49 53 51 4c 69 74 65           ISQLite
36100 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20 6d 6f 64  NativeModule mod
36110 75 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ule..           
36120 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
36130 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
36140 65 4d 6f 64 75 6c 65 20 3d 20 6e 65 77 20 55 6e  eModule = new Un
36150 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
36160 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65  s.sqlite3_module
36170 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
36180 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 69 56   nativeModule.iV
36190 65 72 73 69 6f 6e 20 3d 20 44 65 66 61 75 6c 74  ersion = Default
361a0 4d 6f 64 75 6c 65 56 65 72 73 69 6f 6e 3b 0d 0a  ModuleVersion;..
361b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
361c0 20 28 6d 6f 64 75 6c 65 20 21 3d 20 6e 75 6c 6c   (module != null
361d0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
361e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
361f0 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
36200 43 72 65 61 74 65 20 3d 20 6e 65 77 20 55 6e 73  Create = new Uns
36210 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
36220 2e 78 43 72 65 61 74 65 28 0d 0a 20 20 20 20 20  .xCreate(..     
36230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f                mo
36240 64 75 6c 65 2e 78 43 72 65 61 74 65 29 3b 0d 0a  dule.xCreate);..
36250 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
36260 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
36270 43 6f 6e 6e 65 63 74 20 3d 20 6e 65 77 20 55 6e  Connect = new Un
36280 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
36290 73 2e 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20  s.xConnect(..   
362a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
362b0 20 6d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74   module.xConnect
362c0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
362d0 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
362e0 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 20 3d 20  le.xBestIndex = 
362f0 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
36300 4d 65 74 68 6f 64 73 2e 78 42 65 73 74 49 6e 64  Methods.xBestInd
36310 65 78 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ex(..           
36320 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e           module.
36330 78 42 65 73 74 49 6e 64 65 78 29 3b 0d 0a 0d 0a  xBestIndex);....
36340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36350 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 69  nativeModule.xDi
36360 73 63 6f 6e 6e 65 63 74 20 3d 20 6e 65 77 20 55  sconnect = new U
36370 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
36380 64 73 2e 78 44 69 73 63 6f 6e 6e 65 63 74 28 0d  ds.xDisconnect(.
36390 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
363a0 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 44 69 73       module.xDis
363b0 63 6f 6e 6e 65 63 74 29 3b 0d 0a 0d 0a 20 20 20  connect);....   
363c0 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
363d0 69 76 65 4d 6f 64 75 6c 65 2e 78 44 65 73 74 72  iveModule.xDestr
363e0 6f 79 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  oy = new UnsafeN
363f0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 44 65  ativeMethods.xDe
36400 73 74 72 6f 79 28 0d 0a 20 20 20 20 20 20 20 20  stroy(..        
36410 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75              modu
36420 6c 65 2e 78 44 65 73 74 72 6f 79 29 3b 0d 0a 0d  le.xDestroy);...
36430 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
36440 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4f   nativeModule.xO
36450 70 65 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  pen = new Unsafe
36460 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 4f  NativeMethods.xO
36470 70 65 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  pen(..          
36480 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65            module
36490 2e 78 4f 70 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  .xOpen);....    
364a0 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
364b0 76 65 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 20  veModule.xClose 
364c0 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
364d0 76 65 4d 65 74 68 6f 64 73 2e 78 43 6c 6f 73 65  veMethods.xClose
364e0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
364f0 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 43         module.xC
36500 6c 6f 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  lose);....      
36510 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
36520 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 20 3d  Module.xFilter =
36530 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
36540 65 4d 65 74 68 6f 64 73 2e 78 46 69 6c 74 65 72  eMethods.xFilter
36550 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
36560 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 46         module.xF
36570 69 6c 74 65 72 29 3b 0d 0a 0d 0a 20 20 20 20 20  ilter);....     
36580 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
36590 65 4d 6f 64 75 6c 65 2e 78 4e 65 78 74 20 3d 20  eModule.xNext = 
365a0 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
365b0 4d 65 74 68 6f 64 73 2e 78 4e 65 78 74 28 0d 0a  Methods.xNext(..
365c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
365d0 20 20 20 20 6d 6f 64 75 6c 65 2e 78 4e 65 78 74      module.xNext
365e0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
365f0 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
36600 6c 65 2e 78 45 6f 66 20 3d 20 6e 65 77 20 55 6e  le.xEof = new Un
36610 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
36620 73 2e 78 45 6f 66 28 6d 6f 64 75 6c 65 2e 78 45  s.xEof(module.xE
36630 6f 66 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  of);....        
36640 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
36650 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 20 3d 20 6e  dule.xColumn = n
36660 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
36670 65 74 68 6f 64 73 2e 78 43 6f 6c 75 6d 6e 28 0d  ethods.xColumn(.
36680 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
36690 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 43 6f 6c       module.xCol
366a0 75 6d 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  umn);....       
366b0 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
366c0 6f 64 75 6c 65 2e 78 52 6f 77 49 64 20 3d 20 6e  odule.xRowId = n
366d0 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
366e0 65 74 68 6f 64 73 2e 78 52 6f 77 49 64 28 0d 0a  ethods.xRowId(..
366f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36700 20 20 20 20 6d 6f 64 75 6c 65 2e 78 52 6f 77 49      module.xRowI
36710 64 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  d);....         
36720 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
36730 75 6c 65 2e 78 55 70 64 61 74 65 20 3d 20 6e 65  ule.xUpdate = ne
36740 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
36750 74 68 6f 64 73 2e 78 55 70 64 61 74 65 28 0d 0a  thods.xUpdate(..
36760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36770 20 20 20 20 6d 6f 64 75 6c 65 2e 78 55 70 64 61      module.xUpda
36780 74 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  te);....        
36790 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
367a0 64 75 6c 65 2e 78 42 65 67 69 6e 20 3d 20 6e 65  dule.xBegin = ne
367b0 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
367c0 74 68 6f 64 73 2e 78 42 65 67 69 6e 28 0d 0a 20  thods.xBegin(.. 
367d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
367e0 20 20 20 6d 6f 64 75 6c 65 2e 78 42 65 67 69 6e     module.xBegin
367f0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
36800 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
36810 6c 65 2e 78 53 79 6e 63 20 3d 20 6e 65 77 20 55  le.xSync = new U
36820 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
36830 64 73 2e 78 53 79 6e 63 28 0d 0a 20 20 20 20 20  ds.xSync(..     
36840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d                 m
36850 6f 64 75 6c 65 2e 78 53 79 6e 63 29 3b 0d 0a 0d  odule.xSync);...
36860 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
36870 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43   nativeModule.xC
36880 6f 6d 6d 69 74 20 3d 20 6e 65 77 20 55 6e 73 61  ommit = new Unsa
36890 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
368a0 78 43 6f 6d 6d 69 74 28 0d 0a 20 20 20 20 20 20  xCommit(..      
368b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f                mo
368c0 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 29 3b 0d 0a  dule.xCommit);..
368d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
368e0 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
368f0 52 6f 6c 6c 62 61 63 6b 20 3d 20 6e 65 77 20 55  Rollback = new U
36900 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
36910 64 73 2e 78 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20  ds.xRollback(.. 
36920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36930 20 20 20 6d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62     module.xRollb
36940 61 63 6b 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ack);....       
36950 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
36960 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74  odule.xFindFunct
36970 69 6f 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  ion = new Unsafe
36980 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 46  NativeMethods.xF
36990 69 6e 64 46 75 6e 63 74 69 6f 6e 28 0d 0a 20 20  indFunction(..  
369a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
369b0 20 20 6d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75    module.xFindFu
369c0 6e 63 74 69 6f 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nction);....    
369d0 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
369e0 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65  veModule.xRename
369f0 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
36a00 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 65 6e 61  iveMethods.xRena
36a10 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me(..           
36a20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e           module.
36a30 78 52 65 6e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20  xRename);....   
36a40 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
36a50 69 76 65 4d 6f 64 75 6c 65 2e 78 53 61 76 65 70  iveModule.xSavep
36a60 6f 69 6e 74 20 3d 20 6e 65 77 20 55 6e 73 61 66  oint = new Unsaf
36a70 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
36a80 53 61 76 65 70 6f 69 6e 74 28 0d 0a 20 20 20 20  Savepoint(..    
36a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36aa0 6d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e  module.xSavepoin
36ab0 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  t);....         
36ac0 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
36ad0 75 6c 65 2e 78 52 65 6c 65 61 73 65 20 3d 20 6e  ule.xRelease = n
36ae0 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
36af0 65 74 68 6f 64 73 2e 78 52 65 6c 65 61 73 65 28  ethods.xRelease(
36b00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
36b10 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 52 65        module.xRe
36b20 6c 65 61 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  lease);....     
36b30 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
36b40 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63  eModule.xRollbac
36b50 6b 54 6f 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  kTo = new Unsafe
36b60 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52  NativeMethods.xR
36b70 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20 20 20 20  ollbackTo(..    
36b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36b90 6d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b  module.xRollback
36ba0 54 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  To);..          
36bb0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
36bc0 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20   else..         
36bd0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
36be0 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
36bf0 6c 65 2e 78 43 72 65 61 74 65 20 3d 20 6e 65 77  le.xCreate = new
36c00 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
36c10 68 6f 64 73 2e 78 43 72 65 61 74 65 28 0d 0a 20  hods.xCreate(.. 
36c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36c30 20 20 20 78 43 72 65 61 74 65 29 3b 0d 0a 0d 0a     xCreate);....
36c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36c50 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  nativeModule.xCo
36c60 6e 6e 65 63 74 20 3d 20 6e 65 77 20 55 6e 73 61  nnect = new Unsa
36c70 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
36c80 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20  xConnect(..     
36c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78                 x
36ca0 43 6f 6e 6e 65 63 74 29 3b 0d 0a 0d 0a 20 20 20  Connect);....   
36cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
36cc0 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49  iveModule.xBestI
36cd0 6e 64 65 78 20 3d 20 6e 65 77 20 55 6e 73 61 66  ndex = new Unsaf
36ce0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
36cf0 42 65 73 74 49 6e 64 65 78 28 0d 0a 20 20 20 20  BestIndex(..    
36d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36d10 78 42 65 73 74 49 6e 64 65 78 29 3b 0d 0a 0d 0a  xBestIndex);....
36d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36d30 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 69  nativeModule.xDi
36d40 73 63 6f 6e 6e 65 63 74 20 3d 20 6e 65 77 20 55  sconnect = new U
36d50 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
36d60 64 73 2e 78 44 69 73 63 6f 6e 6e 65 63 74 28 0d  ds.xDisconnect(.
36d70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
36d80 20 20 20 20 20 78 44 69 73 63 6f 6e 6e 65 63 74       xDisconnect
36d90 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
36da0 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
36db0 6c 65 2e 78 44 65 73 74 72 6f 79 20 3d 20 6e 65  le.xDestroy = ne
36dc0 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
36dd0 74 68 6f 64 73 2e 78 44 65 73 74 72 6f 79 28 0d  thods.xDestroy(.
36de0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
36df0 20 20 20 20 20 78 44 65 73 74 72 6f 79 29 3b 0d       xDestroy);.
36e00 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
36e10 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
36e20 78 4f 70 65 6e 20 3d 20 6e 65 77 20 55 6e 73 61  xOpen = new Unsa
36e30 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
36e40 78 4f 70 65 6e 28 78 4f 70 65 6e 29 3b 0d 0a 20  xOpen(xOpen);.. 
36e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
36e60 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6c 6f  ativeModule.xClo
36e70 73 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  se = new UnsafeN
36e80 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 43 6c  ativeMethods.xCl
36e90 6f 73 65 28 78 43 6c 6f 73 65 29 3b 0d 0a 0d 0a  ose(xClose);....
36ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36eb0 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69  nativeModule.xFi
36ec0 6c 74 65 72 20 3d 20 6e 65 77 20 55 6e 73 61 66  lter = new Unsaf
36ed0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
36ee0 46 69 6c 74 65 72 28 0d 0a 20 20 20 20 20 20 20  Filter(..       
36ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 78 46 69               xFi
36f00 6c 74 65 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  lter);....      
36f10 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
36f20 4d 6f 64 75 6c 65 2e 78 4e 65 78 74 20 3d 20 6e  Module.xNext = n
36f30 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
36f40 65 74 68 6f 64 73 2e 78 4e 65 78 74 28 78 4e 65  ethods.xNext(xNe
36f50 78 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  xt);..          
36f60 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
36f70 6c 65 2e 78 45 6f 66 20 3d 20 6e 65 77 20 55 6e  le.xEof = new Un
36f80 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
36f90 73 2e 78 45 6f 66 28 78 45 6f 66 29 3b 0d 0a 0d  s.xEof(xEof);...
36fa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
36fb0 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43   nativeModule.xC
36fc0 6f 6c 75 6d 6e 20 3d 20 6e 65 77 20 55 6e 73 61  olumn = new Unsa
36fd0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
36fe0 78 43 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20 20 20  xColumn(..      
36ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 43                xC
37000 6f 6c 75 6d 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20  olumn);....     
37010 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
37020 65 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 20 3d  eModule.xRowId =
37030 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
37040 65 4d 65 74 68 6f 64 73 2e 78 52 6f 77 49 64 28  eMethods.xRowId(
37050 78 52 6f 77 49 64 29 3b 0d 0a 0d 0a 20 20 20 20  xRowId);....    
37060 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
37070 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65  veModule.xUpdate
37080 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
37090 69 76 65 4d 65 74 68 6f 64 73 2e 78 55 70 64 61  iveMethods.xUpda
370a0 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  te(..           
370b0 20 20 20 20 20 20 20 20 20 78 55 70 64 61 74 65           xUpdate
370c0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
370d0 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
370e0 6c 65 2e 78 42 65 67 69 6e 20 3d 20 6e 65 77 20  le.xBegin = new 
370f0 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
37100 6f 64 73 2e 78 42 65 67 69 6e 28 78 42 65 67 69  ods.xBegin(xBegi
37110 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n);..           
37120 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
37130 65 2e 78 53 79 6e 63 20 3d 20 6e 65 77 20 55 6e  e.xSync = new Un
37140 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
37150 73 2e 78 53 79 6e 63 28 78 53 79 6e 63 29 3b 0d  s.xSync(xSync);.
37160 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
37170 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
37180 78 43 6f 6d 6d 69 74 20 3d 20 6e 65 77 20 55 6e  xCommit = new Un
37190 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
371a0 73 2e 78 43 6f 6d 6d 69 74 28 0d 0a 20 20 20 20  s.xCommit(..    
371b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
371c0 78 43 6f 6d 6d 69 74 29 3b 0d 0a 0d 0a 20 20 20  xCommit);....   
371d0 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
371e0 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62  iveModule.xRollb
371f0 61 63 6b 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  ack = new Unsafe
37200 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52  NativeMethods.xR
37210 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20 20  ollback(..      
37220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 52                xR
37230 6f 6c 6c 62 61 63 6b 29 3b 0d 0a 0d 0a 20 20 20  ollback);....   
37240 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
37250 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46  iveModule.xFindF
37260 75 6e 63 74 69 6f 6e 20 3d 20 6e 65 77 20 55 6e  unction = new Un
37270 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
37280 73 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28  s.xFindFunction(
37290 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
372a0 20 20 20 20 20 20 78 46 69 6e 64 46 75 6e 63 74        xFindFunct
372b0 69 6f 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ion);....       
372c0 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
372d0 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65 20 3d 20  odule.xRename = 
372e0 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
372f0 4d 65 74 68 6f 64 73 2e 78 52 65 6e 61 6d 65 28  Methods.xRename(
37300 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
37310 20 20 20 20 20 20 78 52 65 6e 61 6d 65 29 3b 0d        xRename);.
37320 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
37330 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
37340 78 53 61 76 65 70 6f 69 6e 74 20 3d 20 6e 65 77  xSavepoint = new
37350 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
37360 68 6f 64 73 2e 78 53 61 76 65 70 6f 69 6e 74 28  hods.xSavepoint(
37370 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
37380 20 20 20 20 20 20 78 53 61 76 65 70 6f 69 6e 74        xSavepoint
37390 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
373a0 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
373b0 6c 65 2e 78 52 65 6c 65 61 73 65 20 3d 20 6e 65  le.xRelease = ne
373c0 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
373d0 74 68 6f 64 73 2e 78 52 65 6c 65 61 73 65 28 0d  thods.xRelease(.
373e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
373f0 20 20 20 20 20 78 52 65 6c 65 61 73 65 29 3b 0d       xRelease);.
37400 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
37410 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
37420 78 52 6f 6c 6c 62 61 63 6b 54 6f 20 3d 20 6e 65  xRollbackTo = ne
37430 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
37440 74 68 6f 64 73 2e 78 52 6f 6c 6c 62 61 63 6b 54  thods.xRollbackT
37450 6f 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o(..            
37460 20 20 20 20 20 20 20 20 78 52 6f 6c 6c 62 61 63          xRollbac
37470 6b 54 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  kTo);..         
37480 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
37490 20 20 20 20 72 65 74 75 72 6e 20 6e 61 74 69 76      return nativ
374a0 65 4d 6f 64 75 6c 65 3b 0d 0a 20 20 20 20 20 20  eModule;..      
374b0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
374c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
374d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
374e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
374f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37500 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
37510 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
37520 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 72 65  .        /// Cre
37530 61 74 65 73 20 61 20 63 6f 70 79 20 6f 66 20 74  ates a copy of t
37540 68 65 20 73 70 65 63 69 66 69 65 64 0d 0a 20 20  he specified..  
37550 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
37560 72 65 66 3d 22 55 6e 73 61 66 65 4e 61 74 69 76  ref="UnsafeNativ
37570 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
37580 5f 6d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65  _module" /> obje
37590 63 74 20 69 6e 73 74 61 6e 63 65 2c 0d 0a 20 20  ct instance,..  
375a0 20 20 20 20 20 20 2f 2f 2f 20 75 73 69 6e 67 20        /// using 
375b0 64 65 66 61 75 6c 74 20 69 6d 70 6c 65 6d 65 6e  default implemen
375c0 74 61 74 69 6f 6e 73 20 66 6f 72 20 74 68 65 20  tations for the 
375d0 63 6f 6e 74 61 69 6e 65 64 20 64 65 6c 65 67 61  contained delega
375e0 74 65 73 20 77 68 65 6e 0d 0a 20 20 20 20 20 20  tes when..      
375f0 20 20 2f 2f 2f 20 6e 65 63 65 73 73 61 72 79 2e    /// necessary.
37600 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
37610 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
37620 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
37630 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20 20  e="module">..   
37640 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
37650 65 20 63 72 65 66 3d 22 55 6e 73 61 66 65 4e 61  e cref="UnsafeNa
37660 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
37670 74 65 33 5f 6d 6f 64 75 6c 65 22 20 2f 3e 20 6f  te3_module" /> o
37680 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20 2f  bject..        /
37690 2f 2f 20 69 6e 73 74 61 6e 63 65 20 74 6f 20 63  // instance to c
376a0 6f 70 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  opy...        //
376b0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
376c0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
376d0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
376e0 68 65 20 6e 65 77 20 3c 73 65 65 20 63 72 65 66  he new <see cref
376f0 3d 22 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  ="UnsafeNativeMe
37700 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f  thods.sqlite3_mo
37710 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 0d  dule" /> object.
37720 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73  .        /// ins
37730 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20  tance...        
37740 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
37750 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
37760 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
37770 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75  ods.sqlite3_modu
37780 6c 65 20 43 6f 70 79 4e 61 74 69 76 65 4d 6f 64  le CopyNativeMod
37790 75 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ule(..          
377a0 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65    UnsafeNativeMe
377b0 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f  thods.sqlite3_mo
377c0 64 75 6c 65 20 6d 6f 64 75 6c 65 0d 0a 20 20 20  dule module..   
377d0 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
377e0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
377f0 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
37800 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d  ethods.sqlite3_m
37810 6f 64 75 6c 65 20 6e 65 77 4d 6f 64 75 6c 65 20  odule newModule 
37820 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  =..             
37830 20 20 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74     new UnsafeNat
37840 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
37850 65 33 5f 6d 6f 64 75 6c 65 28 29 3b 0d 0a 0d 0a  e3_module();....
37860 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d              newM
37870 6f 64 75 6c 65 2e 69 56 65 72 73 69 6f 6e 20 3d  odule.iVersion =
37880 20 6d 6f 64 75 6c 65 2e 69 56 65 72 73 69 6f 6e   module.iVersion
37890 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
378a0 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 43 72 65 61   newModule.xCrea
378b0 74 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  te = new UnsafeN
378c0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 43 72  ativeMethods.xCr
378d0 65 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20  eate(..         
378e0 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78         (module.x
378f0 43 72 65 61 74 65 20 21 3d 20 6e 75 6c 6c 29 20  Create != null) 
37900 3f 20 6d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65  ? module.xCreate
37910 20 3a 20 78 43 72 65 61 74 65 29 3b 0d 0a 0d 0a   : xCreate);....
37920 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d              newM
37930 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 20 3d  odule.xConnect =
37940 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
37950 65 4d 65 74 68 6f 64 73 2e 78 43 6f 6e 6e 65 63  eMethods.xConnec
37960 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
37970 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 43 6f 6e      (module.xCon
37980 6e 65 63 74 20 21 3d 20 6e 75 6c 6c 29 20 3f 20  nect != null) ? 
37990 6d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 20  module.xConnect 
379a0 3a 20 78 43 6f 6e 6e 65 63 74 29 3b 0d 0a 0d 0a  : xConnect);....
379b0 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d              newM
379c0 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78  odule.xBestIndex
379d0 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
379e0 69 76 65 4d 65 74 68 6f 64 73 2e 78 42 65 73 74  iveMethods.xBest
379f0 49 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20 20  Index(..        
37a00 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e          (module.
37a10 78 42 65 73 74 49 6e 64 65 78 20 21 3d 20 6e 75  xBestIndex != nu
37a20 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 42 65  ll) ? module.xBe
37a30 73 74 49 6e 64 65 78 20 3a 20 78 42 65 73 74 49  stIndex : xBestI
37a40 6e 64 65 78 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ndex);....      
37a50 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e        newModule.
37a60 78 44 69 73 63 6f 6e 6e 65 63 74 20 3d 20 6e 65  xDisconnect = ne
37a70 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
37a80 74 68 6f 64 73 2e 78 44 69 73 63 6f 6e 6e 65 63  thods.xDisconnec
37a90 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
37aa0 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 44 69 73      (module.xDis
37ab0 63 6f 6e 6e 65 63 74 20 21 3d 20 6e 75 6c 6c 29  connect != null)
37ac0 20 3f 20 6d 6f 64 75 6c 65 2e 78 44 69 73 63 6f   ? module.xDisco
37ad0 6e 6e 65 63 74 20 3a 0d 0a 20 20 20 20 20 20 20  nnect :..       
37ae0 20 20 20 20 20 20 20 20 20 78 44 69 73 63 6f 6e           xDiscon
37af0 6e 65 63 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  nect);....      
37b00 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e        newModule.
37b10 78 44 65 73 74 72 6f 79 20 3d 20 6e 65 77 20 55  xDestroy = new U
37b20 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
37b30 64 73 2e 78 44 65 73 74 72 6f 79 28 0d 0a 20 20  ds.xDestroy(..  
37b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d                (m
37b50 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f 79 20 21  odule.xDestroy !
37b60 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65  = null) ? module
37b70 2e 78 44 65 73 74 72 6f 79 20 3a 20 78 44 65 73  .xDestroy : xDes
37b80 74 72 6f 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  troy);....      
37b90 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e        newModule.
37ba0 78 4f 70 65 6e 20 3d 20 6e 65 77 20 55 6e 73 61  xOpen = new Unsa
37bb0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
37bc0 78 4f 70 65 6e 28 0d 0a 20 20 20 20 20 20 20 20  xOpen(..        
37bd0 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e          (module.
37be0 78 4f 70 65 6e 20 21 3d 20 6e 75 6c 6c 29 20 3f  xOpen != null) ?
37bf0 20 6d 6f 64 75 6c 65 2e 78 4f 70 65 6e 20 3a 20   module.xOpen : 
37c00 78 4f 70 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20  xOpen);....     
37c10 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65         newModule
37c20 2e 78 43 6c 6f 73 65 20 3d 20 6e 65 77 20 55 6e  .xClose = new Un
37c30 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
37c40 73 2e 78 43 6c 6f 73 65 28 0d 0a 20 20 20 20 20  s.xClose(..     
37c50 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75             (modu
37c60 6c 65 2e 78 43 6c 6f 73 65 20 21 3d 20 6e 75 6c  le.xClose != nul
37c70 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 43 6c 6f  l) ? module.xClo
37c80 73 65 20 3a 20 78 43 6c 6f 73 65 29 3b 0d 0a 0d  se : xClose);...
37c90 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
37ca0 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 20 3d  Module.xFilter =
37cb0 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
37cc0 65 4d 65 74 68 6f 64 73 2e 78 46 69 6c 74 65 72  eMethods.xFilter
37cd0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
37ce0 20 20 20 28 6d 6f 64 75 6c 65 2e 78 46 69 6c 74     (module.xFilt
37cf0 65 72 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f  er != null) ? mo
37d00 64 75 6c 65 2e 78 46 69 6c 74 65 72 20 3a 20 78  dule.xFilter : x
37d10 46 69 6c 74 65 72 29 3b 0d 0a 0d 0a 20 20 20 20  Filter);....    
37d20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c          newModul
37d30 65 2e 78 4e 65 78 74 20 3d 20 6e 65 77 20 55 6e  e.xNext = new Un
37d40 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
37d50 73 2e 78 4e 65 78 74 28 0d 0a 20 20 20 20 20 20  s.xNext(..      
37d60 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c            (modul
37d70 65 2e 78 4e 65 78 74 20 21 3d 20 6e 75 6c 6c 29