System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact ede20f1773415444b2fb8f6f101ad4b85cf304d2:


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 3b 0d 0a 20 20 20 20 20 20 20 20 20  alue;..         
4180: 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
4190: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76  ethods.sqlite3_v
41a0: 61 6c 75 65 5f 69 6e 74 36 34 5f 69 6e 74 65 72  alue_int64_inter
41b0: 6f 70 28 70 56 61 6c 75 65 2c 20 6f 75 74 20 76  op(pValue, out v
41c0: 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  alue);..        
41d0: 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65      return value
41e0: 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
41f0: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
4200: 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74 65 64 45 78  NotImplementedEx
4210: 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 23 65 6e 64  ception();..#end
4220: 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  if..        }...
4230: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
4240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4250: 2f 2f 2f 2f 2f 2f 2f 2f 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: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
4290: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
42a0: 20 20 20 2f 2f 2f 20 47 65 74 73 20 61 6e 64 20     /// Gets and 
42b0: 72 65 74 75 72 6e 73 20 74 68 65 20 3c 73 65 65  returns the <see
42c0: 20 63 72 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f   cref="Double" /
42d0: 3e 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  > associated wit
42e0: 68 20 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20  h this..        
42f0: 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20  /// value...    
4300: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
4310: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
4320: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
4330: 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
4340: 63 72 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f 3e  cref="Double" />
4350: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
4360: 20 74 68 69 73 20 76 61 6c 75 65 2e 0d 0a 20 20   this value...  
4370: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
4380: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  rns>..        pu
4390: 62 6c 69 63 20 64 6f 75 62 6c 65 20 47 65 74 44  blic double GetD
43a0: 6f 75 62 6c 65 28 29 0d 0a 20 20 20 20 20 20 20  ouble()..       
43b0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
43c0: 69 66 20 28 70 56 61 6c 75 65 20 3d 3d 20 49 6e  if (pValue == In
43d0: 74 50 74 72 2e 5a 65 72 6f 29 20 72 65 74 75 72  tPtr.Zero) retur
43e0: 6e 20 64 65 66 61 75 6c 74 28 64 6f 75 62 6c 65  n default(double
43f0: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
4400: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
4410: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
4420: 20 20 72 65 74 75 72 6e 20 55 6e 73 61 66 65 4e    return UnsafeN
4430: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
4440: 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62 6c  ite3_value_doubl
4450: 65 28 70 56 61 6c 75 65 29 3b 0d 0a 23 65 6c 69  e(pValue);..#eli
4460: 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  f !SQLITE_STANDA
4470: 52 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RD..            
4480: 64 6f 75 62 6c 65 20 76 61 6c 75 65 3b 0d 0a 20  double value;.. 
4490: 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66             Unsaf
44a0: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
44b0: 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75  qlite3_value_dou
44c0: 62 6c 65 5f 69 6e 74 65 72 6f 70 28 70 56 61 6c  ble_interop(pVal
44d0: 75 65 2c 20 6f 75 74 20 76 61 6c 75 65 29 3b 0d  ue, out value);.
44e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
44f0: 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 23 65 6c 73  urn value;..#els
4500: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  e..            t
4510: 68 72 6f 77 20 6e 65 77 20 4e 6f 74 49 6d 70 6c  hrow new NotImpl
4520: 65 6d 65 6e 74 65 64 45 78 63 65 70 74 69 6f 6e  ementedException
4530: 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ();..#endif..   
4540: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
4550: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
4560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4570: 2f 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 0d 0a 0d 0a 20 20 20  /////////....   
45a0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
45b0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
45c0: 47 65 74 73 20 61 6e 64 20 72 65 74 75 72 6e 73  Gets and returns
45d0: 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
45e0: 53 74 72 69 6e 67 22 20 2f 3e 20 61 73 73 6f 63  String" /> assoc
45f0: 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73 0d  iated with this.
4600: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c  .        /// val
4610: 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ue...        ///
4620: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
4630: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
4640: 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
4650: 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
4660: 74 72 69 6e 67 22 20 2f 3e 20 61 73 73 6f 63 69  tring" /> associ
4670: 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20 76  ated with this v
4680: 61 6c 75 65 2e 20 20 54 68 65 20 76 61 6c 75 65  alue.  The value
4690: 20 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   is..        ///
46a0: 20 63 6f 6e 76 65 72 74 65 64 20 66 72 6f 6d 20   converted from 
46b0: 74 68 65 20 55 54 46 2d 38 20 65 6e 63 6f 64 69  the UTF-8 encodi
46c0: 6e 67 20 70 72 69 6f 72 20 74 6f 20 62 65 69 6e  ng prior to bein
46d0: 67 20 72 65 74 75 72 6e 65 64 2e 0d 0a 20 20 20  g returned...   
46e0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
46f0: 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ns>..        pub
4700: 6c 69 63 20 73 74 72 69 6e 67 20 47 65 74 53 74  lic string GetSt
4710: 72 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20  ring()..        
4720: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
4730: 66 20 28 70 56 61 6c 75 65 20 3d 3d 20 49 6e 74  f (pValue == Int
4740: 50 74 72 2e 5a 65 72 6f 29 20 72 65 74 75 72 6e  Ptr.Zero) return
4750: 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20   null;..        
4760: 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74      return SQLit
4770: 65 53 74 72 69 6e 67 2e 53 74 72 69 6e 67 46 72  eString.StringFr
4780: 6f 6d 55 74 66 38 49 6e 74 50 74 72 28 70 56 61  omUtf8IntPtr(pVa
4790: 6c 75 65 2c 20 47 65 74 42 79 74 65 73 28 29 29  lue, GetBytes())
47a0: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
47b0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
47c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
47d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
47e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
47f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
4800: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
4810: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
4820: 20 20 2f 2f 2f 20 47 65 74 73 20 61 6e 64 20 72    /// Gets and r
4830: 65 74 75 72 6e 73 20 74 68 65 20 3c 73 65 65 20  eturns the <see 
4840: 63 72 65 66 3d 22 42 79 74 65 22 20 2f 3e 20 61  cref="Byte" /> a
4850: 72 72 61 79 20 61 73 73 6f 63 69 61 74 65 64 20  rray associated 
4860: 77 69 74 68 20 74 68 69 73 0d 0a 20 20 20 20 20  with this..     
4870: 20 20 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20     /// value... 
4880: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
4890: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
48a0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
48b0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
48c0: 65 65 20 63 72 65 66 3d 22 42 79 74 65 22 20 2f  ee cref="Byte" /
48d0: 3e 20 61 72 72 61 79 20 61 73 73 6f 63 69 61 74  > array associat
48e0: 65 64 20 77 69 74 68 20 74 68 69 73 20 76 61 6c  ed with this val
48f0: 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ue...        ///
4900: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
4910: 20 20 20 20 20 70 75 62 6c 69 63 20 62 79 74 65       public byte
4920: 5b 5d 20 47 65 74 42 6c 6f 62 28 29 0d 0a 20 20  [] GetBlob()..  
4930: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
4940: 20 20 20 20 20 69 66 20 28 70 56 61 6c 75 65 20       if (pValue 
4950: 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20  == IntPtr.Zero) 
4960: 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20  return null;..  
4970: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
4980: 20 53 51 4c 69 74 65 42 79 74 65 73 2e 46 72 6f   SQLiteBytes.Fro
4990: 6d 49 6e 74 50 74 72 28 70 56 61 6c 75 65 2c 20  mIntPtr(pValue, 
49a0: 47 65 74 42 79 74 65 73 28 29 29 3b 0d 0a 20 20  GetBytes());..  
49b0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
49c0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
49d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
49e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
49f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4a00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
4a10: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
4a20: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
4a30: 20 55 73 65 73 20 74 68 65 20 6e 61 74 69 76 65   Uses the native
4a40: 20 76 61 6c 75 65 20 68 61 6e 64 6c 65 20 74 6f   value handle to
4a50: 20 6f 62 74 61 69 6e 20 61 6e 64 20 73 74 6f 72   obtain and stor
4a60: 65 20 74 68 65 20 6d 61 6e 61 67 65 64 20 76 61  e the managed va
4a70: 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  lue..        ///
4a80: 20 66 6f 72 20 74 68 69 73 20 6f 62 6a 65 63 74   for this object
4a90: 20 69 6e 73 74 61 6e 63 65 2c 20 74 68 75 73 20   instance, thus 
4aa0: 73 61 76 69 6e 67 20 69 74 20 66 6f 72 20 6c 61  saving it for la
4ab0: 74 65 72 20 75 73 65 2e 20 20 54 68 65 20 74 79  ter use.  The ty
4ac0: 70 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  pe..        /// 
4ad0: 6f 66 20 74 68 65 20 6d 61 6e 61 67 65 64 20 76  of the managed v
4ae0: 61 6c 75 65 20 69 73 20 64 65 74 65 72 6d 69 6e  alue is determin
4af0: 65 64 20 62 79 20 74 68 65 20 74 79 70 65 20 61  ed by the type a
4b00: 66 66 69 6e 69 74 79 20 6f 66 20 74 68 65 0d 0a  ffinity of the..
4b10: 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 61 74 69          /// nati
4b20: 76 65 20 76 61 6c 75 65 2e 20 20 49 66 20 74 68  ve value.  If th
4b30: 65 20 74 79 70 65 20 61 66 66 69 6e 69 74 79 20  e type affinity 
4b40: 69 73 20 6e 6f 74 20 72 65 63 6f 67 6e 69 7a 65  is not recognize
4b50: 64 20 62 79 20 74 68 69 73 0d 0a 20 20 20 20 20  d by this..     
4b60: 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 2c 20 6e     /// method, n
4b70: 6f 20 77 6f 72 6b 20 69 73 20 64 6f 6e 65 20 61  o work is done a
4b80: 6e 64 20 66 61 6c 73 65 20 69 73 20 72 65 74 75  nd false is retu
4b90: 72 6e 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  rned...        /
4ba0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
4bb0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
4bc0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
4bd0: 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68  / Non-zero if th
4be0: 65 20 6e 61 74 69 76 65 20 76 61 6c 75 65 20 77  e native value w
4bf0: 61 73 20 70 65 72 73 69 73 74 65 64 20 73 75 63  as persisted suc
4c00: 63 65 73 73 66 75 6c 6c 79 2e 0d 0a 20 20 20 20  cessfully...    
4c10: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
4c20: 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  s>..        publ
4c30: 69 63 20 62 6f 6f 6c 20 50 65 72 73 69 73 74 28  ic bool Persist(
4c40: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
4c50: 20 20 20 20 20 20 20 20 20 20 73 77 69 74 63 68            switch
4c60: 20 28 47 65 74 54 79 70 65 41 66 66 69 6e 69 74   (GetTypeAffinit
4c70: 79 28 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  y())..          
4c80: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
4c90: 20 20 20 20 20 63 61 73 65 20 54 79 70 65 41 66       case TypeAf
4ca0: 66 69 6e 69 74 79 2e 55 6e 69 6e 69 74 69 61 6c  finity.Uninitial
4cb0: 69 7a 65 64 3a 0d 0a 20 20 20 20 20 20 20 20 20  ized:..         
4cc0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
4cd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4ce0: 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 6e 75        value = nu
4cf0: 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll;..           
4d00: 20 20 20 20 20 20 20 20 20 20 20 20 20 50 72 65               Pre
4d10: 76 65 6e 74 4e 61 74 69 76 65 41 63 63 65 73 73  ventNativeAccess
4d20: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
4d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
4d40: 75 72 6e 20 28 70 65 72 73 69 73 74 65 64 20 3d  urn (persisted =
4d50: 20 74 72 75 65 29 3b 0d 0a 20 20 20 20 20 20 20   true);..       
4d60: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
4d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4d80: 63 61 73 65 20 54 79 70 65 41 66 66 69 6e 69 74  case TypeAffinit
4d90: 79 2e 49 6e 74 36 34 3a 0d 0a 20 20 20 20 20 20  y.Int64:..      
4da0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
4db0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4dc0: 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d           value =
4dd0: 20 47 65 74 49 6e 74 36 34 28 29 3b 0d 0a 20 20   GetInt64();..  
4de0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4df0: 20 20 20 20 20 20 50 72 65 76 65 6e 74 4e 61 74        PreventNat
4e00: 69 76 65 41 63 63 65 73 73 28 29 3b 0d 0a 20 20  iveAccess();..  
4e10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4e20: 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 70 65        return (pe
4e30: 72 73 69 73 74 65 64 20 3d 20 74 72 75 65 29 3b  rsisted = true);
4e40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4e50: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
4e60: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 54 79           case Ty
4e70: 70 65 41 66 66 69 6e 69 74 79 2e 44 6f 75 62 6c  peAffinity.Doubl
4e80: 65 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e:..            
4e90: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
4ea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4eb0: 20 20 20 76 61 6c 75 65 20 3d 20 47 65 74 44 6f     value = GetDo
4ec0: 75 62 6c 65 28 29 3b 0d 0a 20 20 20 20 20 20 20  uble();..       
4ed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4ee0: 20 50 72 65 76 65 6e 74 4e 61 74 69 76 65 41 63   PreventNativeAc
4ef0: 63 65 73 73 28 29 3b 0d 0a 20 20 20 20 20 20 20  cess();..       
4f00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4f10: 20 72 65 74 75 72 6e 20 28 70 65 72 73 69 73 74   return (persist
4f20: 65 64 20 3d 20 74 72 75 65 29 3b 0d 0a 20 20 20  ed = true);..   
4f30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4f40: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
4f50: 20 20 20 20 63 61 73 65 20 54 79 70 65 41 66 66      case TypeAff
4f60: 69 6e 69 74 79 2e 54 65 78 74 3a 0d 0a 20 20 20  inity.Text:..   
4f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4f80: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
4f90: 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75              valu
4fa0: 65 20 3d 20 47 65 74 53 74 72 69 6e 67 28 29 3b  e = GetString();
4fb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4fc0: 20 20 20 20 20 20 20 20 20 20 50 72 65 76 65 6e            Preven
4fd0: 74 4e 61 74 69 76 65 41 63 63 65 73 73 28 29 3b  tNativeAccess();
4fe0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4ff0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
5000: 20 28 70 65 72 73 69 73 74 65 64 20 3d 20 74 72   (persisted = tr
5010: 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ue);..          
5020: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
5030: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73               cas
5040: 65 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 42  e TypeAffinity.B
5050: 6c 6f 62 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  lob:..          
5060: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
5070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5080: 20 20 20 20 20 76 61 6c 75 65 20 3d 20 47 65 74       value = Get
5090: 42 79 74 65 73 28 29 3b 0d 0a 20 20 20 20 20 20  Bytes();..      
50a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
50b0: 20 20 50 72 65 76 65 6e 74 4e 61 74 69 76 65 41    PreventNativeA
50c0: 63 63 65 73 73 28 29 3b 0d 0a 20 20 20 20 20 20  ccess();..      
50d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
50e0: 20 20 72 65 74 75 72 6e 20 28 70 65 72 73 69 73    return (persis
50f0: 74 65 64 20 3d 20 74 72 75 65 29 3b 0d 0a 20 20  ted = true);..  
5100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5110: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
5120: 20 20 20 20 20 63 61 73 65 20 54 79 70 65 41 66       case TypeAf
5130: 66 69 6e 69 74 79 2e 4e 75 6c 6c 3a 0d 0a 20 20  finity.Null:..  
5140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5150: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
5160: 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c               val
5170: 75 65 20 3d 20 44 42 4e 75 6c 6c 2e 56 61 6c 75  ue = DBNull.Valu
5180: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
5190: 20 20 20 20 20 20 20 20 20 20 20 20 50 72 65 76              Prev
51a0: 65 6e 74 4e 61 74 69 76 65 41 63 63 65 73 73 28  entNativeAccess(
51b0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
51c0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
51d0: 72 6e 20 28 70 65 72 73 69 73 74 65 64 20 3d 20  rn (persisted = 
51e0: 74 72 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  true);..        
51f0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
5200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
5210: 65 66 61 75 6c 74 3a 0d 0a 20 20 20 20 20 20 20  efault:..       
5220: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
5230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5240: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
5250: 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alse;..         
5260: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
5270: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
5280: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
5290: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20  #endregion..    
52a0: 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  }..    #endregio
52b0: 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  n....    ///////
52c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
52d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
52e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
52f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5300: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
5310: 69 6f 6e 20 53 51 4c 69 74 65 49 6e 64 65 78 43  ion SQLiteIndexC
5320: 6f 6e 73 74 72 61 69 6e 74 4f 70 20 45 6e 75 6d  onstraintOp Enum
5330: 65 72 61 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f 2f  eration..    ///
5340: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
5350: 2f 2f 2f 20 54 68 65 73 65 20 61 72 65 20 74 68  /// These are th
5360: 65 20 61 6c 6c 6f 77 65 64 20 76 61 6c 75 65 73  e allowed values
5370: 20 66 6f 72 20 74 68 65 20 6f 70 65 72 61 74 6f   for the operato
5380: 72 73 20 74 68 61 74 20 61 72 65 20 70 61 72 74  rs that are part
5390: 20 6f 66 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 63   of a..    /// c
53a0: 6f 6e 73 74 72 61 69 6e 74 20 74 65 72 6d 20 69  onstraint term i
53b0: 6e 20 74 68 65 20 57 48 45 52 45 20 63 6c 61 75  n the WHERE clau
53c0: 73 65 20 6f 66 20 61 20 71 75 65 72 79 20 74 68  se of a query th
53d0: 61 74 20 75 73 65 73 20 61 20 76 69 72 74 75 61  at uses a virtua
53e0: 6c 0d 0a 20 20 20 20 2f 2f 2f 20 74 61 62 6c 65  l..    /// table
53f0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
5400: 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69  mary>..    publi
5410: 63 20 65 6e 75 6d 20 53 51 4c 69 74 65 49 6e 64  c enum SQLiteInd
5420: 65 78 43 6f 6e 73 74 72 61 69 6e 74 4f 70 20 3a  exConstraintOp :
5430: 20 62 79 74 65 0d 0a 20 20 20 20 7b 0d 0a 20 20   byte..    {..  
5440: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
5450: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
5460: 20 54 68 69 73 20 76 61 6c 75 65 20 72 65 70 72   This value repr
5470: 65 73 65 6e 74 73 20 74 68 65 20 65 71 75 61 6c  esents the equal
5480: 69 74 79 20 6f 70 65 72 61 74 6f 72 2e 0d 0a 20  ity operator... 
5490: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
54a0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 45  mary>..        E
54b0: 71 75 61 6c 54 6f 20 3d 20 32 2c 0d 0a 0d 0a 20  qualTo = 2,.... 
54c0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
54d0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
54e0: 2f 20 54 68 69 73 20 76 61 6c 75 65 20 72 65 70  / This value rep
54f0: 72 65 73 65 6e 74 73 20 74 68 65 20 67 72 65 61  resents the grea
5500: 74 65 72 20 74 68 61 6e 20 6f 70 65 72 61 74 6f  ter than operato
5510: 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
5520: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
5530: 20 20 20 20 47 72 65 61 74 65 72 54 68 61 6e 20      GreaterThan 
5540: 3d 20 34 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20  = 4,....        
5550: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
5560: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
5570: 76 61 6c 75 65 20 72 65 70 72 65 73 65 6e 74 73  value represents
5580: 20 74 68 65 20 6c 65 73 73 20 74 68 61 6e 20 6f   the less than o
5590: 72 20 65 71 75 61 6c 20 74 6f 20 6f 70 65 72 61  r equal to opera
55a0: 74 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tor...        //
55b0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
55c0: 20 20 20 20 20 20 4c 65 73 73 54 68 61 6e 4f 72        LessThanOr
55d0: 45 71 75 61 6c 54 6f 20 3d 20 38 2c 0d 0a 0d 0a  EqualTo = 8,....
55e0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
55f0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
5600: 2f 2f 20 54 68 69 73 20 76 61 6c 75 65 20 72 65  // This value re
5610: 70 72 65 73 65 6e 74 73 20 74 68 65 20 6c 65 73  presents the les
5620: 73 20 74 68 61 6e 20 6f 70 65 72 61 74 6f 72 2e  s than operator.
5630: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
5640: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
5650: 20 20 4c 65 73 73 54 68 61 6e 20 3d 20 31 36 2c    LessThan = 16,
5660: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
5670: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
5680: 20 20 20 2f 2f 2f 20 54 68 69 73 20 76 61 6c 75     /// This valu
5690: 65 20 72 65 70 72 65 73 65 6e 74 73 20 74 68 65  e represents the
56a0: 20 67 72 65 61 74 65 72 20 74 68 61 6e 20 6f 72   greater than or
56b0: 20 65 71 75 61 6c 20 74 6f 20 6f 70 65 72 61 74   equal to operat
56c0: 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  or...        ///
56d0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
56e0: 20 20 20 20 20 47 72 65 61 74 65 72 54 68 61 6e       GreaterThan
56f0: 4f 72 45 71 75 61 6c 54 6f 20 3d 20 33 32 2c 0d  OrEqualTo = 32,.
5700: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
5710: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
5720: 20 20 2f 2f 2f 20 54 68 69 73 20 76 61 6c 75 65    /// This value
5730: 20 72 65 70 72 65 73 65 6e 74 73 20 74 68 65 20   represents the 
5740: 4d 41 54 43 48 20 6f 70 65 72 61 74 6f 72 2e 0d  MATCH operator..
5750: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
5760: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
5770: 20 4d 61 74 63 68 20 3d 20 36 34 0d 0a 20 20 20   Match = 64..   
5780: 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69   }..    #endregi
5790: 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  on....    //////
57a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
57b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
57c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
57d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
57e0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65  /////....    #re
57f0: 67 69 6f 6e 20 53 51 4c 69 74 65 49 6e 64 65 78  gion SQLiteIndex
5800: 43 6f 6e 73 74 72 61 69 6e 74 20 48 65 6c 70 65  Constraint Helpe
5810: 72 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f  r Class..    ///
5820: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
5830: 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20 72  /// This class r
5840: 65 70 72 65 73 65 6e 74 73 20 74 68 65 20 6e 61  epresents the na
5850: 74 69 76 65 20 73 71 6c 69 74 65 33 5f 69 6e 64  tive sqlite3_ind
5860: 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 20 73 74  ex_constraint st
5870: 72 75 63 74 75 72 65 0d 0a 20 20 20 20 2f 2f 2f  ructure..    ///
5880: 20 66 72 6f 6d 20 74 68 65 20 53 51 4c 69 74 65   from the SQLite
5890: 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a   core library...
58a0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
58b0: 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73  y>..    public s
58c0: 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69  ealed class SQLi
58d0: 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
58e0: 74 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  t..    {..      
58f0: 20 20 23 72 65 67 69 6f 6e 20 49 6e 74 65 72 6e    #region Intern
5900: 61 6c 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d  al Constructors.
5910: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
5920: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
5930: 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61  /// Constructs a
5940: 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68  n instance of th
5950: 69 73 20 63 6c 61 73 73 20 75 73 69 6e 67 20 74  is class using t
5960: 68 65 20 73 70 65 63 69 66 69 65 64 20 6e 61 74  he specified nat
5970: 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ive..        ///
5980: 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63   sqlite3_index_c
5990: 6f 6e 73 74 72 61 69 6e 74 20 73 74 72 75 63 74  onstraint struct
59a0: 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
59b0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
59c0: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
59d0: 20 6e 61 6d 65 3d 22 63 6f 6e 73 74 72 61 69 6e   name="constrain
59e0: 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  t">..        ///
59f0: 20 54 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69   The native sqli
5a00: 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72  te3_index_constr
5a10: 61 69 6e 74 20 73 74 72 75 63 74 75 72 65 20 74  aint structure t
5a20: 6f 20 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20  o use...        
5a30: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
5a40: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53        internal S
5a50: 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72  QLiteIndexConstr
5a60: 61 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20  aint(..         
5a70: 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
5a80: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69  ethods.sqlite3_i
5a90: 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 20  ndex_constraint 
5aa0: 63 6f 6e 73 74 72 61 69 6e 74 0d 0a 20 20 20 20  constraint..    
5ab0: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
5ac0: 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 63 6f         : this(co
5ad0: 6e 73 74 72 61 69 6e 74 2e 69 43 6f 6c 75 6d 6e  nstraint.iColumn
5ae0: 2c 20 63 6f 6e 73 74 72 61 69 6e 74 2e 6f 70 2c  , constraint.op,
5af0: 20 63 6f 6e 73 74 72 61 69 6e 74 2e 75 73 61 62   constraint.usab
5b00: 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le,..           
5b10: 20 20 20 20 20 20 20 20 63 6f 6e 73 74 72 61 69          constrai
5b20: 6e 74 2e 69 54 65 72 6d 4f 66 66 73 65 74 29 0d  nt.iTermOffset).
5b30: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
5b40: 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
5b50: 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
5b60: 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
5b70: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
5b80: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
5b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5bc0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
5bd0: 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
5be0: 74 65 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d  te Constructors.
5bf0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
5c00: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
5c10: 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61  /// Constructs a
5c20: 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68  n instance of th
5c30: 69 73 20 63 6c 61 73 73 20 75 73 69 6e 67 20 74  is class using t
5c40: 68 65 20 73 70 65 63 69 66 69 65 64 20 66 69 65  he specified fie
5c50: 6c 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ld..        /// 
5c60: 76 61 6c 75 65 73 2e 0d 0a 20 20 20 20 20 20 20  values...       
5c70: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
5c80: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
5c90: 72 61 6d 20 6e 61 6d 65 3d 22 69 43 6f 6c 75 6d  ram name="iColum
5ca0: 6e 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n">..        ///
5cb0: 20 43 6f 6c 75 6d 6e 20 6f 6e 20 6c 65 66 74 2d   Column on left-
5cc0: 68 61 6e 64 20 73 69 64 65 20 6f 66 20 63 6f 6e  hand side of con
5cd0: 73 74 72 61 69 6e 74 2e 0d 0a 20 20 20 20 20 20  straint...      
5ce0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
5cf0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
5d00: 61 6d 20 6e 61 6d 65 3d 22 6f 70 22 3e 0d 0a 20  am name="op">.. 
5d10: 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74         /// Const
5d20: 72 61 69 6e 74 20 6f 70 65 72 61 74 6f 72 20 28  raint operator (
5d30: 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
5d40: 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74  eIndexConstraint
5d50: 4f 70 22 20 2f 3e 29 2e 0d 0a 20 20 20 20 20 20  Op" />)...      
5d60: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
5d70: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
5d80: 61 6d 20 6e 61 6d 65 3d 22 75 73 61 62 6c 65 22  am name="usable"
5d90: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
5da0: 72 75 65 20 69 66 20 74 68 69 73 20 63 6f 6e 73  rue if this cons
5db0: 74 72 61 69 6e 74 20 69 73 20 75 73 61 62 6c 65  traint is usable
5dc0: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
5dd0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
5de0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
5df0: 3d 22 69 54 65 72 6d 4f 66 66 73 65 74 22 3e 0d  ="iTermOffset">.
5e00: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 73 65  .        /// Use
5e10: 64 20 69 6e 74 65 72 6e 61 6c 6c 79 20 2d 20 3c  d internally - <
5e20: 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
5e30: 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 42  eManagedModule.B
5e40: 65 73 74 49 6e 64 65 78 22 20 2f 3e 0d 0a 20 20  estIndex" />..  
5e50: 20 20 20 20 20 20 2f 2f 2f 20 73 68 6f 75 6c 64        /// should
5e60: 20 69 67 6e 6f 72 65 2e 0d 0a 20 20 20 20 20 20   ignore...      
5e70: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
5e80: 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
5e90: 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74  SQLiteIndexConst
5ea0: 72 61 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20  raint(..        
5eb0: 20 20 20 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 2c      int iColumn,
5ec0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
5ed0: 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61  LiteIndexConstra
5ee0: 69 6e 74 4f 70 20 6f 70 2c 0d 0a 20 20 20 20 20  intOp op,..     
5ef0: 20 20 20 20 20 20 20 62 79 74 65 20 75 73 61 62         byte usab
5f00: 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le,..           
5f10: 20 69 6e 74 20 69 54 65 72 6d 4f 66 66 73 65 74   int iTermOffset
5f20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
5f30: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
5f40: 20 20 20 20 20 20 20 20 74 68 69 73 2e 69 43 6f          this.iCo
5f50: 6c 75 6d 6e 20 3d 20 69 43 6f 6c 75 6d 6e 3b 0d  lumn = iColumn;.
5f60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
5f70: 73 2e 6f 70 20 3d 20 6f 70 3b 0d 0a 20 20 20 20  s.op = op;..    
5f80: 20 20 20 20 20 20 20 20 74 68 69 73 2e 75 73 61          this.usa
5f90: 62 6c 65 20 3d 20 75 73 61 62 6c 65 3b 0d 0a 20  ble = usable;.. 
5fa0: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
5fb0: 69 54 65 72 6d 4f 66 66 73 65 74 20 3d 20 69 54  iTermOffset = iT
5fc0: 65 72 6d 4f 66 66 73 65 74 3b 0d 0a 20 20 20 20  ermOffset;..    
5fd0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
5fe0: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
5ff0: 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
6040: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
6050: 75 62 6c 69 63 20 46 69 65 6c 64 73 0d 0a 20 20  ublic Fields..  
6060: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
6070: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
6080: 20 43 6f 6c 75 6d 6e 20 6f 6e 20 6c 65 66 74 2d   Column on left-
6090: 68 61 6e 64 20 73 69 64 65 20 6f 66 20 63 6f 6e  hand side of con
60a0: 73 74 72 61 69 6e 74 2e 0d 0a 20 20 20 20 20 20  straint...      
60b0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
60c0: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
60d0: 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b 0d 0a 0d   int iColumn;...
60e0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
60f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
6130: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
6140: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
6150: 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 61 69 6e 74    /// Constraint
6160: 20 6f 70 65 72 61 74 6f 72 20 28 3c 73 65 65 20   operator (<see 
6170: 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65  cref="SQLiteInde
6180: 78 43 6f 6e 73 74 72 61 69 6e 74 4f 70 22 20 2f  xConstraintOp" /
6190: 3e 29 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  >)...        ///
61a0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
61b0: 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69       public SQLi
61c0: 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
61d0: 74 4f 70 20 6f 70 3b 0d 0a 0d 0a 20 20 20 20 20  tOp op;....     
61e0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
61f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
6230: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
6240: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
6250: 54 72 75 65 20 69 66 20 74 68 69 73 20 63 6f 6e  True if this con
6260: 73 74 72 61 69 6e 74 20 69 73 20 75 73 61 62 6c  straint is usabl
6270: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
6280: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
6290: 20 20 20 20 70 75 62 6c 69 63 20 62 79 74 65 20      public byte 
62a0: 75 73 61 62 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20  usable;....     
62b0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
62c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
62d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
62e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
62f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
6300: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
6310: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
6320: 55 73 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79 20  Used internally 
6330: 2d 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  - <see cref="ISQ
6340: 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c  LiteManagedModul
6350: 65 2e 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 0d  e.BestIndex" />.
6360: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 68 6f  .        /// sho
6370: 75 6c 64 20 69 67 6e 6f 72 65 2e 0d 0a 20 20 20  uld ignore...   
6380: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
6390: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ry>..        pub
63a0: 6c 69 63 20 69 6e 74 20 69 54 65 72 6d 4f 66 66  lic int iTermOff
63b0: 73 65 74 3b 0d 0a 20 20 20 20 20 20 20 20 23 65  set;..        #e
63c0: 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d  ndregion..    }.
63d0: 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
63e0: 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
63f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6430: 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
6440: 6e 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64  n SQLiteIndexOrd
6450: 65 72 42 79 20 48 65 6c 70 65 72 20 43 6c 61 73  erBy Helper Clas
6460: 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  s..    /// <summ
6470: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
6480: 69 73 20 63 6c 61 73 73 20 72 65 70 72 65 73 65  is class represe
6490: 6e 74 73 20 74 68 65 20 6e 61 74 69 76 65 20 73  nts the native s
64a0: 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64  qlite3_index_ord
64b0: 65 72 62 79 20 73 74 72 75 63 74 75 72 65 20 66  erby structure f
64c0: 72 6f 6d 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 65  rom..    /// the
64d0: 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62   SQLite core lib
64e0: 72 61 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  rary...    /// <
64f0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70  /summary>..    p
6500: 75 62 6c 69 63 20 73 65 61 6c 65 64 20 63 6c 61  ublic sealed cla
6510: 73 73 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 72  ss SQLiteIndexOr
6520: 64 65 72 42 79 0d 0a 20 20 20 20 7b 0d 0a 20 20  derBy..    {..  
6530: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 6e        #region In
6540: 74 65 72 6e 61 6c 20 43 6f 6e 73 74 72 75 63 74  ternal Construct
6550: 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ors..        ///
6560: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
6570: 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63      /// Construc
6580: 74 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f  ts an instance o
6590: 66 20 74 68 69 73 20 63 6c 61 73 73 20 75 73 69  f this class usi
65a0: 6e 67 20 74 68 65 20 73 70 65 63 69 66 69 65 64  ng the specified
65b0: 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20   native..       
65c0: 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 69 6e 64   /// sqlite3_ind
65d0: 65 78 5f 6f 72 64 65 72 62 79 20 73 74 72 75 63  ex_orderby struc
65e0: 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ture...        /
65f0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
6600: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
6610: 6d 20 6e 61 6d 65 3d 22 6f 72 64 65 72 42 79 22  m name="orderBy"
6620: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
6630: 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65  he native sqlite
6640: 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 20  3_index_orderby 
6650: 73 74 72 75 63 74 75 72 65 20 74 6f 20 75 73 65  structure to use
6660: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
6670: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
6680: 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65   internal SQLite
6690: 49 6e 64 65 78 4f 72 64 65 72 42 79 28 0d 0a 20  IndexOrderBy(.. 
66a0: 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66             Unsaf
66b0: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
66c0: 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64  qlite3_index_ord
66d0: 65 72 62 79 20 6f 72 64 65 72 42 79 0d 0a 20 20  erby orderBy..  
66e0: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
66f0: 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28           : this(
6700: 6f 72 64 65 72 42 79 2e 69 43 6f 6c 75 6d 6e 2c  orderBy.iColumn,
6710: 20 6f 72 64 65 72 42 79 2e 64 65 73 63 29 0d 0a   orderBy.desc)..
6720: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
6730: 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
6740: 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 7d  hing...        }
6750: 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
6760: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
6770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
67a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
67b0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
67c0: 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74    #region Privat
67d0: 65 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a  e Constructors..
67e0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
67f0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
6800: 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e  // Constructs an
6810: 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69   instance of thi
6820: 73 20 63 6c 61 73 73 20 75 73 69 6e 67 20 74 68  s class using th
6830: 65 20 73 70 65 63 69 66 69 65 64 20 66 69 65 6c  e specified fiel
6840: 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76  d..        /// v
6850: 61 6c 75 65 73 2e 0d 0a 20 20 20 20 20 20 20 20  alues...        
6860: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
6870: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
6880: 61 6d 20 6e 61 6d 65 3d 22 69 43 6f 6c 75 6d 6e  am name="iColumn
6890: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
68a0: 43 6f 6c 75 6d 6e 20 6e 75 6d 62 65 72 2e 0d 0a  Column number...
68b0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
68c0: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
68d0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64  / <param name="d
68e0: 65 73 63 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  esc">..        /
68f0: 2f 2f 20 54 72 75 65 20 66 6f 72 20 44 45 53 43  // True for DESC
6900: 2e 20 20 46 61 6c 73 65 20 66 6f 72 20 41 53 43  .  False for ASC
6910: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
6920: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
6930: 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 49   private SQLiteI
6940: 6e 64 65 78 4f 72 64 65 72 42 79 28 0d 0a 20 20  ndexOrderBy(..  
6950: 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 43            int iC
6960: 6f 6c 75 6d 6e 2c 0d 0a 20 20 20 20 20 20 20 20  olumn,..        
6970: 20 20 20 20 62 79 74 65 20 64 65 73 63 0d 0a 20      byte desc.. 
6980: 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
6990: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
69a0: 20 20 20 20 20 74 68 69 73 2e 69 43 6f 6c 75 6d       this.iColum
69b0: 6e 20 3d 20 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20  n = iColumn;..  
69c0: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 64            this.d
69d0: 65 73 63 20 3d 20 64 65 73 63 3b 0d 0a 20 20 20  esc = desc;..   
69e0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
69f0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
6a00: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
6a10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
6a50: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
6a60: 50 75 62 6c 69 63 20 46 69 65 6c 64 73 0d 0a 20  Public Fields.. 
6a70: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
6a80: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
6a90: 2f 20 43 6f 6c 75 6d 6e 20 6e 75 6d 62 65 72 2e  / Column number.
6aa0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
6ab0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
6ac0: 20 20 70 75 62 6c 69 63 20 69 6e 74 20 69 43 6f    public int iCo
6ad0: 6c 75 6d 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  lumn;....       
6ae0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
6af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b20: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
6b30: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
6b40: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 72  ..        /// Tr
6b50: 75 65 20 66 6f 72 20 44 45 53 43 2e 20 20 46 61  ue for DESC.  Fa
6b60: 6c 73 65 20 66 6f 72 20 41 53 43 2e 0d 0a 20 20  lse for ASC...  
6b70: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
6b80: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
6b90: 62 6c 69 63 20 62 79 74 65 20 64 65 73 63 3b 0d  blic byte desc;.
6ba0: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
6bb0: 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20  ion..    }..    
6bc0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
6bd0: 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
6c20: 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c  .    #region SQL
6c30: 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69  iteIndexConstrai
6c40: 6e 74 55 73 61 67 65 20 48 65 6c 70 65 72 20 43  ntUsage Helper C
6c50: 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  lass..    /// <s
6c60: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
6c70: 20 54 68 69 73 20 63 6c 61 73 73 20 72 65 70 72   This class repr
6c80: 65 73 65 6e 74 73 20 74 68 65 20 6e 61 74 69 76  esents the nativ
6c90: 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  e sqlite3_index_
6ca0: 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65  constraint_usage
6cb0: 0d 0a 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74  ..    /// struct
6cc0: 75 72 65 20 66 72 6f 6d 20 74 68 65 20 53 51 4c  ure from the SQL
6cd0: 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
6ce0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
6cf0: 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69  mary>..    publi
6d00: 63 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53  c sealed class S
6d10: 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72  QLiteIndexConstr
6d20: 61 69 6e 74 55 73 61 67 65 0d 0a 20 20 20 20 7b  aintUsage..    {
6d30: 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
6d40: 6e 20 49 6e 74 65 72 6e 61 6c 20 43 6f 6e 73 74  n Internal Const
6d50: 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20  ructors..       
6d60: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
6d70: 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73          /// Cons
6d80: 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e  tructs an instan
6d90: 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73  ce of this class
6da0: 20 75 73 69 6e 67 20 74 68 65 20 73 70 65 63 69   using the speci
6db0: 66 69 65 64 20 6e 61 74 69 76 65 0d 0a 20 20 20  fied native..   
6dc0: 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33       /// sqlite3
6dd0: 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e  _index_constrain
6de0: 74 5f 75 73 61 67 65 20 73 74 72 75 63 74 75 72  t_usage structur
6df0: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
6e00: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
6e10: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
6e20: 61 6d 65 3d 22 63 6f 6e 73 74 72 61 69 6e 74 55  ame="constraintU
6e30: 73 61 67 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  sage">..        
6e40: 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 73  /// The native s
6e50: 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e  qlite3_index_con
6e60: 73 74 72 61 69 6e 74 5f 75 73 61 67 65 20 73 74  straint_usage st
6e70: 72 75 63 74 75 72 65 20 74 6f 20 75 73 65 2e 0d  ructure to use..
6e80: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
6e90: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 69  aram>..        i
6ea0: 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 49 6e  nternal SQLiteIn
6eb0: 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  dexConstraintUsa
6ec0: 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ge(..           
6ed0: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
6ee0: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64  hods.sqlite3_ind
6ef0: 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73  ex_constraint_us
6f00: 61 67 65 20 63 6f 6e 73 74 72 61 69 6e 74 55 73  age constraintUs
6f10: 61 67 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  age..           
6f20: 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
6f30: 3a 20 74 68 69 73 28 63 6f 6e 73 74 72 61 69 6e  : this(constrain
6f40: 74 55 73 61 67 65 2e 61 72 67 76 49 6e 64 65 78  tUsage.argvIndex
6f50: 2c 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  , constraintUsag
6f60: 65 2e 6f 6d 69 74 29 0d 0a 20 20 20 20 20 20 20  e.omit)..       
6f70: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
6f80: 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
6f90: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
6fa0: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
6fb0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
6fc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6fd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6fe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
7000: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
7010: 6f 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74  on Private Const
7020: 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20  ructors..       
7030: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
7040: 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73          /// Cons
7050: 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e  tructs an instan
7060: 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73  ce of this class
7070: 20 75 73 69 6e 67 20 74 68 65 20 73 70 65 63 69   using the speci
7080: 66 69 65 64 20 66 69 65 6c 64 0d 0a 20 20 20 20  fied field..    
7090: 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 73 2e 0d      /// values..
70a0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
70b0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
70c0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
70d0: 3d 22 61 72 67 76 49 6e 64 65 78 22 3e 0d 0a 20  ="argvIndex">.. 
70e0: 20 20 20 20 20 20 20 2f 2f 2f 20 49 66 20 67 72         /// If gr
70f0: 65 61 74 65 72 20 74 68 61 6e 20 30 2c 20 63 6f  eater than 0, co
7100: 6e 73 74 72 61 69 6e 74 20 69 73 20 70 61 72 74  nstraint is part
7110: 20 6f 66 20 61 72 67 76 20 74 6f 20 78 46 69 6c   of argv to xFil
7120: 74 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ter...        //
7130: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
7140: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
7150: 61 6d 65 3d 22 6f 6d 69 74 22 3e 0d 0a 20 20 20  ame="omit">..   
7160: 20 20 20 20 20 2f 2f 2f 20 44 6f 20 6e 6f 74 20       /// Do not 
7170: 63 6f 64 65 20 61 20 74 65 73 74 20 66 6f 72 20  code a test for 
7180: 74 68 69 73 20 63 6f 6e 73 74 72 61 69 6e 74 2e  this constraint.
7190: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
71a0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
71b0: 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 49 6e  private SQLiteIn
71c0: 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  dexConstraintUsa
71d0: 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ge(..           
71e0: 20 69 6e 74 20 61 72 67 76 49 6e 64 65 78 2c 0d   int argvIndex,.
71f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 79 74  .            byt
7200: 65 20 6f 6d 69 74 0d 0a 20 20 20 20 20 20 20 20  e omit..        
7210: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
7220: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
7230: 69 73 2e 61 72 67 76 49 6e 64 65 78 20 3d 20 61  is.argvIndex = a
7240: 72 67 76 49 6e 64 65 78 3b 0d 0a 20 20 20 20 20  rgvIndex;..     
7250: 20 20 20 20 20 20 20 74 68 69 73 2e 6f 6d 69 74         this.omit
7260: 20 3d 20 6f 6d 69 74 3b 0d 0a 20 20 20 20 20 20   = omit;..      
7270: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
7280: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
7290: 20 20 20 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: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
72e0: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75        #region Pu
72f0: 62 6c 69 63 20 46 69 65 6c 64 73 0d 0a 20 20 20  blic Fields..   
7300: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
7310: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
7320: 49 66 20 67 72 65 61 74 65 72 20 74 68 61 6e 20  If greater than 
7330: 30 2c 20 63 6f 6e 73 74 72 61 69 6e 74 20 69 73  0, constraint is
7340: 20 70 61 72 74 20 6f 66 20 61 72 67 76 20 74 6f   part of argv to
7350: 20 78 46 69 6c 74 65 72 2e 0d 0a 20 20 20 20 20   xFilter...     
7360: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
7370: 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
7380: 63 20 69 6e 74 20 61 72 67 76 49 6e 64 65 78 3b  c int argvIndex;
7390: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
73a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
73b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
73c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
73d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
73e0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
73f0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
7400: 20 20 20 20 20 20 2f 2f 2f 20 44 6f 20 6e 6f 74        /// Do not
7410: 20 63 6f 64 65 20 61 20 74 65 73 74 20 66 6f 72   code a test for
7420: 20 74 68 69 73 20 63 6f 6e 73 74 72 61 69 6e 74   this constraint
7430: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
7440: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
7450: 20 20 20 70 75 62 6c 69 63 20 62 79 74 65 20 6f     public byte o
7460: 6d 69 74 3b 0d 0a 20 20 20 20 20 20 20 20 23 65  mit;..        #e
7470: 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d  ndregion..    }.
7480: 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
7490: 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
74a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
74b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
74c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
74d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
74e0: 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
74f0: 6e 20 53 51 4c 69 74 65 49 6e 64 65 78 49 6e 70  n SQLiteIndexInp
7500: 75 74 73 20 48 65 6c 70 65 72 20 43 6c 61 73 73  uts Helper Class
7510: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
7520: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69  ry>..    /// Thi
7530: 73 20 63 6c 61 73 73 20 72 65 70 72 65 73 65 6e  s class represen
7540: 74 73 20 74 68 65 20 76 61 72 69 6f 75 73 20 69  ts the various i
7550: 6e 70 75 74 73 20 70 72 6f 76 69 64 65 64 20 62  nputs provided b
7560: 79 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  y the SQLite cor
7570: 65 0d 0a 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61  e..    /// libra
7580: 72 79 20 74 6f 20 74 68 65 20 3c 73 65 65 20 63  ry to the <see c
7590: 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61  ref="ISQLiteMana
75a0: 67 65 64 4d 6f 64 75 6c 65 2e 42 65 73 74 49 6e  gedModule.BestIn
75b0: 64 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  dex" /> method..
75c0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
75d0: 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  ry>..    public 
75e0: 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c  sealed class SQL
75f0: 69 74 65 49 6e 64 65 78 49 6e 70 75 74 73 0d 0a  iteIndexInputs..
7600: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23      {..        #
7610: 72 65 67 69 6f 6e 20 49 6e 74 65 72 6e 61 6c 20  region Internal 
7620: 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20  Constructors..  
7630: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
7640: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
7650: 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69   Constructs an i
7660: 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20  nstance of this 
7670: 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20  class...        
7680: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
7690: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
76a0: 61 6d 20 6e 61 6d 65 3d 22 6e 43 6f 6e 73 74 72  am name="nConstr
76b0: 61 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20  aint">..        
76c0: 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f  /// The number o
76d0: 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  f <see cref="SQL
76e0: 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69  iteIndexConstrai
76f0: 6e 74 22 20 2f 3e 20 69 6e 73 74 61 6e 63 65 73  nt" /> instances
7700: 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   to..        ///
7710: 20 70 72 65 2d 61 6c 6c 6f 63 61 74 65 20 73 70   pre-allocate sp
7720: 61 63 65 20 66 6f 72 2e 0d 0a 20 20 20 20 20 20  ace for...      
7730: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
7740: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
7750: 61 6d 20 6e 61 6d 65 3d 22 6e 4f 72 64 65 72 42  am name="nOrderB
7760: 79 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  y">..        ///
7770: 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 3c   The number of <
7780: 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
7790: 49 6e 64 65 78 4f 72 64 65 72 42 79 22 20 2f 3e  IndexOrderBy" />
77a0: 20 69 6e 73 74 61 6e 63 65 73 20 74 6f 0d 0a 20   instances to.. 
77b0: 20 20 20 20 20 20 20 2f 2f 2f 20 70 72 65 2d 61         /// pre-a
77c0: 6c 6c 6f 63 61 74 65 20 73 70 61 63 65 20 66 6f  llocate space fo
77d0: 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
77e0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
77f0: 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74    internal SQLit
7800: 65 49 6e 64 65 78 49 6e 70 75 74 73 28 69 6e 74  eIndexInputs(int
7810: 20 6e 43 6f 6e 73 74 72 61 69 6e 74 2c 20 69 6e   nConstraint, in
7820: 74 20 6e 4f 72 64 65 72 42 79 29 0d 0a 20 20 20  t nOrderBy)..   
7830: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
7840: 20 20 20 20 63 6f 6e 73 74 72 61 69 6e 74 73 20      constraints 
7850: 3d 20 6e 65 77 20 53 51 4c 69 74 65 49 6e 64 65  = new SQLiteInde
7860: 78 43 6f 6e 73 74 72 61 69 6e 74 5b 6e 43 6f 6e  xConstraint[nCon
7870: 73 74 72 61 69 6e 74 5d 3b 0d 0a 20 20 20 20 20  straint];..     
7880: 20 20 20 20 20 20 20 6f 72 64 65 72 42 79 73 20         orderBys 
7890: 3d 20 6e 65 77 20 53 51 4c 69 74 65 49 6e 64 65  = new SQLiteInde
78a0: 78 4f 72 64 65 72 42 79 5b 6e 4f 72 64 65 72 42  xOrderBy[nOrderB
78b0: 79 5d 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  y];..        }..
78c0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
78d0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
78e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
78f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7920: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
7930: 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
7940: 50 72 6f 70 65 72 74 69 65 73 0d 0a 20 20 20 20  Properties..    
7950: 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69      private SQLi
7960: 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
7970: 74 5b 5d 20 63 6f 6e 73 74 72 61 69 6e 74 73 3b  t[] constraints;
7980: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
7990: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
79a0: 20 2f 2f 2f 20 41 6e 20 61 72 72 61 79 20 6f 66   /// An array of
79b0: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
79c0: 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
79d0: 74 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  t" /> object ins
79e0: 74 61 6e 63 65 73 2c 0d 0a 20 20 20 20 20 20 20  tances,..       
79f0: 20 2f 2f 2f 20 65 61 63 68 20 63 6f 6e 74 61 69   /// each contai
7a00: 6e 69 6e 67 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  ning information
7a10: 20 73 75 70 70 6c 69 65 64 20 62 79 20 74 68 65   supplied by the
7a20: 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62   SQLite core lib
7a30: 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f  rary...        /
7a40: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
7a50: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51         public SQ
7a60: 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61  LiteIndexConstra
7a70: 69 6e 74 5b 5d 20 43 6f 6e 73 74 72 61 69 6e 74  int[] Constraint
7a80: 73 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  s..        {..  
7a90: 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20            get { 
7aa0: 72 65 74 75 72 6e 20 63 6f 6e 73 74 72 61 69 6e  return constrain
7ab0: 74 73 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d  ts; }..        }
7ac0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
7ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7b10: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
7b20: 72 69 76 61 74 65 20 53 51 4c 69 74 65 49 6e 64  rivate SQLiteInd
7b30: 65 78 4f 72 64 65 72 42 79 5b 5d 20 6f 72 64 65  exOrderBy[] orde
7b40: 72 42 79 73 3b 0d 0a 20 20 20 20 20 20 20 20 2f  rBys;..        /
7b50: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
7b60: 20 20 20 20 20 20 2f 2f 2f 20 41 6e 20 61 72 72        /// An arr
7b70: 61 79 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d  ay of <see cref=
7b80: 22 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65  "SQLiteIndexOrde
7b90: 72 42 79 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  rBy" /> object i
7ba0: 6e 73 74 61 6e 63 65 73 2c 0d 0a 20 20 20 20 20  nstances,..     
7bb0: 20 20 20 2f 2f 2f 20 65 61 63 68 20 63 6f 6e 74     /// each cont
7bc0: 61 69 6e 69 6e 67 20 69 6e 66 6f 72 6d 61 74 69  aining informati
7bd0: 6f 6e 20 73 75 70 70 6c 69 65 64 20 62 79 20 74  on supplied by t
7be0: 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c  he SQLite core l
7bf0: 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20  ibrary...       
7c00: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
7c10: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
7c20: 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65 72  SQLiteIndexOrder
7c30: 42 79 5b 5d 20 4f 72 64 65 72 42 79 73 0d 0a 20  By[] OrderBys.. 
7c40: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
7c50: 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75        get { retu
7c60: 72 6e 20 6f 72 64 65 72 42 79 73 3b 20 7d 0d 0a  rn orderBys; }..
7c70: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
7c80: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20     #endregion.. 
7c90: 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65     }..    #endre
7ca0: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  gion....    ////
7cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7cf0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23  ///////....    #
7d00: 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 49 6e 64  region SQLiteInd
7d10: 65 78 4f 75 74 70 75 74 73 20 48 65 6c 70 65 72  exOutputs Helper
7d20: 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20   Class..    /// 
7d30: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
7d40: 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20 72 65  // This class re
7d50: 70 72 65 73 65 6e 74 73 20 74 68 65 20 76 61 72  presents the var
7d60: 69 6f 75 73 20 6f 75 74 70 75 74 73 20 70 72 6f  ious outputs pro
7d70: 76 69 64 65 64 20 74 6f 20 74 68 65 20 53 51 4c  vided to the SQL
7d80: 69 74 65 20 63 6f 72 65 0d 0a 20 20 20 20 2f 2f  ite core..    //
7d90: 2f 20 6c 69 62 72 61 72 79 20 62 79 20 74 68 65  / library by the
7da0: 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
7db0: 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65  iteManagedModule
7dc0: 2e 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 20 6d  .BestIndex" /> m
7dd0: 65 74 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20  ethod...    /// 
7de0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
7df0: 70 75 62 6c 69 63 20 73 65 61 6c 65 64 20 63 6c  public sealed cl
7e00: 61 73 73 20 53 51 4c 69 74 65 49 6e 64 65 78 4f  ass SQLiteIndexO
7e10: 75 74 70 75 74 73 0d 0a 20 20 20 20 7b 0d 0a 20  utputs..    {.. 
7e20: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49         #region I
7e30: 6e 74 65 72 6e 61 6c 20 43 6f 6e 73 74 72 75 63  nternal Construc
7e40: 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tors..        //
7e50: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
7e60: 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75       /// Constru
7e70: 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20  cts an instance 
7e80: 6f 66 20 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a  of this class...
7e90: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
7ea0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
7eb0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
7ec0: 22 6e 43 6f 6e 73 74 72 61 69 6e 74 22 3e 0d 0a  "nConstraint">..
7ed0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
7ee0: 6e 75 6d 62 65 72 20 6f 66 20 3c 73 65 65 20 63  number of <see c
7ef0: 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78  ref="SQLiteIndex
7f00: 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 22  ConstraintUsage"
7f10: 20 2f 3e 20 69 6e 73 74 61 6e 63 65 73 0d 0a 20   /> instances.. 
7f20: 20 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20 70 72         /// to pr
7f30: 65 2d 61 6c 6c 6f 63 61 74 65 20 73 70 61 63 65  e-allocate space
7f40: 20 66 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f   for...        /
7f50: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
7f60: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51       internal SQ
7f70: 4c 69 74 65 49 6e 64 65 78 4f 75 74 70 75 74 73  LiteIndexOutputs
7f80: 28 69 6e 74 20 6e 43 6f 6e 73 74 72 61 69 6e 74  (int nConstraint
7f90: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
7fa0: 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74 72            constr
7fb0: 61 69 6e 74 55 73 61 67 65 73 20 3d 20 6e 65 77  aintUsages = new
7fc0: 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73   SQLiteIndexCons
7fd0: 74 72 61 69 6e 74 55 73 61 67 65 5b 6e 43 6f 6e  traintUsage[nCon
7fe0: 73 74 72 61 69 6e 74 5d 3b 0d 0a 20 20 20 20 20  straint];..     
7ff0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
8000: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
8010: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
8020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
8060: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
8070: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
8080: 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20  / Determines if 
8090: 74 68 65 20 6e 61 74 69 76 65 20 65 73 74 69 6d  the native estim
80a0: 61 74 65 64 52 6f 77 73 20 66 69 65 6c 64 20 63  atedRows field c
80b0: 61 6e 20 62 65 20 75 73 65 64 2c 20 62 61 73 65  an be used, base
80c0: 64 20 6f 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  d on..        //
80d0: 2f 20 74 68 65 20 61 76 61 69 6c 61 62 6c 65 20  / the available 
80e0: 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 53  version of the S
80f0: 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
8100: 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry...        ///
8110: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
8120: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
8130: 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
8140: 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20  Non-zero if the 
8150: 3c 73 65 65 20 63 72 65 66 3d 22 45 73 74 69 6d  <see cref="Estim
8160: 61 74 65 64 52 6f 77 73 22 20 2f 3e 20 70 72 6f  atedRows" /> pro
8170: 70 65 72 74 79 20 69 73 20 73 75 70 70 6f 72 74  perty is support
8180: 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
8190: 62 79 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  by the SQLite co
81a0: 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  re library...   
81b0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
81c0: 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ns>..        pub
81d0: 6c 69 63 20 62 6f 6f 6c 20 43 61 6e 55 73 65 45  lic bool CanUseE
81e0: 73 74 69 6d 61 74 65 64 52 6f 77 73 28 29 0d 0a  stimatedRows()..
81f0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
8200: 20 20 20 20 20 20 20 69 66 20 28 55 6e 73 61 66         if (Unsaf
8210: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
8220: 71 6c 69 74 65 33 5f 6c 69 62 76 65 72 73 69 6f  qlite3_libversio
8230: 6e 5f 6e 75 6d 62 65 72 28 29 20 3e 3d 20 33 30  n_number() >= 30
8240: 30 38 30 30 32 29 0d 0a 20 20 20 20 20 20 20 20  08002)..        
8250: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
8260: 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  rue;....        
8270: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
8280: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
8290: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
82a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
82b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
82c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
82d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
82e0: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
82f0: 6f 6e 20 50 75 62 6c 69 63 20 50 72 6f 70 65 72  on Public Proper
8300: 74 69 65 73 0d 0a 20 20 20 20 20 20 20 20 70 72  ties..        pr
8310: 69 76 61 74 65 20 53 51 4c 69 74 65 49 6e 64 65  ivate SQLiteInde
8320: 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  xConstraintUsage
8330: 5b 5d 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61  [] constraintUsa
8340: 67 65 73 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ges;..        //
8350: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
8360: 20 20 20 20 20 2f 2f 2f 20 41 6e 20 61 72 72 61       /// An arra
8370: 79 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22  y of <see cref="
8380: 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74  SQLiteIndexConst
8390: 72 61 69 6e 74 55 73 61 67 65 22 20 2f 3e 20 6f  raintUsage" /> o
83a0: 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20 2f  bject..        /
83b0: 2f 2f 20 69 6e 73 74 61 6e 63 65 73 2c 20 65 61  // instances, ea
83c0: 63 68 20 63 6f 6e 74 61 69 6e 69 6e 67 20 69 6e  ch containing in
83d0: 66 6f 72 6d 61 74 69 6f 6e 20 74 6f 20 62 65 20  formation to be 
83e0: 73 75 70 70 6c 69 65 64 20 74 6f 20 74 68 65 20  supplied to the 
83f0: 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 20 20  SQLite..        
8400: 2f 2f 2f 20 63 6f 72 65 20 6c 69 62 72 61 72 79  /// core library
8410: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
8420: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
8430: 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
8440: 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55  IndexConstraintU
8450: 73 61 67 65 5b 5d 20 43 6f 6e 73 74 72 61 69 6e  sage[] Constrain
8460: 74 55 73 61 67 65 73 0d 0a 20 20 20 20 20 20 20  tUsages..       
8470: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
8480: 67 65 74 20 7b 20 72 65 74 75 72 6e 20 63 6f 6e  get { return con
8490: 73 74 72 61 69 6e 74 55 73 61 67 65 73 3b 20 7d  straintUsages; }
84a0: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
84b0: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
84c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
84d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
84e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
84f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
8500: 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
8510: 65 20 69 6e 74 20 69 6e 64 65 78 4e 75 6d 62 65  e int indexNumbe
8520: 72 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r;..        /// 
8530: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
8540: 20 20 20 2f 2f 2f 20 4e 75 6d 62 65 72 20 75 73     /// Number us
8550: 65 64 20 74 6f 20 68 65 6c 70 20 69 64 65 6e 74  ed to help ident
8560: 69 66 79 20 74 68 65 20 73 65 6c 65 63 74 65 64  ify the selected
8570: 20 69 6e 64 65 78 2e 20 20 54 68 69 73 20 76 61   index.  This va
8580: 6c 75 65 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20  lue will..      
8590: 20 20 2f 2f 2f 20 6c 61 74 65 72 20 62 65 20 70    /// later be p
85a0: 72 6f 76 69 64 65 64 20 74 6f 20 74 68 65 20 3c  rovided to the <
85b0: 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
85c0: 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 46  eManagedModule.F
85d0: 69 6c 74 65 72 22 20 2f 3e 0d 0a 20 20 20 20 20  ilter" />..     
85e0: 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 2e 0d 0a     /// method...
85f0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
8600: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
8610: 70 75 62 6c 69 63 20 69 6e 74 20 49 6e 64 65 78  public int Index
8620: 4e 75 6d 62 65 72 0d 0a 20 20 20 20 20 20 20 20  Number..        
8630: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67  {..            g
8640: 65 74 20 7b 20 72 65 74 75 72 6e 20 69 6e 64 65  et { return inde
8650: 78 4e 75 6d 62 65 72 3b 20 7d 0d 0a 20 20 20 20  xNumber; }..    
8660: 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 69 6e          set { in
8670: 64 65 78 4e 75 6d 62 65 72 20 3d 20 76 61 6c 75  dexNumber = valu
8680: 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d  e; }..        }.
8690: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
86a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
86b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
86c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
86d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
86e0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
86f0: 69 76 61 74 65 20 73 74 72 69 6e 67 20 69 6e 64  ivate string ind
8700: 65 78 53 74 72 69 6e 67 3b 0d 0a 20 20 20 20 20  exString;..     
8710: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
8720: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 74  ..        /// St
8730: 72 69 6e 67 20 75 73 65 64 20 74 6f 20 68 65 6c  ring used to hel
8740: 70 20 69 64 65 6e 74 69 66 79 20 74 68 65 20 73  p identify the s
8750: 65 6c 65 63 74 65 64 20 69 6e 64 65 78 2e 20 20  elected index.  
8760: 54 68 69 73 20 76 61 6c 75 65 20 77 69 6c 6c 0d  This value will.
8770: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 61 74  .        /// lat
8780: 65 72 20 62 65 20 70 72 6f 76 69 64 65 64 20 74  er be provided t
8790: 6f 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  o the <see cref=
87a0: 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d  "ISQLiteManagedM
87b0: 6f 64 75 6c 65 2e 46 69 6c 74 65 72 22 20 2f 3e  odule.Filter" />
87c0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65  ..        /// me
87d0: 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  thod...        /
87e0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
87f0: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
8800: 72 69 6e 67 20 49 6e 64 65 78 53 74 72 69 6e 67  ring IndexString
8810: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
8820: 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72           get { r
8830: 65 74 75 72 6e 20 69 6e 64 65 78 53 74 72 69 6e  eturn indexStrin
8840: 67 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  g; }..          
8850: 20 20 73 65 74 20 7b 20 69 6e 64 65 78 53 74 72    set { indexStr
8860: 69 6e 67 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a  ing = value; }..
8870: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
8880: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
8890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
88d0: 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
88e0: 69 6e 74 20 6e 65 65 64 54 6f 46 72 65 65 49 6e  int needToFreeIn
88f0: 64 65 78 53 74 72 69 6e 67 3b 0d 0a 20 20 20 20  dexString;..    
8900: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
8910: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
8920: 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 69  on-zero if the i
8930: 6e 64 65 78 20 73 74 72 69 6e 67 20 6d 75 73 74  ndex string must
8940: 20 62 65 20 66 72 65 65 64 20 62 79 20 74 68 65   be freed by the
8950: 20 53 51 4c 69 74 65 20 63 6f 72 65 0d 0a 20 20   SQLite core..  
8960: 20 20 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72        /// librar
8970: 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y...        /// 
8980: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
8990: 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 4e      public int N
89a0: 65 65 64 54 6f 46 72 65 65 49 6e 64 65 78 53 74  eedToFreeIndexSt
89b0: 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ring..        {.
89c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
89d0: 20 7b 20 72 65 74 75 72 6e 20 6e 65 65 64 54 6f   { return needTo
89e0: 46 72 65 65 49 6e 64 65 78 53 74 72 69 6e 67 3b  FreeIndexString;
89f0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
8a00: 73 65 74 20 7b 20 6e 65 65 64 54 6f 46 72 65 65  set { needToFree
8a10: 49 6e 64 65 78 53 74 72 69 6e 67 20 3d 20 76 61  IndexString = va
8a20: 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
8a30: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
8a40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8a50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8a60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8a70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8a80: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
8a90: 70 72 69 76 61 74 65 20 69 6e 74 20 6f 72 64 65  private int orde
8aa0: 72 42 79 43 6f 6e 73 75 6d 65 64 3b 0d 0a 20 20  rByConsumed;..  
8ab0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
8ac0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
8ad0: 20 54 72 75 65 20 69 66 20 6f 75 74 70 75 74 20   True if output 
8ae0: 69 73 20 61 6c 72 65 61 64 79 20 6f 72 64 65 72  is already order
8af0: 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
8b00: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
8b10: 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
8b20: 4f 72 64 65 72 42 79 43 6f 6e 73 75 6d 65 64 0d  OrderByConsumed.
8b30: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
8b40: 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65          get { re
8b50: 74 75 72 6e 20 6f 72 64 65 72 42 79 43 6f 6e 73  turn orderByCons
8b60: 75 6d 65 64 3b 20 7d 0d 0a 20 20 20 20 20 20 20  umed; }..       
8b70: 20 20 20 20 20 73 65 74 20 7b 20 6f 72 64 65 72       set { order
8b80: 42 79 43 6f 6e 73 75 6d 65 64 20 3d 20 76 61 6c  ByConsumed = val
8b90: 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d  ue; }..        }
8ba0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
8bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8bc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8bd0: 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
8c00: 72 69 76 61 74 65 20 64 6f 75 62 6c 65 3f 20 65  rivate double? e
8c10: 73 74 69 6d 61 74 65 64 43 6f 73 74 3b 0d 0a 20  stimatedCost;.. 
8c20: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
8c30: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
8c40: 2f 20 45 73 74 69 6d 61 74 65 64 20 63 6f 73 74  / Estimated cost
8c50: 20 6f 66 20 75 73 69 6e 67 20 74 68 69 73 20 69   of using this i
8c60: 6e 64 65 78 2e 20 20 55 73 69 6e 67 20 61 20 6e  ndex.  Using a n
8c70: 75 6c 6c 20 76 61 6c 75 65 20 68 65 72 65 0d 0a  ull value here..
8c80: 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 64 69          /// indi
8c90: 63 61 74 65 73 20 74 68 61 74 20 61 20 64 65 66  cates that a def
8ca0: 61 75 6c 74 20 65 73 74 69 6d 61 74 65 64 20 63  ault estimated c
8cb0: 6f 73 74 20 76 61 6c 75 65 20 73 68 6f 75 6c 64  ost value should
8cc0: 20 62 65 20 75 73 65 64 2e 0d 0a 20 20 20 20 20   be used...     
8cd0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
8ce0: 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
8cf0: 63 20 64 6f 75 62 6c 65 3f 20 45 73 74 69 6d 61  c double? Estima
8d00: 74 65 64 43 6f 73 74 0d 0a 20 20 20 20 20 20 20  tedCost..       
8d10: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
8d20: 67 65 74 20 7b 20 72 65 74 75 72 6e 20 65 73 74  get { return est
8d30: 69 6d 61 74 65 64 43 6f 73 74 3b 20 7d 0d 0a 20  imatedCost; }.. 
8d40: 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b             set {
8d50: 20 65 73 74 69 6d 61 74 65 64 43 6f 73 74 20 3d   estimatedCost =
8d60: 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20   value; }..     
8d70: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
8d80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8d90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8db0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8dc0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
8dd0: 20 20 20 70 72 69 76 61 74 65 20 6c 6f 6e 67 3f     private long?
8de0: 20 65 73 74 69 6d 61 74 65 64 52 6f 77 73 3b 0d   estimatedRows;.
8df0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
8e00: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
8e10: 2f 2f 2f 20 45 73 74 69 6d 61 74 65 64 20 6e 75  /// Estimated nu
8e20: 6d 62 65 72 20 6f 66 20 72 6f 77 73 20 72 65 74  mber of rows ret
8e30: 75 72 6e 65 64 2e 20 20 55 73 69 6e 67 20 61 20  urned.  Using a 
8e40: 6e 75 6c 6c 20 76 61 6c 75 65 20 68 65 72 65 0d  null value here.
8e50: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 64  .        /// ind
8e60: 69 63 61 74 65 73 20 74 68 61 74 20 61 20 64 65  icates that a de
8e70: 66 61 75 6c 74 20 65 73 74 69 6d 61 74 65 64 20  fault estimated 
8e80: 72 6f 77 73 20 76 61 6c 75 65 20 73 68 6f 75 6c  rows value shoul
8e90: 64 20 62 65 20 75 73 65 64 2e 0d 0a 20 20 20 20  d be used...    
8ea0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
8eb0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
8ec0: 69 63 20 6c 6f 6e 67 3f 20 45 73 74 69 6d 61 74  ic long? Estimat
8ed0: 65 64 52 6f 77 73 0d 0a 20 20 20 20 20 20 20 20  edRows..        
8ee0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67  {..            g
8ef0: 65 74 20 7b 20 72 65 74 75 72 6e 20 65 73 74 69  et { return esti
8f00: 6d 61 74 65 64 52 6f 77 73 3b 20 7d 0d 0a 20 20  matedRows; }..  
8f10: 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20            set { 
8f20: 65 73 74 69 6d 61 74 65 64 52 6f 77 73 20 3d 20  estimatedRows = 
8f30: 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20  value; }..      
8f40: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
8f50: 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a  dregion..    }..
8f60: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
8f70: 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
8f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8fa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8fb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8fc0: 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
8fd0: 20 53 51 4c 69 74 65 49 6e 64 65 78 20 48 65 6c   SQLiteIndex Hel
8fe0: 70 65 72 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f  per Class..    /
8ff0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
9000: 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73    /// This class
9010: 20 72 65 70 72 65 73 65 6e 74 73 20 74 68 65 20   represents the 
9020: 76 61 72 69 6f 75 73 20 69 6e 70 75 74 73 20 61  various inputs a
9030: 6e 64 20 6f 75 74 70 75 74 73 20 75 73 65 64 20  nd outputs used 
9040: 77 69 74 68 20 74 68 65 0d 0a 20 20 20 20 2f 2f  with the..    //
9050: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  / <see cref="ISQ
9060: 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c  LiteManagedModul
9070: 65 2e 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 20  e.BestIndex" /> 
9080: 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f 2f  method...    ///
9090: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
90a0: 20 70 75 62 6c 69 63 20 73 65 61 6c 65 64 20 63   public sealed c
90b0: 6c 61 73 73 20 53 51 4c 69 74 65 49 6e 64 65 78  lass SQLiteIndex
90c0: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
90d0: 20 23 72 65 67 69 6f 6e 20 49 6e 74 65 72 6e 61   #region Interna
90e0: 6c 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a  l Constructors..
90f0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
9100: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
9110: 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e  // Constructs an
9120: 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69   instance of thi
9130: 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20  s class...      
9140: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
9150: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
9160: 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 43 6f 6e 73  aram name="nCons
9170: 74 72 61 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20  traint">..      
9180: 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72    /// The number
9190: 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53   of <see cref="S
91a0: 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72  QLiteIndexConstr
91b0: 61 69 6e 74 22 20 2f 3e 20 28 61 6e 64 0d 0a 20  aint" /> (and.. 
91c0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
91d0: 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65  cref="SQLiteInde
91e0: 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  xConstraintUsage
91f0: 22 20 2f 3e 29 20 69 6e 73 74 61 6e 63 65 73 20  " />) instances 
9200: 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  to..        /// 
9210: 70 72 65 2d 61 6c 6c 6f 63 61 74 65 20 73 70 61  pre-allocate spa
9220: 63 65 20 66 6f 72 2e 0d 0a 20 20 20 20 20 20 20  ce for...       
9230: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
9240: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
9250: 6d 20 6e 61 6d 65 3d 22 6e 4f 72 64 65 72 42 79  m name="nOrderBy
9260: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
9270: 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 3c 73  The number of <s
9280: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49  ee cref="SQLiteI
9290: 6e 64 65 78 4f 72 64 65 72 42 79 22 20 2f 3e 20  ndexOrderBy" /> 
92a0: 69 6e 73 74 61 6e 63 65 73 20 74 6f 0d 0a 20 20  instances to..  
92b0: 20 20 20 20 20 20 2f 2f 2f 20 70 72 65 2d 61 6c        /// pre-al
92c0: 6c 6f 63 61 74 65 20 73 70 61 63 65 20 66 6f 72  locate space for
92d0: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
92e0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
92f0: 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65   internal SQLite
9300: 49 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20 20  Index(..        
9310: 20 20 20 20 69 6e 74 20 6e 43 6f 6e 73 74 72 61      int nConstra
9320: 69 6e 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  int,..          
9330: 20 20 69 6e 74 20 6e 4f 72 64 65 72 42 79 0d 0a    int nOrderBy..
9340: 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
9350: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
9360: 20 20 20 20 20 20 69 6e 70 75 74 73 20 3d 20 6e        inputs = n
9370: 65 77 20 53 51 4c 69 74 65 49 6e 64 65 78 49 6e  ew SQLiteIndexIn
9380: 70 75 74 73 28 6e 43 6f 6e 73 74 72 61 69 6e 74  puts(nConstraint
9390: 2c 20 6e 4f 72 64 65 72 42 79 29 3b 0d 0a 20 20  , nOrderBy);..  
93a0: 20 20 20 20 20 20 20 20 20 20 6f 75 74 70 75 74            output
93b0: 73 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 49 6e  s = new SQLiteIn
93c0: 64 65 78 4f 75 74 70 75 74 73 28 6e 43 6f 6e 73  dexOutputs(nCons
93d0: 74 72 61 69 6e 74 29 3b 0d 0a 20 20 20 20 20 20  traint);..      
93e0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
93f0: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
9400: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
9410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
9450: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 6e        #region In
9460: 74 65 72 6e 61 6c 20 4d 61 72 73 68 61 6c 20 48  ternal Marshal H
9470: 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20  elper Methods.. 
9480: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
9490: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
94a0: 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 6e 61 74  / Converts a nat
94b0: 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 61  ive pointer to a
94c0: 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f   native sqlite3_
94d0: 69 6e 64 65 78 5f 69 6e 66 6f 20 73 74 72 75 63  index_info struc
94e0: 74 75 72 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ture..        //
94f0: 2f 20 69 6e 74 6f 20 61 20 6e 65 77 20 3c 73 65  / into a new <se
9500: 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e  e cref="SQLiteIn
9510: 64 65 78 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  dex" /> object i
9520: 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20  nstance...      
9530: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
9540: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
9550: 61 72 61 6d 20 6e 61 6d 65 3d 22 70 49 6e 64 65  aram name="pInde
9560: 78 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  x">..        ///
9570: 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e   The native poin
9580: 74 65 72 20 74 6f 20 74 68 65 20 6e 61 74 69 76  ter to the nativ
9590: 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  e sqlite3_index_
95a0: 69 6e 66 6f 20 73 74 72 75 63 74 75 72 65 20 74  info structure t
95b0: 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  o..        /// c
95c0: 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 20  onvert...       
95d0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
95e0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
95f0: 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78 22 3e 0d  m name="index">.
9600: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f  .        /// Upo
9610: 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69 73 20  n success, this 
9620: 70 61 72 61 6d 65 74 65 72 20 77 69 6c 6c 20 62  parameter will b
9630: 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f  e modified to co
9640: 6e 74 61 69 6e 20 74 68 65 20 6e 65 77 6c 79 0d  ntain the newly.
9650: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 72 65  .        /// cre
9660: 61 74 65 64 20 3c 73 65 65 20 63 72 65 66 3d 22  ated <see cref="
9670: 53 51 4c 69 74 65 49 6e 64 65 78 22 20 2f 3e 20  SQLiteIndex" /> 
9680: 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e  object instance.
9690: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
96a0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
96b0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
96c0: 76 6f 69 64 20 46 72 6f 6d 49 6e 74 50 74 72 28  void FromIntPtr(
96d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
96e0: 74 50 74 72 20 70 49 6e 64 65 78 2c 0d 0a 20 20  tPtr pIndex,..  
96f0: 20 20 20 20 20 20 20 20 20 20 72 65 66 20 53 51            ref SQ
9700: 4c 69 74 65 49 6e 64 65 78 20 69 6e 64 65 78 0d  LiteIndex index.
9710: 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
9720: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
9730: 20 20 20 20 20 20 20 69 66 20 28 70 49 6e 64 65         if (pInde
9740: 78 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  x == IntPtr.Zero
9750: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
9760: 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20     return;....  
9770: 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66            int of
9780: 66 73 65 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20  fset = 0;....   
9790: 20 20 20 20 20 20 20 20 20 69 6e 74 20 6e 43 6f           int nCo
97a0: 6e 73 74 72 61 69 6e 74 20 3d 20 53 51 4c 69 74  nstraint = SQLit
97b0: 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74  eMarshal.ReadInt
97c0: 33 32 28 70 49 6e 64 65 78 2c 20 6f 66 66 73 65  32(pIndex, offse
97d0: 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  t);....         
97e0: 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69     offset = SQLi
97f0: 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66  teMarshal.NextOf
9800: 66 73 65 74 4f 66 28 6f 66 66 73 65 74 2c 20 73  fsetOf(offset, s
9810: 69 7a 65 6f 66 28 69 6e 74 29 2c 0d 0a 20 20 20  izeof(int),..   
9820: 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
9830: 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20  Ptr.Size);....  
9840: 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
9850: 20 70 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20 53   pConstraint = S
9860: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61  QLiteMarshal.Rea
9870: 64 49 6e 74 50 74 72 28 70 49 6e 64 65 78 2c 20  dIntPtr(pIndex, 
9880: 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20  offset);....    
9890: 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d          offset =
98a0: 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e   SQLiteMarshal.N
98b0: 65 78 74 4f 66 66 73 65 74 4f 66 28 6f 66 66 73  extOffsetOf(offs
98c0: 65 74 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c  et, IntPtr.Size,
98d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
98e0: 20 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d    sizeof(int));.
98f0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
9900: 6e 74 20 6e 4f 72 64 65 72 42 79 20 3d 20 53 51  nt nOrderBy = SQ
9910: 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64  LiteMarshal.Read
9920: 49 6e 74 33 32 28 70 49 6e 64 65 78 2c 20 6f 66  Int32(pIndex, of
9930: 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  fset);....      
9940: 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53        offset = S
9950: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78  QLiteMarshal.Nex
9960: 74 4f 66 66 73 65 74 4f 66 28 6f 66 66 73 65 74  tOffsetOf(offset
9970: 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c 0d 0a  , sizeof(int),..
9980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9990: 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d  IntPtr.Size);...
99a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
99b0: 50 74 72 20 70 4f 72 64 65 72 42 79 20 3d 20 53  Ptr pOrderBy = S
99c0: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61  QLiteMarshal.Rea
99d0: 64 49 6e 74 50 74 72 28 70 49 6e 64 65 78 2c 20  dIntPtr(pIndex, 
99e0: 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20  offset);....    
99f0: 20 20 20 20 20 20 20 20 69 6e 64 65 78 20 3d 20          index = 
9a00: 6e 65 77 20 53 51 4c 69 74 65 49 6e 64 65 78 28  new SQLiteIndex(
9a10: 6e 43 6f 6e 73 74 72 61 69 6e 74 2c 20 6e 4f 72  nConstraint, nOr
9a20: 64 65 72 42 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  derBy);....     
9a30: 20 20 20 20 20 20 20 54 79 70 65 20 69 6e 64 65         Type inde
9a40: 78 43 6f 6e 73 74 72 61 69 6e 74 54 79 70 65 20  xConstraintType 
9a50: 3d 20 74 79 70 65 6f 66 28 0d 0a 20 20 20 20 20  = typeof(..     
9a60: 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66             Unsaf
9a70: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
9a80: 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e  qlite3_index_con
9a90: 73 74 72 61 69 6e 74 29 3b 0d 0a 0d 0a 20 20 20  straint);....   
9aa0: 20 20 20 20 20 20 20 20 20 69 6e 74 20 73 69 7a           int siz
9ab0: 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 54 79 70  eOfConstraintTyp
9ac0: 65 20 3d 20 4d 61 72 73 68 61 6c 2e 53 69 7a 65  e = Marshal.Size
9ad0: 4f 66 28 69 6e 64 65 78 43 6f 6e 73 74 72 61 69  Of(indexConstrai
9ae0: 6e 74 54 79 70 65 29 3b 0d 0a 0d 0a 20 20 20 20  ntType);....    
9af0: 20 20 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74          for (int
9b00: 20 69 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20 30   iConstraint = 0
9b10: 3b 20 69 43 6f 6e 73 74 72 61 69 6e 74 20 3c 20  ; iConstraint < 
9b20: 6e 43 6f 6e 73 74 72 61 69 6e 74 3b 20 69 43 6f  nConstraint; iCo
9b30: 6e 73 74 72 61 69 6e 74 2b 2b 29 0d 0a 20 20 20  nstraint++)..   
9b40: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
9b50: 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
9b60: 74 72 20 70 4f 66 66 73 65 74 20 3d 20 53 51 4c  tr pOffset = SQL
9b70: 69 74 65 4d 61 72 73 68 61 6c 2e 49 6e 74 50 74  iteMarshal.IntPt
9b80: 72 46 6f 72 4f 66 66 73 65 74 28 0d 0a 20 20 20  rForOffset(..   
9b90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9ba0: 20 70 43 6f 6e 73 74 72 61 69 6e 74 2c 20 69 43   pConstraint, iC
9bb0: 6f 6e 73 74 72 61 69 6e 74 20 2a 20 73 69 7a 65  onstraint * size
9bc0: 4f 66 43 6f 6e 73 74 72 61 69 6e 74 54 79 70 65  OfConstraintType
9bd0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
9be0: 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69        UnsafeNati
9bf0: 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
9c00: 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69  3_index_constrai
9c10: 6e 74 20 63 6f 6e 73 74 72 61 69 6e 74 20 3d 0d  nt constraint =.
9c20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9c30: 20 20 20 20 20 28 55 6e 73 61 66 65 4e 61 74 69       (UnsafeNati
9c40: 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
9c50: 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69  3_index_constrai
9c60: 6e 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nt)..           
9c70: 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72               Mar
9c80: 73 68 61 6c 2e 50 74 72 54 6f 53 74 72 75 63 74  shal.PtrToStruct
9c90: 75 72 65 28 70 4f 66 66 73 65 74 2c 20 69 6e 64  ure(pOffset, ind
9ca0: 65 78 43 6f 6e 73 74 72 61 69 6e 74 54 79 70 65  exConstraintType
9cb0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
9cc0: 20 20 20 20 20 20 69 6e 64 65 78 2e 49 6e 70 75        index.Inpu
9cd0: 74 73 2e 43 6f 6e 73 74 72 61 69 6e 74 73 5b 69  ts.Constraints[i
9ce0: 43 6f 6e 73 74 72 61 69 6e 74 5d 20 3d 0d 0a 20  Constraint] =.. 
9cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9d00: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 49 6e 64     new SQLiteInd
9d10: 65 78 43 6f 6e 73 74 72 61 69 6e 74 28 63 6f 6e  exConstraint(con
9d20: 73 74 72 61 69 6e 74 29 3b 0d 0a 20 20 20 20 20  straint);..     
9d30: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
9d40: 20 20 20 20 20 20 20 20 54 79 70 65 20 69 6e 64          Type ind
9d50: 65 78 4f 72 64 65 72 42 79 54 79 70 65 20 3d 20  exOrderByType = 
9d60: 74 79 70 65 6f 66 28 0d 0a 20 20 20 20 20 20 20  typeof(..       
9d70: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
9d80: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
9d90: 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72  ite3_index_order
9da0: 62 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  by);....        
9db0: 20 20 20 20 69 6e 74 20 73 69 7a 65 4f 66 4f 72      int sizeOfOr
9dc0: 64 65 72 42 79 54 79 70 65 20 3d 20 4d 61 72 73  derByType = Mars
9dd0: 68 61 6c 2e 53 69 7a 65 4f 66 28 69 6e 64 65 78  hal.SizeOf(index
9de0: 4f 72 64 65 72 42 79 54 79 70 65 29 3b 0d 0a 0d  OrderByType);...
9df0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72  .            for
9e00: 20 28 69 6e 74 20 69 4f 72 64 65 72 42 79 20 3d   (int iOrderBy =
9e10: 20 30 3b 20 69 4f 72 64 65 72 42 79 20 3c 20 6e   0; iOrderBy < n
9e20: 4f 72 64 65 72 42 79 3b 20 69 4f 72 64 65 72 42  OrderBy; iOrderB
9e30: 79 2b 2b 29 0d 0a 20 20 20 20 20 20 20 20 20 20  y++)..          
9e40: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
9e50: 20 20 20 20 20 49 6e 74 50 74 72 20 70 4f 66 66       IntPtr pOff
9e60: 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73  set = SQLiteMars
9e70: 68 61 6c 2e 49 6e 74 50 74 72 46 6f 72 4f 66 66  hal.IntPtrForOff
9e80: 73 65 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  set(..          
9e90: 20 20 20 20 20 20 20 20 20 20 70 4f 72 64 65 72            pOrder
9ea0: 42 79 2c 20 69 4f 72 64 65 72 42 79 20 2a 20 73  By, iOrderBy * s
9eb0: 69 7a 65 4f 66 4f 72 64 65 72 42 79 54 79 70 65  izeOfOrderByType
9ec0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
9ed0: 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69        UnsafeNati
9ee0: 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
9ef0: 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 20  3_index_orderby 
9f00: 6f 72 64 65 72 42 79 20 3d 0d 0a 20 20 20 20 20  orderBy =..     
9f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
9f20: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
9f30: 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65  ods.sqlite3_inde
9f40: 78 5f 6f 72 64 65 72 62 79 29 0d 0a 20 20 20 20  x_orderby)..    
9f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9f60: 20 20 20 20 4d 61 72 73 68 61 6c 2e 50 74 72 54      Marshal.PtrT
9f70: 6f 53 74 72 75 63 74 75 72 65 28 70 4f 66 66 73  oStructure(pOffs
9f80: 65 74 2c 20 69 6e 64 65 78 4f 72 64 65 72 42 79  et, indexOrderBy
9f90: 54 79 70 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Type);....      
9fa0: 20 20 20 20 20 20 20 20 20 20 69 6e 64 65 78 2e            index.
9fb0: 49 6e 70 75 74 73 2e 4f 72 64 65 72 42 79 73 5b  Inputs.OrderBys[
9fc0: 69 4f 72 64 65 72 42 79 5d 20 3d 0d 0a 20 20 20  iOrderBy] =..   
9fd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9fe0: 20 6e 65 77 20 53 51 4c 69 74 65 49 6e 64 65 78   new SQLiteIndex
9ff0: 4f 72 64 65 72 42 79 28 6f 72 64 65 72 42 79 29  OrderBy(orderBy)
a000: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
a010: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
a020: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
a030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
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 50 6f 70 75 6c 61 74 65 73 20 74   /// Populates t
a0a0: 68 65 20 6f 75 74 70 75 74 73 20 6f 66 20 61 20  he outputs of a 
a0b0: 70 72 65 2d 61 6c 6c 6f 63 61 74 65 64 20 6e 61  pre-allocated na
a0c0: 74 69 76 65 20 73 71 6c 69 74 65 33 5f 69 6e 64  tive sqlite3_ind
a0d0: 65 78 5f 69 6e 66 6f 0d 0a 20 20 20 20 20 20 20  ex_info..       
a0e0: 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 20 75   /// structure u
a0f0: 73 69 6e 67 20 61 6e 20 65 78 69 73 74 69 6e 67  sing an existing
a100: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
a110: 74 65 49 6e 64 65 78 22 20 2f 3e 20 6f 62 6a 65  teIndex" /> obje
a120: 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ct..        /// 
a130: 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20  instance...     
a140: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
a150: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
a160: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65  param name="inde
a170: 78 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  x">..        ///
a180: 20 54 68 65 20 65 78 69 73 74 69 6e 67 20 3c 73   The existing <s
a190: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49  ee cref="SQLiteI
a1a0: 6e 64 65 78 22 20 2f 3e 20 6f 62 6a 65 63 74 20  ndex" /> object 
a1b0: 69 6e 73 74 61 6e 63 65 20 63 6f 6e 74 61 69 6e  instance contain
a1c0: 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ing..        ///
a1d0: 20 74 68 65 20 6f 75 74 70 75 74 20 64 61 74 61   the output data
a1e0: 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20 20 20   to use...      
a1f0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
a200: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
a210: 61 6d 20 6e 61 6d 65 3d 22 70 49 6e 64 65 78 22  am name="pIndex"
a220: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
a230: 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
a240: 72 20 74 6f 20 74 68 65 20 70 72 65 2d 61 6c 6c  r to the pre-all
a250: 6f 63 61 74 65 64 20 6e 61 74 69 76 65 20 73 71  ocated native sq
a260: 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f  lite3_index_info
a270: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74  ..        /// st
a280: 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  ructure...      
a290: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
a2a0: 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
a2b0: 20 73 74 61 74 69 63 20 76 6f 69 64 20 54 6f 49   static void ToI
a2c0: 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20  ntPtr(..        
a2d0: 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78 20      SQLiteIndex 
a2e0: 69 6e 64 65 78 2c 0d 0a 20 20 20 20 20 20 20 20  index,..        
a2f0: 20 20 20 20 49 6e 74 50 74 72 20 70 49 6e 64 65      IntPtr pInde
a300: 78 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  x..            )
a310: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
a320: 20 20 20 20 20 20 20 20 20 69 66 20 28 28 69 6e           if ((in
a330: 64 65 78 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20  dex == null) || 
a340: 28 69 6e 64 65 78 2e 49 6e 70 75 74 73 20 3d 3d  (index.Inputs ==
a350: 20 6e 75 6c 6c 29 20 7c 7c 0d 0a 20 20 20 20 20   null) ||..     
a360: 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 64 65             (inde
a370: 78 2e 49 6e 70 75 74 73 2e 43 6f 6e 73 74 72 61  x.Inputs.Constra
a380: 69 6e 74 73 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c  ints == null) ||
a390: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a3a0: 20 20 28 69 6e 64 65 78 2e 4f 75 74 70 75 74 73    (index.Outputs
a3b0: 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 0d 0a 20 20   == null) ||..  
a3c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69                (i
a3d0: 6e 64 65 78 2e 4f 75 74 70 75 74 73 2e 43 6f 6e  ndex.Outputs.Con
a3e0: 73 74 72 61 69 6e 74 55 73 61 67 65 73 20 3d 3d  straintUsages ==
a3f0: 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20 20 20   null))..       
a400: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
a410: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d          return;.
a420: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
a430: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
a440: 20 28 70 49 6e 64 65 78 20 3d 3d 20 49 6e 74 50   (pIndex == IntP
a450: 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
a460: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
a470: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
a480: 20 69 6e 74 20 6f 66 66 73 65 74 20 3d 20 30 3b   int offset = 0;
a490: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
a4a0: 69 6e 74 20 6e 43 6f 6e 73 74 72 61 69 6e 74 20  int nConstraint 
a4b0: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
a4c0: 52 65 61 64 49 6e 74 33 32 28 70 49 6e 64 65 78  ReadInt32(pIndex
a4d0: 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20  , offset);....  
a4e0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 43            if (nC
a4f0: 6f 6e 73 74 72 61 69 6e 74 20 21 3d 20 69 6e 64  onstraint != ind
a500: 65 78 2e 49 6e 70 75 74 73 2e 43 6f 6e 73 74 72  ex.Inputs.Constr
a510: 61 69 6e 74 73 2e 4c 65 6e 67 74 68 29 0d 0a 20  aints.Length).. 
a520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
a530: 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20  eturn;....      
a540: 20 20 20 20 20 20 69 66 20 28 6e 43 6f 6e 73 74        if (nConst
a550: 72 61 69 6e 74 20 21 3d 20 69 6e 64 65 78 2e 4f  raint != index.O
a560: 75 74 70 75 74 73 2e 43 6f 6e 73 74 72 61 69 6e  utputs.Constrain
a570: 74 55 73 61 67 65 73 2e 4c 65 6e 67 74 68 29 0d  tUsages.Length).
a580: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a590: 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20   return;....    
a5a0: 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d          offset =
a5b0: 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e   SQLiteMarshal.N
a5c0: 65 78 74 4f 66 66 73 65 74 4f 66 28 6f 66 66 73  extOffsetOf(offs
a5d0: 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c  et, sizeof(int),
a5e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a5f0: 20 20 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b 0d    IntPtr.Size);.
a600: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f  ...            o
a610: 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61  ffset = SQLiteMa
a620: 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74  rshal.NextOffset
a630: 4f 66 28 6f 66 66 73 65 74 2c 20 49 6e 74 50 74  Of(offset, IntPt
a640: 72 2e 53 69 7a 65 2c 0d 0a 20 20 20 20 20 20 20  r.Size,..       
a650: 20 20 20 20 20 20 20 20 20 73 69 7a 65 6f 66 28           sizeof(
a660: 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  int));....      
a670: 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53        offset = S
a680: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78  QLiteMarshal.Nex
a690: 74 4f 66 66 73 65 74 4f 66 28 6f 66 66 73 65 74  tOffsetOf(offset
a6a0: 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c 0d 0a  , sizeof(int),..
a6b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a6c0: 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d  IntPtr.Size);...
a6d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66  .            off
a6e0: 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73  set = SQLiteMars
a6f0: 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66  hal.NextOffsetOf
a700: 28 6f 66 66 73 65 74 2c 20 49 6e 74 50 74 72 2e  (offset, IntPtr.
a710: 53 69 7a 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  Size,..         
a720: 20 20 20 20 20 20 20 73 69 7a 65 6f 66 28 69 6e         sizeof(in
a730: 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  t));....        
a740: 20 20 20 20 49 6e 74 50 74 72 20 70 43 6f 6e 73      IntPtr pCons
a750: 74 72 61 69 6e 74 55 73 61 67 65 20 3d 20 53 51  traintUsage = SQ
a760: 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64  LiteMarshal.Read
a770: 49 6e 74 50 74 72 28 70 49 6e 64 65 78 2c 20 6f  IntPtr(pIndex, o
a780: 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  ffset);....     
a790: 20 20 20 20 20 20 20 69 6e 74 20 73 69 7a 65 4f         int sizeO
a7a0: 66 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  fConstraintUsage
a7b0: 54 79 70 65 20 3d 20 4d 61 72 73 68 61 6c 2e 53  Type = Marshal.S
a7c0: 69 7a 65 4f 66 28 74 79 70 65 6f 66 28 0d 0a 20  izeOf(typeof(.. 
a7d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55                 U
a7e0: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
a7f0: 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ds.sqlite3_index
a800: 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61 67  _constraint_usag
a810: 65 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  e));....        
a820: 20 20 20 20 66 6f 72 20 28 69 6e 74 20 69 43 6f      for (int iCo
a830: 6e 73 74 72 61 69 6e 74 20 3d 20 30 3b 20 69 43  nstraint = 0; iC
a840: 6f 6e 73 74 72 61 69 6e 74 20 3c 20 6e 43 6f 6e  onstraint < nCon
a850: 73 74 72 61 69 6e 74 3b 20 69 43 6f 6e 73 74 72  straint; iConstr
a860: 61 69 6e 74 2b 2b 29 0d 0a 20 20 20 20 20 20 20  aint++)..       
a870: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
a880: 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61          UnsafeNa
a890: 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
a8a0: 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72  te3_index_constr
a8b0: 61 69 6e 74 5f 75 73 61 67 65 20 63 6f 6e 73 74  aint_usage const
a8c0: 72 61 69 6e 74 55 73 61 67 65 20 3d 0d 0a 20 20  raintUsage =..  
a8d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a8e0: 20 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69    new UnsafeNati
a8f0: 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
a900: 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69  3_index_constrai
a910: 6e 74 5f 75 73 61 67 65 28 0d 0a 20 20 20 20 20  nt_usage(..     
a920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a930: 20 20 20 69 6e 64 65 78 2e 4f 75 74 70 75 74 73     index.Outputs
a940: 2e 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  .ConstraintUsage
a950: 73 5b 69 43 6f 6e 73 74 72 61 69 6e 74 5d 29 3b  s[iConstraint]);
a960: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
a970: 20 20 20 20 4d 61 72 73 68 61 6c 2e 53 74 72 75      Marshal.Stru
a980: 63 74 75 72 65 54 6f 50 74 72 28 0d 0a 20 20 20  ctureToPtr(..   
a990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a9a0: 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65   constraintUsage
a9b0: 2c 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  , SQLiteMarshal.
a9c0: 49 6e 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28  IntPtrForOffset(
a9d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a9e0: 20 20 20 20 20 20 70 43 6f 6e 73 74 72 61 69 6e        pConstrain
a9f0: 74 55 73 61 67 65 2c 20 69 43 6f 6e 73 74 72 61  tUsage, iConstra
aa00: 69 6e 74 20 2a 20 73 69 7a 65 4f 66 43 6f 6e 73  int * sizeOfCons
aa10: 74 72 61 69 6e 74 55 73 61 67 65 54 79 70 65 29  traintUsageType)
aa20: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
aa30: 20 20 20 20 20 20 20 66 61 6c 73 65 29 3b 0d 0a         false);..
aa40: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
aa50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66  .            off
aa60: 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73  set = SQLiteMars
aa70: 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66  hal.NextOffsetOf
aa80: 28 6f 66 66 73 65 74 2c 20 49 6e 74 50 74 72 2e  (offset, IntPtr.
aa90: 53 69 7a 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  Size,..         
aaa0: 20 20 20 20 20 20 20 73 69 7a 65 6f 66 28 69 6e         sizeof(in
aab0: 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  t));....        
aac0: 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61      SQLiteMarsha
aad0: 6c 2e 57 72 69 74 65 49 6e 74 33 32 28 70 49 6e  l.WriteInt32(pIn
aae0: 64 65 78 2c 20 6f 66 66 73 65 74 2c 0d 0a 20 20  dex, offset,..  
aaf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
ab00: 64 65 78 2e 4f 75 74 70 75 74 73 2e 49 6e 64 65  dex.Outputs.Inde
ab10: 78 4e 75 6d 62 65 72 29 3b 0d 0a 0d 0a 20 20 20  xNumber);....   
ab20: 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20           offset 
ab30: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
ab40: 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 6f 66 66  NextOffsetOf(off
ab50: 73 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29  set, sizeof(int)
ab60: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
ab70: 20 20 20 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b     IntPtr.Size);
ab80: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
ab90: 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57 72  SQLiteMarshal.Wr
aba0: 69 74 65 49 6e 74 50 74 72 28 70 49 6e 64 65 78  iteIntPtr(pIndex
abb0: 2c 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20 20  , offset,..     
abc0: 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
abd0: 65 53 74 72 69 6e 67 2e 55 74 66 38 49 6e 74 50  eString.Utf8IntP
abe0: 74 72 46 72 6f 6d 53 74 72 69 6e 67 28 69 6e 64  trFromString(ind
abf0: 65 78 2e 4f 75 74 70 75 74 73 2e 49 6e 64 65 78  ex.Outputs.Index
ac00: 53 74 72 69 6e 67 29 29 3b 0d 0a 0d 0a 20 20 20  String));....   
ac10: 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20           offset 
ac20: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
ac30: 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 6f 66 66  NextOffsetOf(off
ac40: 73 65 74 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65  set, IntPtr.Size
ac50: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
ac60: 20 20 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b     sizeof(int));
ac70: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
ac80: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
ac90: 2f 2f 20 4e 4f 54 45 3a 20 57 65 20 6a 75 73 74  // NOTE: We just
aca0: 20 61 6c 6c 6f 63 61 74 65 64 20 74 68 65 20 49   allocated the I
acb0: 6e 64 65 78 53 74 72 69 6e 67 20 66 69 65 6c 64  ndexString field
acc0: 3b 20 74 68 65 72 65 66 6f 72 65 2c 20 77 65 0d  ; therefore, we.
acd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  .            // 
ace0: 20 20 20 20 20 20 6e 65 65 64 20 74 6f 20 73 65        need to se
acf0: 74 20 74 68 65 20 4e 65 65 64 54 6f 46 72 65 65  t the NeedToFree
ad00: 49 6e 64 65 78 53 74 72 69 6e 67 20 66 69 65 6c  IndexString fiel
ad10: 64 20 74 6f 20 6e 6f 6e 2d 7a 65 72 6f 2e 0d 0a  d to non-zero...
ad20: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
ad30: 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
ad40: 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49  teMarshal.WriteI
ad50: 6e 74 33 32 28 70 49 6e 64 65 78 2c 20 6f 66 66  nt32(pIndex, off
ad60: 73 65 74 2c 20 31 29 3b 0d 0a 0d 0a 20 20 20 20  set, 1);....    
ad70: 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d          offset =
ad80: 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e   SQLiteMarshal.N
ad90: 65 78 74 4f 66 66 73 65 74 4f 66 28 6f 66 66 73  extOffsetOf(offs
ada0: 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c  et, sizeof(int),
adb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
adc0: 20 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d    sizeof(int));.
add0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  ...            S
ade0: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57 72 69  QLiteMarshal.Wri
adf0: 74 65 49 6e 74 33 32 28 70 49 6e 64 65 78 2c 20  teInt32(pIndex, 
ae00: 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20 20 20 20  offset,..       
ae10: 20 20 20 20 20 20 20 20 20 69 6e 64 65 78 2e 4f           index.O
ae20: 75 74 70 75 74 73 2e 4f 72 64 65 72 42 79 43 6f  utputs.OrderByCo
ae30: 6e 73 75 6d 65 64 29 3b 0d 0a 0d 0a 20 20 20 20  nsumed);....    
ae40: 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d          offset =
ae50: 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e   SQLiteMarshal.N
ae60: 65 78 74 4f 66 66 73 65 74 4f 66 28 6f 66 66 73  extOffsetOf(offs
ae70: 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c  et, sizeof(int),
ae80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ae90: 20 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29    sizeof(double)
aea0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
aeb0: 20 20 69 66 20 28 69 6e 64 65 78 2e 4f 75 74 70    if (index.Outp
aec0: 75 74 73 2e 45 73 74 69 6d 61 74 65 64 43 6f 73  uts.EstimatedCos
aed0: 74 2e 48 61 73 56 61 6c 75 65 29 0d 0a 20 20 20  t.HasValue)..   
aee0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
aef0: 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
af00: 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 44  teMarshal.WriteD
af10: 6f 75 62 6c 65 28 70 49 6e 64 65 78 2c 20 6f 66  ouble(pIndex, of
af20: 66 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  fset,..         
af30: 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 65 78             index
af40: 2e 4f 75 74 70 75 74 73 2e 45 73 74 69 6d 61 74  .Outputs.Estimat
af50: 65 64 43 6f 73 74 2e 47 65 74 56 61 6c 75 65 4f  edCost.GetValueO
af60: 72 44 65 66 61 75 6c 74 28 29 29 3b 0d 0a 20 20  rDefault());..  
af70: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
af80: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69             if (i
af90: 6e 64 65 78 2e 4f 75 74 70 75 74 73 2e 43 61 6e  ndex.Outputs.Can
afa0: 55 73 65 45 73 74 69 6d 61 74 65 64 52 6f 77 73  UseEstimatedRows
afb0: 28 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20  () &&..         
afc0: 20 20 20 20 20 20 20 69 6e 64 65 78 2e 4f 75 74         index.Out
afd0: 70 75 74 73 2e 45 73 74 69 6d 61 74 65 64 52 6f  puts.EstimatedRo
afe0: 77 73 2e 48 61 73 56 61 6c 75 65 29 0d 0a 20 20  ws.HasValue)..  
aff0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
b000: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
b010: 69 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65  iteMarshal.Write
b020: 49 6e 74 36 34 28 70 49 6e 64 65 78 2c 20 6f 66  Int64(pIndex, of
b030: 66 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  fset,..         
b040: 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 65 78             index
b050: 2e 4f 75 74 70 75 74 73 2e 45 73 74 69 6d 61 74  .Outputs.Estimat
b060: 65 64 52 6f 77 73 2e 47 65 74 56 61 6c 75 65 4f  edRows.GetValueO
b070: 72 44 65 66 61 75 6c 74 28 29 29 3b 0d 0a 20 20  rDefault());..  
b080: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
b090: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
b0a0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
b0b0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
b0c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b0d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b0e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b0f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
b100: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
b110: 20 50 75 62 6c 69 63 20 50 72 6f 70 65 72 74 69   Public Properti
b120: 65 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  es..        priv
b130: 61 74 65 20 53 51 4c 69 74 65 49 6e 64 65 78 49  ate SQLiteIndexI
b140: 6e 70 75 74 73 20 69 6e 70 75 74 73 3b 0d 0a 20  nputs inputs;.. 
b150: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
b160: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
b170: 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
b180: 22 53 51 4c 69 74 65 49 6e 64 65 78 49 6e 70 75  "SQLiteIndexInpu
b190: 74 73 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  ts" /> object in
b1a0: 73 74 61 6e 63 65 20 63 6f 6e 74 61 69 6e 69 6e  stance containin
b1b0: 67 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  g..        /// t
b1c0: 68 65 20 69 6e 70 75 74 73 20 74 6f 20 74 68 65  he inputs to the
b1d0: 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
b1e0: 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65  iteManagedModule
b1f0: 2e 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 0d 0a  .BestIndex" />..
b200: 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68          /// meth
b210: 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  od...        ///
b220: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
b230: 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69       public SQLi
b240: 74 65 49 6e 64 65 78 49 6e 70 75 74 73 20 49 6e  teIndexInputs In
b250: 70 75 74 73 0d 0a 20 20 20 20 20 20 20 20 7b 0d  puts..        {.
b260: 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
b270: 20 7b 20 72 65 74 75 72 6e 20 69 6e 70 75 74 73   { return inputs
b280: 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ; }..        }..
b290: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
b2a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b2b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b2c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b2d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b2e0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  /....        pri
b2f0: 76 61 74 65 20 53 51 4c 69 74 65 49 6e 64 65 78  vate SQLiteIndex
b300: 4f 75 74 70 75 74 73 20 6f 75 74 70 75 74 73 3b  Outputs outputs;
b310: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
b320: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
b330: 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
b340: 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 4f  ef="SQLiteIndexO
b350: 75 74 70 75 74 73 22 20 2f 3e 20 6f 62 6a 65 63  utputs" /> objec
b360: 74 20 69 6e 73 74 61 6e 63 65 20 63 6f 6e 74 61  t instance conta
b370: 69 6e 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 2f  ining..        /
b380: 2f 2f 20 74 68 65 20 6f 75 74 70 75 74 73 20 66  // the outputs f
b390: 72 6f 6d 20 74 68 65 20 3c 73 65 65 20 63 72 65  rom the <see cre
b3a0: 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65  f="ISQLiteManage
b3b0: 64 4d 6f 64 75 6c 65 2e 42 65 73 74 49 6e 64 65  dModule.BestInde
b3c0: 78 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f  x" />..        /
b3d0: 2f 2f 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  // method...    
b3e0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
b3f0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
b400: 69 63 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 75  ic SQLiteIndexOu
b410: 74 70 75 74 73 20 4f 75 74 70 75 74 73 0d 0a 20  tputs Outputs.. 
b420: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
b430: 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75        get { retu
b440: 72 6e 20 6f 75 74 70 75 74 73 3b 20 7d 0d 0a 20  rn outputs; }.. 
b450: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
b460: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20    #endregion..  
b470: 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67    }..    #endreg
b480: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
b490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b4a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b4b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b4c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b4d0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
b4e0: 65 67 69 6f 6e 20 53 51 4c 69 74 65 56 69 72 74  egion SQLiteVirt
b4f0: 75 61 6c 54 61 62 6c 65 20 42 61 73 65 20 43 6c  ualTable Base Cl
b500: 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  ass..    /// <su
b510: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
b520: 54 68 69 73 20 63 6c 61 73 73 20 72 65 70 72 65  This class repre
b530: 73 65 6e 74 73 20 61 20 6d 61 6e 61 67 65 64 20  sents a managed 
b540: 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 69 6d  virtual table im
b550: 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 20 20 49  plementation.  I
b560: 74 20 69 73 0d 0a 20 20 20 20 2f 2f 2f 20 6e 6f  t is..    /// no
b570: 74 20 73 65 61 6c 65 64 20 61 6e 64 20 73 68 6f  t sealed and sho
b580: 75 6c 64 20 62 65 20 75 73 65 64 20 61 73 20 74  uld be used as t
b590: 68 65 20 62 61 73 65 20 63 6c 61 73 73 20 66 6f  he base class fo
b5a0: 72 20 61 6e 79 20 75 73 65 72 2d 64 65 66 69 6e  r any user-defin
b5b0: 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 76 69 72 74  ed..    /// virt
b5c0: 75 61 6c 20 74 61 62 6c 65 20 63 6c 61 73 73 65  ual table classe
b5d0: 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 69 6e  s implemented in
b5e0: 20 6d 61 6e 61 67 65 64 20 63 6f 64 65 2e 0d 0a   managed code...
b5f0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
b600: 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 63  y>..    public c
b610: 6c 61 73 73 20 53 51 4c 69 74 65 56 69 72 74 75  lass SQLiteVirtu
b620: 61 6c 54 61 62 6c 65 20 3a 0d 0a 20 20 20 20 20  alTable :..     
b630: 20 20 20 20 20 20 20 49 53 51 4c 69 74 65 4e 61         ISQLiteNa
b640: 74 69 76 65 48 61 6e 64 6c 65 2c 20 49 44 69 73  tiveHandle, IDis
b650: 70 6f 73 61 62 6c 65 20 2f 2a 20 4e 4f 54 20 53  posable /* NOT S
b660: 45 41 4c 45 44 20 2a 2f 0d 0a 20 20 20 20 7b 0d  EALED */..    {.
b670: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
b680: 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74 61 6e   Private Constan
b690: 74 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ts..        /// 
b6a0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
b6b0: 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 64 65 78     /// The index
b6c0: 20 77 69 74 68 69 6e 20 74 68 65 20 61 72 72 61   within the arra
b6d0: 79 20 6f 66 20 73 74 72 69 6e 67 73 20 70 72 6f  y of strings pro
b6e0: 76 69 64 65 64 20 74 6f 20 74 68 65 0d 0a 20 20  vided to the..  
b6f0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
b700: 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61  ref="ISQLiteMana
b710: 67 65 64 4d 6f 64 75 6c 65 2e 43 72 65 61 74 65  gedModule.Create
b720: 22 20 2f 3e 20 61 6e 64 0d 0a 20 20 20 20 20 20  " /> and..      
b730: 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
b740: 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d  "ISQLiteManagedM
b750: 6f 64 75 6c 65 2e 43 6f 6e 6e 65 63 74 22 20 2f  odule.Connect" /
b760: 3e 20 6d 65 74 68 6f 64 73 20 63 6f 6e 74 61 69  > methods contai
b770: 6e 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20  ning the..      
b780: 20 20 2f 2f 2f 20 6e 61 6d 65 20 6f 66 20 74 68    /// name of th
b790: 65 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65 6d 65  e module impleme
b7a0: 6e 74 69 6e 67 20 74 68 69 73 20 76 69 72 74 75  nting this virtu
b7b0: 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20  al table...     
b7c0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
b7d0: 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
b7e0: 74 65 20 63 6f 6e 73 74 20 69 6e 74 20 4d 6f 64  te const int Mod
b7f0: 75 6c 65 4e 61 6d 65 49 6e 64 65 78 20 3d 20 30  uleNameIndex = 0
b800: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
b810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b850: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
b860: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
b870: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 69         /// The i
b880: 6e 64 65 78 20 77 69 74 68 69 6e 20 74 68 65 20  ndex within the 
b890: 61 72 72 61 79 20 6f 66 20 73 74 72 69 6e 67 73  array of strings
b8a0: 20 70 72 6f 76 69 64 65 64 20 74 6f 20 74 68 65   provided to the
b8b0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
b8c0: 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
b8d0: 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43 72  ManagedModule.Cr
b8e0: 65 61 74 65 22 20 2f 3e 20 61 6e 64 0d 0a 20 20  eate" /> and..  
b8f0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
b900: 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61  ref="ISQLiteMana
b910: 67 65 64 4d 6f 64 75 6c 65 2e 43 6f 6e 6e 65 63  gedModule.Connec
b920: 74 22 20 2f 3e 20 6d 65 74 68 6f 64 73 20 63 6f  t" /> methods co
b930: 6e 74 61 69 6e 69 6e 67 20 74 68 65 0d 0a 20 20  ntaining the..  
b940: 20 20 20 20 20 20 2f 2f 2f 20 6e 61 6d 65 20 6f        /// name o
b950: 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20 63  f the database c
b960: 6f 6e 74 61 69 6e 69 6e 67 20 74 68 69 73 20 76  ontaining this v
b970: 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20  irtual table... 
b980: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
b990: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
b9a0: 72 69 76 61 74 65 20 63 6f 6e 73 74 20 69 6e 74  rivate const int
b9b0: 20 44 61 74 61 62 61 73 65 4e 61 6d 65 49 6e 64   DatabaseNameInd
b9c0: 65 78 20 3d 20 31 3b 0d 0a 0d 0a 20 20 20 20 20  ex = 1;....     
b9d0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
b9e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b9f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ba00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ba10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
ba20: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
ba30: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
ba40: 20 54 68 65 20 69 6e 64 65 78 20 77 69 74 68 69   The index withi
ba50: 6e 20 74 68 65 20 61 72 72 61 79 20 6f 66 20 73  n the array of s
ba60: 74 72 69 6e 67 73 20 70 72 6f 76 69 64 65 64 20  trings provided 
ba70: 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
ba80: 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
ba90: 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64  SQLiteManagedMod
baa0: 75 6c 65 2e 43 72 65 61 74 65 22 20 2f 3e 20 61  ule.Create" /> a
bab0: 6e 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  nd..        /// 
bac0: 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
bad0: 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e  teManagedModule.
bae0: 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68  Connect" /> meth
baf0: 6f 64 73 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74  ods containing t
bb00: 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
bb10: 6e 61 6d 65 20 6f 66 20 74 68 65 20 76 69 72 74  name of the virt
bb20: 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
bb30: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
bb40: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  y>..        priv
bb50: 61 74 65 20 63 6f 6e 73 74 20 69 6e 74 20 54 61  ate const int Ta
bb60: 62 6c 65 4e 61 6d 65 49 6e 64 65 78 20 3d 20 32  bleNameIndex = 2
bb70: 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  ;..        #endr
bb80: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
bb90: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
bba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bbb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bbc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bbd0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
bbe0: 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c      #region Publ
bbf0: 69 63 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d  ic Constructors.
bc00: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
bc10: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
bc20: 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61  /// Constructs a
bc30: 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68  n instance of th
bc40: 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20  is class...     
bc50: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
bc60: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
bc70: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 75  param name="argu
bc80: 6d 65 6e 74 73 22 3e 0d 0a 20 20 20 20 20 20 20  ments">..       
bc90: 20 2f 2f 2f 20 54 68 65 20 6f 72 69 67 69 6e 61   /// The origina
bca0: 6c 20 61 72 72 61 79 20 6f 66 20 73 74 72 69 6e  l array of strin
bcb0: 67 73 20 70 72 6f 76 69 64 65 64 20 74 6f 20 74  gs provided to t
bcc0: 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
bcd0: 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
bce0: 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e  teManagedModule.
bcf0: 43 72 65 61 74 65 22 20 2f 3e 20 61 6e 64 0d 0a  Create" /> and..
bd00: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
bd10: 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61   cref="ISQLiteMa
bd20: 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43 6f 6e 6e  nagedModule.Conn
bd30: 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 73 2e  ect" /> methods.
bd40: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
bd50: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
bd60: 70 75 62 6c 69 63 20 53 51 4c 69 74 65 56 69 72  public SQLiteVir
bd70: 74 75 61 6c 54 61 62 6c 65 28 0d 0a 20 20 20 20  tualTable(..    
bd80: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d          string[]
bd90: 20 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20   arguments..    
bda0: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
bdb0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
bdc0: 20 20 74 68 69 73 2e 61 72 67 75 6d 65 6e 74 73    this.arguments
bdd0: 20 3d 20 61 72 67 75 6d 65 6e 74 73 3b 0d 0a 20   = arguments;.. 
bde0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
bdf0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
be00: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
be10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
be20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
be30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
be40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
be50: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
be60: 6f 6e 20 50 75 62 6c 69 63 20 50 72 6f 70 65 72  on Public Proper
be70: 74 69 65 73 0d 0a 20 20 20 20 20 20 20 20 70 72  ties..        pr
be80: 69 76 61 74 65 20 73 74 72 69 6e 67 5b 5d 20 61  ivate string[] a
be90: 72 67 75 6d 65 6e 74 73 3b 0d 0a 20 20 20 20 20  rguments;..     
bea0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
beb0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
bec0: 65 20 6f 72 69 67 69 6e 61 6c 20 61 72 72 61 79  e original array
bed0: 20 6f 66 20 73 74 72 69 6e 67 73 20 70 72 6f 76   of strings prov
bee0: 69 64 65 64 20 74 6f 20 74 68 65 0d 0a 20 20 20  ided to the..   
bef0: 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
bf00: 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67  ef="ISQLiteManag
bf10: 65 64 4d 6f 64 75 6c 65 2e 43 72 65 61 74 65 22  edModule.Create"
bf20: 20 2f 3e 20 61 6e 64 0d 0a 20 20 20 20 20 20 20   /> and..       
bf30: 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
bf40: 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f  ISQLiteManagedMo
bf50: 64 75 6c 65 2e 43 6f 6e 6e 65 63 74 22 20 2f 3e  dule.Connect" />
bf60: 20 6d 65 74 68 6f 64 73 2e 0d 0a 20 20 20 20 20   methods...     
bf70: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
bf80: 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
bf90: 63 20 76 69 72 74 75 61 6c 20 73 74 72 69 6e 67  c virtual string
bfa0: 5b 5d 20 41 72 67 75 6d 65 6e 74 73 0d 0a 20 20  [] Arguments..  
bfb0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
bfc0: 20 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b       get { Check
bfd0: 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75  Disposed(); retu
bfe0: 72 6e 20 61 72 67 75 6d 65 6e 74 73 3b 20 7d 0d  rn arguments; }.
bff0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
c000: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
c010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
c050: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
c060: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
c070: 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20  /// The name of 
c080: 74 68 65 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65  the module imple
c090: 6d 65 6e 74 69 6e 67 20 74 68 69 73 20 76 69 72  menting this vir
c0a0: 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20  tual table...   
c0b0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
c0c0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ry>..        pub
c0d0: 6c 69 63 20 76 69 72 74 75 61 6c 20 73 74 72 69  lic virtual stri
c0e0: 6e 67 20 4d 6f 64 75 6c 65 4e 61 6d 65 0d 0a 20  ng ModuleName.. 
c0f0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
c100: 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20        get..     
c110: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
c120: 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 44            CheckD
c130: 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20  isposed();....  
c140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
c150: 72 69 6e 67 5b 5d 20 61 72 67 75 6d 65 6e 74 73  ring[] arguments
c160: 20 3d 20 41 72 67 75 6d 65 6e 74 73 3b 0d 0a 0d   = Arguments;...
c170: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c180: 20 69 66 20 28 28 61 72 67 75 6d 65 6e 74 73 20   if ((arguments 
c190: 21 3d 20 6e 75 6c 6c 29 20 26 26 0d 0a 20 20 20  != null) &&..   
c1a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c1b0: 20 28 61 72 67 75 6d 65 6e 74 73 2e 4c 65 6e 67   (arguments.Leng
c1c0: 74 68 20 3e 20 4d 6f 64 75 6c 65 4e 61 6d 65 49  th > ModuleNameI
c1d0: 6e 64 65 78 29 29 0d 0a 20 20 20 20 20 20 20 20  ndex))..        
c1e0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
c1f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
c200: 65 74 75 72 6e 20 61 72 67 75 6d 65 6e 74 73 5b  eturn arguments[
c210: 4d 6f 64 75 6c 65 4e 61 6d 65 49 6e 64 65 78 5d  ModuleNameIndex]
c220: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
c230: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
c240: 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
c250: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
c260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c270: 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
c280: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c290: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
c2a0: 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
c2b0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
c2c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c2d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c2e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c2f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
c300: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
c310: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
c320: 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f    /// The name o
c330: 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20 63  f the database c
c340: 6f 6e 74 61 69 6e 69 6e 67 20 74 68 69 73 20 76  ontaining this v
c350: 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20  irtual table... 
c360: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
c370: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
c380: 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 73 74  ublic virtual st
c390: 72 69 6e 67 20 44 61 74 61 62 61 73 65 4e 61 6d  ring DatabaseNam
c3a0: 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  e..        {..  
c3b0: 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20            get.. 
c3c0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
c3d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 68                Ch
c3e0: 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a  eckDisposed();..
c3f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c400: 20 20 73 74 72 69 6e 67 5b 5d 20 61 72 67 75 6d    string[] argum
c410: 65 6e 74 73 20 3d 20 41 72 67 75 6d 65 6e 74 73  ents = Arguments
c420: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
c430: 20 20 20 20 20 69 66 20 28 28 61 72 67 75 6d 65       if ((argume
c440: 6e 74 73 20 21 3d 20 6e 75 6c 6c 29 20 26 26 0d  nts != null) &&.
c450: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c460: 20 20 20 20 20 28 61 72 67 75 6d 65 6e 74 73 2e       (arguments.
c470: 4c 65 6e 67 74 68 20 3e 20 44 61 74 61 62 61 73  Length > Databas
c480: 65 4e 61 6d 65 49 6e 64 65 78 29 29 0d 0a 20 20  eNameIndex))..  
c490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
c4a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c4b0: 20 20 20 20 20 72 65 74 75 72 6e 20 61 72 67 75       return argu
c4c0: 6d 65 6e 74 73 5b 44 61 74 61 62 61 73 65 4e 61  ments[DatabaseNa
c4d0: 6d 65 49 6e 64 65 78 5d 3b 0d 0a 20 20 20 20 20  meIndex];..     
c4e0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
c4f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
c500: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
c510: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
c520: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
c530: 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  n null;..       
c540: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
c550: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
c560: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
c570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c5a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c5b0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
c5c0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
c5d0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
c5e0: 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 76 69  e name of the vi
c5f0: 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20  rtual table...  
c600: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
c610: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
c620: 62 6c 69 63 20 76 69 72 74 75 61 6c 20 73 74 72  blic virtual str
c630: 69 6e 67 20 54 61 62 6c 65 4e 61 6d 65 0d 0a 20  ing TableName.. 
c640: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
c650: 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20        get..     
c660: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
c670: 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 44            CheckD
c680: 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20  isposed();....  
c690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
c6a0: 72 69 6e 67 5b 5d 20 61 72 67 75 6d 65 6e 74 73  ring[] arguments
c6b0: 20 3d 20 41 72 67 75 6d 65 6e 74 73 3b 0d 0a 0d   = Arguments;...
c6c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c6d0: 20 69 66 20 28 28 61 72 67 75 6d 65 6e 74 73 20   if ((arguments 
c6e0: 21 3d 20 6e 75 6c 6c 29 20 26 26 0d 0a 20 20 20  != null) &&..   
c6f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c700: 20 28 61 72 67 75 6d 65 6e 74 73 2e 4c 65 6e 67   (arguments.Leng
c710: 74 68 20 3e 20 54 61 62 6c 65 4e 61 6d 65 49 6e  th > TableNameIn
c720: 64 65 78 29 29 0d 0a 20 20 20 20 20 20 20 20 20  dex))..         
c730: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
c740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
c750: 74 75 72 6e 20 61 72 67 75 6d 65 6e 74 73 5b 54  turn arguments[T
c760: 61 62 6c 65 4e 61 6d 65 49 6e 64 65 78 5d 3b 0d  ableNameIndex];.
c770: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c780: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
c790: 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20      else..      
c7a0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
c7b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c7c0: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20   return null;.. 
c7d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
c7e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
c7f0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
c800: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
c810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
c850: 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
c860: 20 53 51 4c 69 74 65 49 6e 64 65 78 20 69 6e 64   SQLiteIndex ind
c870: 65 78 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ex;..        ///
c880: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
c890: 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
c8a0: 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64   cref="SQLiteInd
c8b0: 65 78 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  ex" /> object in
c8c0: 73 74 61 6e 63 65 20 63 6f 6e 74 61 69 6e 69 6e  stance containin
c8d0: 67 20 61 6c 6c 20 74 68 65 0d 0a 20 20 20 20 20  g all the..     
c8e0: 20 20 20 2f 2f 2f 20 64 61 74 61 20 66 6f 72 20     /// data for 
c8f0: 74 68 65 20 69 6e 70 75 74 73 20 61 6e 64 20 6f  the inputs and o
c900: 75 74 70 75 74 73 20 72 65 6c 61 74 69 6e 67 20  utputs relating 
c910: 74 6f 20 74 68 65 20 6d 6f 73 74 20 72 65 63 65  to the most rece
c920: 6e 74 20 69 6e 64 65 78 0d 0a 20 20 20 20 20 20  nt index..      
c930: 20 20 2f 2f 2f 20 73 65 6c 65 63 74 69 6f 6e 2e    /// selection.
c940: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
c950: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
c960: 20 20 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c    public virtual
c970: 20 53 51 4c 69 74 65 49 6e 64 65 78 20 49 6e 64   SQLiteIndex Ind
c980: 65 78 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ex..        {.. 
c990: 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
c9a0: 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
c9b0: 3b 20 72 65 74 75 72 6e 20 69 6e 64 65 78 3b 20  ; return index; 
c9c0: 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  }..        }..  
c9d0: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
c9e0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
c9f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ca00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ca10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ca20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ca30: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
ca40: 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 4d 65  region Public Me
ca50: 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f  thods..        /
ca60: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
ca70: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d        /// This m
ca80: 65 74 68 6f 64 20 73 68 6f 75 6c 64 20 6e 6f 72  ethod should nor
ca90: 6d 61 6c 6c 79 20 62 65 20 75 73 65 64 20 62 79  mally be used by
caa0: 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
cab0: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  / <see cref="ISQ
cac0: 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c  LiteManagedModul
cad0: 65 2e 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 20  e.BestIndex" /> 
cae0: 6d 65 74 68 6f 64 20 69 6e 20 6f 72 64 65 72 20  method in order 
caf0: 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  to..        /// 
cb00: 70 65 72 66 6f 72 6d 20 69 6e 64 65 78 20 73 65  perform index se
cb10: 6c 65 63 74 69 6f 6e 20 62 61 73 65 64 20 6f 6e  lection based on
cb20: 20 74 68 65 20 63 6f 6e 73 74 72 61 69 6e 74 73   the constraints
cb30: 20 70 72 6f 76 69 64 65 64 20 62 79 20 74 68 65   provided by the
cb40: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 51  ..        /// SQ
cb50: 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
cb60: 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y...        /// 
cb70: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
cb80: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
cb90: 61 6d 65 3d 22 69 6e 64 65 78 22 3e 0d 0a 20 20  ame="index">..  
cba0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
cbb0: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49  ee cref="SQLiteI
cbc0: 6e 64 65 78 22 20 2f 3e 20 6f 62 6a 65 63 74 20  ndex" /> object 
cbd0: 69 6e 73 74 61 6e 63 65 20 63 6f 6e 74 61 69 6e  instance contain
cbe0: 69 6e 67 20 61 6c 6c 20 74 68 65 0d 0a 20 20 20  ing all the..   
cbf0: 20 20 20 20 20 2f 2f 2f 20 64 61 74 61 20 66 6f       /// data fo
cc00: 72 20 74 68 65 20 69 6e 70 75 74 73 20 61 6e 64  r the inputs and
cc10: 20 6f 75 74 70 75 74 73 20 72 65 6c 61 74 69 6e   outputs relatin
cc20: 67 20 74 6f 20 69 6e 64 65 78 20 73 65 6c 65 63  g to index selec
cc30: 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  tion...        /
cc40: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
cc50: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
cc60: 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
cc70: 4e 6f 6e 2d 7a 65 72 6f 20 75 70 6f 6e 20 73 75  Non-zero upon su
cc80: 63 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 20 20  ccess...        
cc90: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
cca0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76          public v
ccb0: 69 72 74 75 61 6c 20 62 6f 6f 6c 20 42 65 73 74  irtual bool Best
ccc0: 49 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20 20  Index(..        
ccd0: 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78 20      SQLiteIndex 
cce0: 69 6e 64 65 78 0d 0a 20 20 20 20 20 20 20 20 20  index..         
ccf0: 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
cd00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65  .            Che
cd10: 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d  ckDisposed();...
cd20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
cd30: 73 2e 69 6e 64 65 78 20 3d 20 69 6e 64 65 78 3b  s.index = index;
cd40: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
cd50: 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20  return true;..  
cd60: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
cd70: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
cd80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cd90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cda0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cdb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
cdc0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
cdd0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
cde0: 20 41 74 74 65 6d 70 74 73 20 74 6f 20 72 65 63   Attempts to rec
cdf0: 6f 72 64 20 74 68 65 20 72 65 6e 61 6d 69 6e 67  ord the renaming
ce00: 20 6f 66 20 74 68 65 20 76 69 72 74 75 61 6c 20   of the virtual 
ce10: 74 61 62 6c 65 20 61 73 73 6f 63 69 61 74 65 64  table associated
ce20: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69  ..        /// wi
ce30: 74 68 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69  th this object i
ce40: 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20  nstance...      
ce50: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
ce60: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
ce70: 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65 22  aram name="name"
ce80: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
ce90: 68 65 20 6e 65 77 20 6e 61 6d 65 20 66 6f 72 20  he new name for 
cea0: 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c  the virtual tabl
ceb0: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
cec0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
ced0: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
cee0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  .        /// Non
cef0: 2d 7a 65 72 6f 20 75 70 6f 6e 20 73 75 63 63 65  -zero upon succe
cf00: 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ss...        ///
cf10: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
cf20: 20 20 20 20 20 70 75 62 6c 69 63 20 76 69 72 74       public virt
cf30: 75 61 6c 20 62 6f 6f 6c 20 52 65 6e 61 6d 65 28  ual bool Rename(
cf40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74  ..            st
cf50: 72 69 6e 67 20 6e 61 6d 65 0d 0a 20 20 20 20 20  ring name..     
cf60: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
cf70: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
cf80: 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
cf90: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
cfa0: 20 69 66 20 28 28 61 72 67 75 6d 65 6e 74 73 20   if ((arguments 
cfb0: 21 3d 20 6e 75 6c 6c 29 20 26 26 0d 0a 20 20 20  != null) &&..   
cfc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 72               (ar
cfd0: 67 75 6d 65 6e 74 73 2e 4c 65 6e 67 74 68 20 3e  guments.Length >
cfe0: 20 54 61 62 6c 65 4e 61 6d 65 49 6e 64 65 78 29   TableNameIndex)
cff0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
d000: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d010: 20 20 61 72 67 75 6d 65 6e 74 73 5b 54 61 62 6c    arguments[Tabl
d020: 65 4e 61 6d 65 49 6e 64 65 78 5d 20 3d 20 6e 61  eNameIndex] = na
d030: 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me;..           
d040: 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65       return true
d050: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
d060: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
d070: 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20  return false;.. 
d080: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
d090: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
d0a0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
d0b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d0c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d0d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d0e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
d0f0: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
d100: 6f 6e 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65  on ISQLiteNative
d110: 48 61 6e 64 6c 65 20 4d 65 6d 62 65 72 73 0d 0a  Handle Members..
d120: 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
d130: 49 6e 74 50 74 72 20 6e 61 74 69 76 65 48 61 6e  IntPtr nativeHan
d140: 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f  dle;..        //
d150: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
d160: 20 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73       /// Returns
d170: 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20   the underlying 
d180: 53 51 4c 69 74 65 20 6e 61 74 69 76 65 20 68 61  SQLite native ha
d190: 6e 64 6c 65 20 61 73 73 6f 63 69 61 74 65 64 20  ndle associated 
d1a0: 77 69 74 68 20 74 68 69 73 0d 0a 20 20 20 20 20  with this..     
d1b0: 20 20 20 2f 2f 2f 20 6f 62 6a 65 63 74 20 69 6e     /// object in
d1c0: 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20  stance...       
d1d0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
d1e0: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
d1f0: 76 69 72 74 75 61 6c 20 49 6e 74 50 74 72 20 4e  virtual IntPtr N
d200: 61 74 69 76 65 48 61 6e 64 6c 65 0d 0a 20 20 20  ativeHandle..   
d210: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
d220: 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44      get { CheckD
d230: 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75 72  isposed(); retur
d240: 6e 20 6e 61 74 69 76 65 48 61 6e 64 6c 65 3b 20  n nativeHandle; 
d250: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  }..            i
d260: 6e 74 65 72 6e 61 6c 20 73 65 74 20 7b 20 6e 61  nternal set { na
d270: 74 69 76 65 48 61 6e 64 6c 65 20 3d 20 76 61 6c  tiveHandle = val
d280: 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d  ue; }..        }
d290: 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
d2a0: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
d2b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d2c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d2d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d2e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d2f0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
d300: 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73 70     #region IDisp
d310: 6f 73 61 62 6c 65 20 4d 65 6d 62 65 72 73 0d 0a  osable Members..
d320: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
d330: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
d340: 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f 66 20 74  // Disposes of t
d350: 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  his object insta
d360: 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nce...        //
d370: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
d380: 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69        public voi
d390: 64 20 44 69 73 70 6f 73 65 28 29 0d 0a 20 20 20  d Dispose()..   
d3a0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
d3b0: 20 20 20 20 44 69 73 70 6f 73 65 28 74 72 75 65      Dispose(true
d3c0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
d3d0: 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61 6c  GC.SuppressFinal
d3e0: 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20  ize(this);..    
d3f0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
d400: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
d410: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
d420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
d460: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
d470: 49 44 69 73 70 6f 73 61 62 6c 65 20 22 50 61 74  IDisposable "Pat
d480: 74 65 72 6e 22 20 4d 65 6d 62 65 72 73 0d 0a 20  tern" Members.. 
d490: 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62         private b
d4a0: 6f 6f 6c 20 64 69 73 70 6f 73 65 64 3b 0d 0a 20  ool disposed;.. 
d4b0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
d4c0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
d4d0: 2f 20 54 68 72 6f 77 73 20 61 6e 20 3c 73 65 65  / Throws an <see
d4e0: 20 63 72 65 66 3d 22 4f 62 6a 65 63 74 44 69 73   cref="ObjectDis
d4f0: 70 6f 73 65 64 45 78 63 65 70 74 69 6f 6e 22 20  posedException" 
d500: 2f 3e 20 69 66 20 74 68 69 73 20 6f 62 6a 65 63  /> if this objec
d510: 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  t..        /// i
d520: 6e 73 74 61 6e 63 65 20 68 61 73 20 62 65 65 6e  nstance has been
d530: 20 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20 20   disposed...    
d540: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
d550: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  y>..        priv
d560: 61 74 65 20 76 6f 69 64 20 43 68 65 63 6b 44 69  ate void CheckDi
d570: 73 70 6f 73 65 64 28 29 20 2f 2a 20 74 68 72 6f  sposed() /* thro
d580: 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 7b 0d  w */..        {.
d590: 0a 23 69 66 20 54 48 52 4f 57 5f 4f 4e 5f 44 49  .#if THROW_ON_DI
d5a0: 53 50 4f 53 45 44 0d 0a 20 20 20 20 20 20 20 20  SPOSED..        
d5b0: 20 20 20 20 69 66 20 28 64 69 73 70 6f 73 65 64      if (disposed
d5c0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
d5d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d5e0: 20 20 74 68 72 6f 77 20 6e 65 77 20 4f 62 6a 65    throw new Obje
d5f0: 63 74 44 69 73 70 6f 73 65 64 45 78 63 65 70 74  ctDisposedExcept
d600: 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ion(..          
d610: 20 20 20 20 20 20 20 20 20 20 74 79 70 65 6f 66            typeof
d620: 28 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  (SQLiteVirtualTa
d630: 62 6c 65 29 2e 4e 61 6d 65 29 3b 0d 0a 20 20 20  ble).Name);..   
d640: 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
d650: 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  if..        }...
d660: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
d670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d6a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d6b0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
d6c0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
d6d0: 20 20 20 2f 2f 2f 20 44 69 73 70 6f 73 65 73 20     /// Disposes 
d6e0: 6f 66 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69  of this object i
d6f0: 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20  nstance...      
d700: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
d710: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
d720: 61 72 61 6d 20 6e 61 6d 65 3d 22 64 69 73 70 6f  aram name="dispo
d730: 73 69 6e 67 22 3e 0d 0a 20 20 20 20 20 20 20 20  sing">..        
d740: 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
d750: 74 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 62  this method is b
d760: 65 69 6e 67 20 63 61 6c 6c 65 64 20 66 72 6f 6d  eing called from
d770: 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
d780: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 44 69 73  / <see cref="Dis
d790: 70 6f 73 65 28 29 22 20 2f 3e 20 6d 65 74 68 6f  pose()" /> metho
d7a0: 64 2e 20 20 5a 65 72 6f 20 69 66 20 74 68 69 73  d.  Zero if this
d7b0: 20 6d 65 74 68 6f 64 20 69 73 20 62 65 69 6e 67   method is being
d7c0: 20 63 61 6c 6c 65 64 0d 0a 20 20 20 20 20 20 20   called..       
d7d0: 20 2f 2f 2f 20 66 72 6f 6d 20 74 68 65 20 66 69   /// from the fi
d7e0: 6e 61 6c 69 7a 65 72 2e 0d 0a 20 20 20 20 20 20  nalizer...      
d7f0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
d800: 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65          protecte
d810: 64 20 76 69 72 74 75 61 6c 20 76 6f 69 64 20 44  d virtual void D
d820: 69 73 70 6f 73 65 28 62 6f 6f 6c 20 64 69 73 70  ispose(bool disp
d830: 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20  osing)..        
d840: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
d850: 66 20 28 21 64 69 73 70 6f 73 65 64 29 0d 0a 20  f (!disposed).. 
d860: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
d870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
d880: 69 66 20 28 64 69 73 70 6f 73 69 6e 67 29 0d 0a  if (disposing)..
d890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d8a0: 2f 2f 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  //{..           
d8b0: 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f       //    /////
d8c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d8d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
d8e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d8f0: 20 2f 2f 20 20 20 20 2f 2f 20 64 69 73 70 6f 73   //    // dispos
d900: 65 20 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72  e managed resour
d910: 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20  ces here.....   
d920: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
d930: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
d940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d950: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20  ///////..       
d960: 20 20 20 20 20 20 20 20 20 2f 2f 7d 0d 0a 0d 0a           //}....
d970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d9a0: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20  //////..        
d9b0: 20 20 20 20 20 20 20 20 2f 2f 20 72 65 6c 65 61          // relea
d9c0: 73 65 20 75 6e 6d 61 6e 61 67 65 64 20 72 65 73  se unmanaged res
d9d0: 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a  ources here.....
d9e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d9f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
da00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
da10: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
da20: 20 20 20 20 20 20 20 20 20 20 64 69 73 70 6f 73            dispos
da30: 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20  ed = true;..    
da40: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
da50: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
da60: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
da70: 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
dac0: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44         #region D
dad0: 65 73 74 72 75 63 74 6f 72 0d 0a 20 20 20 20 20  estructor..     
dae0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
daf0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 46 69  ..        /// Fi
db00: 6e 61 6c 69 7a 65 73 20 74 68 69 73 20 6f 62 6a  nalizes this obj
db10: 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20  ect instance... 
db20: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
db30: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 7e  mary>..        ~
db40: 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
db50: 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  le()..        {.
db60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 44 69 73  .            Dis
db70: 70 6f 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20  pose(false);..  
db80: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
db90: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20   #endregion..   
dba0: 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69   }..    #endregi
dbb0: 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  on....    //////
dbc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dbd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dbe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dbf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dc00: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65  /////....    #re
dc10: 67 69 6f 6e 20 53 51 4c 69 74 65 56 69 72 74 75  gion SQLiteVirtu
dc20: 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 20 42 61  alTableCursor Ba
dc30: 73 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f  se Class..    //
dc40: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
dc50: 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20   /// This class 
dc60: 72 65 70 72 65 73 65 6e 74 73 20 61 20 6d 61 6e  represents a man
dc70: 61 67 65 64 20 76 69 72 74 75 61 6c 20 74 61 62  aged virtual tab
dc80: 6c 65 20 63 75 72 73 6f 72 20 69 6d 70 6c 65 6d  le cursor implem
dc90: 65 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 2f  entation...    /
dca0: 2f 2f 20 49 74 20 69 73 20 6e 6f 74 20 73 65 61  // It is not sea
dcb0: 6c 65 64 20 61 6e 64 20 73 68 6f 75 6c 64 20 62  led and should b
dcc0: 65 20 75 73 65 64 20 61 73 20 74 68 65 20 62 61  e used as the ba
dcd0: 73 65 20 63 6c 61 73 73 20 66 6f 72 20 61 6e 79  se class for any
dce0: 0d 0a 20 20 20 20 2f 2f 2f 20 75 73 65 72 2d 64  ..    /// user-d
dcf0: 65 66 69 6e 65 64 20 76 69 72 74 75 61 6c 20 74  efined virtual t
dd00: 61 62 6c 65 20 63 75 72 73 6f 72 20 63 6c 61 73  able cursor clas
dd10: 73 65 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20  ses implemented 
dd20: 69 6e 20 6d 61 6e 61 67 65 64 20 63 6f 64 65 2e  in managed code.
dd30: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
dd40: 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63  ary>..    public
dd50: 20 63 6c 61 73 73 20 53 51 4c 69 74 65 56 69 72   class SQLiteVir
dd60: 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 20  tualTableCursor 
dd70: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  :..            I
dd80: 53 51 4c 69 74 65 4e 61 74 69 76 65 48 61 6e 64  SQLiteNativeHand
dd90: 6c 65 2c 20 49 44 69 73 70 6f 73 61 62 6c 65 20  le, IDisposable 
dda0: 2f 2a 20 4e 4f 54 20 53 45 41 4c 45 44 20 2a 2f  /* NOT SEALED */
ddb0: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
ddc0: 20 23 72 65 67 69 6f 6e 20 50 72 6f 74 65 63 74   #region Protect
ddd0: 65 64 20 43 6f 6e 73 74 61 6e 74 73 0d 0a 20 20  ed Constants..  
dde0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
ddf0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
de00: 20 54 68 69 73 20 76 61 6c 75 65 20 72 65 70 72   This value repr
de10: 65 73 65 6e 74 73 20 61 6e 20 69 6e 76 61 6c 69  esents an invali
de20: 64 20 69 6e 74 65 67 65 72 20 72 6f 77 20 73 65  d integer row se
de30: 71 75 65 6e 63 65 20 6e 75 6d 62 65 72 2e 0d 0a  quence number...
de40: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
de50: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
de60: 70 72 6f 74 65 63 74 65 64 20 73 74 61 74 69 63  protected static
de70: 20 72 65 61 64 6f 6e 6c 79 20 69 6e 74 20 49 6e   readonly int In
de80: 76 61 6c 69 64 52 6f 77 49 6e 64 65 78 20 3d 20  validRowIndex = 
de90: 30 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64  0;..        #end
dea0: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
deb0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
dec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ded0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
def0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
df00: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69       #region Pri
df10: 76 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20 20  vate Data..     
df20: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
df30: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
df40: 65 20 66 69 65 6c 64 20 68 6f 6c 64 73 20 74 68  e field holds th
df50: 65 20 69 6e 74 65 67 65 72 20 72 6f 77 20 73 65  e integer row se
df60: 71 75 65 6e 63 65 20 6e 75 6d 62 65 72 20 66 6f  quence number fo
df70: 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 72 6f  r the current ro
df80: 77 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70  w..        /// p
df90: 6f 69 6e 74 65 64 20 74 6f 20 62 79 20 74 68 69  ointed to by thi
dfa0: 73 20 63 75 72 73 6f 72 20 6f 62 6a 65 63 74 20  s cursor object 
dfb0: 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20  instance...     
dfc0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
dfd0: 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
dfe0: 74 65 20 69 6e 74 20 72 6f 77 49 6e 64 65 78 3b  te int rowIndex;
dff0: 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
e000: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
e010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e050: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
e060: 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69     #region Publi
e070: 63 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a  c Constructors..
e080: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
e090: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
e0a0: 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e  // Constructs an
e0b0: 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69   instance of thi
e0c0: 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20  s class...      
e0d0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
e0e0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
e0f0: 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65  aram name="table
e100: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
e110: 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
e120: 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
e130: 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  e" /> object ins
e140: 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64  tance associated
e150: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69  ..        /// wi
e160: 74 68 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69  th this object i
e170: 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20  nstance...      
e180: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
e190: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53          public S
e1a0: 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
e1b0: 65 43 75 72 73 6f 72 28 0d 0a 20 20 20 20 20 20  eCursor(..      
e1c0: 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74        SQLiteVirt
e1d0: 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 0d 0a  ualTable table..
e1e0: 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
e1f0: 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69             : thi
e200: 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  s()..        {..
e210: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
e220: 2e 74 61 62 6c 65 20 3d 20 74 61 62 6c 65 3b 0d  .table = table;.
e230: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
e240: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
e250: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
e260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e2a0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
e2b0: 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43 6f 6e  gion Private Con
e2c0: 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20  structors..     
e2d0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
e2e0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f  ..        /// Co
e2f0: 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74  nstructs an inst
e300: 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61  ance of this cla
e310: 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ss...        ///
e320: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
e330: 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c       private SQL
e340: 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43  iteVirtualTableC
e350: 75 72 73 6f 72 28 29 0d 0a 20 20 20 20 20 20 20  ursor()..       
e360: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
e370: 72 6f 77 49 6e 64 65 78 20 3d 20 49 6e 76 61 6c  rowIndex = Inval
e380: 69 64 52 6f 77 49 6e 64 65 78 3b 0d 0a 20 20 20  idRowIndex;..   
e390: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
e3a0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
e3b0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
e3c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e3d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e3e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e3f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
e400: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
e410: 20 50 75 62 6c 69 63 20 50 72 6f 70 65 72 74 69   Public Properti
e420: 65 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  es..        priv
e430: 61 74 65 20 53 51 4c 69 74 65 56 69 72 74 75 61  ate SQLiteVirtua
e440: 6c 54 61 62 6c 65 20 74 61 62 6c 65 3b 0d 0a 20  lTable table;.. 
e450: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
e460: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
e470: 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
e480: 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  "SQLiteVirtualTa
e490: 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  ble" /> object i
e4a0: 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74  nstance associat
e4b0: 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
e4c0: 77 69 74 68 20 74 68 69 73 20 6f 62 6a 65 63 74  with this object
e4d0: 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20   instance...    
e4e0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
e4f0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
e500: 69 63 20 76 69 72 74 75 61 6c 20 53 51 4c 69 74  ic virtual SQLit
e510: 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 54 61  eVirtualTable Ta
e520: 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ble..        {..
e530: 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
e540: 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  { CheckDisposed(
e550: 29 3b 20 72 65 74 75 72 6e 20 74 61 62 6c 65 3b  ); return table;
e560: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
e570: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
e580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e5a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e5b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e5c0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
e5d0: 61 74 65 20 69 6e 74 20 69 6e 64 65 78 4e 75 6d  ate int indexNum
e5e0: 62 65 72 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ber;..        //
e5f0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
e600: 20 20 20 20 20 2f 2f 2f 20 4e 75 6d 62 65 72 20       /// Number 
e610: 75 73 65 64 20 74 6f 20 68 65 6c 70 20 69 64 65  used to help ide
e620: 6e 74 69 66 79 20 74 68 65 20 73 65 6c 65 63 74  ntify the select
e630: 65 64 20 69 6e 64 65 78 2e 20 20 54 68 69 73 20  ed index.  This 
e640: 76 61 6c 75 65 20 77 69 6c 6c 0d 0a 20 20 20 20  value will..    
e650: 20 20 20 20 2f 2f 2f 20 62 65 20 73 65 74 20 76      /// be set v
e660: 69 61 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ia the <see cref
e670: 3d 22 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74  ="Filter" /> met
e680: 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
e690: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
e6a0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 69 72        public vir
e6b0: 74 75 61 6c 20 69 6e 74 20 49 6e 64 65 78 4e 75  tual int IndexNu
e6c0: 6d 62 65 72 0d 0a 20 20 20 20 20 20 20 20 7b 0d  mber..        {.
e6d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
e6e0: 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64   { CheckDisposed
e6f0: 28 29 3b 20 72 65 74 75 72 6e 20 69 6e 64 65 78  (); return index
e700: 4e 75 6d 62 65 72 3b 20 7d 0d 0a 20 20 20 20 20  Number; }..     
e710: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
e720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e760: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
e770: 20 20 20 70 72 69 76 61 74 65 20 73 74 72 69 6e     private strin
e780: 67 20 69 6e 64 65 78 53 74 72 69 6e 67 3b 0d 0a  g indexString;..
e790: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
e7a0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
e7b0: 2f 2f 20 53 74 72 69 6e 67 20 75 73 65 64 20 74  // String used t
e7c0: 6f 20 68 65 6c 70 20 69 64 65 6e 74 69 66 79 20  o help identify 
e7d0: 74 68 65 20 73 65 6c 65 63 74 65 64 20 69 6e 64  the selected ind
e7e0: 65 78 2e 20 20 54 68 69 73 20 76 61 6c 75 65 20  ex.  This value 
e7f0: 77 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f  will..        //
e800: 2f 20 62 65 20 73 65 74 20 76 69 61 20 74 68 65  / be set via the
e810: 20 3c 73 65 65 20 63 72 65 66 3d 22 46 69 6c 74   <see cref="Filt
e820: 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  er" /> method...
e830: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
e840: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
e850: 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 73  public virtual s
e860: 74 72 69 6e 67 20 49 6e 64 65 78 53 74 72 69 6e  tring IndexStrin
e870: 67 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  g..        {..  
e880: 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20            get { 
e890: 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
e8a0: 20 72 65 74 75 72 6e 20 69 6e 64 65 78 53 74 72   return indexStr
e8b0: 69 6e 67 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  ing; }..        
e8c0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f  ////////////////
e900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e910: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
e920: 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 56 61  private SQLiteVa
e930: 6c 75 65 5b 5d 20 76 61 6c 75 65 73 3b 0d 0a 20  lue[] values;.. 
e940: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
e950: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
e960: 2f 20 54 68 65 20 76 61 6c 75 65 73 20 75 73 65  / The values use
e970: 64 20 74 6f 20 66 69 6c 74 65 72 20 74 68 65 20  d to filter the 
e980: 72 6f 77 73 20 72 65 74 75 72 6e 65 64 20 76 69  rows returned vi
e990: 61 20 74 68 69 73 20 63 75 72 73 6f 72 20 6f 62  a this cursor ob
e9a0: 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ject..        //
e9b0: 2f 20 69 6e 73 74 61 6e 63 65 2e 20 20 54 68 69  / instance.  Thi
e9c0: 73 20 76 61 6c 75 65 20 77 69 6c 6c 20 62 65 20  s value will be 
e9d0: 73 65 74 20 76 69 61 20 74 68 65 20 3c 73 65 65  set via the <see
e9e0: 20 63 72 65 66 3d 22 46 69 6c 74 65 72 22 20 2f   cref="Filter" /
e9f0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d  >..        /// m
ea00: 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
ea10: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
ea20: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76          public v
ea30: 69 72 74 75 61 6c 20 53 51 4c 69 74 65 56 61 6c  irtual SQLiteVal
ea40: 75 65 5b 5d 20 56 61 6c 75 65 73 0d 0a 20 20 20  ue[] Values..   
ea50: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
ea60: 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44      get { CheckD
ea70: 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75 72  isposed(); retur
ea80: 6e 20 76 61 6c 75 65 73 3b 20 7d 0d 0a 20 20 20  n values; }..   
ea90: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
eaa0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
eab0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
eac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ead0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eaf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
eb00: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
eb10: 20 50 72 6f 74 65 63 74 65 64 20 4d 65 74 68 6f   Protected Metho
eb20: 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
eb30: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
eb40: 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20     /// Attempts 
eb50: 74 6f 20 70 65 72 73 69 73 74 20 74 68 65 20 73  to persist the s
eb60: 70 65 63 69 66 69 65 64 20 3c 73 65 65 20 63 72  pecified <see cr
eb70: 65 66 3d 22 53 51 4c 69 74 65 56 61 6c 75 65 22  ef="SQLiteValue"
eb80: 20 2f 3e 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20   /> object..    
eb90: 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63 65      /// instance
eba0: 73 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 6d 61  s in order to ma
ebb0: 6b 65 20 74 68 65 6d 20 61 76 61 69 6c 61 62 6c  ke them availabl
ebc0: 65 20 61 66 74 65 72 20 74 68 65 0d 0a 20 20 20  e after the..   
ebd0: 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
ebe0: 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67  ef="ISQLiteManag
ebf0: 65 64 4d 6f 64 75 6c 65 2e 46 69 6c 74 65 72 22  edModule.Filter"
ec00: 20 2f 3e 20 6d 65 74 68 6f 64 20 72 65 74 75 72   /> method retur
ec10: 6e 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns...        ///
ec20: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
ec30: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
ec40: 6e 61 6d 65 3d 22 76 61 6c 75 65 73 22 3e 0d 0a  name="values">..
ec50: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
ec60: 61 72 72 61 79 20 6f 66 20 3c 73 65 65 20 63 72  array of <see cr
ec70: 65 66 3d 22 53 51 4c 69 74 65 56 61 6c 75 65 22  ef="SQLiteValue"
ec80: 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
ec90: 6e 63 65 73 20 74 6f 20 62 65 0d 0a 20 20 20 20  nces to be..    
eca0: 20 20 20 20 2f 2f 2f 20 70 65 72 73 69 73 74 65      /// persiste
ecb0: 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
ecc0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
ecd0: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
ece0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
ecf0: 20 6e 75 6d 62 65 72 20 6f 66 20 3c 73 65 65 20   number of <see 
ed00: 63 72 65 66 3d 22 53 51 4c 69 74 65 56 61 6c 75  cref="SQLiteValu
ed10: 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  e" /> object ins
ed20: 74 61 6e 63 65 73 20 74 68 61 74 20 77 65 72 65  tances that were
ed30: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 75  ..        /// su
ed40: 63 63 65 73 73 66 75 6c 6c 79 20 70 65 72 73 69  ccessfully persi
ed50: 73 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  sted...        /
ed60: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
ed70: 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64         protected
ed80: 20 76 69 72 74 75 61 6c 20 69 6e 74 20 54 72 79   virtual int Try
ed90: 50 65 72 73 69 73 74 56 61 6c 75 65 73 28 0d 0a  PersistValues(..
eda0: 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
edb0: 74 65 56 61 6c 75 65 5b 5d 20 76 61 6c 75 65 73  teValue[] values
edc0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
edd0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
ede0: 20 20 20 20 20 20 20 20 69 6e 74 20 72 65 73 75          int resu
edf0: 6c 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20  lt = 0;....     
ee00: 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65         if (value
ee10: 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  s != null)..    
ee20: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
ee30: 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61             forea
ee40: 63 68 20 28 53 51 4c 69 74 65 56 61 6c 75 65 20  ch (SQLiteValue 
ee50: 76 61 6c 75 65 20 69 6e 20 76 61 6c 75 65 73 29  value in values)
ee60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ee70: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
ee80: 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c           if (val
ee90: 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ue == null)..   
eea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eeb0: 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a       continue;..
eec0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
eed0: 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 2e        if (value.
eee0: 50 65 72 73 69 73 74 28 29 29 0d 0a 20 20 20 20  Persist())..    
eef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ef00: 20 20 20 20 72 65 73 75 6c 74 2b 2b 3b 0d 0a 20      result++;.. 
ef10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
ef20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
ef30: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
ef40: 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20  eturn result;.. 
ef50: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
ef60: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
ef70: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
ef80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ef90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
efa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
efb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
efc0: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
efd0: 6f 6e 20 50 75 62 6c 69 63 20 4d 65 74 68 6f 64  on Public Method
efe0: 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
eff0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
f000: 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
f010: 64 20 73 68 6f 75 6c 64 20 6e 6f 72 6d 61 6c 6c  d should normall
f020: 79 20 62 65 20 75 73 65 64 20 62 79 20 74 68 65  y be used by the
f030: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
f040: 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
f050: 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 46 69  ManagedModule.Fi
f060: 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 20  lter" /> method 
f070: 69 6e 20 6f 72 64 65 72 20 74 6f 0d 0a 20 20 20  in order to..   
f080: 20 20 20 20 20 2f 2f 2f 20 70 65 72 66 6f 72 6d       /// perform
f090: 20 66 69 6c 74 65 72 69 6e 67 20 6f 66 20 74 68   filtering of th
f0a0: 65 20 72 65 73 75 6c 74 20 72 6f 77 73 20 61 6e  e result rows an
f0b0: 64 2f 6f 72 20 74 6f 20 72 65 63 6f 72 64 20 74  d/or to record t
f0c0: 68 65 20 66 69 6c 74 65 72 69 6e 67 0d 0a 20 20  he filtering..  
f0d0: 20 20 20 20 20 20 2f 2f 2f 20 63 72 69 74 65 72        /// criter
f0e0: 69 61 20 70 72 6f 76 69 64 65 64 20 62 79 20 74  ia provided by t
f0f0: 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c  he SQLite core l
f100: 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20  ibrary...       
f110: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
f120: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
f130: 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78 4e  ram name="indexN
f140: 75 6d 62 65 72 22 3e 0d 0a 20 20 20 20 20 20 20  umber">..       
f150: 20 2f 2f 2f 20 4e 75 6d 62 65 72 20 75 73 65 64   /// Number used
f160: 20 74 6f 20 68 65 6c 70 20 69 64 65 6e 74 69 66   to help identif
f170: 79 20 74 68 65 20 73 65 6c 65 63 74 65 64 20 69  y the selected i
f180: 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ndex...        /
f190: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
f1a0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
f1b0: 6e 61 6d 65 3d 22 69 6e 64 65 78 53 74 72 69 6e  name="indexStrin
f1c0: 67 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  g">..        ///
f1d0: 20 53 74 72 69 6e 67 20 75 73 65 64 20 74 6f 20   String used to 
f1e0: 68 65 6c 70 20 69 64 65 6e 74 69 66 79 20 74 68  help identify th
f1f0: 65 20 73 65 6c 65 63 74 65 64 20 69 6e 64 65 78  e selected index
f200: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
f210: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
f220: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
f230: 3d 22 76 61 6c 75 65 73 22 3e 0d 0a 20 20 20 20  ="values">..    
f240: 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75      /// The valu
f250: 65 73 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67  es corresponding
f260: 20 74 6f 20 65 61 63 68 20 63 6f 6c 75 6d 6e 20   to each column 
f270: 69 6e 20 74 68 65 20 73 65 6c 65 63 74 65 64 20  in the selected 
f280: 69 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20 20 20  index...        
f290: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
f2a0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 69 72        public vir
f2b0: 74 75 61 6c 20 76 6f 69 64 20 46 69 6c 74 65 72  tual void Filter
f2c0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  (..            i
f2d0: 6e 74 20 69 6e 64 65 78 4e 75 6d 62 65 72 2c 0d  nt indexNumber,.
f2e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72  .            str
f2f0: 69 6e 67 20 69 6e 64 65 78 53 74 72 69 6e 67 2c  ing indexString,
f300: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
f310: 4c 69 74 65 56 61 6c 75 65 5b 5d 20 76 61 6c 75  LiteValue[] valu
f320: 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  es..            
f330: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
f340: 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 44            CheckD
f350: 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20  isposed();....  
f360: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28 76            if ((v
f370: 61 6c 75 65 73 20 21 3d 20 6e 75 6c 6c 29 20 26  alues != null) &
f380: 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  &..             
f390: 20 20 20 28 54 72 79 50 65 72 73 69 73 74 56 61     (TryPersistVa
f3a0: 6c 75 65 73 28 76 61 6c 75 65 73 29 20 21 3d 20  lues(values) != 
f3b0: 76 61 6c 75 65 73 2e 4c 65 6e 67 74 68 29 29 0d  values.Length)).
f3c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
f3d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f3e0: 74 68 72 6f 77 20 6e 65 77 20 53 51 4c 69 74 65  throw new SQLite
f3f0: 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20 20 20  Exception(..    
f400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f410: 22 66 61 69 6c 65 64 20 74 6f 20 70 65 72 73 69  "failed to persi
f420: 73 74 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 76  st one or more v
f430: 61 6c 75 65 73 22 29 3b 0d 0a 20 20 20 20 20 20  alues");..      
f440: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
f450: 20 20 20 20 20 20 20 74 68 69 73 2e 69 6e 64 65         this.inde
f460: 78 4e 75 6d 62 65 72 20 3d 20 69 6e 64 65 78 4e  xNumber = indexN
f470: 75 6d 62 65 72 3b 0d 0a 20 20 20 20 20 20 20 20  umber;..        
f480: 20 20 20 20 74 68 69 73 2e 69 6e 64 65 78 53 74      this.indexSt
f490: 72 69 6e 67 20 3d 20 69 6e 64 65 78 53 74 72 69  ring = indexStri
f4a0: 6e 67 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng;..           
f4b0: 20 74 68 69 73 2e 76 61 6c 75 65 73 20 3d 20 76   this.values = v
f4c0: 61 6c 75 65 73 3b 0d 0a 20 20 20 20 20 20 20 20  alues;..        
f4d0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
f4e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f4f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f520: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
f530: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
f540: 20 20 20 20 20 20 20 2f 2f 2f 20 44 65 74 65 72         /// Deter
f550: 6d 69 6e 65 73 20 74 68 65 20 69 6e 74 65 67 65  mines the intege
f560: 72 20 72 6f 77 20 73 65 71 75 65 6e 63 65 20 6e  r row sequence n
f570: 75 6d 62 65 72 20 66 6f 72 20 74 68 65 20 63 75  umber for the cu
f580: 72 72 65 6e 74 20 72 6f 77 2e 0d 0a 20 20 20 20  rrent row...    
f590: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
f5a0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
f5b0: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
f5c0: 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67     /// The integ
f5d0: 65 72 20 72 6f 77 20 73 65 71 75 65 6e 63 65 20  er row sequence 
f5e0: 6e 75 6d 62 65 72 20 66 6f 72 20 74 68 65 20 63  number for the c
f5f0: 75 72 72 65 6e 74 20 72 6f 77 20 2d 4f 52 2d 20  urrent row -OR- 
f600: 7a 65 72 6f 20 69 66 0d 0a 20 20 20 20 20 20 20  zero if..       
f610: 20 2f 2f 2f 20 69 74 20 63 61 6e 6e 6f 74 20 62   /// it cannot b
f620: 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20  e determined... 
f630: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
f640: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
f650: 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 69 6e  ublic virtual in
f660: 74 20 47 65 74 52 6f 77 49 6e 64 65 78 28 29 0d  t GetRowIndex().
f670: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
f680: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72          return r
f690: 6f 77 49 6e 64 65 78 3b 0d 0a 20 20 20 20 20 20  owIndex;..      
f6a0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
f6b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f6c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f6d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f6e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f6f0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
f700: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
f710: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 64 6a  .        /// Adj
f720: 75 73 74 73 20 74 68 65 20 69 6e 74 65 67 65 72  usts the integer
f730: 20 72 6f 77 20 73 65 71 75 65 6e 63 65 20 6e 75   row sequence nu
f740: 6d 62 65 72 20 73 6f 20 74 68 61 74 20 69 74 20  mber so that it 
f750: 72 65 66 65 72 73 20 74 6f 20 74 68 65 0d 0a 20  refers to the.. 
f760: 20 20 20 20 20 20 20 2f 2f 2f 20 6e 65 78 74 20         /// next 
f770: 72 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  row...        //
f780: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
f790: 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 69 72        public vir
f7a0: 74 75 61 6c 20 76 6f 69 64 20 4e 65 78 74 52 6f  tual void NextRo
f7b0: 77 49 6e 64 65 78 28 29 0d 0a 20 20 20 20 20 20  wIndex()..      
f7c0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
f7d0: 20 72 6f 77 49 6e 64 65 78 2b 2b 3b 0d 0a 20 20   rowIndex++;..  
f7e0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
f7f0: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
f800: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
f810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
f850: 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
f860: 6e 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65 48  n ISQLiteNativeH
f870: 61 6e 64 6c 65 20 4d 65 6d 62 65 72 73 0d 0a 20  andle Members.. 
f880: 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 49         private I
f890: 6e 74 50 74 72 20 6e 61 74 69 76 65 48 61 6e 64  ntPtr nativeHand
f8a0: 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le;..        ///
f8b0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
f8c0: 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20      /// Returns 
f8d0: 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 53  the underlying S
f8e0: 51 4c 69 74 65 20 6e 61 74 69 76 65 20 68 61 6e  QLite native han
f8f0: 64 6c 65 20 61 73 73 6f 63 69 61 74 65 64 20 77  dle associated w
f900: 69 74 68 20 74 68 69 73 0d 0a 20 20 20 20 20 20  ith this..      
f910: 20 20 2f 2f 2f 20 6f 62 6a 65 63 74 20 69 6e 73    /// object ins
f920: 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20  tance...        
f930: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
f940: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76          public v
f950: 69 72 74 75 61 6c 20 49 6e 74 50 74 72 20 4e 61  irtual IntPtr Na
f960: 74 69 76 65 48 61 6e 64 6c 65 0d 0a 20 20 20 20  tiveHandle..    
f970: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
f980: 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44 69     get { CheckDi
f990: 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75 72 6e  sposed(); return
f9a0: 20 6e 61 74 69 76 65 48 61 6e 64 6c 65 3b 20 7d   nativeHandle; }
f9b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
f9c0: 74 65 72 6e 61 6c 20 73 65 74 20 7b 20 6e 61 74  ternal set { nat
f9d0: 69 76 65 48 61 6e 64 6c 65 20 3d 20 76 61 6c 75  iveHandle = valu
f9e0: 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d  e; }..        }.
f9f0: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
fa00: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
fa10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fa20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fa30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fa40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fa50: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
fa60: 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73 70 6f    #region IDispo
fa70: 73 61 62 6c 65 20 4d 65 6d 62 65 72 73 0d 0a 20  sable Members.. 
fa80: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
fa90: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
faa0: 2f 20 44 69 73 70 6f 73 65 73 20 6f 66 20 74 68  / Disposes of th
fab0: 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  is object instan
fac0: 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ce...        ///
fad0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
fae0: 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64       public void
faf0: 20 44 69 73 70 6f 73 65 28 29 0d 0a 20 20 20 20   Dispose()..    
fb00: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
fb10: 20 20 20 44 69 73 70 6f 73 65 28 74 72 75 65 29     Dispose(true)
fb20: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 47  ;..            G
fb30: 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61 6c 69  C.SuppressFinali
fb40: 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20 20  ze(this);..     
fb50: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
fb60: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
fb70: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
fb80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fbb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
fbc0: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49         #region I
fbd0: 44 69 73 70 6f 73 61 62 6c 65 20 22 50 61 74 74  Disposable "Patt
fbe0: 65 72 6e 22 20 4d 65 6d 62 65 72 73 0d 0a 20 20  ern" Members..  
fbf0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f        private bo
fc00: 6f 6c 20 64 69 73 70 6f 73 65 64 3b 0d 0a 20 20  ol disposed;..  
fc10: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
fc20: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
fc30: 20 54 68 72 6f 77 73 20 61 6e 20 3c 73 65 65 20   Throws an <see 
fc40: 63 72 65 66 3d 22 4f 62 6a 65 63 74 44 69 73 70  cref="ObjectDisp
fc50: 6f 73 65 64 45 78 63 65 70 74 69 6f 6e 22 20 2f  osedException" /
fc60: 3e 20 69 66 20 74 68 69 73 20 6f 62 6a 65 63 74  > if this object
fc70: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e  ..        /// in
fc80: 73 74 61 6e 63 65 20 68 61 73 20 62 65 65 6e 20  stance has been 
fc90: 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20 20 20  disposed...     
fca0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
fcb0: 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
fcc0: 74 65 20 76 6f 69 64 20 43 68 65 63 6b 44 69 73  te void CheckDis
fcd0: 70 6f 73 65 64 28 29 20 2f 2a 20 74 68 72 6f 77  posed() /* throw
fce0: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a   */..        {..
fcf0: 23 69 66 20 54 48 52 4f 57 5f 4f 4e 5f 44 49 53  #if THROW_ON_DIS
fd00: 50 4f 53 45 44 0d 0a 20 20 20 20 20 20 20 20 20  POSED..         
fd10: 20 20 20 69 66 20 28 64 69 73 70 6f 73 65 64 29     if (disposed)
fd20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
fd30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
fd40: 20 74 68 72 6f 77 20 6e 65 77 20 4f 62 6a 65 63   throw new Objec
fd50: 74 44 69 73 70 6f 73 65 64 45 78 63 65 70 74 69  tDisposedExcepti
fd60: 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on(..           
fd70: 20 20 20 20 20 20 20 20 20 74 79 70 65 6f 66 28           typeof(
fd80: 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
fd90: 6c 65 43 75 72 73 6f 72 29 2e 4e 61 6d 65 29 3b  leCursor).Name);
fda0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
fdb0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
fdc0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
fdd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fde0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fdf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fe00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fe10: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
fe20: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
fe30: 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 69 73 70          /// Disp
fe40: 6f 73 65 73 20 6f 66 20 74 68 69 73 20 6f 62 6a  oses of this obj
fe50: 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20  ect instance... 
fe60: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
fe70: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
fe80: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
fe90: 64 69 73 70 6f 73 69 6e 67 22 3e 0d 0a 20 20 20  disposing">..   
fea0: 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
feb0: 6f 20 69 66 20 74 68 69 73 20 6d 65 74 68 6f 64  o if this method
fec0: 20 69 73 20 62 65 69 6e 67 20 63 61 6c 6c 65 64   is being called
fed0: 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20   from the..     
fee0: 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
fef0: 3d 22 44 69 73 70 6f 73 65 28 29 22 20 2f 3e 20  ="Dispose()" /> 
ff00: 6d 65 74 68 6f 64 2e 20 20 5a 65 72 6f 20 69 66  method.  Zero if
ff10: 20 74 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20   this method is 
ff20: 62 65 69 6e 67 20 63 61 6c 6c 65 64 0d 0a 20 20  being called..  
ff30: 20 20 20 20 20 20 2f 2f 2f 20 66 72 6f 6d 20 74        /// from t
ff40: 68 65 20 66 69 6e 61 6c 69 7a 65 72 2e 0d 0a 20  he finalizer... 
ff50: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
ff60: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f  am>..        pro
ff70: 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 76  tected virtual v
ff80: 6f 69 64 20 44 69 73 70 6f 73 65 28 62 6f 6f 6c  oid Dispose(bool
ff90: 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20   disposing)..   
ffa0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
ffb0: 20 20 20 20 69 66 20 28 21 64 69 73 70 6f 73 65      if (!dispose
ffc0: 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d)..            
ffd0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
ffe0: 20 20 20 2f 2f 69 66 20 28 64 69 73 70 6f 73 69     //if (disposi
fff0: 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng)..           
10000 20 20 20 20 20 2f 2f 7b 0d 0a 20 20 20 20 20 20       //{..      
10010 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
10020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10040 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  ////..          
10050 20 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 20 64        //    // d
10060 69 73 70 6f 73 65 20 6d 61 6e 61 67 65 64 20 72  ispose managed r
10070 65 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e  esources here...
10080 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10090 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f    //    ////////
100a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
100b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
100c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
100d0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
100e0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
100f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
10110 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
10120 72 65 6c 65 61 73 65 20 75 6e 6d 61 6e 61 67 65  release unmanage
10130 64 20 72 65 73 6f 75 72 63 65 73 20 68 65 72 65  d resources here
10140 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  .....           
10150 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
10160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
10180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
10190 69 73 70 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d  isposed = true;.
101a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
101b0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
101c0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
101d0 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f  ////////////////
10220 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
10230 69 6f 6e 20 44 65 73 74 72 75 63 74 6f 72 0d 0a  ion Destructor..
10240 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
10250 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
10260 2f 2f 20 46 69 6e 61 6c 69 7a 65 73 20 74 68 69  // Finalizes thi
10270 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  s object instanc
10280 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
10290 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
102a0 20 20 20 20 7e 53 51 4c 69 74 65 56 69 72 74 75      ~SQLiteVirtu
102b0 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 28 29 0d  alTableCursor().
102c0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
102d0 20 20 20 20 20 20 20 20 44 69 73 70 6f 73 65 28          Dispose(
102e0 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20 20  false);..       
102f0 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
10300 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20  region..    }.. 
10310 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
10320 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
10330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10370 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
10380 49 53 51 4c 69 74 65 4e 61 74 69 76 65 48 61 6e  ISQLiteNativeHan
10390 64 6c 65 20 49 6e 74 65 72 66 61 63 65 0d 0a 20  dle Interface.. 
103a0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
103b0 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69  ..    /// This i
103c0 6e 74 65 72 66 61 63 65 20 72 65 70 72 65 73 65  nterface represe
103d0 6e 74 73 20 61 20 6e 61 74 69 76 65 20 68 61 6e  nts a native han
103e0 64 6c 65 20 70 72 6f 76 69 64 65 64 20 62 79 20  dle provided by 
103f0 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 0d  the SQLite core.
10400 0a 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79  .    /// library
10410 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
10420 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69  mary>..    publi
10430 63 20 69 6e 74 65 72 66 61 63 65 20 49 53 51 4c  c interface ISQL
10440 69 74 65 4e 61 74 69 76 65 48 61 6e 64 6c 65 0d  iteNativeHandle.
10450 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
10460 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
10470 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
10480 61 74 69 76 65 20 68 61 6e 64 6c 65 20 76 61 6c  ative handle val
10490 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ue...        ///
104a0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
104b0 20 20 20 20 20 49 6e 74 50 74 72 20 4e 61 74 69       IntPtr Nati
104c0 76 65 48 61 6e 64 6c 65 20 7b 20 67 65 74 3b 20  veHandle { get; 
104d0 7d 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65  }..    }..    #e
104e0 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
104f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d 0a 20  ///////////.... 
10540 20 20 20 23 72 65 67 69 6f 6e 20 49 53 51 4c 69     #region ISQLi
10550 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20 49  teNativeModule I
10560 6e 74 65 72 66 61 63 65 0d 0a 20 20 20 20 2f 2f  nterface..    //
10570 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
10580 20 2f 2f 2f 20 54 68 69 73 20 69 6e 74 65 72 66   /// This interf
10590 61 63 65 20 72 65 70 72 65 73 65 6e 74 73 20 61  ace represents a
105a0 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 69   virtual table i
105b0 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 77 72  mplementation wr
105c0 69 74 74 65 6e 20 69 6e 0d 0a 20 20 20 20 2f 2f  itten in..    //
105d0 2f 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a  / native code...
105e0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
105f0 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 69  y>..    public i
10600 6e 74 65 72 66 61 63 65 20 49 53 51 4c 69 74 65  nterface ISQLite
10610 4e 61 74 69 76 65 4d 6f 64 75 6c 65 0d 0a 20 20  NativeModule..  
10620 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f    {..        ///
10630 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
10640 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a      /// <para>..
10650 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
10660 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65   method is calle
10670 64 20 74 6f 20 63 72 65 61 74 65 20 61 20 6e 65  d to create a ne
10680 77 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 61 20  w instance of a 
10690 76 69 72 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20  virtual table.. 
106a0 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 20 72 65         /// in re
106b0 73 70 6f 6e 73 65 20 74 6f 20 61 20 43 52 45 41  sponse to a CREA
106c0 54 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45  TE VIRTUAL TABLE
106d0 20 73 74 61 74 65 6d 65 6e 74 2e 20 54 68 65 20   statement. The 
106e0 64 62 20 70 61 72 61 6d 65 74 65 72 0d 0a 20 20  db parameter..  
106f0 20 20 20 20 20 20 2f 2f 2f 20 69 73 20 61 20 70        /// is a p
10700 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 53 51  ointer to the SQ
10710 4c 69 74 65 20 64 61 74 61 62 61 73 65 20 63 6f  Lite database co
10720 6e 6e 65 63 74 69 6f 6e 20 74 68 61 74 20 69 73  nnection that is
10730 20 65 78 65 63 75 74 69 6e 67 0d 0a 20 20 20 20   executing..    
10740 20 20 20 20 2f 2f 2f 20 74 68 65 20 43 52 45 41      /// the CREA
10750 54 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45  TE VIRTUAL TABLE
10760 20 73 74 61 74 65 6d 65 6e 74 2e 20 54 68 65 20   statement. The 
10770 70 41 75 78 20 61 72 67 75 6d 65 6e 74 20 69 73  pAux argument is
10780 20 74 68 65 20 63 6f 70 79 0d 0a 20 20 20 20 20   the copy..     
10790 20 20 20 2f 2f 2f 20 6f 66 20 74 68 65 20 63 6c     /// of the cl
107a0 69 65 6e 74 20 64 61 74 61 20 70 6f 69 6e 74 65  ient data pointe
107b0 72 20 74 68 61 74 20 77 61 73 20 74 68 65 20 66  r that was the f
107c0 6f 75 72 74 68 20 61 72 67 75 6d 65 6e 74 20 74  ourth argument t
107d0 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  o the..        /
107e0 2f 2f 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74  // sqlite3_creat
107f0 65 5f 6d 6f 64 75 6c 65 28 29 20 6f 72 20 73 71  e_module() or sq
10800 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 6d 6f 64  lite3_create_mod
10810 75 6c 65 5f 76 32 28 29 20 63 61 6c 6c 20 74 68  ule_v2() call th
10820 61 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  at..        /// 
10830 72 65 67 69 73 74 65 72 65 64 20 74 68 65 20 76  registered the v
10840 69 72 74 75 61 6c 20 74 61 62 6c 65 20 6d 6f 64  irtual table mod
10850 75 6c 65 2e 20 54 68 65 20 61 72 67 76 20 70 61  ule. The argv pa
10860 72 61 6d 65 74 65 72 20 69 73 20 61 6e 0d 0a 20  rameter is an.. 
10870 20 20 20 20 20 20 20 2f 2f 2f 20 61 72 72 61 79         /// array
10880 20 6f 66 20 61 72 67 63 20 70 6f 69 6e 74 65 72   of argc pointer
10890 73 20 74 6f 20 6e 75 6c 6c 20 74 65 72 6d 69 6e  s to null termin
108a0 61 74 65 64 20 73 74 72 69 6e 67 73 2e 20 54 68  ated strings. Th
108b0 65 20 66 69 72 73 74 0d 0a 20 20 20 20 20 20 20  e first..       
108c0 20 2f 2f 2f 20 73 74 72 69 6e 67 2c 20 61 72 67   /// string, arg
108d0 76 5b 30 5d 2c 20 69 73 20 74 68 65 20 6e 61 6d  v[0], is the nam
108e0 65 20 6f 66 20 74 68 65 20 6d 6f 64 75 6c 65 20  e of the module 
108f0 62 65 69 6e 67 20 69 6e 76 6f 6b 65 64 2e 20 54  being invoked. T
10900 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
10910 6d 6f 64 75 6c 65 20 6e 61 6d 65 20 69 73 20 74  module name is t
10920 68 65 20 6e 61 6d 65 20 70 72 6f 76 69 64 65 64  he name provided
10930 20 61 73 20 74 68 65 20 73 65 63 6f 6e 64 20 61   as the second a
10940 72 67 75 6d 65 6e 74 20 74 6f 0d 0a 20 20 20 20  rgument to..    
10950 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f      /// sqlite3_
10960 63 72 65 61 74 65 5f 6d 6f 64 75 6c 65 28 29 20  create_module() 
10970 61 6e 64 20 61 73 20 74 68 65 20 61 72 67 75 6d  and as the argum
10980 65 6e 74 20 74 6f 20 74 68 65 20 55 53 49 4e 47  ent to the USING
10990 20 63 6c 61 75 73 65 20 6f 66 0d 0a 20 20 20 20   clause of..    
109a0 20 20 20 20 2f 2f 2f 20 74 68 65 20 43 52 45 41      /// the CREA
109b0 54 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45  TE VIRTUAL TABLE
109c0 20 73 74 61 74 65 6d 65 6e 74 20 74 68 61 74 20   statement that 
109d0 69 73 20 72 75 6e 6e 69 6e 67 2e 20 54 68 65 20  is running. The 
109e0 73 65 63 6f 6e 64 2c 0d 0a 20 20 20 20 20 20 20  second,..       
109f0 20 2f 2f 2f 20 61 72 67 76 5b 31 5d 2c 20 69 73   /// argv[1], is
10a00 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   the name of the
10a10 20 64 61 74 61 62 61 73 65 20 69 6e 20 77 68 69   database in whi
10a20 63 68 20 74 68 65 20 6e 65 77 20 76 69 72 74 75  ch the new virtu
10a30 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20 20 20  al table..      
10a40 20 20 2f 2f 2f 20 69 73 20 62 65 69 6e 67 20 63    /// is being c
10a50 72 65 61 74 65 64 2e 20 54 68 65 20 64 61 74 61  reated. The data
10a60 62 61 73 65 20 6e 61 6d 65 20 69 73 20 22 6d 61  base name is "ma
10a70 69 6e 22 20 66 6f 72 20 74 68 65 20 70 72 69 6d  in" for the prim
10a80 61 72 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ary..        ///
10a90 20 64 61 74 61 62 61 73 65 2c 20 6f 72 20 22 74   database, or "t
10aa0 65 6d 70 22 20 66 6f 72 20 54 45 4d 50 20 64 61  emp" for TEMP da
10ab0 74 61 62 61 73 65 2c 20 6f 72 20 74 68 65 20 6e  tabase, or the n
10ac0 61 6d 65 20 67 69 76 65 6e 20 61 74 20 74 68 65  ame given at the
10ad0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 65 6e  ..        /// en
10ae0 64 20 6f 66 20 74 68 65 20 41 54 54 41 43 48 20  d of the ATTACH 
10af0 73 74 61 74 65 6d 65 6e 74 20 66 6f 72 20 61 74  statement for at
10b00 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65 73  tached databases
10b10 2e 20 54 68 65 20 74 68 69 72 64 0d 0a 20 20 20  . The third..   
10b20 20 20 20 20 20 2f 2f 2f 20 65 6c 65 6d 65 6e 74       /// element
10b30 20 6f 66 20 74 68 65 20 61 72 72 61 79 2c 20 61   of the array, a
10b40 72 67 76 5b 32 5d 2c 20 69 73 20 74 68 65 20 6e  rgv[2], is the n
10b50 61 6d 65 20 6f 66 20 74 68 65 20 6e 65 77 20 76  ame of the new v
10b60 69 72 74 75 61 6c 0d 0a 20 20 20 20 20 20 20 20  irtual..        
10b70 2f 2f 2f 20 74 61 62 6c 65 2c 20 61 73 20 73 70  /// table, as sp
10b80 65 63 69 66 69 65 64 20 66 6f 6c 6c 6f 77 69 6e  ecified followin
10b90 67 20 74 68 65 20 54 41 42 4c 45 20 6b 65 79 77  g the TABLE keyw
10ba0 6f 72 64 20 69 6e 20 74 68 65 20 43 52 45 41 54  ord in the CREAT
10bb0 45 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 56  E..        /// V
10bc0 49 52 54 55 41 4c 20 54 41 42 4c 45 20 73 74 61  IRTUAL TABLE sta
10bd0 74 65 6d 65 6e 74 2e 20 49 66 20 70 72 65 73 65  tement. If prese
10be0 6e 74 2c 20 74 68 65 20 66 6f 75 72 74 68 20 61  nt, the fourth a
10bf0 6e 64 20 73 75 62 73 65 71 75 65 6e 74 0d 0a 20  nd subsequent.. 
10c00 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 69 6e         /// strin
10c10 67 73 20 69 6e 20 74 68 65 20 61 72 67 76 5b 5d  gs in the argv[]
10c20 20 61 72 72 61 79 20 72 65 70 6f 72 74 20 74 68   array report th
10c30 65 20 61 72 67 75 6d 65 6e 74 73 20 74 6f 20 74  e arguments to t
10c40 68 65 20 6d 6f 64 75 6c 65 20 6e 61 6d 65 0d 0a  he module name..
10c50 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 20 74          /// in t
10c60 68 65 20 43 52 45 41 54 45 20 56 49 52 54 55 41  he CREATE VIRTUA
10c70 4c 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e  L TABLE statemen
10c80 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  t...        /// 
10c90 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
10ca0 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
10cb0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6a 6f 62       /// The job
10cc0 20 6f 66 20 74 68 69 73 20 6d 65 74 68 6f 64 20   of this method 
10cd0 69 73 20 74 6f 20 63 6f 6e 73 74 72 75 63 74 20  is to construct 
10ce0 74 68 65 20 6e 65 77 20 76 69 72 74 75 61 6c 20  the new virtual 
10cf0 74 61 62 6c 65 20 6f 62 6a 65 63 74 0d 0a 20 20  table object..  
10d00 20 20 20 20 20 20 2f 2f 2f 20 28 61 6e 20 73 71        /// (an sq
10d10 6c 69 74 65 33 5f 76 74 61 62 20 6f 62 6a 65 63  lite3_vtab objec
10d20 74 29 20 61 6e 64 20 72 65 74 75 72 6e 20 61 20  t) and return a 
10d30 70 6f 69 6e 74 65 72 20 74 6f 20 69 74 20 69 6e  pointer to it in
10d40 20 2a 70 70 56 54 61 62 2e 0d 0a 20 20 20 20 20   *ppVTab...     
10d50 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a     /// </para>..
10d60 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
10d70 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
10d80 41 73 20 70 61 72 74 20 6f 66 20 74 68 65 20 74  As part of the t
10d90 61 73 6b 20 6f 66 20 63 72 65 61 74 69 6e 67 20  ask of creating 
10da0 61 20 6e 65 77 20 73 71 6c 69 74 65 33 5f 76 74  a new sqlite3_vt
10db0 61 62 20 73 74 72 75 63 74 75 72 65 2c 20 74 68  ab structure, th
10dc0 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  is..        /// 
10dd0 6d 65 74 68 6f 64 20 6d 75 73 74 20 69 6e 76 6f  method must invo
10de0 6b 65 20 73 71 6c 69 74 65 33 5f 64 65 63 6c 61  ke sqlite3_decla
10df0 72 65 5f 76 74 61 62 28 29 20 74 6f 20 74 65 6c  re_vtab() to tel
10e00 6c 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  l the SQLite cor
10e10 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61  e..        /// a
10e20 62 6f 75 74 20 74 68 65 20 63 6f 6c 75 6d 6e 73  bout the columns
10e30 20 61 6e 64 20 64 61 74 61 74 79 70 65 73 20 69   and datatypes i
10e40 6e 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  n the virtual ta
10e50 62 6c 65 2e 20 54 68 65 0d 0a 20 20 20 20 20 20  ble. The..      
10e60 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 64 65    /// sqlite3_de
10e70 63 6c 61 72 65 5f 76 74 61 62 28 29 20 41 50 49  clare_vtab() API
10e80 20 68 61 73 20 74 68 65 20 66 6f 6c 6c 6f 77 69   has the followi
10e90 6e 67 20 70 72 6f 74 6f 74 79 70 65 3a 0d 0a 20  ng prototype:.. 
10ea0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
10eb0 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
10ec0 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
10ed0 2f 2f 2f 20 3c 63 6f 64 65 3e 0d 0a 20 20 20 20  /// <code>..    
10ee0 20 20 20 20 2f 2f 2f 20 69 6e 74 20 73 71 6c 69      /// int sqli
10ef0 74 65 33 5f 64 65 63 6c 61 72 65 5f 76 74 61 62  te3_declare_vtab
10f00 28 73 71 6c 69 74 65 33 20 2a 64 62 2c 20 63 6f  (sqlite3 *db, co
10f10 6e 73 74 20 63 68 61 72 20 2a 7a 43 72 65 61 74  nst char *zCreat
10f20 65 54 61 62 6c 65 29 0d 0a 20 20 20 20 20 20 20  eTable)..       
10f30 20 2f 2f 2f 20 3c 2f 63 6f 64 65 3e 0d 0a 20 20   /// </code>..  
10f40 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
10f50 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
10f60 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
10f70 2f 2f 20 54 68 65 20 66 69 72 73 74 20 61 72 67  // The first arg
10f80 75 6d 65 6e 74 20 74 6f 20 73 71 6c 69 74 65 33  ument to sqlite3
10f90 5f 64 65 63 6c 61 72 65 5f 76 74 61 62 28 29 20  _declare_vtab() 
10fa0 6d 75 73 74 20 62 65 20 74 68 65 20 73 61 6d 65  must be the same
10fb0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 61  ..        /// da
10fc0 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
10fd0 6e 20 70 6f 69 6e 74 65 72 20 61 73 20 74 68 65  n pointer as the
10fe0 20 66 69 72 73 74 20 70 61 72 61 6d 65 74 65 72   first parameter
10ff0 20 74 6f 20 74 68 69 73 20 6d 65 74 68 6f 64 2e   to this method.
11000 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
11010 65 20 73 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e  e second argumen
11020 74 20 74 6f 20 73 71 6c 69 74 65 33 5f 64 65 63  t to sqlite3_dec
11030 6c 61 72 65 5f 76 74 61 62 28 29 20 6d 75 73 74  lare_vtab() must
11040 20 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20   a..        /// 
11050 7a 65 72 6f 2d 74 65 72 6d 69 6e 61 74 65 64 20  zero-terminated 
11060 55 54 46 2d 38 20 73 74 72 69 6e 67 20 74 68 61  UTF-8 string tha
11070 74 20 63 6f 6e 74 61 69 6e 73 20 61 20 77 65 6c  t contains a wel
11080 6c 2d 66 6f 72 6d 65 64 20 43 52 45 41 54 45 0d  l-formed CREATE.
11090 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 41 42  .        /// TAB
110a0 4c 45 20 73 74 61 74 65 6d 65 6e 74 20 74 68 61  LE statement tha
110b0 74 20 64 65 66 69 6e 65 73 20 74 68 65 20 63 6f  t defines the co
110c0 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20 76 69 72  lumns in the vir
110d0 74 75 61 6c 20 74 61 62 6c 65 20 61 6e 64 0d 0a  tual table and..
110e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 69          /// thei
110f0 72 20 64 61 74 61 20 74 79 70 65 73 2e 20 54 68  r data types. Th
11100 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 74 61  e name of the ta
11110 62 6c 65 20 69 6e 20 74 68 69 73 20 43 52 45 41  ble in this CREA
11120 54 45 20 54 41 42 4c 45 0d 0a 20 20 20 20 20 20  TE TABLE..      
11130 20 20 2f 2f 2f 20 73 74 61 74 65 6d 65 6e 74 20    /// statement 
11140 69 73 20 69 67 6e 6f 72 65 64 2c 20 61 73 20 61  is ignored, as a
11150 72 65 20 61 6c 6c 20 63 6f 6e 73 74 72 61 69 6e  re all constrain
11160 74 73 2e 20 4f 6e 6c 79 20 74 68 65 20 63 6f 6c  ts. Only the col
11170 75 6d 6e 20 6e 61 6d 65 73 0d 0a 20 20 20 20 20  umn names..     
11180 20 20 20 2f 2f 2f 20 61 6e 64 20 64 61 74 61 74     /// and datat
11190 79 70 65 73 20 6d 61 74 74 65 72 2e 20 54 68 65  ypes matter. The
111a0 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 73 74   CREATE TABLE st
111b0 61 74 65 6d 65 6e 74 20 73 74 72 69 6e 67 20 6e  atement string n
111c0 65 65 64 20 6e 6f 74 20 74 6f 0d 0a 20 20 20 20  eed not to..    
111d0 20 20 20 20 2f 2f 2f 20 62 65 20 68 65 6c 64 20      /// be held 
111e0 69 6e 20 70 65 72 73 69 73 74 65 6e 74 20 6d 65  in persistent me
111f0 6d 6f 72 79 2e 20 54 68 65 20 73 74 72 69 6e 67  mory. The string
11200 20 63 61 6e 20 62 65 20 64 65 61 6c 6c 6f 63 61   can be dealloca
11210 74 65 64 20 61 6e 64 2f 6f 72 0d 0a 20 20 20 20  ted and/or..    
11220 20 20 20 20 2f 2f 2f 20 72 65 75 73 65 64 20 61      /// reused a
11230 73 20 73 6f 6f 6e 20 61 73 20 74 68 65 20 73 71  s soon as the sq
11240 6c 69 74 65 33 5f 64 65 63 6c 61 72 65 5f 76 74  lite3_declare_vt
11250 61 62 28 29 20 72 6f 75 74 69 6e 65 20 72 65 74  ab() routine ret
11260 75 72 6e 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  urns...        /
11270 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20  // </para>..    
11280 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
11290 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
112a0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 44 62  <param name="pDb
112b0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
112c0 54 68 65 20 6e 61 74 69 76 65 20 64 61 74 61 62  The native datab
112d0 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 68  ase connection h
112e0 61 6e 64 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20  andle...        
112f0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
11300 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
11310 20 6e 61 6d 65 3d 22 70 41 75 78 22 3e 0d 0a 20   name="pAux">.. 
11320 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f         /// The o
11330 72 69 67 69 6e 61 6c 20 6e 61 74 69 76 65 20 70  riginal native p
11340 6f 69 6e 74 65 72 20 76 61 6c 75 65 20 74 68 61  ointer value tha
11350 74 20 77 61 73 20 70 72 6f 76 69 64 65 64 20 74  t was provided t
11360 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  o the..        /
11370 2f 2f 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74  // sqlite3_creat
11380 65 5f 6d 6f 64 75 6c 65 28 29 2c 20 73 71 6c 69  e_module(), sqli
11390 74 65 33 5f 63 72 65 61 74 65 5f 6d 6f 64 75 6c  te3_create_modul
113a0 65 5f 76 32 28 29 20 6f 72 0d 0a 20 20 20 20 20  e_v2() or..     
113b0 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 63     /// sqlite3_c
113c0 72 65 61 74 65 5f 64 69 73 70 6f 73 61 62 6c 65  reate_disposable
113d0 5f 6d 6f 64 75 6c 65 28 29 20 66 75 6e 63 74 69  _module() functi
113e0 6f 6e 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ons...        //
113f0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
11400 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
11410 61 6d 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20 20  ame="argc">..   
11420 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d       /// The num
11430 62 65 72 20 6f 66 20 61 72 67 75 6d 65 6e 74 73  ber of arguments
11440 20 66 72 6f 6d 20 74 68 65 20 43 52 45 41 54 45   from the CREATE
11450 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45 20 73   VIRTUAL TABLE s
11460 74 61 74 65 6d 65 6e 74 2e 0d 0a 20 20 20 20 20  tatement...     
11470 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
11480 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
11490 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 76 22 3e  ram name="argv">
114a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
114b0 65 20 61 72 72 61 79 20 6f 66 20 73 74 72 69 6e  e array of strin
114c0 67 20 61 72 67 75 6d 65 6e 74 73 20 66 72 6f 6d  g arguments from
114d0 20 74 68 65 20 43 52 45 41 54 45 20 56 49 52 54   the CREATE VIRT
114e0 55 41 4c 20 54 41 42 4c 45 0d 0a 20 20 20 20 20  UAL TABLE..     
114f0 20 20 20 2f 2f 2f 20 73 74 61 74 65 6d 65 6e 74     /// statement
11500 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
11510 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
11520 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
11530 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20  ="pVtab">..     
11540 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63     /// Upon succ
11550 65 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65  ess, this parame
11560 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69  ter must be modi
11570 66 69 65 64 20 74 6f 20 70 6f 69 6e 74 20 74 6f  fied to point to
11580 20 74 68 65 20 6e 65 77 6c 79 0d 0a 20 20 20 20   the newly..    
11590 20 20 20 20 2f 2f 2f 20 63 72 65 61 74 65 64 20      /// created 
115a0 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76  native sqlite3_v
115b0 74 61 62 20 64 65 72 69 76 65 64 20 73 74 72 75  tab derived stru
115c0 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  cture...        
115d0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
115e0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
115f0 20 6e 61 6d 65 3d 22 70 45 72 72 6f 72 22 3e 0d   name="pError">.
11600 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f  .        /// Upo
11610 6e 20 66 61 69 6c 75 72 65 2c 20 74 68 69 73 20  n failure, this 
11620 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62  parameter must b
11630 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 70 6f  e modified to po
11640 69 6e 74 20 74 6f 20 74 68 65 20 65 72 72 6f 72  int to the error
11650 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65  ..        /// me
11660 73 73 61 67 65 2c 20 77 69 74 68 20 74 68 65 20  ssage, with the 
11670 75 6e 64 65 72 6c 79 69 6e 67 20 6d 65 6d 6f 72  underlying memor
11680 79 20 68 61 76 69 6e 67 20 62 65 65 6e 20 6f 62  y having been ob
11690 74 61 69 6e 65 64 20 66 72 6f 6d 20 74 68 65 0d  tained from the.
116a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c  .        /// sql
116b0 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 20 66 75  ite3_malloc() fu
116c0 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  nction...       
116d0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
116e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
116f0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
11700 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c  / A standard SQL
11710 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e  ite return code.
11720 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
11730 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
11740 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64    SQLiteErrorCod
11750 65 20 78 43 72 65 61 74 65 28 0d 0a 20 20 20 20  e xCreate(..    
11760 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
11770 44 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Db,..           
11780 20 49 6e 74 50 74 72 20 70 41 75 78 2c 0d 0a 20   IntPtr pAux,.. 
11790 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 61             int a
117a0 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  rgc,..          
117b0 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a    IntPtr argv,..
117c0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
117d0 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
117e0 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 49             ref I
117f0 6e 74 50 74 72 20 70 45 72 72 6f 72 0d 0a 20 20  ntPtr pError..  
11800 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a            );....
11810 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
11820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
11860 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
11870 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
11880 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20    /// <para>..  
11890 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 78 43        /// The xC
118a0 6f 6e 6e 65 63 74 20 6d 65 74 68 6f 64 20 69 73  onnect method is
118b0 20 76 65 72 79 20 73 69 6d 69 6c 61 72 20 74 6f   very similar to
118c0 20 78 43 72 65 61 74 65 2e 20 49 74 20 68 61 73   xCreate. It has
118d0 20 74 68 65 20 73 61 6d 65 0d 0a 20 20 20 20 20   the same..     
118e0 20 20 20 2f 2f 2f 20 70 61 72 61 6d 65 74 65 72     /// parameter
118f0 73 20 61 6e 64 20 63 6f 6e 73 74 72 75 63 74 73  s and constructs
11900 20 61 20 6e 65 77 20 73 71 6c 69 74 65 33 5f 76   a new sqlite3_v
11910 74 61 62 20 73 74 72 75 63 74 75 72 65 20 6a 75  tab structure ju
11920 73 74 20 6c 69 6b 65 0d 0a 20 20 20 20 20 20 20  st like..       
11930 20 2f 2f 2f 20 78 43 72 65 61 74 65 2e 20 41 6e   /// xCreate. An
11940 64 20 69 74 20 6d 75 73 74 20 61 6c 73 6f 20 63  d it must also c
11950 61 6c 6c 20 73 71 6c 69 74 65 33 5f 64 65 63 6c  all sqlite3_decl
11960 61 72 65 5f 76 74 61 62 28 29 20 6c 69 6b 65 20  are_vtab() like 
11970 78 43 72 65 61 74 65 2e 0d 0a 20 20 20 20 20 20  xCreate...      
11980 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
11990 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
119a0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
119b0 68 65 20 64 69 66 66 65 72 65 6e 63 65 20 69 73  he difference is
119c0 20 74 68 61 74 20 78 43 6f 6e 6e 65 63 74 20 69   that xConnect i
119d0 73 20 63 61 6c 6c 65 64 20 74 6f 20 65 73 74 61  s called to esta
119e0 62 6c 69 73 68 20 61 20 6e 65 77 0d 0a 20 20 20  blish a new..   
119f0 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 6e 65 63 74       /// connect
11a00 69 6f 6e 20 74 6f 20 61 6e 20 65 78 69 73 74 69  ion to an existi
11a10 6e 67 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  ng virtual table
11a20 20 77 68 65 72 65 61 73 20 78 43 72 65 61 74 65   whereas xCreate
11a30 20 69 73 20 63 61 6c 6c 65 64 0d 0a 20 20 20 20   is called..    
11a40 20 20 20 20 2f 2f 2f 20 74 6f 20 63 72 65 61 74      /// to creat
11a50 65 20 61 20 6e 65 77 20 76 69 72 74 75 61 6c 20  e a new virtual 
11a60 74 61 62 6c 65 20 66 72 6f 6d 20 73 63 72 61 74  table from scrat
11a70 63 68 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ch...        ///
11a80 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20   </para>..      
11a90 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20    /// <para>..  
11aa0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 78 43        /// The xC
11ab0 72 65 61 74 65 20 61 6e 64 20 78 43 6f 6e 6e 65  reate and xConne
11ac0 63 74 20 6d 65 74 68 6f 64 73 20 61 72 65 20 6f  ct methods are o
11ad0 6e 6c 79 20 64 69 66 66 65 72 65 6e 74 20 77 68  nly different wh
11ae0 65 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  en the..        
11af0 2f 2f 2f 20 76 69 72 74 75 61 6c 20 74 61 62 6c  /// virtual tabl
11b00 65 20 68 61 73 20 73 6f 6d 65 20 6b 69 6e 64 20  e has some kind 
11b10 6f 66 20 62 61 63 6b 69 6e 67 20 73 74 6f 72 65  of backing store
11b20 20 74 68 61 74 20 6d 75 73 74 20 62 65 0d 0a 20   that must be.. 
11b30 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 69 74 69         /// initi
11b40 61 6c 69 7a 65 64 20 74 68 65 20 66 69 72 73 74  alized the first
11b50 20 74 69 6d 65 20 74 68 65 20 76 69 72 74 75 61   time the virtua
11b60 6c 20 74 61 62 6c 65 20 69 73 20 63 72 65 61 74  l table is creat
11b70 65 64 2e 20 54 68 65 0d 0a 20 20 20 20 20 20 20  ed. The..       
11b80 20 2f 2f 2f 20 78 43 72 65 61 74 65 20 6d 65 74   /// xCreate met
11b90 68 6f 64 20 63 72 65 61 74 65 73 20 61 6e 64 20  hod creates and 
11ba0 69 6e 69 74 69 61 6c 69 7a 65 73 20 74 68 65 20  initializes the 
11bb0 62 61 63 6b 69 6e 67 20 73 74 6f 72 65 2e 20 54  backing store. T
11bc0 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
11bd0 78 43 6f 6e 6e 65 63 74 20 6d 65 74 68 6f 64 20  xConnect method 
11be0 6a 75 73 74 20 63 6f 6e 6e 65 63 74 73 20 74 6f  just connects to
11bf0 20 61 6e 20 65 78 69 73 74 69 6e 67 20 62 61 63   an existing bac
11c00 6b 69 6e 67 20 73 74 6f 72 65 2e 0d 0a 20 20 20  king store...   
11c10 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
11c20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
11c30 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
11c40 2f 20 41 73 20 61 6e 20 65 78 61 6d 70 6c 65 2c  / As an example,
11c50 20 63 6f 6e 73 69 64 65 72 20 61 20 76 69 72 74   consider a virt
11c60 75 61 6c 20 74 61 62 6c 65 20 69 6d 70 6c 65 6d  ual table implem
11c70 65 6e 74 61 74 69 6f 6e 20 74 68 61 74 0d 0a 20  entation that.. 
11c80 20 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f 76 69         /// provi
11c90 64 65 73 20 72 65 61 64 2d 6f 6e 6c 79 20 61 63  des read-only ac
11ca0 63 65 73 73 20 74 6f 20 65 78 69 73 74 69 6e 67  cess to existing
11cb0 20 63 6f 6d 6d 61 2d 73 65 70 61 72 61 74 65 64   comma-separated
11cc0 2d 76 61 6c 75 65 20 28 43 53 56 29 0d 0a 20 20  -value (CSV)..  
11cd0 20 20 20 20 20 20 2f 2f 2f 20 66 69 6c 65 73 20        /// files 
11ce0 6f 6e 20 64 69 73 6b 2e 20 54 68 65 72 65 20 69  on disk. There i
11cf0 73 20 6e 6f 20 62 61 63 6b 69 6e 67 20 73 74 6f  s no backing sto
11d00 72 65 20 74 68 61 74 20 6e 65 65 64 73 20 74 6f  re that needs to
11d10 20 62 65 20 63 72 65 61 74 65 64 0d 0a 20 20 20   be created..   
11d20 20 20 20 20 20 2f 2f 2f 20 6f 72 20 69 6e 69 74       /// or init
11d30 69 61 6c 69 7a 65 64 20 66 6f 72 20 73 75 63 68  ialized for such
11d40 20 61 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65   a virtual table
11d50 20 28 73 69 6e 63 65 20 74 68 65 20 43 53 56 20   (since the CSV 
11d60 66 69 6c 65 73 0d 0a 20 20 20 20 20 20 20 20 2f  files..        /
11d70 2f 2f 20 61 6c 72 65 61 64 79 20 65 78 69 73 74  // already exist
11d80 20 6f 6e 20 64 69 73 6b 29 20 73 6f 20 74 68 65   on disk) so the
11d90 20 78 43 72 65 61 74 65 20 61 6e 64 20 78 43 6f   xCreate and xCo
11da0 6e 6e 65 63 74 20 6d 65 74 68 6f 64 73 20 77 69  nnect methods wi
11db0 6c 6c 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f  ll be..        /
11dc0 2f 2f 20 69 64 65 6e 74 69 63 61 6c 20 66 6f 72  // identical for
11dd0 20 74 68 61 74 20 6d 6f 64 75 6c 65 2e 0d 0a 20   that module... 
11de0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
11df0 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
11e00 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
11e10 2f 2f 2f 20 41 6e 6f 74 68 65 72 20 65 78 61 6d  /// Another exam
11e20 70 6c 65 20 69 73 20 61 20 76 69 72 74 75 61 6c  ple is a virtual
11e30 20 74 61 62 6c 65 20 74 68 61 74 20 69 6d 70 6c   table that impl
11e40 65 6d 65 6e 74 73 20 61 20 66 75 6c 6c 2d 74 65  ements a full-te
11e50 78 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  xt..        /// 
11e60 69 6e 64 65 78 2e 20 54 68 65 20 78 43 72 65 61  index. The xCrea
11e70 74 65 20 6d 65 74 68 6f 64 20 6d 75 73 74 20 63  te method must c
11e80 72 65 61 74 65 20 61 6e 64 20 69 6e 69 74 69 61  reate and initia
11e90 6c 69 7a 65 20 64 61 74 61 0d 0a 20 20 20 20 20  lize data..     
11ea0 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65     /// structure
11eb0 73 20 74 6f 20 68 6f 6c 64 20 74 68 65 20 64 69  s to hold the di
11ec0 63 74 69 6f 6e 61 72 79 20 61 6e 64 20 70 6f 73  ctionary and pos
11ed0 74 69 6e 67 20 6c 69 73 74 73 20 66 6f 72 20 74  ting lists for t
11ee0 68 61 74 20 69 6e 64 65 78 2e 0d 0a 20 20 20 20  hat index...    
11ef0 20 20 20 20 2f 2f 2f 20 54 68 65 20 78 43 6f 6e      /// The xCon
11f00 6e 65 63 74 20 6d 65 74 68 6f 64 2c 20 6f 6e 20  nect method, on 
11f10 74 68 65 20 6f 74 68 65 72 20 68 61 6e 64 2c 20  the other hand, 
11f20 6f 6e 6c 79 20 68 61 73 20 74 6f 20 6c 6f 63 61  only has to loca
11f30 74 65 20 61 6e 64 20 75 73 65 0d 0a 20 20 20 20  te and use..    
11f40 20 20 20 20 2f 2f 2f 20 61 6e 20 65 78 69 73 74      /// an exist
11f50 69 6e 67 20 64 69 63 74 69 6f 6e 61 72 79 20 61  ing dictionary a
11f60 6e 64 20 70 6f 73 74 69 6e 67 20 6c 69 73 74 73  nd posting lists
11f70 20 74 68 61 74 20 77 65 72 65 20 63 72 65 61 74   that were creat
11f80 65 64 20 62 79 20 61 0d 0a 20 20 20 20 20 20 20  ed by a..       
11f90 20 2f 2f 2f 20 70 72 69 6f 72 20 78 43 72 65 61   /// prior xCrea
11fa0 74 65 20 63 61 6c 6c 2e 0d 0a 20 20 20 20 20 20  te call...      
11fb0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
11fc0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
11fd0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
11fe0 68 65 20 78 43 6f 6e 6e 65 63 74 20 6d 65 74 68  he xConnect meth
11ff0 6f 64 20 6d 75 73 74 20 72 65 74 75 72 6e 20 53  od must return S
12000 51 4c 49 54 45 5f 4f 4b 20 69 66 20 69 74 20 69  QLITE_OK if it i
12010 73 20 73 75 63 63 65 73 73 66 75 6c 20 69 6e 0d  s successful in.
12020 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 72 65  .        /// cre
12030 61 74 69 6e 67 20 74 68 65 20 6e 65 77 20 76 69  ating the new vi
12040 72 74 75 61 6c 20 74 61 62 6c 65 2c 20 6f 72 20  rtual table, or 
12050 53 51 4c 49 54 45 5f 45 52 52 4f 52 20 69 66 20  SQLITE_ERROR if 
12060 69 74 20 69 73 20 6e 6f 74 0d 0a 20 20 20 20 20  it is not..     
12070 20 20 20 2f 2f 2f 20 73 75 63 63 65 73 73 66 75     /// successfu
12080 6c 2e 20 49 66 20 6e 6f 74 20 73 75 63 63 65 73  l. If not succes
12090 73 66 75 6c 2c 20 74 68 65 20 73 71 6c 69 74 65  sful, the sqlite
120a0 33 5f 76 74 61 62 20 73 74 72 75 63 74 75 72 65  3_vtab structure
120b0 20 6d 75 73 74 20 6e 6f 74 0d 0a 20 20 20 20 20   must not..     
120c0 20 20 20 2f 2f 2f 20 62 65 20 61 6c 6c 6f 63 61     /// be alloca
120d0 74 65 64 2e 20 41 6e 20 65 72 72 6f 72 20 6d 65  ted. An error me
120e0 73 73 61 67 65 20 6d 61 79 20 6f 70 74 69 6f 6e  ssage may option
120f0 61 6c 6c 79 20 62 65 20 72 65 74 75 72 6e 65 64  ally be returned
12100 20 69 6e 20 2a 70 7a 45 72 72 0d 0a 20 20 20 20   in *pzErr..    
12110 20 20 20 20 2f 2f 2f 20 69 66 20 75 6e 73 75 63      /// if unsuc
12120 63 65 73 73 66 75 6c 2e 20 53 70 61 63 65 20 74  cessful. Space t
12130 6f 20 68 6f 6c 64 20 74 68 65 20 65 72 72 6f 72  o hold the error
12140 20 6d 65 73 73 61 67 65 20 73 74 72 69 6e 67 20   message string 
12150 6d 75 73 74 20 62 65 0d 0a 20 20 20 20 20 20 20  must be..       
12160 20 2f 2f 2f 20 61 6c 6c 6f 63 61 74 65 64 20 75   /// allocated u
12170 73 69 6e 67 20 61 6e 20 53 51 4c 69 74 65 20 6d  sing an SQLite m
12180 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e  emory allocation
12190 20 66 75 6e 63 74 69 6f 6e 20 6c 69 6b 65 0d 0a   function like..
121a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69          /// sqli
121b0 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 20 6f 72 20  te3_malloc() or 
121c0 73 71 6c 69 74 65 33 5f 6d 70 72 69 6e 74 66 28  sqlite3_mprintf(
121d0 29 20 61 73 20 74 68 65 20 53 51 4c 69 74 65 20  ) as the SQLite 
121e0 63 6f 72 65 20 77 69 6c 6c 0d 0a 20 20 20 20 20  core will..     
121f0 20 20 20 2f 2f 2f 20 61 74 74 65 6d 70 74 20 74     /// attempt t
12200 6f 20 66 72 65 65 20 74 68 65 20 73 70 61 63 65  o free the space
12210 20 75 73 69 6e 67 20 73 71 6c 69 74 65 33 5f 66   using sqlite3_f
12220 72 65 65 28 29 20 61 66 74 65 72 20 74 68 65 20  ree() after the 
12230 65 72 72 6f 72 20 68 61 73 0d 0a 20 20 20 20 20  error has..     
12240 20 20 20 2f 2f 2f 20 62 65 65 6e 20 72 65 70 6f     /// been repo
12250 72 74 65 64 20 75 70 20 74 6f 20 74 68 65 20 61  rted up to the a
12260 70 70 6c 69 63 61 74 69 6f 6e 2e 0d 0a 20 20 20  pplication...   
12270 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
12280 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
12290 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
122a0 2f 20 54 68 65 20 78 43 6f 6e 6e 65 63 74 20 6d  / The xConnect m
122b0 65 74 68 6f 64 20 69 73 20 72 65 71 75 69 72 65  ethod is require
122c0 64 20 66 6f 72 20 65 76 65 72 79 20 76 69 72 74  d for every virt
122d0 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20 20  ual table..     
122e0 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74     /// implement
122f0 61 74 69 6f 6e 2c 20 74 68 6f 75 67 68 20 74 68  ation, though th
12300 65 20 78 43 72 65 61 74 65 20 61 6e 64 20 78 43  e xCreate and xC
12310 6f 6e 6e 65 63 74 20 70 6f 69 6e 74 65 72 73 20  onnect pointers 
12320 6f 66 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  of the..        
12330 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75  /// sqlite3_modu
12340 6c 65 20 6f 62 6a 65 63 74 20 6d 61 79 20 70 6f  le object may po
12350 69 6e 74 20 74 6f 20 74 68 65 20 73 61 6d 65 20  int to the same 
12360 66 75 6e 63 74 69 6f 6e 20 74 68 65 20 76 69 72  function the vir
12370 74 75 61 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tual..        //
12380 2f 20 74 61 62 6c 65 20 64 6f 65 73 20 6e 6f 74  / table does not
12390 20 6e 65 65 64 20 74 6f 20 69 6e 69 74 69 61 6c   need to initial
123a0 69 7a 65 20 62 61 63 6b 69 6e 67 20 73 74 6f 72  ize backing stor
123b0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
123c0 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
123d0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
123e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
123f0 72 61 6d 20 6e 61 6d 65 3d 22 70 44 62 22 3e 0d  ram name="pDb">.
12400 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
12410 20 6e 61 74 69 76 65 20 64 61 74 61 62 61 73 65   native database
12420 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 6e 64   connection hand
12430 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le...        ///
12440 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
12450 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
12460 6d 65 3d 22 70 41 75 78 22 3e 0d 0a 20 20 20 20  me="pAux">..    
12470 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 72 69 67      /// The orig
12480 69 6e 61 6c 20 6e 61 74 69 76 65 20 70 6f 69 6e  inal native poin
12490 74 65 72 20 76 61 6c 75 65 20 74 68 61 74 20 77  ter value that w
124a0 61 73 20 70 72 6f 76 69 64 65 64 20 74 6f 20 74  as provided to t
124b0 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
124c0 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 6d  sqlite3_create_m
124d0 6f 64 75 6c 65 28 29 2c 20 73 71 6c 69 74 65 33  odule(), sqlite3
124e0 5f 63 72 65 61 74 65 5f 6d 6f 64 75 6c 65 5f 76  _create_module_v
124f0 32 28 29 20 6f 72 0d 0a 20 20 20 20 20 20 20 20  2() or..        
12500 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 63 72 65 61  /// sqlite3_crea
12510 74 65 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f  te_disposable_mo
12520 64 75 6c 65 28 29 20 66 75 6e 63 74 69 6f 6e 73  dule() functions
12530 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
12540 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
12550 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
12560 3d 22 61 72 67 63 22 3e 0d 0a 20 20 20 20 20 20  ="argc">..      
12570 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72    /// The number
12580 20 6f 66 20 61 72 67 75 6d 65 6e 74 73 20 66 72   of arguments fr
12590 6f 6d 20 74 68 65 20 43 52 45 41 54 45 20 56 49  om the CREATE VI
125a0 52 54 55 41 4c 20 54 41 42 4c 45 20 73 74 61 74  RTUAL TABLE stat
125b0 65 6d 65 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20  ement...        
125c0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
125d0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
125e0 20 6e 61 6d 65 3d 22 61 72 67 76 22 3e 0d 0a 20   name="argv">.. 
125f0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61         /// The a
12600 72 72 61 79 20 6f 66 20 73 74 72 69 6e 67 20 61  rray of string a
12610 72 67 75 6d 65 6e 74 73 20 66 72 6f 6d 20 74 68  rguments from th
12620 65 20 43 52 45 41 54 45 20 56 49 52 54 55 41 4c  e CREATE VIRTUAL
12630 20 54 41 42 4c 45 0d 0a 20 20 20 20 20 20 20 20   TABLE..        
12640 2f 2f 2f 20 73 74 61 74 65 6d 65 6e 74 2e 0d 0a  /// statement...
12650 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
12660 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
12670 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
12680 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
12690 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73  /// Upon success
126a0 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72  , this parameter
126b0 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65   must be modifie
126c0 64 20 74 6f 20 70 6f 69 6e 74 20 74 6f 20 74 68  d to point to th
126d0 65 20 6e 65 77 6c 79 0d 0a 20 20 20 20 20 20 20  e newly..       
126e0 20 2f 2f 2f 20 63 72 65 61 74 65 64 20 6e 61 74   /// created nat
126f0 69 76 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62  ive sqlite3_vtab
12700 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75   derived structu
12710 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
12720 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
12730 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
12740 6d 65 3d 22 70 45 72 72 6f 72 22 3e 0d 0a 20 20  me="pError">..  
12750 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 66        /// Upon f
12760 61 69 6c 75 72 65 2c 20 74 68 69 73 20 70 61 72  ailure, this par
12770 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d  ameter must be m
12780 6f 64 69 66 69 65 64 20 74 6f 20 70 6f 69 6e 74  odified to point
12790 20 74 6f 20 74 68 65 20 65 72 72 6f 72 0d 0a 20   to the error.. 
127a0 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 73 73 61         /// messa
127b0 67 65 2c 20 77 69 74 68 20 74 68 65 20 75 6e 64  ge, with the und
127c0 65 72 6c 79 69 6e 67 20 6d 65 6d 6f 72 79 20 68  erlying memory h
127d0 61 76 69 6e 67 20 62 65 65 6e 20 6f 62 74 61 69  aving been obtai
127e0 6e 65 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20  ned from the..  
127f0 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65        /// sqlite
12800 33 5f 6d 61 6c 6c 6f 63 28 29 20 66 75 6e 63 74  3_malloc() funct
12810 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ion...        //
12820 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
12830 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
12840 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
12850 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
12860 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
12870 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
12880 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53  urns>..        S
12890 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
128a0 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20  Connect(..      
128b0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 44 62        IntPtr pDb
128c0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  ,..            I
128d0 6e 74 50 74 72 20 70 41 75 78 2c 0d 0a 20 20 20  ntPtr pAux,..   
128e0 20 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67           int arg
128f0 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  c,..            
12900 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20  IntPtr argv,..  
12910 20 20 20 20 20 20 20 20 20 20 72 65 66 20 49 6e            ref In
12920 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
12930 20 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74           ref Int
12940 50 74 72 20 70 45 72 72 6f 72 0d 0a 20 20 20 20  Ptr pError..    
12950 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20          );....  
12960 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
12970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
129a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
129b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
129c0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
129d0 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
129e0 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 75      /// SQLite u
129f0 73 65 73 20 74 68 65 20 78 42 65 73 74 49 6e 64  ses the xBestInd
12a00 65 78 20 6d 65 74 68 6f 64 20 6f 66 20 61 20 76  ex method of a v
12a10 69 72 74 75 61 6c 20 74 61 62 6c 65 20 6d 6f 64  irtual table mod
12a20 75 6c 65 20 74 6f 0d 0a 20 20 20 20 20 20 20 20  ule to..        
12a30 2f 2f 2f 20 64 65 74 65 72 6d 69 6e 65 20 74 68  /// determine th
12a40 65 20 62 65 73 74 20 77 61 79 20 74 6f 20 61 63  e best way to ac
12a50 63 65 73 73 20 74 68 65 20 76 69 72 74 75 61 6c  cess the virtual
12a60 20 74 61 62 6c 65 2e 20 54 68 65 20 78 42 65 73   table. The xBes
12a70 74 49 6e 64 65 78 0d 0a 20 20 20 20 20 20 20 20  tIndex..        
12a80 2f 2f 2f 20 6d 65 74 68 6f 64 20 68 61 73 20 61  /// method has a
12a90 20 70 72 6f 74 6f 74 79 70 65 20 6c 69 6b 65 20   prototype like 
12aa0 74 68 69 73 3a 0d 0a 20 20 20 20 20 20 20 20 2f  this:..        /
12ab0 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20  // </para>..    
12ac0 20 20 20 20 2f 2f 2f 20 3c 63 6f 64 65 3e 0d 0a      /// <code>..
12ad0 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74 20          /// int 
12ae0 28 2a 78 42 65 73 74 49 6e 64 65 78 29 28 73 71  (*xBestIndex)(sq
12af0 6c 69 74 65 33 5f 76 74 61 62 20 2a 70 56 54 61  lite3_vtab *pVTa
12b00 62 2c 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  b, sqlite3_index
12b10 5f 69 6e 66 6f 2a 29 3b 0d 0a 20 20 20 20 20 20  _info*);..      
12b20 20 20 2f 2f 2f 20 3c 2f 63 6f 64 65 3e 0d 0a 20    /// </code>.. 
12b30 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
12b40 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
12b50 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 63  he SQLite core c
12b60 6f 6d 6d 75 6e 69 63 61 74 65 73 20 77 69 74 68  ommunicates with
12b70 20 74 68 65 20 78 42 65 73 74 49 6e 64 65 78 20   the xBestIndex 
12b80 6d 65 74 68 6f 64 20 62 79 20 66 69 6c 6c 69 6e  method by fillin
12b90 67 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  g..        /// i
12ba0 6e 20 63 65 72 74 61 69 6e 20 66 69 65 6c 64 73  n certain fields
12bb0 20 6f 66 20 74 68 65 20 73 71 6c 69 74 65 33 5f   of the sqlite3_
12bc0 69 6e 64 65 78 5f 69 6e 66 6f 20 73 74 72 75 63  index_info struc
12bd0 74 75 72 65 20 61 6e 64 20 70 61 73 73 69 6e 67  ture and passing
12be0 20 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20   a..        /// 
12bf0 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 61 74 20  pointer to that 
12c00 73 74 72 75 63 74 75 72 65 20 69 6e 74 6f 20 78  structure into x
12c10 42 65 73 74 49 6e 64 65 78 20 61 73 20 74 68 65  BestIndex as the
12c20 20 73 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65   second paramete
12c30 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
12c40 54 68 65 20 78 42 65 73 74 49 6e 64 65 78 20 6d  The xBestIndex m
12c50 65 74 68 6f 64 20 66 69 6c 6c 73 20 6f 75 74 20  ethod fills out 
12c60 6f 74 68 65 72 20 66 69 65 6c 64 73 20 6f 66 20  other fields of 
12c70 74 68 69 73 20 73 74 72 75 63 74 75 72 65 0d 0a  this structure..
12c80 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 68 69 63          /// whic
12c90 68 20 66 6f 72 6d 73 20 74 68 65 20 72 65 70 6c  h forms the repl
12ca0 79 2e 20 54 68 65 20 73 71 6c 69 74 65 33 5f 69  y. The sqlite3_i
12cb0 6e 64 65 78 5f 69 6e 66 6f 20 73 74 72 75 63 74  ndex_info struct
12cc0 75 72 65 20 6c 6f 6f 6b 73 20 6c 69 6b 65 0d 0a  ure looks like..
12cd0 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 69 73          /// this
12ce0 3a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  :..        /// <
12cf0 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
12d00 2f 2f 2f 20 3c 63 6f 64 65 3e 0d 0a 20 20 20 20  /// <code>..    
12d10 20 20 20 20 2f 2f 2f 20 20 73 74 72 75 63 74 20      ///  struct 
12d20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e  sqlite3_index_in
12d30 66 6f 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2f  fo {..        //
12d40 2f 20 20 20 20 2f 2a 20 49 6e 70 75 74 73 20 2a  /    /* Inputs *
12d50 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20  /..        ///  
12d60 20 20 63 6f 6e 73 74 20 69 6e 74 20 6e 43 6f 6e    const int nCon
12d70 73 74 72 61 69 6e 74 3b 20 20 20 2f 2a 20 4e 75  straint;   /* Nu
12d80 6d 62 65 72 20 6f 66 20 65 6e 74 72 69 65 73 20  mber of entries 
12d90 69 6e 20 61 43 6f 6e 73 74 72 61 69 6e 74 20 2a  in aConstraint *
12da0 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20  /..        ///  
12db0 20 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 73    const struct s
12dc0 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e  qlite3_index_con
12dd0 73 74 72 61 69 6e 74 20 7b 0d 0a 20 20 20 20 20  straint {..     
12de0 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 69 6e 74     ///       int
12df0 20 69 43 6f 6c 75 6d 6e 3b 20 20 20 20 20 20 20   iColumn;       
12e00 20 20 20 2f 2a 20 43 6f 6c 75 6d 6e 20 6f 6e 20     /* Column on 
12e10 6c 65 66 74 2d 68 61 6e 64 20 73 69 64 65 20 6f  left-hand side o
12e20 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20  f..        ///  
12e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12e40 20 20 20 20 20 20 20 20 20 20 20 20 2a 20 63 6f              * co
12e50 6e 73 74 72 61 69 6e 74 20 2a 2f 0d 0a 20 20 20  nstraint */..   
12e60 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 75       ///       u
12e70 6e 73 69 67 6e 65 64 20 63 68 61 72 20 6f 70 3b  nsigned char op;
12e80 20 20 20 20 20 2f 2a 20 43 6f 6e 73 74 72 61 69       /* Constrai
12e90 6e 74 20 6f 70 65 72 61 74 6f 72 20 2a 2f 0d 0a  nt operator */..
12ea0 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20          ///     
12eb0 20 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20    unsigned char 
12ec0 75 73 61 62 6c 65 3b 20 2f 2a 20 54 72 75 65 20  usable; /* True 
12ed0 69 66 20 74 68 69 73 20 63 6f 6e 73 74 72 61 69  if this constrai
12ee0 6e 74 20 69 73 20 75 73 61 62 6c 65 20 2a 2f 0d  nt is usable */.
12ef0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20  .        ///    
12f00 20 20 20 69 6e 74 20 69 54 65 72 6d 4f 66 66 73     int iTermOffs
12f10 65 74 3b 20 20 20 20 20 20 2f 2a 20 55 73 65 64  et;      /* Used
12f20 20 69 6e 74 65 72 6e 61 6c 6c 79 20 2d 20 78 42   internally - xB
12f30 65 73 74 49 6e 64 65 78 20 73 68 6f 75 6c 64 0d  estIndex should.
12f40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20  .        ///    
12f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12f60 20 20 20 20 20 20 20 20 20 20 2a 20 69 67 6e 6f            * igno
12f70 72 65 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f  re */..        /
12f80 2f 2f 20 20 20 20 7d 20 2a 63 6f 6e 73 74 20 61  //    } *const a
12f90 43 6f 6e 73 74 72 61 69 6e 74 3b 20 20 20 20 2f  Constraint;    /
12fa0 2a 20 54 61 62 6c 65 20 6f 66 20 57 48 45 52 45  * Table of WHERE
12fb0 20 63 6c 61 75 73 65 20 63 6f 6e 73 74 72 61 69   clause constrai
12fc0 6e 74 73 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  nts */..        
12fd0 2f 2f 2f 20 20 20 20 63 6f 6e 73 74 20 69 6e 74  ///    const int
12fe0 20 6e 4f 72 64 65 72 42 79 3b 20 20 20 20 20 20   nOrderBy;      
12ff0 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20 74 65 72  /* Number of ter
13000 6d 73 20 69 6e 20 74 68 65 20 4f 52 44 45 52 20  ms in the ORDER 
13010 42 59 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  BY..        /// 
13020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13030 20 20 20 20 20 20 20 20 20 20 20 20 20 2a 20 63               * c
13040 6c 61 75 73 65 20 2a 2f 0d 0a 20 20 20 20 20 20  lause */..      
13050 20 20 2f 2f 2f 20 20 20 20 63 6f 6e 73 74 20 73    ///    const s
13060 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6e  truct sqlite3_in
13070 64 65 78 5f 6f 72 64 65 72 62 79 20 7b 0d 0a 20  dex_orderby {.. 
13080 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20         ///      
13090 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b 20 20 20   int iColumn;   
130a0 20 20 20 20 20 20 20 2f 2a 20 43 6f 6c 75 6d 6e         /* Column
130b0 20 6e 75 6d 62 65 72 20 2a 2f 0d 0a 20 20 20 20   number */..    
130c0 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 75 6e      ///       un
130d0 73 69 67 6e 65 64 20 63 68 61 72 20 64 65 73 63  signed char desc
130e0 3b 20 20 20 2f 2a 20 54 72 75 65 20 66 6f 72 20  ;   /* True for 
130f0 44 45 53 43 2e 20 20 46 61 6c 73 65 20 66 6f 72  DESC.  False for
13100 20 41 53 43 2e 20 2a 2f 0d 0a 20 20 20 20 20 20   ASC. */..      
13110 20 20 2f 2f 2f 20 20 20 20 7d 20 2a 63 6f 6e 73    ///    } *cons
13120 74 20 61 4f 72 64 65 72 42 79 3b 20 20 20 20 20  t aOrderBy;     
13130 20 20 2f 2a 20 54 68 65 20 4f 52 44 45 52 20 42    /* The ORDER B
13140 59 20 63 6c 61 75 73 65 20 2a 2f 0d 0a 20 20 20  Y clause */..   
13150 20 20 20 20 20 2f 2f 2f 20 20 20 20 2f 2a 20 4f       ///    /* O
13160 75 74 70 75 74 73 20 2a 2f 0d 0a 20 20 20 20 20  utputs */..     
13170 20 20 20 2f 2f 2f 20 20 20 20 73 74 72 75 63 74     ///    struct
13180 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63   sqlite3_index_c
13190 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65 20  onstraint_usage 
131a0 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20  {..        ///  
131b0 20 20 20 20 69 6e 74 20 61 72 67 76 49 6e 64 65      int argvInde
131c0 78 3b 20 20 20 20 20 20 20 20 20 2f 2a 20 69 66  x;         /* if
131d0 20 67 72 65 61 74 65 72 20 74 68 61 6e 20 7a 65   greater than ze
131e0 72 6f 2c 20 63 6f 6e 73 74 72 61 69 6e 74 20 69  ro, constraint i
131f0 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20  s..        ///  
13200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13210 20 20 20 20 20 20 20 20 20 20 20 20 2a 20 70 61              * pa
13220 72 74 20 6f 66 20 61 72 67 76 20 74 6f 20 78 46  rt of argv to xF
13230 69 6c 74 65 72 20 2a 2f 0d 0a 20 20 20 20 20 20  ilter */..      
13240 20 20 2f 2f 2f 20 20 20 20 20 20 75 6e 73 69 67    ///      unsig
13250 6e 65 64 20 63 68 61 72 20 6f 6d 69 74 3b 20 20  ned char omit;  
13260 20 20 2f 2a 20 44 6f 20 6e 6f 74 20 63 6f 64 65    /* Do not code
13270 20 61 20 74 65 73 74 20 66 6f 72 20 74 68 69 73   a test for this
13280 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20  ..        ///   
13290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
132a0 20 20 20 20 20 20 20 20 20 20 20 2a 20 63 6f 6e             * con
132b0 73 74 72 61 69 6e 74 20 2a 2f 0d 0a 20 20 20 20  straint */..    
132c0 20 20 20 20 2f 2f 2f 20 20 20 20 7d 20 2a 63 6f      ///    } *co
132d0 6e 73 74 20 61 43 6f 6e 73 74 72 61 69 6e 74 55  nst aConstraintU
132e0 73 61 67 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f  sage;..        /
132f0 2f 2f 20 20 20 20 69 6e 74 20 69 64 78 4e 75 6d  //    int idxNum
13300 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  ;              /
13310 2a 20 4e 75 6d 62 65 72 20 75 73 65 64 20 74 6f  * Number used to
13320 20 69 64 65 6e 74 69 66 79 20 74 68 65 20 69 6e   identify the in
13330 64 65 78 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  dex */..        
13340 2f 2f 2f 20 20 20 20 63 68 61 72 20 2a 69 64 78  ///    char *idx
13350 53 74 72 3b 20 20 20 20 20 20 20 20 20 20 20 20  Str;            
13360 2f 2a 20 53 74 72 69 6e 67 2c 20 70 6f 73 73 69  /* String, possi
13370 62 6c 79 20 6f 62 74 61 69 6e 65 64 20 66 72 6f  bly obtained fro
13380 6d 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20  m..        ///  
13390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
133a0 20 20 20 20 20 20 20 20 20 20 20 20 2a 20 73 71              * sq
133b0 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 20 2a  lite3_malloc() *
133c0 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20  /..        ///  
133d0 20 20 69 6e 74 20 6e 65 65 64 54 6f 46 72 65 65    int needToFree
133e0 49 64 78 53 74 72 3b 20 20 20 20 2f 2a 20 46 72  IdxStr;    /* Fr
133f0 65 65 20 69 64 78 53 74 72 20 75 73 69 6e 67 20  ee idxStr using 
13400 73 71 6c 69 74 65 33 5f 66 72 65 65 28 29 20 69  sqlite3_free() i
13410 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20  f..        ///  
13420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13430 20 20 20 20 20 20 20 20 20 20 20 20 2a 20 74 72              * tr
13440 75 65 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f  ue */..        /
13450 2f 2f 20 20 20 20 69 6e 74 20 6f 72 64 65 72 42  //    int orderB
13460 79 43 6f 6e 73 75 6d 65 64 3b 20 20 20 20 20 2f  yConsumed;     /
13470 2a 20 54 72 75 65 20 69 66 20 6f 75 74 70 75 74  * True if output
13480 20 69 73 20 61 6c 72 65 61 64 79 20 6f 72 64 65   is already orde
13490 72 65 64 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  red */..        
134a0 2f 2f 2f 20 20 20 20 64 6f 75 62 6c 65 20 65 73  ///    double es
134b0 74 69 6d 61 74 65 64 43 6f 73 74 3b 20 20 20 20  timatedCost;    
134c0 2f 2a 20 45 73 74 69 6d 61 74 65 64 20 63 6f 73  /* Estimated cos
134d0 74 20 6f 66 20 75 73 69 6e 67 20 74 68 69 73 20  t of using this 
134e0 69 6e 64 65 78 20 2a 2f 0d 0a 20 20 20 20 20 20  index */..      
134f0 20 20 2f 2f 2f 20 20 7d 3b 0d 0a 20 20 20 20 20    ///  };..     
13500 20 20 20 2f 2f 2f 20 3c 2f 63 6f 64 65 3e 0d 0a     /// </code>..
13510 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
13520 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
13530 49 6e 20 61 64 64 69 74 69 6f 6e 2c 20 74 68 65  In addition, the
13540 72 65 20 61 72 65 20 73 6f 6d 65 20 64 65 66 69  re are some defi
13550 6e 65 64 20 63 6f 6e 73 74 61 6e 74 73 3a 0d 0a  ned constants:..
13560 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
13570 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
13580 20 3c 63 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20   <code>..       
13590 20 2f 2f 2f 20 20 23 64 65 66 69 6e 65 20 53 51   ///  #define SQ
135a0 4c 49 54 45 5f 49 4e 44 45 58 5f 43 4f 4e 53 54  LITE_INDEX_CONST
135b0 52 41 49 4e 54 5f 45 51 20 20 20 20 32 0d 0a 20  RAINT_EQ    2.. 
135c0 20 20 20 20 20 20 20 2f 2f 2f 20 20 23 64 65 66         ///  #def
135d0 69 6e 65 20 53 51 4c 49 54 45 5f 49 4e 44 45 58  ine SQLITE_INDEX
135e0 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 47 54 20 20  _CONSTRAINT_GT  
135f0 20 20 34 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f    4..        ///
13600 20 20 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45    #define SQLITE
13610 5f 49 4e 44 45 58 5f 43 4f 4e 53 54 52 41 49 4e  _INDEX_CONSTRAIN
13620 54 5f 4c 45 20 20 20 20 38 0d 0a 20 20 20 20 20  T_LE    8..     
13630 20 20 20 2f 2f 2f 20 20 23 64 65 66 69 6e 65 20     ///  #define 
13640 53 51 4c 49 54 45 5f 49 4e 44 45 58 5f 43 4f 4e  SQLITE_INDEX_CON
13650 53 54 52 41 49 4e 54 5f 4c 54 20 20 20 20 31 36  STRAINT_LT    16
13660 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 23  ..        ///  #
13670 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4e  define SQLITE_IN
13680 44 45 58 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 47  DEX_CONSTRAINT_G
13690 45 20 20 20 20 33 32 0d 0a 20 20 20 20 20 20 20  E    32..       
136a0 20 2f 2f 2f 20 20 23 64 65 66 69 6e 65 20 53 51   ///  #define SQ
136b0 4c 49 54 45 5f 49 4e 44 45 58 5f 43 4f 4e 53 54  LITE_INDEX_CONST
136c0 52 41 49 4e 54 5f 4d 41 54 43 48 20 36 34 0d 0a  RAINT_MATCH 64..
136d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 63 6f          /// </co
136e0 64 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de>..        ///
136f0 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
13700 20 2f 2f 2f 20 54 68 65 20 53 51 4c 69 74 65 20   /// The SQLite 
13710 63 6f 72 65 20 63 61 6c 6c 73 20 74 68 65 20 78  core calls the x
13720 42 65 73 74 49 6e 64 65 78 20 6d 65 74 68 6f 64  BestIndex method
13730 20 77 68 65 6e 20 69 74 20 69 73 20 63 6f 6d 70   when it is comp
13740 69 6c 69 6e 67 20 61 0d 0a 20 20 20 20 20 20 20  iling a..       
13750 20 2f 2f 2f 20 71 75 65 72 79 20 74 68 61 74 20   /// query that 
13760 69 6e 76 6f 6c 76 65 73 20 61 20 76 69 72 74 75  involves a virtu
13770 61 6c 20 74 61 62 6c 65 2e 20 49 6e 20 6f 74 68  al table. In oth
13780 65 72 20 77 6f 72 64 73 2c 20 53 51 4c 69 74 65  er words, SQLite
13790 20 63 61 6c 6c 73 0d 0a 20 20 20 20 20 20 20 20   calls..        
137a0 2f 2f 2f 20 74 68 69 73 20 6d 65 74 68 6f 64 20  /// this method 
137b0 77 68 65 6e 20 69 74 20 69 73 20 72 75 6e 6e 69  when it is runni
137c0 6e 67 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61  ng sqlite3_prepa
137d0 72 65 28 29 20 6f 72 20 74 68 65 20 65 71 75 69  re() or the equi
137e0 76 61 6c 65 6e 74 2e 0d 0a 20 20 20 20 20 20 20  valent...       
137f0 20 2f 2f 2f 20 42 79 20 63 61 6c 6c 69 6e 67 20   /// By calling 
13800 74 68 69 73 20 6d 65 74 68 6f 64 2c 20 74 68 65  this method, the
13810 20 53 51 4c 69 74 65 20 63 6f 72 65 20 69 73 20   SQLite core is 
13820 73 61 79 69 6e 67 20 74 6f 20 74 68 65 20 76 69  saying to the vi
13830 72 74 75 61 6c 0d 0a 20 20 20 20 20 20 20 20 2f  rtual..        /
13840 2f 2f 20 74 61 62 6c 65 20 74 68 61 74 20 69 74  // table that it
13850 20 6e 65 65 64 73 20 74 6f 20 61 63 63 65 73 73   needs to access
13860 20 73 6f 6d 65 20 73 75 62 73 65 74 20 6f 66 20   some subset of 
13870 74 68 65 20 72 6f 77 73 20 69 6e 20 74 68 65 0d  the rows in the.
13880 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 69 72  .        /// vir
13890 74 75 61 6c 20 74 61 62 6c 65 20 61 6e 64 20 69  tual table and i
138a0 74 20 77 61 6e 74 73 20 74 6f 20 6b 6e 6f 77 20  t wants to know 
138b0 74 68 65 20 6d 6f 73 74 20 65 66 66 69 63 69 65  the most efficie
138c0 6e 74 20 77 61 79 20 74 6f 20 64 6f 0d 0a 20 20  nt way to do..  
138d0 20 20 20 20 20 20 2f 2f 2f 20 74 68 61 74 20 61        /// that a
138e0 63 63 65 73 73 2e 20 54 68 65 20 78 42 65 73 74  ccess. The xBest
138f0 49 6e 64 65 78 20 6d 65 74 68 6f 64 20 72 65 70  Index method rep
13900 6c 69 65 73 20 77 69 74 68 20 69 6e 66 6f 72 6d  lies with inform
13910 61 74 69 6f 6e 20 74 68 61 74 0d 0a 20 20 20 20  ation that..    
13920 20 20 20 20 2f 2f 2f 20 74 68 65 20 53 51 4c 69      /// the SQLi
13930 74 65 20 63 6f 72 65 20 63 61 6e 20 74 68 65 6e  te core can then
13940 20 75 73 65 20 74 6f 20 63 6f 6e 64 75 63 74 20   use to conduct 
13950 61 6e 20 65 66 66 69 63 69 65 6e 74 20 73 65 61  an efficient sea
13960 72 63 68 20 6f 66 20 74 68 65 0d 0a 20 20 20 20  rch of the..    
13970 20 20 20 20 2f 2f 2f 20 76 69 72 74 75 61 6c 20      /// virtual 
13980 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20  table...        
13990 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20  /// </para>..   
139a0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
139b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 57 68 69  .        /// Whi
139c0 6c 65 20 63 6f 6d 70 69 6c 69 6e 67 20 61 20 73  le compiling a s
139d0 69 6e 67 6c 65 20 53 51 4c 20 71 75 65 72 79 2c  ingle SQL query,
139e0 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
139f0 20 6d 69 67 68 74 20 63 61 6c 6c 0d 0a 20 20 20   might call..   
13a00 20 20 20 20 20 2f 2f 2f 20 78 42 65 73 74 49 6e       /// xBestIn
13a10 64 65 78 20 6d 75 6c 74 69 70 6c 65 20 74 69 6d  dex multiple tim
13a20 65 73 20 77 69 74 68 20 64 69 66 66 65 72 65 6e  es with differen
13a30 74 20 73 65 74 74 69 6e 67 73 20 69 6e 0d 0a 20  t settings in.. 
13a40 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74         /// sqlit
13a50 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 2e 20 54  e3_index_info. T
13a60 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 77  he SQLite core w
13a70 69 6c 6c 20 74 68 65 6e 20 73 65 6c 65 63 74 20  ill then select 
13a80 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
13a90 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 20 74 68 61   combination tha
13aa0 74 20 61 70 70 65 61 72 73 20 74 6f 20 67 69 76  t appears to giv
13ab0 65 20 74 68 65 20 62 65 73 74 20 70 65 72 66 6f  e the best perfo
13ac0 72 6d 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20  rmance...       
13ad0 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
13ae0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
13af0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 42 65  ..        /// Be
13b00 66 6f 72 65 20 63 61 6c 6c 69 6e 67 20 74 68 69  fore calling thi
13b10 73 20 6d 65 74 68 6f 64 2c 20 74 68 65 20 53 51  s method, the SQ
13b20 4c 69 74 65 20 63 6f 72 65 20 69 6e 69 74 69 61  Lite core initia
13b30 6c 69 7a 65 73 20 61 6e 20 69 6e 73 74 61 6e 63  lizes an instanc
13b40 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f  e..        /// o
13b50 66 20 74 68 65 20 73 71 6c 69 74 65 33 5f 69 6e  f the sqlite3_in
13b60 64 65 78 5f 69 6e 66 6f 20 73 74 72 75 63 74 75  dex_info structu
13b70 72 65 20 77 69 74 68 20 69 6e 66 6f 72 6d 61 74  re with informat
13b80 69 6f 6e 20 61 62 6f 75 74 20 74 68 65 0d 0a 20  ion about the.. 
13b90 20 20 20 20 20 20 20 2f 2f 2f 20 71 75 65 72 79         /// query
13ba0 20 74 68 61 74 20 69 74 20 69 73 20 63 75 72 72   that it is curr
13bb0 65 6e 74 6c 79 20 74 72 79 69 6e 67 20 74 6f 20  ently trying to 
13bc0 70 72 6f 63 65 73 73 2e 20 54 68 69 73 20 69 6e  process. This in
13bd0 66 6f 72 6d 61 74 69 6f 6e 0d 0a 20 20 20 20 20  formation..     
13be0 20 20 20 2f 2f 2f 20 64 65 72 69 76 65 73 20 6d     /// derives m
13bf0 61 69 6e 6c 79 20 66 72 6f 6d 20 74 68 65 20 57  ainly from the W
13c00 48 45 52 45 20 63 6c 61 75 73 65 20 61 6e 64 20  HERE clause and 
13c10 4f 52 44 45 52 20 42 59 20 6f 72 20 47 52 4f 55  ORDER BY or GROU
13c20 50 20 42 59 0d 0a 20 20 20 20 20 20 20 20 2f 2f  P BY..        //
13c30 2f 20 63 6c 61 75 73 65 73 20 6f 66 20 74 68 65  / clauses of the
13c40 20 71 75 65 72 79 2c 20 62 75 74 20 61 6c 73 6f   query, but also
13c50 20 66 72 6f 6d 20 61 6e 79 20 4f 4e 20 6f 72 20   from any ON or 
13c60 55 53 49 4e 47 20 63 6c 61 75 73 65 73 20 69 66  USING clauses if
13c70 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
13c80 2f 20 71 75 65 72 79 20 69 73 20 61 20 6a 6f 69  / query is a joi
13c90 6e 2e 20 54 68 65 20 69 6e 66 6f 72 6d 61 74 69  n. The informati
13ca0 6f 6e 20 74 68 61 74 20 74 68 65 20 53 51 4c 69  on that the SQLi
13cb0 74 65 20 63 6f 72 65 20 70 72 6f 76 69 64 65 73  te core provides
13cc0 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   to..        ///
13cd0 20 74 68 65 20 78 42 65 73 74 49 6e 64 65 78 20   the xBestIndex 
13ce0 6d 65 74 68 6f 64 20 69 73 20 68 65 6c 64 20 69  method is held i
13cf0 6e 20 74 68 65 20 70 61 72 74 20 6f 66 20 74 68  n the part of th
13d00 65 20 73 74 72 75 63 74 75 72 65 20 74 68 61 74  e structure that
13d10 20 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   is..        ///
13d20 20 6d 61 72 6b 65 64 20 61 73 20 22 49 6e 70 75   marked as "Inpu
13d30 74 73 22 2e 20 54 68 65 20 22 4f 75 74 70 75 74  ts". The "Output
13d40 73 22 20 73 65 63 74 69 6f 6e 20 69 73 20 69 6e  s" section is in
13d50 69 74 69 61 6c 69 7a 65 64 20 74 6f 20 7a 65 72  itialized to zer
13d60 6f 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  o...        /// 
13d70 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
13d80 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
13d90 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 66       /// The inf
13da0 6f 72 6d 61 74 69 6f 6e 20 69 6e 20 74 68 65 20  ormation in the 
13db0 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e  sqlite3_index_in
13dc0 66 6f 20 73 74 72 75 63 74 75 72 65 20 69 73 20  fo structure is 
13dd0 65 70 68 65 6d 65 72 61 6c 0d 0a 20 20 20 20 20  ephemeral..     
13de0 20 20 20 2f 2f 2f 20 61 6e 64 20 6d 61 79 20 62     /// and may b
13df0 65 20 6f 76 65 72 77 72 69 74 74 65 6e 20 6f 72  e overwritten or
13e00 20 64 65 61 6c 6c 6f 63 61 74 65 64 20 61 73 20   deallocated as 
13e10 73 6f 6f 6e 20 61 73 20 74 68 65 20 78 42 65 73  soon as the xBes
13e20 74 49 6e 64 65 78 0d 0a 20 20 20 20 20 20 20 20  tIndex..        
13e30 2f 2f 2f 20 6d 65 74 68 6f 64 20 72 65 74 75 72  /// method retur
13e40 6e 73 2e 20 49 66 20 74 68 65 20 78 42 65 73 74  ns. If the xBest
13e50 49 6e 64 65 78 20 6d 65 74 68 6f 64 20 6e 65 65  Index method nee
13e60 64 73 20 74 6f 20 72 65 6d 65 6d 62 65 72 20 61  ds to remember a
13e70 6e 79 20 70 61 72 74 0d 0a 20 20 20 20 20 20 20  ny part..       
13e80 20 2f 2f 2f 20 6f 66 20 74 68 65 20 73 71 6c 69   /// of the sqli
13e90 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 20 73  te3_index_info s
13ea0 74 72 75 63 74 75 72 65 2c 20 69 74 20 73 68 6f  tructure, it sho
13eb0 75 6c 64 20 6d 61 6b 65 20 61 20 63 6f 70 79 2e  uld make a copy.
13ec0 20 43 61 72 65 0d 0a 20 20 20 20 20 20 20 20 2f   Care..        /
13ed0 2f 2f 20 6d 75 73 74 20 62 65 20 74 61 6b 65 20  // must be take 
13ee0 74 6f 20 73 74 6f 72 65 20 74 68 65 20 63 6f 70  to store the cop
13ef0 79 20 69 6e 20 61 20 70 6c 61 63 65 20 77 68 65  y in a place whe
13f00 72 65 20 69 74 20 77 69 6c 6c 20 62 65 0d 0a 20  re it will be.. 
13f10 20 20 20 20 20 20 20 2f 2f 2f 20 64 65 61 6c 6c         /// deall
13f20 6f 63 61 74 65 64 2c 20 73 75 63 68 20 61 73 20  ocated, such as 
13f30 69 6e 20 74 68 65 20 69 64 78 53 74 72 20 66 69  in the idxStr fi
13f40 65 6c 64 20 77 69 74 68 20 6e 65 65 64 54 6f 46  eld with needToF
13f50 72 65 65 49 64 78 53 74 72 20 73 65 74 0d 0a 20  reeIdxStr set.. 
13f60 20 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20 31 2e         /// to 1.
13f70 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
13f80 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
13f90 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20  // <para>..     
13fa0 20 20 20 2f 2f 2f 20 4e 6f 74 65 20 74 68 61 74     /// Note that
13fb0 20 78 42 65 73 74 49 6e 64 65 78 20 77 69 6c 6c   xBestIndex will
13fc0 20 61 6c 77 61 79 73 20 62 65 20 63 61 6c 6c 65   always be calle
13fd0 64 20 62 65 66 6f 72 65 20 78 46 69 6c 74 65 72  d before xFilter
13fe0 2c 20 73 69 6e 63 65 0d 0a 20 20 20 20 20 20 20  , since..       
13ff0 20 2f 2f 2f 20 74 68 65 20 69 64 78 4e 75 6d 20   /// the idxNum 
14000 61 6e 64 20 69 64 78 53 74 72 20 6f 75 74 70 75  and idxStr outpu
14010 74 73 20 66 72 6f 6d 20 78 42 65 73 74 49 6e 64  ts from xBestInd
14020 65 78 20 61 72 65 20 72 65 71 75 69 72 65 64 20  ex are required 
14030 69 6e 70 75 74 73 0d 0a 20 20 20 20 20 20 20 20  inputs..        
14040 2f 2f 2f 20 74 6f 20 78 46 69 6c 74 65 72 2e 20  /// to xFilter. 
14050 48 6f 77 65 76 65 72 2c 20 74 68 65 72 65 20 69  However, there i
14060 73 20 6e 6f 20 67 75 61 72 61 6e 74 65 65 20 74  s no guarantee t
14070 68 61 74 20 78 46 69 6c 74 65 72 20 77 69 6c 6c  hat xFilter will
14080 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   be..        ///
14090 20 63 61 6c 6c 65 64 20 66 6f 6c 6c 6f 77 69 6e   called followin
140a0 67 20 61 20 73 75 63 63 65 73 73 66 75 6c 20 78  g a successful x
140b0 42 65 73 74 49 6e 64 65 78 2e 0d 0a 20 20 20 20  BestIndex...    
140c0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d      /// </para>.
140d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
140e0 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
140f0 20 54 68 65 20 78 42 65 73 74 49 6e 64 65 78 20   The xBestIndex 
14100 6d 65 74 68 6f 64 20 69 73 20 72 65 71 75 69 72  method is requir
14110 65 64 20 66 6f 72 20 65 76 65 72 79 20 76 69 72  ed for every vir
14120 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20  tual table..    
14130 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e      /// implemen
14140 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  tation...       
14150 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
14160 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
14170 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 32 2e  ..        /// 2.
14180 33 2e 31 20 49 6e 70 75 74 73 0d 0a 20 20 20 20  3.1 Inputs..    
14190 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d      /// </para>.
141a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
141b0 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
141c0 20 54 68 65 20 6d 61 69 6e 20 74 68 69 6e 67 20   The main thing 
141d0 74 68 61 74 20 74 68 65 20 53 51 4c 69 74 65 20  that the SQLite 
141e0 63 6f 72 65 20 69 73 20 74 72 79 69 6e 67 20 74  core is trying t
141f0 6f 20 63 6f 6d 6d 75 6e 69 63 61 74 65 20 74 6f  o communicate to
14200 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
14210 2f 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  / virtual table 
14220 69 73 20 74 68 65 20 63 6f 6e 73 74 72 61 69 6e  is the constrain
14230 74 73 20 74 68 61 74 20 61 72 65 20 61 76 61 69  ts that are avai
14240 6c 61 62 6c 65 20 74 6f 20 6c 69 6d 69 74 20 74  lable to limit t
14250 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
14260 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77 73 20 74  number of rows t
14270 68 61 74 20 6e 65 65 64 20 74 6f 20 62 65 20 73  hat need to be s
14280 65 61 72 63 68 65 64 2e 20 54 68 65 20 61 43 6f  earched. The aCo
14290 6e 73 74 72 61 69 6e 74 5b 5d 20 61 72 72 61 79  nstraint[] array
142a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f  ..        /// co
142b0 6e 74 61 69 6e 73 20 6f 6e 65 20 65 6e 74 72 79  ntains one entry
142c0 20 66 6f 72 20 65 61 63 68 20 63 6f 6e 73 74 72   for each constr
142d0 61 69 6e 74 2e 20 54 68 65 72 65 20 77 69 6c 6c  aint. There will
142e0 20 62 65 20 65 78 61 63 74 6c 79 0d 0a 20 20 20   be exactly..   
142f0 20 20 20 20 20 2f 2f 2f 20 6e 43 6f 6e 73 74 72       /// nConstr
14300 61 69 6e 74 20 65 6e 74 72 69 65 73 20 69 6e 20  aint entries in 
14310 74 68 61 74 20 61 72 72 61 79 2e 0d 0a 20 20 20  that array...   
14320 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
14330 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
14340 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
14350 2f 20 45 61 63 68 20 63 6f 6e 73 74 72 61 69 6e  / Each constrain
14360 74 20 77 69 6c 6c 20 63 6f 72 72 65 73 70 6f 6e  t will correspon
14370 64 20 74 6f 20 61 20 74 65 72 6d 20 69 6e 20 74  d to a term in t
14380 68 65 20 57 48 45 52 45 20 63 6c 61 75 73 65 20  he WHERE clause 
14390 6f 72 20 69 6e 0d 0a 20 20 20 20 20 20 20 20 2f  or in..        /
143a0 2f 2f 20 61 20 55 53 49 4e 47 20 6f 72 20 4f 4e  // a USING or ON
143b0 20 63 6c 61 75 73 65 20 74 68 61 74 20 69 73 20   clause that is 
143c0 6f 66 20 74 68 65 20 66 6f 72 6d 0d 0a 20 20 20  of the form..   
143d0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
143e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 63  ..        /// <c
143f0 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode>..        //
14400 2f 20 20 20 20 20 63 6f 6c 75 6d 6e 20 4f 50 20  /     column OP 
14410 45 58 50 52 0d 0a 20 20 20 20 20 20 20 20 2f 2f  EXPR..        //
14420 2f 20 3c 2f 63 6f 64 65 3e 0d 0a 20 20 20 20 20  / </code>..     
14430 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20     /// <para>.. 
14440 20 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 72 65         /// Where
14450 20 22 63 6f 6c 75 6d 6e 22 20 69 73 20 61 20 63   "column" is a c
14460 6f 6c 75 6d 6e 20 69 6e 20 74 68 65 20 76 69 72  olumn in the vir
14470 74 75 61 6c 20 74 61 62 6c 65 2c 20 4f 50 20 69  tual table, OP i
14480 73 20 61 6e 20 6f 70 65 72 61 74 6f 72 0d 0a 20  s an operator.. 
14490 20 20 20 20 20 20 20 2f 2f 2f 20 6c 69 6b 65 20         /// like 
144a0 22 3d 22 20 6f 72 20 22 26 6c 74 3b 22 2c 20 61  "=" or "&lt;", a
144b0 6e 64 20 45 58 50 52 20 69 73 20 61 6e 20 61 72  nd EXPR is an ar
144c0 62 69 74 72 61 72 79 20 65 78 70 72 65 73 73 69  bitrary expressi
144d0 6f 6e 2e 20 53 6f 2c 20 66 6f 72 0d 0a 20 20 20  on. So, for..   
144e0 20 20 20 20 20 2f 2f 2f 20 65 78 61 6d 70 6c 65       /// example
144f0 2c 20 69 66 20 74 68 65 20 57 48 45 52 45 20 63  , if the WHERE c
14500 6c 61 75 73 65 20 63 6f 6e 74 61 69 6e 65 64 20  lause contained 
14510 61 20 74 65 72 6d 20 6c 69 6b 65 20 74 68 69 73  a term like this
14520 3a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  :..        /// <
14530 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
14540 2f 2f 2f 20 3c 63 6f 64 65 3e 0d 0a 20 20 20 20  /// <code>..    
14550 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20      ///         
14560 20 61 20 3d 20 35 0d 0a 20 20 20 20 20 20 20 20   a = 5..        
14570 2f 2f 2f 20 3c 2f 63 6f 64 65 3e 0d 0a 20 20 20  /// </code>..   
14580 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
14590 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
145a0 6e 20 6f 6e 65 20 6f 66 20 74 68 65 20 63 6f 6e  n one of the con
145b0 73 74 72 61 69 6e 74 73 20 77 6f 75 6c 64 20 62  straints would b
145c0 65 20 6f 6e 20 74 68 65 20 22 61 22 20 63 6f 6c  e on the "a" col
145d0 75 6d 6e 20 77 69 74 68 0d 0a 20 20 20 20 20 20  umn with..      
145e0 20 20 2f 2f 2f 20 6f 70 65 72 61 74 6f 72 20 22    /// operator "
145f0 3d 22 20 61 6e 64 20 61 6e 20 65 78 70 72 65 73  =" and an expres
14600 73 69 6f 6e 20 6f 66 20 22 35 22 2e 20 43 6f 6e  sion of "5". Con
14610 73 74 72 61 69 6e 74 73 20 6e 65 65 64 20 6e 6f  straints need no
14620 74 20 68 61 76 65 20 61 0d 0a 20 20 20 20 20 20  t have a..      
14630 20 20 2f 2f 2f 20 6c 69 74 65 72 61 6c 20 72 65    /// literal re
14640 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66 20  presentation of 
14650 74 68 65 20 57 48 45 52 45 20 63 6c 61 75 73 65  the WHERE clause
14660 2e 20 54 68 65 20 71 75 65 72 79 20 6f 70 74 69  . The query opti
14670 6d 69 7a 65 72 0d 0a 20 20 20 20 20 20 20 20 2f  mizer..        /
14680 2f 2f 20 6d 69 67 68 74 20 6d 61 6b 65 20 74 72  // might make tr
14690 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 73 20 74 6f  ansformations to
146a0 20 74 68 65 20 57 48 45 52 45 20 63 6c 61 75 73   the WHERE claus
146b0 65 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 65 78  e in order to ex
146c0 74 72 61 63 74 0d 0a 20 20 20 20 20 20 20 20 2f  tract..        /
146d0 2f 2f 20 61 73 20 6d 61 6e 79 20 63 6f 6e 73 74  // as many const
146e0 72 61 69 6e 74 73 20 61 73 20 69 74 20 63 61 6e  raints as it can
146f0 2e 20 53 6f 2c 20 66 6f 72 20 65 78 61 6d 70 6c  . So, for exampl
14700 65 2c 20 69 66 20 74 68 65 20 57 48 45 52 45 20  e, if the WHERE 
14710 63 6c 61 75 73 65 0d 0a 20 20 20 20 20 20 20 20  clause..        
14720 2f 2f 2f 20 63 6f 6e 74 61 69 6e 65 64 20 73 6f  /// contained so
14730 6d 65 74 68 69 6e 67 20 6c 69 6b 65 20 74 68 69  mething like thi
14740 73 3a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s:..        /// 
14750 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
14760 20 2f 2f 2f 20 3c 63 6f 64 65 3e 0d 0a 20 20 20   /// <code>..   
14770 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20       ///        
14780 20 20 78 20 42 45 54 57 45 45 4e 20 31 30 20 41    x BETWEEN 10 A
14790 4e 44 20 31 30 30 20 41 4e 44 20 39 39 39 26 67  ND 100 AND 999&g
147a0 74 3b 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  t;y..        ///
147b0 20 3c 2f 63 6f 64 65 3e 0d 0a 20 20 20 20 20 20   </code>..      
147c0 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20    /// <para>..  
147d0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 71 75        /// The qu
147e0 65 72 79 20 6f 70 74 69 6d 69 7a 65 72 20 6d 69  ery optimizer mi
147f0 67 68 74 20 74 72 61 6e 73 6c 61 74 65 20 74 68  ght translate th
14800 69 73 20 69 6e 74 6f 20 74 68 72 65 65 20 73 65  is into three se
14810 70 61 72 61 74 65 0d 0a 20 20 20 20 20 20 20 20  parate..        
14820 2f 2f 2f 20 63 6f 6e 73 74 72 61 69 6e 74 73 3a  /// constraints:
14830 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
14840 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
14850 2f 2f 20 3c 63 6f 64 65 3e 0d 0a 20 20 20 20 20  // <code>..     
14860 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20 20     ///          
14870 78 20 26 67 74 3b 3d 20 31 30 0d 0a 20 20 20 20  x &gt;= 10..    
14880 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20      ///         
14890 20 78 20 26 6c 74 3b 3d 20 31 30 30 0d 0a 20 20   x &lt;= 100..  
148a0 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20        ///       
148b0 20 20 20 79 20 26 6c 74 3b 20 39 39 39 0d 0a 20     y &lt; 999.. 
148c0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 63 6f 64         /// </cod
148d0 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e>..        /// 
148e0 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
148f0 2f 2f 2f 20 46 6f 72 20 65 61 63 68 20 63 6f 6e  /// For each con
14900 73 74 72 61 69 6e 74 2c 20 74 68 65 20 61 43 6f  straint, the aCo
14910 6e 73 74 72 61 69 6e 74 5b 5d 2e 69 43 6f 6c 75  nstraint[].iColu
14920 6d 6e 20 66 69 65 6c 64 20 69 6e 64 69 63 61 74  mn field indicat
14930 65 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  es..        /// 
14940 77 68 69 63 68 20 63 6f 6c 75 6d 6e 20 61 70 70  which column app
14950 65 61 72 73 20 6f 6e 20 74 68 65 20 6c 65 66 74  ears on the left
14960 2d 68 61 6e 64 20 73 69 64 65 20 6f 66 20 74 68  -hand side of th
14970 65 20 63 6f 6e 73 74 72 61 69 6e 74 2e 20 54 68  e constraint. Th
14980 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 66  e..        /// f
14990 69 72 73 74 20 63 6f 6c 75 6d 6e 20 6f 66 20 74  irst column of t
149a0 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
149b0 20 69 73 20 63 6f 6c 75 6d 6e 20 30 2e 20 54 68   is column 0. Th
149c0 65 20 72 6f 77 69 64 20 6f 66 20 74 68 65 0d 0a  e rowid of the..
149d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 69 72 74          /// virt
149e0 75 61 6c 20 74 61 62 6c 65 20 69 73 20 63 6f 6c  ual table is col
149f0 75 6d 6e 20 2d 31 2e 20 54 68 65 20 61 43 6f 6e  umn -1. The aCon
14a00 73 74 72 61 69 6e 74 5b 5d 2e 6f 70 20 66 69 65  straint[].op fie
14a10 6c 64 20 69 6e 64 69 63 61 74 65 73 0d 0a 20 20  ld indicates..  
14a20 20 20 20 20 20 20 2f 2f 2f 20 77 68 69 63 68 20        /// which 
14a30 6f 70 65 72 61 74 6f 72 20 69 73 20 75 73 65 64  operator is used
14a40 2e 20 54 68 65 20 53 51 4c 49 54 45 5f 49 4e 44  . The SQLITE_IND
14a50 45 58 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 2a 20  EX_CONSTRAINT_* 
14a60 63 6f 6e 73 74 61 6e 74 73 20 6d 61 70 0d 0a 20  constants map.. 
14a70 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65 67         /// integ
14a80 65 72 20 63 6f 6e 73 74 61 6e 74 73 20 69 6e 74  er constants int
14a90 6f 20 6f 70 65 72 61 74 6f 72 20 76 61 6c 75 65  o operator value
14aa0 73 2e 20 43 6f 6c 75 6d 6e 73 20 6f 63 63 75 72  s. Columns occur
14ab0 20 69 6e 20 74 68 65 20 6f 72 64 65 72 0d 0a 20   in the order.. 
14ac0 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 79 20         /// they 
14ad0 77 65 72 65 20 64 65 66 69 6e 65 64 20 62 79 20  were defined by 
14ae0 74 68 65 20 63 61 6c 6c 20 74 6f 20 73 71 6c 69  the call to sqli
14af0 74 65 33 5f 64 65 63 6c 61 72 65 5f 76 74 61 62  te3_declare_vtab
14b00 28 29 20 69 6e 20 74 68 65 0d 0a 20 20 20 20 20  () in the..     
14b10 20 20 20 2f 2f 2f 20 78 43 72 65 61 74 65 20 6f     /// xCreate o
14b20 72 20 78 43 6f 6e 6e 65 63 74 20 6d 65 74 68 6f  r xConnect metho
14b30 64 2e 20 48 69 64 64 65 6e 20 63 6f 6c 75 6d 6e  d. Hidden column
14b40 73 20 61 72 65 20 63 6f 75 6e 74 65 64 20 77 68  s are counted wh
14b50 65 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  en..        /// 
14b60 64 65 74 65 72 6d 69 6e 69 6e 67 20 74 68 65 20  determining the 
14b70 63 6f 6c 75 6d 6e 20 69 6e 64 65 78 2e 0d 0a 20  column index... 
14b80 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
14b90 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
14ba0 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
14bb0 2f 2f 2f 20 54 68 65 20 61 43 6f 6e 73 74 72 61  /// The aConstra
14bc0 69 6e 74 5b 5d 20 61 72 72 61 79 20 63 6f 6e 74  int[] array cont
14bd0 61 69 6e 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  ains information
14be0 20 61 62 6f 75 74 20 61 6c 6c 20 63 6f 6e 73 74   about all const
14bf0 72 61 69 6e 74 73 0d 0a 20 20 20 20 20 20 20 20  raints..        
14c00 2f 2f 2f 20 74 68 61 74 20 61 70 70 6c 79 20 74  /// that apply t
14c10 6f 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  o the virtual ta
14c20 62 6c 65 2e 20 42 75 74 20 73 6f 6d 65 20 6f 66  ble. But some of
14c30 20 74 68 65 20 63 6f 6e 73 74 72 61 69 6e 74 73   the constraints
14c40 20 6d 69 67 68 74 0d 0a 20 20 20 20 20 20 20 20   might..        
14c50 2f 2f 2f 20 6e 6f 74 20 62 65 20 75 73 61 62 6c  /// not be usabl
14c60 65 20 62 65 63 61 75 73 65 20 6f 66 20 74 68 65  e because of the
14c70 20 77 61 79 20 74 61 62 6c 65 73 20 61 72 65 20   way tables are 
14c80 6f 72 64 65 72 65 64 20 69 6e 20 61 20 6a 6f 69  ordered in a joi
14c90 6e 2e 20 54 68 65 0d 0a 20 20 20 20 20 20 20 20  n. The..        
14ca0 2f 2f 2f 20 78 42 65 73 74 49 6e 64 65 78 20 6d  /// xBestIndex m
14cb0 65 74 68 6f 64 20 6d 75 73 74 20 74 68 65 72 65  ethod must there
14cc0 66 6f 72 65 20 6f 6e 6c 79 20 63 6f 6e 73 69 64  fore only consid
14cd0 65 72 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 74  er constraints t
14ce0 68 61 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  hat..        ///
14cf0 20 68 61 76 65 20 61 6e 20 61 43 6f 6e 73 74 72   have an aConstr
14d00 61 69 6e 74 5b 5d 2e 75 73 61 62 6c 65 20 66 6c  aint[].usable fl
14d10 61 67 20 77 68 69 63 68 20 69 73 20 74 72 75 65  ag which is true
14d20 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
14d30 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
14d40 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
14d50 20 20 20 20 2f 2f 2f 20 49 6e 20 61 64 64 69 74      /// In addit
14d60 69 6f 6e 20 74 6f 20 57 48 45 52 45 20 63 6c 61  ion to WHERE cla
14d70 75 73 65 20 63 6f 6e 73 74 72 61 69 6e 74 73 2c  use constraints,
14d80 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
14d90 20 61 6c 73 6f 20 74 65 6c 6c 73 0d 0a 20 20 20   also tells..   
14da0 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 78 42 65       /// the xBe
14db0 73 74 49 6e 64 65 78 20 6d 65 74 68 6f 64 20 61  stIndex method a
14dc0 62 6f 75 74 20 74 68 65 20 4f 52 44 45 52 20 42  bout the ORDER B
14dd0 59 20 63 6c 61 75 73 65 2e 20 28 49 6e 20 61 6e  Y clause. (In an
14de0 20 61 67 67 72 65 67 61 74 65 0d 0a 20 20 20 20   aggregate..    
14df0 20 20 20 20 2f 2f 2f 20 71 75 65 72 79 2c 20 74      /// query, t
14e00 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6d  he SQLite core m
14e10 69 67 68 74 20 70 75 74 20 69 6e 20 47 52 4f 55  ight put in GROU
14e20 50 20 42 59 20 63 6c 61 75 73 65 20 69 6e 66 6f  P BY clause info
14e30 72 6d 61 74 69 6f 6e 20 69 6e 0d 0a 20 20 20 20  rmation in..    
14e40 20 20 20 20 2f 2f 2f 20 70 6c 61 63 65 20 6f 66      /// place of
14e50 20 74 68 65 20 4f 52 44 45 52 20 42 59 20 63 6c   the ORDER BY cl
14e60 61 75 73 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  ause information
14e70 2c 20 62 75 74 20 74 68 69 73 20 66 61 63 74 20  , but this fact 
14e80 73 68 6f 75 6c 64 20 6e 6f 74 0d 0a 20 20 20 20  should not..    
14e90 20 20 20 20 2f 2f 2f 20 6d 61 6b 65 20 61 6e 79      /// make any
14ea0 20 64 69 66 66 65 72 65 6e 63 65 20 74 6f 20 74   difference to t
14eb0 68 65 20 78 42 65 73 74 49 6e 64 65 78 20 6d 65  he xBestIndex me
14ec0 74 68 6f 64 2e 29 20 49 66 20 61 6c 6c 20 74 65  thod.) If all te
14ed0 72 6d 73 20 6f 66 20 74 68 65 0d 0a 20 20 20 20  rms of the..    
14ee0 20 20 20 20 2f 2f 2f 20 4f 52 44 45 52 20 42 59      /// ORDER BY
14ef0 20 63 6c 61 75 73 65 20 61 72 65 20 63 6f 6c 75   clause are colu
14f00 6d 6e 73 20 69 6e 20 74 68 65 20 76 69 72 74 75  mns in the virtu
14f10 61 6c 20 74 61 62 6c 65 2c 20 74 68 65 6e 20 6e  al table, then n
14f20 4f 72 64 65 72 42 79 0d 0a 20 20 20 20 20 20 20  OrderBy..       
14f30 20 2f 2f 2f 20 77 69 6c 6c 20 62 65 20 74 68 65   /// will be the
14f40 20 6e 75 6d 62 65 72 20 6f 66 20 74 65 72 6d 73   number of terms
14f50 20 69 6e 20 74 68 65 20 4f 52 44 45 52 20 42 59   in the ORDER BY
14f60 20 63 6c 61 75 73 65 20 61 6e 64 20 74 68 65 0d   clause and the.
14f70 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 4f 72  .        /// aOr
14f80 64 65 72 42 79 5b 5d 20 61 72 72 61 79 20 77 69  derBy[] array wi
14f90 6c 6c 20 69 64 65 6e 74 69 66 79 20 74 68 65 20  ll identify the 
14fa0 63 6f 6c 75 6d 6e 20 66 6f 72 20 65 61 63 68 20  column for each 
14fb0 74 65 72 6d 20 69 6e 20 74 68 65 0d 0a 20 20 20  term in the..   
14fc0 20 20 20 20 20 2f 2f 2f 20 6f 72 64 65 72 20 62       /// order b
14fd0 79 20 63 6c 61 75 73 65 20 61 6e 64 20 77 68 65  y clause and whe
14fe0 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 61 74  ther or not that
14ff0 20 63 6f 6c 75 6d 6e 20 69 73 20 41 53 43 20 6f   column is ASC o
15000 72 20 44 45 53 43 2e 0d 0a 20 20 20 20 20 20 20  r DESC...       
15010 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
15020 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
15030 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 32 2e  ..        /// 2.
15040 33 2e 32 20 4f 75 74 70 75 74 73 0d 0a 20 20 20  3.2 Outputs..   
15050 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
15060 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
15070 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
15080 2f 20 47 69 76 65 6e 20 61 6c 6c 20 6f 66 20 74  / Given all of t
15090 68 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61  he information a
150a0 62 6f 76 65 2c 20 74 68 65 20 6a 6f 62 20 6f 66  bove, the job of
150b0 20 74 68 65 20 78 42 65 73 74 49 6e 64 65 78 0d   the xBestIndex.
150c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74  .        /// met
150d0 68 6f 64 20 69 74 20 74 6f 20 66 69 67 75 72 65  hod it to figure
150e0 20 6f 75 74 20 74 68 65 20 62 65 73 74 20 77 61   out the best wa
150f0 79 20 74 6f 20 73 65 61 72 63 68 20 74 68 65 20  y to search the 
15100 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a  virtual table...
15110 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
15120 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
15130 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
15140 20 2f 2f 2f 20 54 68 65 20 78 42 65 73 74 49 6e   /// The xBestIn
15150 64 65 78 20 6d 65 74 68 6f 64 20 66 69 6c 6c 73  dex method fills
15160 20 74 68 65 20 69 64 78 4e 75 6d 20 61 6e 64 20   the idxNum and 
15170 69 64 78 53 74 72 20 66 69 65 6c 64 73 20 77 69  idxStr fields wi
15180 74 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  th..        /// 
15190 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 74 68 61 74  information that
151a0 20 63 6f 6d 6d 75 6e 69 63 61 74 65 73 20 61 6e   communicates an
151b0 20 69 6e 64 65 78 69 6e 67 20 73 74 72 61 74 65   indexing strate
151c0 67 79 20 74 6f 20 74 68 65 20 78 46 69 6c 74 65  gy to the xFilte
151d0 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d  r..        /// m
151e0 65 74 68 6f 64 2e 20 54 68 65 20 69 6e 66 6f 72  ethod. The infor
151f0 6d 61 74 69 6f 6e 20 69 6e 20 69 64 78 4e 75 6d  mation in idxNum
15200 20 61 6e 64 20 69 64 78 53 74 72 20 69 73 20 61   and idxStr is a
15210 72 62 69 74 72 61 72 79 20 61 73 20 66 61 72 20  rbitrary as far 
15220 61 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  as..        /// 
15230 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
15240 69 73 20 63 6f 6e 63 65 72 6e 65 64 2e 20 54 68  is concerned. Th
15250 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6a 75  e SQLite core ju
15260 73 74 20 63 6f 70 69 65 73 20 74 68 65 0d 0a 20  st copies the.. 
15270 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 66 6f 72         /// infor
15280 6d 61 74 69 6f 6e 20 74 68 72 6f 75 67 68 20 74  mation through t
15290 6f 20 74 68 65 20 78 46 69 6c 74 65 72 20 6d 65  o the xFilter me
152a0 74 68 6f 64 2e 20 41 6e 79 20 64 65 73 69 72 65  thod. Any desire
152b0 64 20 6d 65 61 6e 69 6e 67 20 63 61 6e 0d 0a 20  d meaning can.. 
152c0 20 20 20 20 20 20 20 2f 2f 2f 20 62 65 20 61 73         /// be as
152d0 73 69 67 6e 65 64 20 74 6f 20 69 64 78 4e 75 6d  signed to idxNum
152e0 20 61 6e 64 20 69 64 78 53 74 72 20 61 73 20 6c   and idxStr as l
152f0 6f 6e 67 20 61 73 20 78 42 65 73 74 49 6e 64 65  ong as xBestInde
15300 78 20 61 6e 64 20 78 46 69 6c 74 65 72 0d 0a 20  x and xFilter.. 
15310 20 20 20 20 20 20 20 2f 2f 2f 20 61 67 72 65 65         /// agree
15320 20 6f 6e 20 77 68 61 74 20 74 68 61 74 20 6d 65   on what that me
15330 61 6e 69 6e 67 20 69 73 2e 0d 0a 20 20 20 20 20  aning is...     
15340 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a     /// </para>..
15350 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
15360 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
15370 54 68 65 20 69 64 78 53 74 72 20 76 61 6c 75 65  The idxStr value
15380 20 6d 61 79 20 62 65 20 61 20 73 74 72 69 6e 67   may be a string
15390 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 61   obtained from a
153a0 6e 20 53 51 4c 69 74 65 20 6d 65 6d 6f 72 79 0d  n SQLite memory.
153b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 6c 6c  .        /// all
153c0 6f 63 61 74 69 6f 6e 20 66 75 6e 63 74 69 6f 6e  ocation function
153d0 20 73 75 63 68 20 61 73 20 73 71 6c 69 74 65 33   such as sqlite3
153e0 5f 6d 70 72 69 6e 74 66 28 29 2e 20 49 66 20 74  _mprintf(). If t
153f0 68 69 73 20 69 73 20 74 68 65 20 63 61 73 65 2c  his is the case,
15400 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68  ..        /// th
15410 65 6e 20 74 68 65 20 6e 65 65 64 54 6f 46 72 65  en the needToFre
15420 65 49 64 78 53 74 72 20 66 6c 61 67 20 6d 75 73  eIdxStr flag mus
15430 74 20 62 65 20 73 65 74 20 74 6f 20 74 72 75 65  t be set to true
15440 20 73 6f 20 74 68 61 74 20 74 68 65 0d 0a 20 20   so that the..  
15450 20 20 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74 65        /// SQLite
15460 20 63 6f 72 65 20 77 69 6c 6c 20 6b 6e 6f 77 20   core will know 
15470 74 6f 20 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f  to call sqlite3_
15480 66 72 65 65 28 29 20 6f 6e 20 74 68 61 74 20 73  free() on that s
15490 74 72 69 6e 67 20 77 68 65 6e 20 69 74 0d 0a 20  tring when it.. 
154a0 20 20 20 20 20 20 20 2f 2f 2f 20 68 61 73 20 66         /// has f
154b0 69 6e 69 73 68 65 64 20 77 69 74 68 20 69 74 2c  inished with it,
154c0 20 61 6e 64 20 74 68 75 73 20 61 76 6f 69 64 20   and thus avoid 
154d0 61 20 6d 65 6d 6f 72 79 20 6c 65 61 6b 2e 0d 0a  a memory leak...
154e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
154f0 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
15500 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
15510 20 2f 2f 2f 20 49 66 20 74 68 65 20 76 69 72 74   /// If the virt
15520 75 61 6c 20 74 61 62 6c 65 20 77 69 6c 6c 20 6f  ual table will o
15530 75 74 70 75 74 20 72 6f 77 73 20 69 6e 20 74 68  utput rows in th
15540 65 20 6f 72 64 65 72 20 73 70 65 63 69 66 69 65  e order specifie
15550 64 20 62 79 20 74 68 65 0d 0a 20 20 20 20 20 20  d by the..      
15560 20 20 2f 2f 2f 20 4f 52 44 45 52 20 42 59 20 63    /// ORDER BY c
15570 6c 61 75 73 65 2c 20 74 68 65 6e 20 74 68 65 20  lause, then the 
15580 6f 72 64 65 72 42 79 43 6f 6e 73 75 6d 65 64 20  orderByConsumed 
15590 66 6c 61 67 20 6d 61 79 20 62 65 20 73 65 74 20  flag may be set 
155a0 74 6f 20 74 72 75 65 2e 0d 0a 20 20 20 20 20 20  to true...      
155b0 20 20 2f 2f 2f 20 49 66 20 74 68 65 20 6f 75 74    /// If the out
155c0 70 75 74 20 69 73 20 6e 6f 74 20 61 75 74 6f 6d  put is not autom
155d0 61 74 69 63 61 6c 6c 79 20 69 6e 20 74 68 65 20  atically in the 
155e0 63 6f 72 72 65 63 74 20 6f 72 64 65 72 20 74 68  correct order th
155f0 65 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  en..        /// 
15600 6f 72 64 65 72 42 79 43 6f 6e 73 75 6d 65 64 20  orderByConsumed 
15610 6d 75 73 74 20 62 65 20 6c 65 66 74 20 69 6e 20  must be left in 
15620 69 74 73 20 64 65 66 61 75 6c 74 20 66 61 6c 73  its default fals
15630 65 20 73 65 74 74 69 6e 67 2e 20 54 68 69 73 0d  e setting. This.
15640 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 6c  .        /// wil
15650 6c 20 69 6e 64 69 63 61 74 65 20 74 6f 20 74 68  l indicate to th
15660 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 74 68  e SQLite core th
15670 61 74 20 69 74 20 77 69 6c 6c 20 6e 65 65 64 20  at it will need 
15680 74 6f 20 64 6f 20 61 20 73 65 70 61 72 61 74 65  to do a separate
15690 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 6f  ..        /// so
156a0 72 74 69 6e 67 20 70 61 73 73 20 6f 76 65 72 20  rting pass over 
156b0 74 68 65 20 64 61 74 61 20 61 66 74 65 72 20 69  the data after i
156c0 74 20 63 6f 6d 65 73 20 6f 75 74 20 6f 66 20 74  t comes out of t
156d0 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
156e0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
156f0 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
15700 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
15710 20 20 20 20 2f 2f 2f 20 54 68 65 20 65 73 74 69      /// The esti
15720 6d 61 74 65 64 43 6f 73 74 20 66 69 65 6c 64 20  matedCost field 
15730 73 68 6f 75 6c 64 20 62 65 20 73 65 74 20 74 6f  should be set to
15740 20 74 68 65 20 65 73 74 69 6d 61 74 65 64 20 6e   the estimated n
15750 75 6d 62 65 72 20 6f 66 0d 0a 20 20 20 20 20 20  umber of..      
15760 20 20 2f 2f 2f 20 64 69 73 6b 20 61 63 63 65 73    /// disk acces
15770 73 20 6f 70 65 72 61 74 69 6f 6e 73 20 72 65 71  s operations req
15780 75 69 72 65 64 20 74 6f 20 65 78 65 63 75 74 65  uired to execute
15790 20 74 68 69 73 20 71 75 65 72 79 20 61 67 61 69   this query agai
157a0 6e 73 74 20 74 68 65 0d 0a 20 20 20 20 20 20 20  nst the..       
157b0 20 2f 2f 2f 20 76 69 72 74 75 61 6c 20 74 61 62   /// virtual tab
157c0 6c 65 2e 20 54 68 65 20 53 51 4c 69 74 65 20 63  le. The SQLite c
157d0 6f 72 65 20 77 69 6c 6c 20 6f 66 74 65 6e 20 63  ore will often c
157e0 61 6c 6c 20 78 42 65 73 74 49 6e 64 65 78 20 6d  all xBestIndex m
157f0 75 6c 74 69 70 6c 65 0d 0a 20 20 20 20 20 20 20  ultiple..       
15800 20 2f 2f 2f 20 74 69 6d 65 73 20 77 69 74 68 20   /// times with 
15810 64 69 66 66 65 72 65 6e 74 20 63 6f 6e 73 74 72  different constr
15820 61 69 6e 74 73 2c 20 6f 62 74 61 69 6e 20 6d 75  aints, obtain mu
15830 6c 74 69 70 6c 65 20 63 6f 73 74 20 65 73 74 69  ltiple cost esti
15840 6d 61 74 65 73 2c 0d 0a 20 20 20 20 20 20 20 20  mates,..        
15850 2f 2f 2f 20 74 68 65 6e 20 63 68 6f 6f 73 65 20  /// then choose 
15860 74 68 65 20 71 75 65 72 79 20 70 6c 61 6e 20 74  the query plan t
15870 68 61 74 20 67 69 76 65 73 20 74 68 65 20 6c 6f  hat gives the lo
15880 77 65 73 74 20 65 73 74 69 6d 61 74 65 2e 0d 0a  west estimate...
15890 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
158a0 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
158b0 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
158c0 20 2f 2f 2f 20 54 68 65 20 61 43 6f 6e 73 74 72   /// The aConstr
158d0 61 69 6e 74 55 73 61 67 65 5b 5d 20 61 72 72 61  aintUsage[] arra
158e0 79 20 63 6f 6e 74 61 69 6e 73 20 6f 6e 65 20 65  y contains one e
158f0 6c 65 6d 65 6e 74 20 66 6f 72 20 65 61 63 68 20  lement for each 
15900 6f 66 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  of the..        
15910 2f 2f 2f 20 6e 43 6f 6e 73 74 72 61 69 6e 74 20  /// nConstraint 
15920 63 6f 6e 73 74 72 61 69 6e 74 73 20 69 6e 20 74  constraints in t
15930 68 65 20 69 6e 70 75 74 73 20 73 65 63 74 69 6f  he inputs sectio
15940 6e 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20 20  n of the..      
15950 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 69 6e    /// sqlite3_in
15960 64 65 78 5f 69 6e 66 6f 20 73 74 72 75 63 74 75  dex_info structu
15970 72 65 2e 20 54 68 65 20 61 43 6f 6e 73 74 72 61  re. The aConstra
15980 69 6e 74 55 73 61 67 65 5b 5d 20 61 72 72 61 79  intUsage[] array
15990 20 69 73 20 75 73 65 64 0d 0a 20 20 20 20 20 20   is used..      
159a0 20 20 2f 2f 2f 20 62 79 20 78 42 65 73 74 49 6e    /// by xBestIn
159b0 64 65 78 20 74 6f 20 74 65 6c 6c 20 74 68 65 20  dex to tell the 
159c0 63 6f 72 65 20 68 6f 77 20 69 74 20 69 73 20 75  core how it is u
159d0 73 69 6e 67 20 74 68 65 20 63 6f 6e 73 74 72 61  sing the constra
159e0 69 6e 74 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ints...        /
159f0 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20  // </para>..    
15a00 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a      /// <para>..
15a10 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
15a20 78 42 65 73 74 49 6e 64 65 78 20 6d 65 74 68 6f  xBestIndex metho
15a30 64 20 6d 61 79 20 73 65 74 20 61 43 6f 6e 73 74  d may set aConst
15a40 72 61 69 6e 74 55 73 61 67 65 5b 5d 2e 61 72 67  raintUsage[].arg
15a50 76 49 6e 64 65 78 20 65 6e 74 72 69 65 73 0d 0a  vIndex entries..
15a60 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20 76          /// to v
15a70 61 6c 75 65 73 20 67 72 65 61 74 65 72 20 74 68  alues greater th
15a80 61 6e 20 6f 6e 65 2e 20 45 78 61 63 74 6c 79 20  an one. Exactly 
15a90 6f 6e 65 20 65 6e 74 72 79 20 73 68 6f 75 6c 64  one entry should
15aa0 20 62 65 20 73 65 74 20 74 6f 20 31 2c 0d 0a 20   be set to 1,.. 
15ab0 20 20 20 20 20 20 20 2f 2f 2f 20 61 6e 6f 74 68         /// anoth
15ac0 65 72 20 74 6f 20 32 2c 20 61 6e 6f 74 68 65 72  er to 2, another
15ad0 20 74 6f 20 33 2c 20 61 6e 64 20 73 6f 20 66 6f   to 3, and so fo
15ae0 72 74 68 20 75 70 20 74 6f 20 61 73 20 6d 61 6e  rth up to as man
15af0 79 20 6f 72 20 61 73 20 66 65 77 20 61 73 0d 0a  y or as few as..
15b00 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20          /// the 
15b10 78 42 65 73 74 49 6e 64 65 78 20 6d 65 74 68 6f  xBestIndex metho
15b20 64 20 77 61 6e 74 73 2e 20 54 68 65 20 45 58 50  d wants. The EXP
15b30 52 20 6f 66 20 74 68 65 20 63 6f 72 72 65 73 70  R of the corresp
15b40 6f 6e 64 69 6e 67 0d 0a 20 20 20 20 20 20 20 20  onding..        
15b50 2f 2f 2f 20 63 6f 6e 73 74 72 61 69 6e 74 73 20  /// constraints 
15b60 77 69 6c 6c 20 74 68 65 6e 20 62 65 20 70 61 73  will then be pas
15b70 73 65 64 20 69 6e 20 61 73 20 74 68 65 20 61 72  sed in as the ar
15b80 67 76 5b 5d 20 70 61 72 61 6d 65 74 65 72 73 20  gv[] parameters 
15b90 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  to..        /// 
15ba0 78 46 69 6c 74 65 72 2e 0d 0a 20 20 20 20 20 20  xFilter...      
15bb0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
15bc0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
15bd0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 46  >..        /// F
15be0 6f 72 20 65 78 61 6d 70 6c 65 2c 20 69 66 20 74  or example, if t
15bf0 68 65 20 61 43 6f 6e 73 74 72 61 69 6e 74 5b 33  he aConstraint[3
15c00 5d 2e 61 72 67 76 49 6e 64 65 78 20 69 73 20 73  ].argvIndex is s
15c10 65 74 20 74 6f 20 31 2c 20 74 68 65 6e 20 77 68  et to 1, then wh
15c20 65 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  en..        /// 
15c30 78 46 69 6c 74 65 72 20 69 73 20 63 61 6c 6c 65  xFilter is calle
15c40 64 2c 20 74 68 65 20 61 72 67 76 5b 30 5d 20 70  d, the argv[0] p
15c50 61 73 73 65 64 20 74 6f 20 78 46 69 6c 74 65 72  assed to xFilter
15c60 20 77 69 6c 6c 20 68 61 76 65 20 74 68 65 20 45   will have the E
15c70 58 50 52 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  XPR..        ///
15c80 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 61 43   value of the aC
15c90 6f 6e 73 74 72 61 69 6e 74 5b 33 5d 20 63 6f 6e  onstraint[3] con
15ca0 73 74 72 61 69 6e 74 2e 0d 0a 20 20 20 20 20 20  straint...      
15cb0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
15cc0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
15cd0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 42  >..        /// B
15ce0 79 20 64 65 66 61 75 6c 74 2c 20 74 68 65 20 53  y default, the S
15cf0 51 4c 69 74 65 20 63 6f 72 65 20 64 6f 75 62 6c  QLite core doubl
15d00 65 20 63 68 65 63 6b 73 20 61 6c 6c 20 63 6f 6e  e checks all con
15d10 73 74 72 61 69 6e 74 73 20 6f 6e 20 65 61 63 68  straints on each
15d20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 72 6f  ..        /// ro
15d30 77 20 6f 66 20 74 68 65 20 76 69 72 74 75 61 6c  w of the virtual
15d40 20 74 61 62 6c 65 20 74 68 61 74 20 69 74 20 72   table that it r
15d50 65 63 65 69 76 65 73 2e 20 49 66 20 73 75 63 68  eceives. If such
15d60 20 61 20 63 68 65 63 6b 20 69 73 0d 0a 20 20 20   a check is..   
15d70 20 20 20 20 20 2f 2f 2f 20 72 65 64 75 6e 64 61       /// redunda
15d80 6e 74 2c 20 74 68 65 20 78 42 65 73 74 46 69 6c  nt, the xBestFil
15d90 74 65 72 20 6d 65 74 68 6f 64 20 63 61 6e 20 73  ter method can s
15da0 75 70 70 72 65 73 73 20 74 68 61 74 20 64 6f 75  uppress that dou
15db0 62 6c 65 2d 63 68 65 63 6b 20 62 79 0d 0a 20 20  ble-check by..  
15dc0 20 20 20 20 20 20 2f 2f 2f 20 73 65 74 74 69 6e        /// settin
15dd0 67 20 61 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  g aConstraintUsa
15de0 67 65 5b 5d 2e 6f 6d 69 74 2e 0d 0a 20 20 20 20  ge[].omit...    
15df0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d      /// </para>.
15e00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
15e10 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
15e20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
15e30 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20  ="pVtab">..     
15e40 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
15e50 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
15e60 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65   sqlite3_vtab de
15e70 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2e  rived structure.
15e80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
15e90 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
15ea0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
15eb0 22 70 49 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20  "pIndex">..     
15ec0 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
15ed0 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
15ee0 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69   sqlite3_index_i
15ef0 6e 66 6f 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  nfo structure...
15f00 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
15f10 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
15f20 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
15f30 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64       /// A stand
15f40 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72  ard SQLite retur
15f50 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  n code...       
15f60 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
15f70 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45  .        SQLiteE
15f80 72 72 6f 72 43 6f 64 65 20 78 42 65 73 74 49 6e  rrorCode xBestIn
15f90 64 65 78 28 0d 0a 20 20 20 20 20 20 20 20 20 20  dex(..          
15fa0 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d    IntPtr pVtab,.
15fb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
15fc0 50 74 72 20 70 49 6e 64 65 78 0d 0a 20 20 20 20  Ptr pIndex..    
15fd0 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20          );....  
15fe0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
15ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
16030 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
16040 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
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 69 73 20 6d 65 74      /// This met
16070 68 6f 64 20 72 65 6c 65 61 73 65 73 20 61 20 63  hod releases a c
16080 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20 61 20 76  onnection to a v
16090 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 20 4f 6e  irtual table. On
160a0 6c 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  ly the..        
160b0 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 76 74 61 62  /// sqlite3_vtab
160c0 20 6f 62 6a 65 63 74 20 69 73 20 64 65 73 74 72   object is destr
160d0 6f 79 65 64 2e 20 54 68 65 20 76 69 72 74 75 61  oyed. The virtua
160e0 6c 20 74 61 62 6c 65 20 69 73 20 6e 6f 74 0d 0a  l table is not..
160f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 65 73 74          /// dest
16100 72 6f 79 65 64 20 61 6e 64 20 61 6e 79 20 62 61  royed and any ba
16110 63 6b 69 6e 67 20 73 74 6f 72 65 20 61 73 73 6f  cking store asso
16120 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20  ciated with the 
16130 76 69 72 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20  virtual table.. 
16140 20 20 20 20 20 20 20 2f 2f 2f 20 70 65 72 73 69         /// persi
16150 73 74 73 2e 20 54 68 69 73 20 6d 65 74 68 6f 64  sts. This method
16160 20 75 6e 64 6f 65 73 20 74 68 65 20 77 6f 72 6b   undoes the work
16170 20 6f 66 20 78 43 6f 6e 6e 65 63 74 2e 0d 0a 20   of xConnect... 
16180 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
16190 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
161a0 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
161b0 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20  /// This method 
161c0 69 73 20 61 20 64 65 73 74 72 75 63 74 6f 72 20  is a destructor 
161d0 66 6f 72 20 61 20 63 6f 6e 6e 65 63 74 69 6f 6e  for a connection
161e0 20 74 6f 20 74 68 65 20 76 69 72 74 75 61 6c 20   to the virtual 
161f0 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20  table...        
16200 2f 2f 2f 20 43 6f 6e 74 72 61 73 74 20 74 68 69  /// Contrast thi
16210 73 20 6d 65 74 68 6f 64 20 77 69 74 68 20 78 44  s method with xD
16220 65 73 74 72 6f 79 2e 20 54 68 65 20 78 44 65 73  estroy. The xDes
16230 74 72 6f 79 20 69 73 20 61 20 64 65 73 74 72 75  troy is a destru
16240 63 74 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ctor..        //
16250 2f 20 66 6f 72 20 74 68 65 20 65 6e 74 69 72 65  / for the entire
16260 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d   virtual table..
16270 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
16280 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
16290 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
162a0 20 20 2f 2f 2f 20 54 68 65 20 78 44 69 73 63 6f    /// The xDisco
162b0 6e 6e 65 63 74 20 6d 65 74 68 6f 64 20 69 73 20  nnect method is 
162c0 72 65 71 75 69 72 65 64 20 66 6f 72 20 65 76 65  required for eve
162d0 72 79 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  ry virtual table
162e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6d  ..        /// im
162f0 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2c 20 74 68  plementation, th
16300 6f 75 67 68 20 69 74 20 69 73 20 61 63 63 65 70  ough it is accep
16310 74 61 62 6c 65 20 66 6f 72 20 74 68 65 20 78 44  table for the xD
16320 69 73 63 6f 6e 6e 65 63 74 20 61 6e 64 0d 0a 20  isconnect and.. 
16330 20 20 20 20 20 20 20 2f 2f 2f 20 78 44 65 73 74         /// xDest
16340 72 6f 79 20 6d 65 74 68 6f 64 73 20 74 6f 20 62  roy methods to b
16350 65 20 74 68 65 20 73 61 6d 65 20 66 75 6e 63 74  e the same funct
16360 69 6f 6e 20 69 66 20 74 68 61 74 20 6d 61 6b 65  ion if that make
16370 73 20 73 65 6e 73 65 20 66 6f 72 0d 0a 20 20 20  s sense for..   
16380 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 70 61 72       /// the par
16390 74 69 63 75 6c 61 72 20 76 69 72 74 75 61 6c 20  ticular virtual 
163a0 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20  table...        
163b0 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20  /// </para>..   
163c0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
163d0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
163e0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
163f0 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  tab">..        /
16400 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f  // The native po
16410 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c  inter to the sql
16420 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65  ite3_vtab derive
16430 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20  d structure...  
16440 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
16450 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
16460 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
16470 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72     /// A standar
16480 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20  d SQLite return 
16490 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  code...        /
164a0 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
164b0 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72         SQLiteErr
164c0 6f 72 43 6f 64 65 20 78 44 69 73 63 6f 6e 6e 65  orCode xDisconne
164d0 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ct(..           
164e0 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20   IntPtr pVtab.. 
164f0 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d             );...
16500 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
16510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16550 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
16560 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
16570 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20     /// <para>.. 
16580 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
16590 6d 65 74 68 6f 64 20 72 65 6c 65 61 73 65 73 20  method releases 
165a0 61 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20  a connection to 
165b0 61 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2c  a virtual table,
165c0 20 6a 75 73 74 20 6c 69 6b 65 20 74 68 65 0d 0a   just like the..
165d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 78 44 69 73          /// xDis
165e0 63 6f 6e 6e 65 63 74 20 6d 65 74 68 6f 64 2c 20  connect method, 
165f0 61 6e 64 20 69 74 20 61 6c 73 6f 20 64 65 73 74  and it also dest
16600 72 6f 79 73 20 74 68 65 20 75 6e 64 65 72 6c 79  roys the underly
16610 69 6e 67 20 74 61 62 6c 65 0d 0a 20 20 20 20 20  ing table..     
16620 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74     /// implement
16630 61 74 69 6f 6e 2e 20 54 68 69 73 20 6d 65 74 68  ation. This meth
16640 6f 64 20 75 6e 64 6f 65 73 20 74 68 65 20 77 6f  od undoes the wo
16650 72 6b 20 6f 66 20 78 43 72 65 61 74 65 2e 0d 0a  rk of xCreate...
16660 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
16670 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
16680 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
16690 20 2f 2f 2f 20 54 68 65 20 78 44 69 73 63 6f 6e   /// The xDiscon
166a0 6e 65 63 74 20 6d 65 74 68 6f 64 20 69 73 20 63  nect method is c
166b0 61 6c 6c 65 64 20 77 68 65 6e 65 76 65 72 20 61  alled whenever a
166c0 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
166d0 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tion..        //
166e0 2f 20 74 68 61 74 20 75 73 65 73 20 61 20 76 69  / that uses a vi
166f0 72 74 75 61 6c 20 74 61 62 6c 65 20 69 73 20 63  rtual table is c
16700 6c 6f 73 65 64 2e 20 54 68 65 20 78 44 65 73 74  losed. The xDest
16710 72 6f 79 20 6d 65 74 68 6f 64 20 69 73 20 6f 6e  roy method is on
16720 6c 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ly..        /// 
16730 63 61 6c 6c 65 64 20 77 68 65 6e 20 61 20 44 52  called when a DR
16740 4f 50 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65  OP TABLE stateme
16750 6e 74 20 69 73 20 65 78 65 63 75 74 65 64 20 61  nt is executed a
16760 67 61 69 6e 73 74 20 74 68 65 20 76 69 72 74 75  gainst the virtu
16770 61 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  al..        /// 
16780 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20  table...        
16790 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20  /// </para>..   
167a0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
167b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
167c0 20 78 44 65 73 74 72 6f 79 20 6d 65 74 68 6f 64   xDestroy method
167d0 20 69 73 20 72 65 71 75 69 72 65 64 20 66 6f 72   is required for
167e0 20 65 76 65 72 79 20 76 69 72 74 75 61 6c 20 74   every virtual t
167f0 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  able..        //
16800 2f 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  / implementation
16810 2c 20 74 68 6f 75 67 68 20 69 74 20 69 73 20 61  , though it is a
16820 63 63 65 70 74 61 62 6c 65 20 66 6f 72 20 74 68  cceptable for th
16830 65 20 78 44 69 73 63 6f 6e 6e 65 63 74 20 61 6e  e xDisconnect an
16840 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 78  d..        /// x
16850 44 65 73 74 72 6f 79 20 6d 65 74 68 6f 64 73 20  Destroy methods 
16860 74 6f 20 62 65 20 74 68 65 20 73 61 6d 65 20 66  to be the same f
16870 75 6e 63 74 69 6f 6e 20 69 66 20 74 68 61 74 20  unction if that 
16880 6d 61 6b 65 73 20 73 65 6e 73 65 20 66 6f 72 0d  makes sense for.
16890 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  .        /// the
168a0 20 70 61 72 74 69 63 75 6c 61 72 20 76 69 72 74   particular virt
168b0 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
168c0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d      /// </para>.
168d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
168e0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
168f0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
16900 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20  ="pVtab">..     
16910 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
16920 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
16930 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65   sqlite3_vtab de
16940 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2e  rived structure.
16950 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
16960 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
16970 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
16980 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61         /// A sta
16990 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74  ndard SQLite ret
169a0 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  urn code...     
169b0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
169c0 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  >..        SQLit
169d0 65 45 72 72 6f 72 43 6f 64 65 20 78 44 65 73 74  eErrorCode xDest
169e0 72 6f 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  roy(..          
169f0 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a    IntPtr pVtab..
16a00 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a              );..
16a10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
16a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a60 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
16a70 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
16a80 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a      /// <para>..
16a90 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
16aa0 78 4f 70 65 6e 20 6d 65 74 68 6f 64 20 63 72 65  xOpen method cre
16ab0 61 74 65 73 20 61 20 6e 65 77 20 63 75 72 73 6f  ates a new curso
16ac0 72 20 75 73 65 64 20 66 6f 72 20 61 63 63 65 73  r used for acces
16ad0 73 69 6e 67 20 28 72 65 61 64 0d 0a 20 20 20 20  sing (read..    
16ae0 20 20 20 20 2f 2f 2f 20 61 6e 64 2f 6f 72 20 77      /// and/or w
16af0 72 69 74 69 6e 67 29 20 61 20 76 69 72 74 75 61  riting) a virtua
16b00 6c 20 74 61 62 6c 65 2e 20 41 20 73 75 63 63 65  l table. A succe
16b10 73 73 66 75 6c 20 69 6e 76 6f 63 61 74 69 6f 6e  ssful invocation
16b20 20 6f 66 20 74 68 69 73 0d 0a 20 20 20 20 20 20   of this..      
16b30 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 20 77 69 6c    /// method wil
16b40 6c 20 61 6c 6c 6f 63 61 74 65 20 74 68 65 20 6d  l allocate the m
16b50 65 6d 6f 72 79 20 66 6f 72 20 74 68 65 20 73 71  emory for the sq
16b60 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f  lite3_vtab_curso
16b70 72 20 28 6f 72 20 61 0d 0a 20 20 20 20 20 20 20  r (or a..       
16b80 20 2f 2f 2f 20 73 75 62 63 6c 61 73 73 29 2c 20   /// subclass), 
16b90 69 6e 69 74 69 61 6c 69 7a 65 20 74 68 65 20 6e  initialize the n
16ba0 65 77 20 6f 62 6a 65 63 74 2c 20 61 6e 64 20 6d  ew object, and m
16bb0 61 6b 65 20 2a 70 70 43 75 72 73 6f 72 20 70 6f  ake *ppCursor po
16bc0 69 6e 74 20 74 6f 0d 0a 20 20 20 20 20 20 20 20  int to..        
16bd0 2f 2f 2f 20 74 68 65 20 6e 65 77 20 6f 62 6a 65  /// the new obje
16be0 63 74 2e 20 54 68 65 20 73 75 63 63 65 73 73 66  ct. The successf
16bf0 75 6c 20 63 61 6c 6c 20 74 68 65 6e 20 72 65 74  ul call then ret
16c00 75 72 6e 73 20 53 51 4c 49 54 45 5f 4f 4b 2e 0d  urns SQLITE_OK..
16c10 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
16c20 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
16c30 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
16c40 20 20 2f 2f 2f 20 46 6f 72 20 65 76 65 72 79 20    /// For every 
16c50 73 75 63 63 65 73 73 66 75 6c 20 63 61 6c 6c 20  successful call 
16c60 74 6f 20 74 68 69 73 20 6d 65 74 68 6f 64 2c 20  to this method, 
16c70 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
16c80 77 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f  will..        //
16c90 2f 20 6c 61 74 65 72 20 69 6e 76 6f 6b 65 20 74  / later invoke t
16ca0 68 65 20 78 43 6c 6f 73 65 20 6d 65 74 68 6f 64  he xClose method
16cb0 20 74 6f 20 64 65 73 74 72 6f 79 20 74 68 65 20   to destroy the 
16cc0 61 6c 6c 6f 63 61 74 65 64 20 63 75 72 73 6f 72  allocated cursor
16cd0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
16ce0 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
16cf0 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
16d00 20 20 20 20 2f 2f 2f 20 54 68 65 20 78 4f 70 65      /// The xOpe
16d10 6e 20 6d 65 74 68 6f 64 20 6e 65 65 64 20 6e 6f  n method need no
16d20 74 20 69 6e 69 74 69 61 6c 69 7a 65 20 74 68 65  t initialize the
16d30 20 70 56 74 61 62 20 66 69 65 6c 64 20 6f 66 20   pVtab field of 
16d40 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
16d50 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75   sqlite3_vtab_cu
16d60 72 73 6f 72 20 73 74 72 75 63 74 75 72 65 2e 20  rsor structure. 
16d70 54 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  The SQLite core 
16d80 77 69 6c 6c 20 74 61 6b 65 20 63 61 72 65 20 6f  will take care o
16d90 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  f..        /// t
16da0 68 61 74 20 63 68 6f 72 65 20 61 75 74 6f 6d 61  hat chore automa
16db0 74 69 63 61 6c 6c 79 2e 0d 0a 20 20 20 20 20 20  tically...      
16dc0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
16dd0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
16de0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
16df0 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 69   virtual table i
16e00 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6d 75  mplementation mu
16e10 73 74 20 62 65 20 61 62 6c 65 20 74 6f 20 73 75  st be able to su
16e20 70 70 6f 72 74 20 61 6e 20 61 72 62 69 74 72 61  pport an arbitra
16e30 72 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ry..        /// 
16e40 6e 75 6d 62 65 72 20 6f 66 20 73 69 6d 75 6c 74  number of simult
16e50 61 6e 65 6f 75 73 6c 79 20 6f 70 65 6e 20 63 75  aneously open cu
16e60 72 73 6f 72 73 2e 0d 0a 20 20 20 20 20 20 20 20  rsors...        
16e70 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20  /// </para>..   
16e80 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
16e90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 57 68 65  .        /// Whe
16ea0 6e 20 69 6e 69 74 69 61 6c 6c 79 20 6f 70 65 6e  n initially open
16eb0 65 64 2c 20 74 68 65 20 63 75 72 73 6f 72 20 69  ed, the cursor i
16ec0 73 20 69 6e 20 61 6e 20 75 6e 64 65 66 69 6e 65  s in an undefine
16ed0 64 20 73 74 61 74 65 2e 20 54 68 65 0d 0a 20 20  d state. The..  
16ee0 20 20 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74 65        /// SQLite
16ef0 20 63 6f 72 65 20 77 69 6c 6c 20 69 6e 76 6f 6b   core will invok
16f00 65 20 74 68 65 20 78 46 69 6c 74 65 72 20 6d 65  e the xFilter me
16f10 74 68 6f 64 20 6f 6e 20 74 68 65 20 63 75 72 73  thod on the curs
16f20 6f 72 20 70 72 69 6f 72 20 74 6f 0d 0a 20 20 20  or prior to..   
16f30 20 20 20 20 20 2f 2f 2f 20 61 6e 79 20 61 74 74       /// any att
16f40 65 6d 70 74 20 74 6f 20 70 6f 73 69 74 69 6f 6e  empt to position
16f50 20 6f 72 20 72 65 61 64 20 66 72 6f 6d 20 74 68   or read from th
16f60 65 20 63 75 72 73 6f 72 2e 0d 0a 20 20 20 20 20  e cursor...     
16f70 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a     /// </para>..
16f80 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
16f90 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
16fa0 54 68 65 20 78 4f 70 65 6e 20 6d 65 74 68 6f 64  The xOpen method
16fb0 20 69 73 20 72 65 71 75 69 72 65 64 20 66 6f 72   is required for
16fc0 20 65 76 65 72 79 20 76 69 72 74 75 61 6c 20 74   every virtual t
16fd0 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  able..        //
16fe0 2f 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  / implementation
16ff0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
17000 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
17010 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
17020 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
17030 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e  am name="pVtab">
17040 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
17050 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
17060 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
17070 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74 72  vtab derived str
17080 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ucture...       
17090 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
170a0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
170b0 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22  m name="pCursor"
170c0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55  >..        /// U
170d0 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69  pon success, thi
170e0 73 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74  s parameter must
170f0 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20   be modified to 
17100 70 6f 69 6e 74 20 74 6f 20 74 68 65 20 6e 65 77  point to the new
17110 6c 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ly..        /// 
17120 63 72 65 61 74 65 64 20 6e 61 74 69 76 65 20 73  created native s
17130 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73  qlite3_vtab_curs
17140 6f 72 20 64 65 72 69 76 65 64 20 73 74 72 75 63  or derived struc
17150 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ture...        /
17160 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
17170 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
17180 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
17190 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74  A standard SQLit
171a0 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a  e return code...
171b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
171c0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
171d0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
171e0 78 4f 70 65 6e 28 0d 0a 20 20 20 20 20 20 20 20  xOpen(..        
171f0 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
17200 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ,..            r
17210 65 66 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f  ef IntPtr pCurso
17220 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  r..            )
17230 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
17240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17280 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
17290 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
172a0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
172b0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
172c0 68 65 20 78 43 6c 6f 73 65 20 6d 65 74 68 6f 64  he xClose method
172d0 20 63 6c 6f 73 65 73 20 61 20 63 75 72 73 6f 72   closes a cursor
172e0 20 70 72 65 76 69 6f 75 73 6c 79 20 6f 70 65 6e   previously open
172f0 65 64 20 62 79 20 78 4f 70 65 6e 2e 20 54 68 65  ed by xOpen. The
17300 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 51  ..        /// SQ
17310 4c 69 74 65 20 63 6f 72 65 20 77 69 6c 6c 20 61  Lite core will a
17320 6c 77 61 79 73 20 63 61 6c 6c 20 78 43 6c 6f 73  lways call xClos
17330 65 20 6f 6e 63 65 20 66 6f 72 20 65 61 63 68 20  e once for each 
17340 63 75 72 73 6f 72 20 6f 70 65 6e 65 64 0d 0a 20  cursor opened.. 
17350 20 20 20 20 20 20 20 2f 2f 2f 20 75 73 69 6e 67         /// using
17360 20 78 4f 70 65 6e 2e 0d 0a 20 20 20 20 20 20 20   xOpen...       
17370 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
17380 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
17390 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
173a0 69 73 20 6d 65 74 68 6f 64 20 6d 75 73 74 20 72  is method must r
173b0 65 6c 65 61 73 65 20 61 6c 6c 20 72 65 73 6f 75  elease all resou
173c0 72 63 65 73 20 61 6c 6c 6f 63 61 74 65 64 20 62  rces allocated b
173d0 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  y the..        /
173e0 2f 2f 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67  // corresponding
173f0 20 78 4f 70 65 6e 20 63 61 6c 6c 2e 20 54 68 65   xOpen call. The
17400 20 72 6f 75 74 69 6e 65 20 77 69 6c 6c 20 6e 6f   routine will no
17410 74 20 62 65 20 63 61 6c 6c 65 64 20 61 67 61 69  t be called agai
17420 6e 20 65 76 65 6e 0d 0a 20 20 20 20 20 20 20 20  n even..        
17430 2f 2f 2f 20 69 66 20 69 74 20 72 65 74 75 72 6e  /// if it return
17440 73 20 61 6e 20 65 72 72 6f 72 2e 20 54 68 65 20  s an error. The 
17450 53 51 4c 69 74 65 20 63 6f 72 65 20 77 69 6c 6c  SQLite core will
17460 20 6e 6f 74 20 75 73 65 20 74 68 65 0d 0a 20 20   not use the..  
17470 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65        /// sqlite
17480 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 61 67  3_vtab_cursor ag
17490 61 69 6e 20 61 66 74 65 72 20 69 74 20 68 61 73  ain after it has
174a0 20 62 65 65 6e 20 63 6c 6f 73 65 64 2e 0d 0a 20   been closed... 
174b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
174c0 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
174d0 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
174e0 2f 2f 2f 20 54 68 65 20 78 43 6c 6f 73 65 20 6d  /// The xClose m
174f0 65 74 68 6f 64 20 69 73 20 72 65 71 75 69 72 65  ethod is require
17500 64 20 66 6f 72 20 65 76 65 72 79 20 76 69 72 74  d for every virt
17510 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20 20  ual table..     
17520 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74     /// implement
17530 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ation...        
17540 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20  /// </para>..   
17550 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
17560 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
17570 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43   <param name="pC
17580 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20  ursor">..       
17590 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
175a0 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73  pointer to the s
175b0 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73  qlite3_vtab_curs
175c0 6f 72 20 64 65 72 69 76 65 64 20 73 74 72 75 63  or derived struc
175d0 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ture...        /
175e0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
175f0 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
17600 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
17610 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74  A standard SQLit
17620 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a  e return code...
17630 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
17640 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
17650 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
17660 78 43 6c 6f 73 65 28 0d 0a 20 20 20 20 20 20 20  xClose(..       
17670 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72       IntPtr pCur
17680 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20  sor..           
17690 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   );....        /
176a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
176b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
176c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
176d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
176e0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
176f0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
17700 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
17710 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
17720 20 54 68 69 73 20 6d 65 74 68 6f 64 20 62 65 67   This method beg
17730 69 6e 73 20 61 20 73 65 61 72 63 68 20 6f 66 20  ins a search of 
17740 61 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e  a virtual table.
17750 20 54 68 65 20 66 69 72 73 74 20 61 72 67 75 6d   The first argum
17760 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ent..        ///
17770 20 69 73 20 61 20 63 75 72 73 6f 72 20 6f 70 65   is a cursor ope
17780 6e 65 64 20 62 79 20 78 4f 70 65 6e 2e 20 54 68  ned by xOpen. Th
17790 65 20 6e 65 78 74 20 74 77 6f 20 61 72 67 75 6d  e next two argum
177a0 65 6e 74 20 64 65 66 69 6e 65 20 61 0d 0a 20 20  ent define a..  
177b0 20 20 20 20 20 20 2f 2f 2f 20 70 61 72 74 69 63        /// partic
177c0 75 6c 61 72 20 73 65 61 72 63 68 20 69 6e 64 65  ular search inde
177d0 78 20 70 72 65 76 69 6f 75 73 6c 79 20 63 68 6f  x previously cho
177e0 73 65 6e 20 62 79 20 78 42 65 73 74 49 6e 64 65  sen by xBestInde
177f0 78 2e 20 54 68 65 0d 0a 20 20 20 20 20 20 20 20  x. The..        
17800 2f 2f 2f 20 73 70 65 63 69 66 69 63 20 6d 65 61  /// specific mea
17810 6e 69 6e 67 73 20 6f 66 20 69 64 78 4e 75 6d 20  nings of idxNum 
17820 61 6e 64 20 69 64 78 53 74 72 20 61 72 65 20 75  and idxStr are u
17830 6e 69 6d 70 6f 72 74 61 6e 74 20 61 73 20 6c 6f  nimportant as lo
17840 6e 67 20 61 73 0d 0a 20 20 20 20 20 20 20 20 2f  ng as..        /
17850 2f 2f 20 78 46 69 6c 74 65 72 20 61 6e 64 20 78  // xFilter and x
17860 42 65 73 74 49 6e 64 65 78 20 61 67 72 65 65 20  BestIndex agree 
17870 6f 6e 20 77 68 61 74 20 74 68 61 74 20 6d 65 61  on what that mea
17880 6e 69 6e 67 20 69 73 2e 0d 0a 20 20 20 20 20 20  ning is...      
17890 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
178a0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
178b0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
178c0 68 65 20 78 42 65 73 74 49 6e 64 65 78 20 66 75  he xBestIndex fu
178d0 6e 63 74 69 6f 6e 20 6d 61 79 20 68 61 76 65 20  nction may have 
178e0 72 65 71 75 65 73 74 65 64 20 74 68 65 20 76 61  requested the va
178f0 6c 75 65 73 20 6f 66 20 63 65 72 74 61 69 6e 0d  lues of certain.
17900 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 65 78 70  .        /// exp
17910 72 65 73 73 69 6f 6e 73 20 75 73 69 6e 67 20 74  ressions using t
17920 68 65 20 61 43 6f 6e 73 74 72 61 69 6e 74 55 73  he aConstraintUs
17930 61 67 65 5b 5d 2e 61 72 67 76 49 6e 64 65 78 20  age[].argvIndex 
17940 76 61 6c 75 65 73 20 6f 66 20 74 68 65 0d 0a 20  values of the.. 
17950 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74         /// sqlit
17960 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 20 73 74  e3_index_info st
17970 72 75 63 74 75 72 65 2e 20 54 68 6f 73 65 20 76  ructure. Those v
17980 61 6c 75 65 73 20 61 72 65 20 70 61 73 73 65 64  alues are passed
17990 20 74 6f 20 78 46 69 6c 74 65 72 0d 0a 20 20 20   to xFilter..   
179a0 20 20 20 20 20 2f 2f 2f 20 75 73 69 6e 67 20 74       /// using t
179b0 68 65 20 61 72 67 63 20 61 6e 64 20 61 72 67 76  he argc and argv
179c0 20 70 61 72 61 6d 65 74 65 72 73 2e 0d 0a 20 20   parameters...  
179d0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
179e0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
179f0 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
17a00 2f 2f 20 49 66 20 74 68 65 20 76 69 72 74 75 61  // If the virtua
17a10 6c 20 74 61 62 6c 65 20 63 6f 6e 74 61 69 6e 73  l table contains
17a20 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 72 6f 77   one or more row
17a30 73 20 74 68 61 74 20 6d 61 74 63 68 20 74 68 65  s that match the
17a40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 65  ..        /// se
17a50 61 72 63 68 20 63 72 69 74 65 72 69 61 2c 20 74  arch criteria, t
17a60 68 65 6e 20 74 68 65 20 63 75 72 73 6f 72 20 6d  hen the cursor m
17a70 75 73 74 20 62 65 20 6c 65 66 74 20 70 6f 69 6e  ust be left poin
17a80 74 20 61 74 20 74 68 65 20 66 69 72 73 74 0d 0a  t at the first..
17a90 20 20 20 20 20 20 20 20 2f 2f 2f 20 72 6f 77 2e          /// row.
17aa0 20 53 75 62 73 65 71 75 65 6e 74 20 63 61 6c 6c   Subsequent call
17ab0 73 20 74 6f 20 78 45 6f 66 20 6d 75 73 74 20 72  s to xEof must r
17ac0 65 74 75 72 6e 20 66 61 6c 73 65 20 28 7a 65 72  eturn false (zer
17ad0 6f 29 2e 20 49 66 20 74 68 65 72 65 0d 0a 20 20  o). If there..  
17ae0 20 20 20 20 20 20 2f 2f 2f 20 61 72 65 20 6e 6f        /// are no
17af0 20 72 6f 77 73 20 6d 61 74 63 68 2c 20 74 68 65   rows match, the
17b00 6e 20 74 68 65 20 63 75 72 73 6f 72 20 6d 75 73  n the cursor mus
17b10 74 20 62 65 20 6c 65 66 74 20 69 6e 20 61 20 73  t be left in a s
17b20 74 61 74 65 20 74 68 61 74 0d 0a 20 20 20 20 20  tate that..     
17b30 20 20 20 2f 2f 2f 20 77 69 6c 6c 20 63 61 75 73     /// will caus
17b40 65 20 74 68 65 20 78 45 6f 66 20 74 6f 20 72 65  e the xEof to re
17b50 74 75 72 6e 20 74 72 75 65 20 28 6e 6f 6e 2d 7a  turn true (non-z
17b60 65 72 6f 29 2e 20 54 68 65 20 53 51 4c 69 74 65  ero). The SQLite
17b70 20 65 6e 67 69 6e 65 0d 0a 20 20 20 20 20 20 20   engine..       
17b80 20 2f 2f 2f 20 77 69 6c 6c 20 75 73 65 20 74 68   /// will use th
17b90 65 20 78 43 6f 6c 75 6d 6e 20 61 6e 64 20 78 52  e xColumn and xR
17ba0 6f 77 69 64 20 6d 65 74 68 6f 64 73 20 74 6f 20  owid methods to 
17bb0 61 63 63 65 73 73 20 74 68 61 74 20 72 6f 77 20  access that row 
17bc0 63 6f 6e 74 65 6e 74 2e 0d 0a 20 20 20 20 20 20  content...      
17bd0 20 20 2f 2f 2f 20 54 68 65 20 78 4e 65 78 74 20    /// The xNext 
17be0 6d 65 74 68 6f 64 20 77 69 6c 6c 20 62 65 20 75  method will be u
17bf0 73 65 64 20 74 6f 20 61 64 76 61 6e 63 65 20 74  sed to advance t
17c00 6f 20 74 68 65 20 6e 65 78 74 20 72 6f 77 2e 0d  o the next row..
17c10 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
17c20 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
17c30 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
17c40 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
17c50 64 20 6d 75 73 74 20 72 65 74 75 72 6e 20 53 51  d must return SQ
17c60 4c 49 54 45 5f 4f 4b 20 69 66 20 73 75 63 63 65  LITE_OK if succe
17c70 73 73 66 75 6c 2c 20 6f 72 20 61 6e 20 73 71 6c  ssful, or an sql
17c80 69 74 65 20 65 72 72 6f 72 0d 0a 20 20 20 20 20  ite error..     
17c90 20 20 20 2f 2f 2f 20 63 6f 64 65 20 69 66 20 61     /// code if a
17ca0 6e 20 65 72 72 6f 72 20 6f 63 63 75 72 73 2e 0d  n error occurs..
17cb0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
17cc0 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
17cd0 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
17ce0 20 20 2f 2f 2f 20 54 68 65 20 78 46 69 6c 74 65    /// The xFilte
17cf0 72 20 6d 65 74 68 6f 64 20 69 73 20 72 65 71 75  r method is requ
17d00 69 72 65 64 20 66 6f 72 20 65 76 65 72 79 20 76  ired for every v
17d10 69 72 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20  irtual table..  
17d20 20 20 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d        /// implem
17d30 65 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  entation...     
17d40 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a     /// </para>..
17d50 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
17d60 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
17d70 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
17d80 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20  "pCursor">..    
17d90 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
17da0 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
17db0 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63  e sqlite3_vtab_c
17dc0 75 72 73 6f 72 20 64 65 72 69 76 65 64 20 73 74  ursor derived st
17dd0 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  ructure...      
17de0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
17df0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
17e00 61 6d 20 6e 61 6d 65 3d 22 69 64 78 4e 75 6d 22  am name="idxNum"
17e10 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
17e20 75 6d 62 65 72 20 75 73 65 64 20 74 6f 20 68 65  umber used to he
17e30 6c 70 20 69 64 65 6e 74 69 66 79 20 74 68 65 20  lp identify the 
17e40 73 65 6c 65 63 74 65 64 20 69 6e 64 65 78 2e 0d  selected index..
17e50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
17e60 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
17e70 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
17e80 69 64 78 53 74 72 22 3e 0d 0a 20 20 20 20 20 20  idxStr">..      
17e90 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
17ea0 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
17eb0 55 54 46 2d 38 20 65 6e 63 6f 64 65 64 20 73 74  UTF-8 encoded st
17ec0 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20  ring containing 
17ed0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
17ee0 20 73 74 72 69 6e 67 20 75 73 65 64 20 74 6f 20   string used to 
17ef0 68 65 6c 70 20 69 64 65 6e 74 69 66 79 20 74 68  help identify th
17f00 65 20 73 65 6c 65 63 74 65 64 20 69 6e 64 65 78  e selected index
17f10 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
17f20 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
17f30 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
17f40 3d 22 61 72 67 63 22 3e 0d 0a 20 20 20 20 20 20  ="argc">..      
17f50 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72    /// The number
17f60 20 6f 66 20 6e 61 74 69 76 65 20 70 6f 69 6e 74   of native point
17f70 65 72 73 20 74 6f 20 73 71 6c 69 74 65 33 5f 76  ers to sqlite3_v
17f80 61 6c 75 65 20 73 74 72 75 63 74 75 72 65 73 20  alue structures 
17f90 73 70 65 63 69 66 69 65 64 0d 0a 20 20 20 20 20  specified..     
17fa0 20 20 20 2f 2f 2f 20 69 6e 20 3c 70 61 72 61 6d     /// in <param
17fb0 72 65 66 20 6e 61 6d 65 3d 22 61 72 67 76 22 20  ref name="argv" 
17fc0 2f 3e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  />...        ///
17fd0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
17fe0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
17ff0 6d 65 3d 22 61 72 67 76 22 3e 0d 0a 20 20 20 20  me="argv">..    
18000 20 20 20 20 2f 2f 2f 20 41 6e 20 61 72 72 61 79      /// An array
18010 20 6f 66 20 6e 61 74 69 76 65 20 70 6f 69 6e 74   of native point
18020 65 72 73 20 74 6f 20 73 71 6c 69 74 65 33 5f 76  ers to sqlite3_v
18030 61 6c 75 65 20 73 74 72 75 63 74 75 72 65 73 20  alue structures 
18040 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20 20 20  containing..    
18050 20 20 20 20 2f 2f 2f 20 66 69 6c 74 65 72 69 6e      /// filterin
18060 67 20 63 72 69 74 65 72 69 61 20 66 6f 72 20 74  g criteria for t
18070 68 65 20 73 65 6c 65 63 74 65 64 20 69 6e 64 65  he selected inde
18080 78 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  x...        /// 
18090 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
180a0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
180b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73  .        /// A s
180c0 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72  tandard SQLite r
180d0 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20  eturn code...   
180e0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
180f0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c  ns>..        SQL
18100 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 46 69  iteErrorCode xFi
18110 6c 74 65 72 28 0d 0a 20 20 20 20 20 20 20 20 20  lter(..         
18120 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f     IntPtr pCurso
18130 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r,..            
18140 69 6e 74 20 69 64 78 4e 75 6d 2c 0d 0a 20 20 20  int idxNum,..   
18150 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
18160 69 64 78 53 74 72 2c 0d 0a 20 20 20 20 20 20 20  idxStr,..       
18170 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a       int argc,..
18180 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
18190 74 72 20 61 72 67 76 0d 0a 20 20 20 20 20 20 20  tr argv..       
181a0 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20       );....     
181b0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
181c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
181d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
181e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
181f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
18200 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
18210 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
18220 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
18230 20 2f 2f 2f 20 54 68 65 20 78 4e 65 78 74 20 6d   /// The xNext m
18240 65 74 68 6f 64 20 61 64 76 61 6e 63 65 73 20 61  ethod advances a
18250 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 63   virtual table c
18260 75 72 73 6f 72 20 74 6f 20 74 68 65 20 6e 65 78  ursor to the nex
18270 74 20 72 6f 77 20 6f 66 0d 0a 20 20 20 20 20 20  t row of..      
18280 20 20 2f 2f 2f 20 61 20 72 65 73 75 6c 74 20 73    /// a result s
18290 65 74 20 69 6e 69 74 69 61 74 65 64 20 62 79 20  et initiated by 
182a0 78 46 69 6c 74 65 72 2e 20 49 66 20 74 68 65 20  xFilter. If the 
182b0 63 75 72 73 6f 72 20 69 73 20 61 6c 72 65 61 64  cursor is alread
182c0 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70  y..        /// p
182d0 6f 69 6e 74 69 6e 67 20 61 74 20 74 68 65 20 6c  ointing at the l
182e0 61 73 74 20 72 6f 77 20 77 68 65 6e 20 74 68 69  ast row when thi
182f0 73 20 72 6f 75 74 69 6e 65 20 69 73 20 63 61 6c  s routine is cal
18300 6c 65 64 2c 20 74 68 65 6e 20 74 68 65 0d 0a 20  led, then the.. 
18310 20 20 20 20 20 20 20 2f 2f 2f 20 63 75 72 73 6f         /// curso
18320 72 20 6e 6f 20 6c 6f 6e 67 65 72 20 70 6f 69 6e  r no longer poin
18330 74 73 20 74 6f 20 76 61 6c 69 64 20 64 61 74 61  ts to valid data
18340 20 61 6e 64 20 61 20 73 75 62 73 65 71 75 65 6e   and a subsequen
18350 74 20 63 61 6c 6c 20 74 6f 20 74 68 65 0d 0a 20  t call to the.. 
18360 20 20 20 20 20 20 20 2f 2f 2f 20 78 45 6f 66 20         /// xEof 
18370 6d 65 74 68 6f 64 20 6d 75 73 74 20 72 65 74 75  method must retu
18380 72 6e 20 74 72 75 65 20 28 6e 6f 6e 2d 7a 65 72  rn true (non-zer
18390 6f 29 2e 20 49 66 20 74 68 65 20 63 75 72 73 6f  o). If the curso
183a0 72 20 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  r is..        //
183b0 2f 20 73 75 63 63 65 73 73 66 75 6c 6c 79 20 61  / successfully a
183c0 64 76 61 6e 63 65 64 20 74 6f 20 61 6e 6f 74 68  dvanced to anoth
183d0 65 72 20 72 6f 77 20 6f 66 20 63 6f 6e 74 65 6e  er row of conten
183e0 74 2c 20 74 68 65 6e 20 73 75 62 73 65 71 75 65  t, then subseque
183f0 6e 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  nt..        /// 
18400 63 61 6c 6c 73 20 74 6f 20 78 45 6f 66 20 6d 75  calls to xEof mu
18410 73 74 20 72 65 74 75 72 6e 20 66 61 6c 73 65 20  st return false 
18420 28 7a 65 72 6f 29 2e 0d 0a 20 20 20 20 20 20 20  (zero)...       
18430 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
18440 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
18450 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
18460 69 73 20 6d 65 74 68 6f 64 20 6d 75 73 74 20 72  is method must r
18470 65 74 75 72 6e 20 53 51 4c 49 54 45 5f 4f 4b 20  eturn SQLITE_OK 
18480 69 66 20 73 75 63 63 65 73 73 66 75 6c 2c 20 6f  if successful, o
18490 72 20 61 6e 20 73 71 6c 69 74 65 20 65 72 72 6f  r an sqlite erro
184a0 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  r..        /// c
184b0 6f 64 65 20 69 66 20 61 6e 20 65 72 72 6f 72 20  ode if an error 
184c0 6f 63 63 75 72 73 2e 0d 0a 20 20 20 20 20 20 20  occurs...       
184d0 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
184e0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
184f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
18500 65 20 78 4e 65 78 74 20 6d 65 74 68 6f 64 20 69  e xNext method i
18510 73 20 72 65 71 75 69 72 65 64 20 66 6f 72 20 65  s required for e
18520 76 65 72 79 20 76 69 72 74 75 61 6c 20 74 61 62  very virtual tab
18530 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  le..        /// 
18540 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d  implementation..
18550 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
18560 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
18570 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
18580 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
18590 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e   name="pCursor">
185a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
185b0 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
185c0 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
185d0 76 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69  vtab_cursor deri
185e0 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  ved structure...
185f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
18600 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
18610 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
18620 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64       /// A stand
18630 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72  ard SQLite retur
18640 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  n code...       
18650 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
18660 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45  .        SQLiteE
18670 72 72 6f 72 43 6f 64 65 20 78 4e 65 78 74 28 0d  rrorCode xNext(.
18680 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
18690 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20  Ptr pCursor..   
186a0 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20           );.... 
186b0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
186c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
186d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
186e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
186f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
18700 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
18710 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
18720 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
18730 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 78 45 6f       /// The xEo
18740 66 20 6d 65 74 68 6f 64 20 6d 75 73 74 20 72 65  f method must re
18750 74 75 72 6e 20 66 61 6c 73 65 20 28 7a 65 72 6f  turn false (zero
18760 29 20 69 66 20 74 68 65 20 73 70 65 63 69 66 69  ) if the specifi
18770 65 64 20 63 75 72 73 6f 72 0d 0a 20 20 20 20 20  ed cursor..     
18780 20 20 20 2f 2f 2f 20 63 75 72 72 65 6e 74 6c 79     /// currently
18790 20 70 6f 69 6e 74 73 20 74 6f 20 61 20 76 61 6c   points to a val
187a0 69 64 20 72 6f 77 20 6f 66 20 64 61 74 61 2c 20  id row of data, 
187b0 6f 72 20 74 72 75 65 20 28 6e 6f 6e 2d 7a 65 72  or true (non-zer
187c0 6f 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  o)..        /// 
187d0 6f 74 68 65 72 77 69 73 65 2e 20 54 68 69 73 20  otherwise. This 
187e0 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64  method is called
187f0 20 62 79 20 74 68 65 20 53 51 4c 20 65 6e 67 69   by the SQL engi
18800 6e 65 20 69 6d 6d 65 64 69 61 74 65 6c 79 0d 0a  ne immediately..
18810 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 66 74 65          /// afte
18820 72 20 65 61 63 68 20 78 46 69 6c 74 65 72 20 61  r each xFilter a
18830 6e 64 20 78 4e 65 78 74 20 69 6e 76 6f 63 61 74  nd xNext invocat
18840 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ion...        //
18850 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20  / </para>..     
18860 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20     /// <para>.. 
18870 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 78         /// The x
18880 45 6f 66 20 6d 65 74 68 6f 64 20 69 73 20 72 65  Eof method is re
18890 71 75 69 72 65 64 20 66 6f 72 20 65 76 65 72 79  quired for every
188a0 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 69   virtual table i
188b0 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d 0a  mplementation...
188c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
188d0 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
188e0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
188f0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
18900 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d  name="pCursor">.
18910 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
18920 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
18930 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76  to the sqlite3_v
18940 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69 76  tab_cursor deriv
18950 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  ed structure... 
18960 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
18970 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
18980 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
18990 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
189a0 20 69 66 20 6e 6f 20 6d 6f 72 65 20 72 6f 77 73   if no more rows
189b0 20 61 72 65 20 61 76 61 69 6c 61 62 6c 65 3b 20   are available; 
189c0 7a 65 72 6f 20 6f 74 68 65 72 77 69 73 65 2e 0d  zero otherwise..
189d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
189e0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
189f0 20 69 6e 74 20 78 45 6f 66 28 0d 0a 20 20 20 20   int xEof(..    
18a00 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
18a10 43 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20 20  Cursor..        
18a20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20      );....      
18a30 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
18a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
18a80 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
18a90 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
18aa0 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
18ab0 2f 2f 2f 20 54 68 65 20 53 51 4c 69 74 65 20 63  /// The SQLite c
18ac0 6f 72 65 20 69 6e 76 6f 6b 65 73 20 74 68 69 73  ore invokes this
18ad0 20 6d 65 74 68 6f 64 20 69 6e 20 6f 72 64 65 72   method in order
18ae0 20 74 6f 20 66 69 6e 64 20 74 68 65 20 76 61 6c   to find the val
18af0 75 65 20 66 6f 72 0d 0a 20 20 20 20 20 20 20 20  ue for..        
18b00 2f 2f 2f 20 74 68 65 20 4e 2d 74 68 20 63 6f 6c  /// the N-th col
18b10 75 6d 6e 20 6f 66 20 74 68 65 20 63 75 72 72 65  umn of the curre
18b20 6e 74 20 72 6f 77 2e 20 4e 20 69 73 20 7a 65 72  nt row. N is zer
18b30 6f 2d 62 61 73 65 64 20 73 6f 20 74 68 65 20 66  o-based so the f
18b40 69 72 73 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f  irst..        //
18b50 2f 20 63 6f 6c 75 6d 6e 20 69 73 20 6e 75 6d 62  / column is numb
18b60 65 72 65 64 20 30 2e 20 54 68 65 20 78 43 6f 6c  ered 0. The xCol
18b70 75 6d 6e 20 6d 65 74 68 6f 64 20 6d 61 79 20 72  umn method may r
18b80 65 74 75 72 6e 20 69 74 73 20 72 65 73 75 6c 74  eturn its result
18b90 20 62 61 63 6b 0d 0a 20 20 20 20 20 20 20 20 2f   back..        /
18ba0 2f 2f 20 74 6f 20 53 51 4c 69 74 65 20 75 73 69  // to SQLite usi
18bb0 6e 67 20 6f 6e 65 20 6f 66 20 74 68 65 20 66 6f  ng one of the fo
18bc0 6c 6c 6f 77 69 6e 67 20 69 6e 74 65 72 66 61 63  llowing interfac
18bd0 65 3a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e:..        /// 
18be0 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
18bf0 20 2f 2f 2f 20 3c 63 6f 64 65 3e 0d 0a 20 20 20   /// <code>..   
18c00 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 73 71 6c       ///     sql
18c10 69 74 65 33 5f 72 65 73 75 6c 74 5f 62 6c 6f 62  ite3_result_blob
18c20 28 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ()..        /// 
18c30 20 20 20 20 73 71 6c 69 74 65 33 5f 72 65 73 75      sqlite3_resu
18c40 6c 74 5f 64 6f 75 62 6c 65 28 29 0d 0a 20 20 20  lt_double()..   
18c50 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 73 71 6c       ///     sql
18c60 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 28  ite3_result_int(
18c70 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20  )..        ///  
18c80 20 20 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c     sqlite3_resul
18c90 74 5f 69 6e 74 36 34 28 29 0d 0a 20 20 20 20 20  t_int64()..     
18ca0 20 20 20 2f 2f 2f 20 20 20 20 20 73 71 6c 69 74     ///     sqlit
18cb0 65 33 5f 72 65 73 75 6c 74 5f 6e 75 6c 6c 28 29  e3_result_null()
18cc0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20  ..        ///   
18cd0 20 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74    sqlite3_result
18ce0 5f 74 65 78 74 28 29 0d 0a 20 20 20 20 20 20 20  _text()..       
18cf0 20 2f 2f 2f 20 20 20 20 20 73 71 6c 69 74 65 33   ///     sqlite3
18d00 5f 72 65 73 75 6c 74 5f 74 65 78 74 31 36 28 29  _result_text16()
18d10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20  ..        ///   
18d20 20 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74    sqlite3_result
18d30 5f 74 65 78 74 31 36 6c 65 28 29 0d 0a 20 20 20  _text16le()..   
18d40 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 73 71 6c       ///     sql
18d50 69 74 65 33 5f 72 65 73 75 6c 74 5f 74 65 78 74  ite3_result_text
18d60 31 36 62 65 28 29 0d 0a 20 20 20 20 20 20 20 20  16be()..        
18d70 2f 2f 2f 20 20 20 20 20 73 71 6c 69 74 65 33 5f  ///     sqlite3_
18d80 72 65 73 75 6c 74 5f 7a 65 72 6f 62 6c 6f 62 28  result_zeroblob(
18d90 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  )..        /// <
18da0 2f 63 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20 20  /code>..        
18db0 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
18dc0 20 20 20 20 2f 2f 2f 20 49 66 20 74 68 65 20 78      /// If the x
18dd0 43 6f 6c 75 6d 6e 20 6d 65 74 68 6f 64 20 69 6d  Column method im
18de0 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 63 61 6c  plementation cal
18df0 6c 73 20 6e 6f 6e 65 20 6f 66 20 74 68 65 20 66  ls none of the f
18e00 75 6e 63 74 69 6f 6e 73 0d 0a 20 20 20 20 20 20  unctions..      
18e10 20 20 2f 2f 2f 20 61 62 6f 76 65 2c 20 74 68 65    /// above, the
18e20 6e 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74  n the value of t
18e30 68 65 20 63 6f 6c 75 6d 6e 20 64 65 66 61 75 6c  he column defaul
18e40 74 73 20 74 6f 20 61 6e 20 53 51 4c 20 4e 55 4c  ts to an SQL NUL
18e50 4c 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  L...        /// 
18e60 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
18e70 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
18e80 20 20 20 20 20 2f 2f 2f 20 54 6f 20 72 61 69 73       /// To rais
18e90 65 20 61 6e 20 65 72 72 6f 72 2c 20 74 68 65 20  e an error, the 
18ea0 78 43 6f 6c 75 6d 6e 20 6d 65 74 68 6f 64 20 73  xColumn method s
18eb0 68 6f 75 6c 64 20 75 73 65 20 6f 6e 65 20 6f 66  hould use one of
18ec0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
18ed0 2f 20 72 65 73 75 6c 74 5f 74 65 78 74 28 29 20  / result_text() 
18ee0 6d 65 74 68 6f 64 73 20 74 6f 20 73 65 74 20 74  methods to set t
18ef0 68 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65  he error message
18f00 20 74 65 78 74 2c 20 74 68 65 6e 20 72 65 74 75   text, then retu
18f10 72 6e 20 61 6e 0d 0a 20 20 20 20 20 20 20 20 2f  rn an..        /
18f20 2f 2f 20 61 70 70 72 6f 70 72 69 61 74 65 20 65  // appropriate e
18f30 72 72 6f 72 20 63 6f 64 65 2e 20 54 68 65 20 78  rror code. The x
18f40 43 6f 6c 75 6d 6e 20 6d 65 74 68 6f 64 20 6d 75  Column method mu
18f50 73 74 20 72 65 74 75 72 6e 20 53 51 4c 49 54 45  st return SQLITE
18f60 5f 4f 4b 20 6f 6e 0d 0a 20 20 20 20 20 20 20 20  _OK on..        
18f70 2f 2f 2f 20 73 75 63 63 65 73 73 2e 0d 0a 20 20  /// success...  
18f80 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
18f90 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
18fa0 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
18fb0 2f 2f 20 54 68 65 20 78 43 6f 6c 75 6d 6e 20 6d  // The xColumn m
18fc0 65 74 68 6f 64 20 69 73 20 72 65 71 75 69 72 65  ethod is require
18fd0 64 20 66 6f 72 20 65 76 65 72 79 20 76 69 72 74  d for every virt
18fe0 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20 20  ual table..     
18ff0 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74     /// implement
19000 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ation...        
19010 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20  /// </para>..   
19020 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
19030 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
19040 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43   <param name="pC
19050 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20  ursor">..       
19060 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
19070 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73  pointer to the s
19080 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73  qlite3_vtab_curs
19090 6f 72 20 64 65 72 69 76 65 64 20 73 74 72 75 63  or derived struc
190a0 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ture...        /
190b0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
190c0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
190d0 6e 61 6d 65 3d 22 70 43 6f 6e 74 65 78 74 22 3e  name="pContext">
190e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
190f0 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
19100 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
19110 63 6f 6e 74 65 78 74 20 73 74 72 75 63 74 75 72  context structur
19120 65 20 74 6f 20 62 65 20 75 73 65 64 0d 0a 20 20  e to be used..  
19130 20 20 20 20 20 20 2f 2f 2f 20 66 6f 72 20 72 65        /// for re
19140 74 75 72 6e 69 6e 67 20 74 68 65 20 73 70 65 63  turning the spec
19150 69 66 69 65 64 20 63 6f 6c 75 6d 6e 20 76 61 6c  ified column val
19160 75 65 20 74 6f 20 74 68 65 20 53 51 4c 69 74 65  ue to the SQLite
19170 20 63 6f 72 65 0d 0a 20 20 20 20 20 20 20 20 2f   core..        /
19180 2f 2f 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  // library...   
19190 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
191a0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
191b0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65  param name="inde
191c0 78 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  x">..        ///
191d0 20 54 68 65 20 7a 65 72 6f 2d 62 61 73 65 64 20   The zero-based 
191e0 69 6e 64 65 78 20 63 6f 72 72 65 73 70 6f 6e 64  index correspond
191f0 69 6e 67 20 74 6f 20 74 68 65 20 63 6f 6c 75 6d  ing to the colum
19200 6e 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65  n containing the
19210 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 61  ..        /// va
19220 6c 75 65 20 74 6f 20 62 65 20 72 65 74 75 72 6e  lue to be return
19230 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
19240 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
19250 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
19260 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20  ..        /// A 
19270 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20  standard SQLite 
19280 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20  return code...  
19290 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
192a0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51  rns>..        SQ
192b0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43  LiteErrorCode xC
192c0 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20 20 20 20 20  olumn(..        
192d0 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73      IntPtr pCurs
192e0 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  or,..           
192f0 20 49 6e 74 50 74 72 20 70 43 6f 6e 74 65 78 74   IntPtr pContext
19300 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ,..            i
19310 6e 74 20 69 6e 64 65 78 0d 0a 20 20 20 20 20 20  nt index..      
19320 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20        );....    
19330 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
19340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
19380 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
19390 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
193a0 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
193b0 20 20 2f 2f 2f 20 41 20 73 75 63 63 65 73 73 66    /// A successf
193c0 75 6c 20 69 6e 76 6f 63 61 74 69 6f 6e 20 6f 66  ul invocation of
193d0 20 74 68 69 73 20 6d 65 74 68 6f 64 20 77 69 6c   this method wil
193e0 6c 20 63 61 75 73 65 20 2a 70 52 6f 77 69 64 20  l cause *pRowid 
193f0 74 6f 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f  to be..        /
19400 2f 2f 20 66 69 6c 6c 65 64 20 77 69 74 68 20 74  // filled with t
19410 68 65 20 72 6f 77 69 64 20 6f 66 20 72 6f 77 20  he rowid of row 
19420 74 68 61 74 20 74 68 65 20 76 69 72 74 75 61 6c  that the virtual
19430 20 74 61 62 6c 65 20 63 75 72 73 6f 72 20 70 43   table cursor pC
19440 75 72 20 69 73 0d 0a 20 20 20 20 20 20 20 20 2f  ur is..        /
19450 2f 2f 20 63 75 72 72 65 6e 74 6c 79 20 70 6f 69  // currently poi
19460 6e 74 69 6e 67 20 61 74 2e 20 54 68 69 73 20 6d  nting at. This m
19470 65 74 68 6f 64 20 72 65 74 75 72 6e 73 20 53 51  ethod returns SQ
19480 4c 49 54 45 5f 4f 4b 20 6f 6e 20 73 75 63 63 65  LITE_OK on succe
19490 73 73 2e 20 49 74 0d 0a 20 20 20 20 20 20 20 20  ss. It..        
194a0 2f 2f 2f 20 72 65 74 75 72 6e 73 20 61 6e 20 61  /// returns an a
194b0 70 70 72 6f 70 72 69 61 74 65 20 65 72 72 6f 72  ppropriate error
194c0 20 63 6f 64 65 20 6f 6e 20 66 61 69 6c 75 72 65   code on failure
194d0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
194e0 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
194f0 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
19500 20 20 20 20 2f 2f 2f 20 54 68 65 20 78 52 6f 77      /// The xRow
19510 69 64 20 6d 65 74 68 6f 64 20 69 73 20 72 65 71  id method is req
19520 75 69 72 65 64 20 66 6f 72 20 65 76 65 72 79 20  uired for every 
19530 76 69 72 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20  virtual table.. 
19540 20 20 20 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65         /// imple
19550 6d 65 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20  mentation...    
19560 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d      /// </para>.
19570 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
19580 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
19590 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
195a0 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20  ="pCursor">..   
195b0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
195c0 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  ive pointer to t
195d0 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f  he sqlite3_vtab_
195e0 63 75 72 73 6f 72 20 64 65 72 69 76 65 64 20 73  cursor derived s
195f0 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20  tructure...     
19600 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
19610 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
19620 72 61 6d 20 6e 61 6d 65 3d 22 72 6f 77 49 64 22  ram name="rowId"
19630 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55  >..        /// U
19640 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69  pon success, thi
19650 73 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74  s parameter must
19660 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20   be modified to 
19670 63 6f 6e 74 61 69 6e 20 74 68 65 20 75 6e 69 71  contain the uniq
19680 75 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ue..        /// 
19690 69 6e 74 65 67 65 72 20 72 6f 77 20 69 64 65 6e  integer row iden
196a0 74 69 66 69 65 72 20 66 6f 72 20 74 68 65 20 63  tifier for the c
196b0 75 72 72 65 6e 74 20 72 6f 77 20 66 6f 72 20 74  urrent row for t
196c0 68 65 20 73 70 65 63 69 66 69 65 64 20 63 75 72  he specified cur
196d0 73 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  sor...        //
196e0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
196f0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
19700 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
19710 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
19720 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
19730 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
19740 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53  urns>..        S
19750 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
19760 52 6f 77 49 64 28 0d 0a 20 20 20 20 20 20 20 20  RowId(..        
19770 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73      IntPtr pCurs
19780 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  or,..           
19790 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d   ref long rowId.
197a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d  .            );.
197b0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
197c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
197d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
197e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
197f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19800 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
19810 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
19820 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
19830 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 6c 6c  .        /// All
19840 20 63 68 61 6e 67 65 73 20 74 6f 20 61 20 76 69   changes to a vi
19850 72 74 75 61 6c 20 74 61 62 6c 65 20 61 72 65 20  rtual table are 
19860 6d 61 64 65 20 75 73 69 6e 67 20 74 68 65 20 78  made using the x
19870 55 70 64 61 74 65 20 6d 65 74 68 6f 64 2e 0d 0a  Update method...
19880 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
19890 20 6f 6e 65 20 6d 65 74 68 6f 64 20 63 61 6e 20   one method can 
198a0 62 65 20 75 73 65 64 20 74 6f 20 69 6e 73 65 72  be used to inser
198b0 74 2c 20 64 65 6c 65 74 65 2c 20 6f 72 20 75 70  t, delete, or up
198c0 64 61 74 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  date...        /
198d0 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20  // </para>..    
198e0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a      /// <para>..
198f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
19900 61 72 67 63 20 70 61 72 61 6d 65 74 65 72 20 73  argc parameter s
19910 70 65 63 69 66 69 65 73 20 74 68 65 20 6e 75 6d  pecifies the num
19920 62 65 72 20 6f 66 20 65 6e 74 72 69 65 73 20 69  ber of entries i
19930 6e 20 74 68 65 20 61 72 67 76 0d 0a 20 20 20 20  n the argv..    
19940 20 20 20 20 2f 2f 2f 20 61 72 72 61 79 2e 20 54      /// array. T
19950 68 65 20 76 61 6c 75 65 20 6f 66 20 61 72 67 63  he value of argc
19960 20 77 69 6c 6c 20 62 65 20 31 20 66 6f 72 20 61   will be 1 for a
19970 20 70 75 72 65 20 64 65 6c 65 74 65 20 6f 70 65   pure delete ope
19980 72 61 74 69 6f 6e 20 6f 72 0d 0a 20 20 20 20 20  ration or..     
19990 20 20 20 2f 2f 2f 20 4e 2b 32 20 66 6f 72 20 61     /// N+2 for a
199a0 6e 20 69 6e 73 65 72 74 20 6f 72 20 72 65 70 6c  n insert or repl
199b0 61 63 65 20 6f 72 20 75 70 64 61 74 65 20 77 68  ace or update wh
199c0 65 72 65 20 4e 20 69 73 20 74 68 65 20 6e 75 6d  ere N is the num
199d0 62 65 72 20 6f 66 0d 0a 20 20 20 20 20 20 20 20  ber of..        
199e0 2f 2f 2f 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74  /// columns in t
199f0 68 65 20 74 61 62 6c 65 2e 20 49 6e 20 74 68 65  he table. In the
19a00 20 70 72 65 76 69 6f 75 73 20 73 65 6e 74 65 6e   previous senten
19a10 63 65 2c 20 4e 20 69 6e 63 6c 75 64 65 73 20 61  ce, N includes a
19a20 6e 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ny..        /// 
19a30 68 69 64 64 65 6e 20 63 6f 6c 75 6d 6e 73 2e 0d  hidden columns..
19a40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
19a50 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
19a60 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
19a70 20 20 2f 2f 2f 20 45 76 65 72 79 20 61 72 67 76    /// Every argv
19a80 20 65 6e 74 72 79 20 77 69 6c 6c 20 68 61 76 65   entry will have
19a90 20 61 20 6e 6f 6e 2d 4e 55 4c 4c 20 76 61 6c 75   a non-NULL valu
19aa0 65 20 69 6e 20 43 20 62 75 74 20 6d 61 79 20 63  e in C but may c
19ab0 6f 6e 74 61 69 6e 0d 0a 20 20 20 20 20 20 20 20  ontain..        
19ac0 2f 2f 2f 20 74 68 65 20 53 51 4c 20 76 61 6c 75  /// the SQL valu
19ad0 65 20 4e 55 4c 4c 2e 20 49 6e 20 6f 74 68 65 72  e NULL. In other
19ae0 20 77 6f 72 64 73 2c 20 69 74 20 69 73 20 61 6c   words, it is al
19af0 77 61 79 73 20 74 72 75 65 20 74 68 61 74 0d 0a  ways true that..
19b00 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 72 67 76          /// argv
19b10 5b 69 5d 21 3d 30 20 66 6f 72 20 69 20 62 65 74  [i]!=0 for i bet
19b20 77 65 65 6e 20 30 20 61 6e 64 20 61 72 67 63 2d  ween 0 and argc-
19b30 31 2e 20 48 6f 77 65 76 65 72 2c 20 69 74 20 6d  1. However, it m
19b40 69 67 68 74 20 62 65 20 74 68 65 0d 0a 20 20 20  ight be the..   
19b50 20 20 20 20 20 2f 2f 2f 20 63 61 73 65 20 74 68       /// case th
19b60 61 74 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  at sqlite3_value
19b70 5f 74 79 70 65 28 61 72 67 76 5b 69 5d 29 3d 3d  _type(argv[i])==
19b80 53 51 4c 49 54 45 5f 4e 55 4c 4c 2e 0d 0a 20 20  SQLITE_NULL...  
19b90 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
19ba0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
19bb0 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
19bc0 2f 2f 20 54 68 65 20 61 72 67 76 5b 30 5d 20 70  // The argv[0] p
19bd0 61 72 61 6d 65 74 65 72 20 69 73 20 74 68 65 20  arameter is the 
19be0 72 6f 77 69 64 20 6f 66 20 61 20 72 6f 77 20 69  rowid of a row i
19bf0 6e 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  n the virtual ta
19c00 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ble..        ///
19c10 20 74 6f 20 62 65 20 64 65 6c 65 74 65 64 2e 20   to be deleted. 
19c20 49 66 20 61 72 67 76 5b 30 5d 20 69 73 20 61 6e  If argv[0] is an
19c30 20 53 51 4c 20 4e 55 4c 4c 2c 20 74 68 65 6e 20   SQL NULL, then 
19c40 6e 6f 20 64 65 6c 65 74 69 6f 6e 20 6f 63 63 75  no deletion occu
19c50 72 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  rs...        ///
19c60 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20   </para>..      
19c70 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20    /// <para>..  
19c80 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 72        /// The ar
19c90 67 76 5b 31 5d 20 70 61 72 61 6d 65 74 65 72 20  gv[1] parameter 
19ca0 69 73 20 74 68 65 20 72 6f 77 69 64 20 6f 66 20  is the rowid of 
19cb0 61 20 6e 65 77 20 72 6f 77 20 74 6f 20 62 65 20  a new row to be 
19cc0 69 6e 73 65 72 74 65 64 20 69 6e 74 6f 0d 0a 20  inserted into.. 
19cd0 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 76         /// the v
19ce0 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 20 49 66  irtual table. If
19cf0 20 61 72 67 76 5b 31 5d 20 69 73 20 61 6e 20 53   argv[1] is an S
19d00 51 4c 20 4e 55 4c 4c 2c 20 74 68 65 6e 20 74 68  QL NULL, then th
19d10 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  e..        /// i
19d20 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6d 75  mplementation mu
19d30 73 74 20 63 68 6f 6f 73 65 20 61 20 72 6f 77 69  st choose a rowi
19d40 64 20 66 6f 72 20 74 68 65 20 6e 65 77 6c 79 20  d for the newly 
19d50 69 6e 73 65 72 74 65 64 20 72 6f 77 2e 0d 0a 20  inserted row... 
19d60 20 20 20 20 20 20 20 2f 2f 2f 20 53 75 62 73 65         /// Subse
19d70 71 75 65 6e 74 20 61 72 67 76 5b 5d 20 65 6e 74  quent argv[] ent
19d80 72 69 65 73 20 63 6f 6e 74 61 69 6e 20 76 61 6c  ries contain val
19d90 75 65 73 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d  ues of the colum
19da0 6e 73 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20  ns of the..     
19db0 20 20 20 2f 2f 2f 20 76 69 72 74 75 61 6c 20 74     /// virtual t
19dc0 61 62 6c 65 2c 20 69 6e 20 74 68 65 20 6f 72 64  able, in the ord
19dd0 65 72 20 74 68 61 74 20 74 68 65 20 63 6f 6c 75  er that the colu
19de0 6d 6e 73 20 77 65 72 65 20 64 65 63 6c 61 72 65  mns were declare
19df0 64 2e 20 54 68 65 0d 0a 20 20 20 20 20 20 20 20  d. The..        
19e00 2f 2f 2f 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f  /// number of co
19e10 6c 75 6d 6e 73 20 77 69 6c 6c 20 6d 61 74 63 68  lumns will match
19e20 20 74 68 65 20 74 61 62 6c 65 20 64 65 63 6c 61   the table decla
19e30 72 61 74 69 6f 6e 20 74 68 61 74 20 74 68 65 0d  ration that the.
19e40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 78 43 6f  .        /// xCo
19e50 6e 6e 65 63 74 20 6f 72 20 78 43 72 65 61 74 65  nnect or xCreate
19e60 20 6d 65 74 68 6f 64 20 6d 61 64 65 20 75 73 69   method made usi
19e70 6e 67 20 74 68 65 20 73 71 6c 69 74 65 33 5f 64  ng the sqlite3_d
19e80 65 63 6c 61 72 65 5f 76 74 61 62 28 29 0d 0a 20  eclare_vtab().. 
19e90 20 20 20 20 20 20 20 2f 2f 2f 20 63 61 6c 6c 2e         /// call.
19ea0 20 41 6c 6c 20 68 69 64 64 65 6e 20 63 6f 6c 75   All hidden colu
19eb0 6d 6e 73 20 61 72 65 20 69 6e 63 6c 75 64 65 64  mns are included
19ec0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
19ed0 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
19ee0 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
19ef0 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 64 6f 69      /// When doi
19f00 6e 67 20 61 6e 20 69 6e 73 65 72 74 20 77 69 74  ng an insert wit
19f10 68 6f 75 74 20 61 20 72 6f 77 69 64 20 28 61 72  hout a rowid (ar
19f20 67 63 3e 31 2c 20 61 72 67 76 5b 31 5d 20 69 73  gc>1, argv[1] is
19f30 20 61 6e 20 53 51 4c 0d 0a 20 20 20 20 20 20 20   an SQL..       
19f40 20 2f 2f 2f 20 4e 55 4c 4c 29 2c 20 74 68 65 20   /// NULL), the 
19f50 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6d  implementation m
19f60 75 73 74 20 73 65 74 20 2a 70 52 6f 77 69 64 20  ust set *pRowid 
19f70 74 6f 20 74 68 65 20 72 6f 77 69 64 20 6f 66 20  to the rowid of 
19f80 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
19f90 20 6e 65 77 6c 79 20 69 6e 73 65 72 74 65 64 20   newly inserted 
19fa0 72 6f 77 3b 20 74 68 69 73 20 77 69 6c 6c 20 62  row; this will b
19fb0 65 63 6f 6d 65 20 74 68 65 20 76 61 6c 75 65 20  ecome the value 
19fc0 72 65 74 75 72 6e 65 64 20 62 79 20 74 68 65 0d  returned by the.
19fd0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c  .        /// sql
19fe0 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72 74  ite3_last_insert
19ff0 5f 72 6f 77 69 64 28 29 20 66 75 6e 63 74 69 6f  _rowid() functio
1a000 6e 2e 20 53 65 74 74 69 6e 67 20 74 68 69 73 20  n. Setting this 
1a010 76 61 6c 75 65 20 69 6e 20 61 6c 6c 20 74 68 65  value in all the
1a020 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 74  ..        /// ot
1a030 68 65 72 20 63 61 73 65 73 20 69 73 20 61 20 68  her cases is a h
1a040 61 72 6d 6c 65 73 73 20 6e 6f 2d 6f 70 3b 20 74  armless no-op; t
1a050 68 65 20 53 51 4c 69 74 65 20 65 6e 67 69 6e 65  he SQLite engine
1a060 20 69 67 6e 6f 72 65 73 20 74 68 65 0d 0a 20 20   ignores the..  
1a070 20 20 20 20 20 20 2f 2f 2f 20 2a 70 52 6f 77 69        /// *pRowi
1a080 64 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20 69  d return value i
1a090 66 20 61 72 67 63 3d 3d 31 20 6f 72 20 61 72 67  f argc==1 or arg
1a0a0 76 5b 31 5d 20 69 73 20 6e 6f 74 20 61 6e 20 53  v[1] is not an S
1a0b0 51 4c 20 4e 55 4c 4c 2e 0d 0a 20 20 20 20 20 20  QL NULL...      
1a0c0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
1a0d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1a0e0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 45  >..        /// E
1a0f0 61 63 68 20 63 61 6c 6c 20 74 6f 20 78 55 70 64  ach call to xUpd
1a100 61 74 65 20 77 69 6c 6c 20 66 61 6c 6c 20 69 6e  ate will fall in
1a110 74 6f 20 6f 6e 65 20 6f 66 20 63 61 73 65 73 20  to one of cases 
1a120 73 68 6f 77 6e 20 62 65 6c 6f 77 2e 20 4e 6f 74  shown below. Not
1a130 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  e..        /// t
1a140 68 61 74 20 72 65 66 65 72 65 6e 63 65 73 20 74  hat references t
1a150 6f 20 61 72 67 76 5b 69 5d 20 6d 65 61 6e 20 74  o argv[i] mean t
1a160 68 65 20 53 51 4c 20 76 61 6c 75 65 20 68 65 6c  he SQL value hel
1a170 64 20 77 69 74 68 69 6e 20 74 68 65 0d 0a 20 20  d within the..  
1a180 20 20 20 20 20 20 2f 2f 2f 20 61 72 67 76 5b 69        /// argv[i
1a190 5d 20 6f 62 6a 65 63 74 2c 20 6e 6f 74 20 74 68  ] object, not th
1a1a0 65 20 61 72 67 76 5b 69 5d 20 6f 62 6a 65 63 74  e argv[i] object
1a1b0 20 69 74 73 65 6c 66 2e 0d 0a 20 20 20 20 20 20   itself...      
1a1c0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
1a1d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 63 6f 64 65         /// <code
1a1e0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20  >..        ///  
1a1f0 20 20 20 61 72 67 63 20 3d 20 31 0d 0a 20 20 20     argc = 1..   
1a200 20 20 20 20 20 2f 2f 2f 20 3c 2f 63 6f 64 65 3e       /// </code>
1a210 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1a220 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
1a230 2f 20 20 20 20 20 20 20 20 20 54 68 65 20 73 69  /         The si
1a240 6e 67 6c 65 20 72 6f 77 20 77 69 74 68 20 72 6f  ngle row with ro
1a250 77 69 64 20 65 71 75 61 6c 20 74 6f 20 61 72 67  wid equal to arg
1a260 76 5b 30 5d 20 69 73 20 64 65 6c 65 74 65 64 2e  v[0] is deleted.
1a270 20 4e 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   No..        ///
1a280 20 20 20 20 20 20 20 20 20 69 6e 73 65 72 74 20           insert 
1a290 6f 63 63 75 72 73 2e 0d 0a 20 20 20 20 20 20 20  occurs...       
1a2a0 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
1a2b0 20 20 20 20 20 20 2f 2f 2f 20 3c 63 6f 64 65 3e        /// <code>
1a2c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20  ..        ///   
1a2d0 20 20 61 72 67 63 20 3e 20 31 0d 0a 20 20 20 20    argc > 1..    
1a2e0 20 20 20 20 2f 2f 2f 20 20 20 20 20 61 72 67 76      ///     argv
1a2f0 5b 30 5d 20 3d 20 4e 55 4c 4c 0d 0a 20 20 20 20  [0] = NULL..    
1a300 20 20 20 20 2f 2f 2f 20 3c 2f 63 6f 64 65 3e 0d      /// </code>.
1a310 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1a320 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
1a330 20 20 20 20 20 20 20 20 20 41 20 6e 65 77 20 72           A new r
1a340 6f 77 20 69 73 20 69 6e 73 65 72 74 65 64 20 77  ow is inserted w
1a350 69 74 68 20 61 20 72 6f 77 69 64 20 61 72 67 76  ith a rowid argv
1a360 5b 31 5d 20 61 6e 64 20 63 6f 6c 75 6d 6e 0d 0a  [1] and column..
1a370 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20          ///     
1a380 20 20 20 20 76 61 6c 75 65 73 20 69 6e 20 61 72      values in ar
1a390 67 76 5b 32 5d 20 61 6e 64 20 66 6f 6c 6c 6f 77  gv[2] and follow
1a3a0 69 6e 67 2e 20 49 66 20 61 72 67 76 5b 31 5d 20  ing. If argv[1] 
1a3b0 69 73 20 61 6e 20 53 51 4c 20 4e 55 4c 4c 2c 0d  is an SQL NULL,.
1a3c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20  .        ///    
1a3d0 20 20 20 20 20 74 68 65 20 61 20 6e 65 77 20 75       the a new u
1a3e0 6e 69 71 75 65 20 72 6f 77 69 64 20 69 73 20 67  nique rowid is g
1a3f0 65 6e 65 72 61 74 65 64 20 61 75 74 6f 6d 61 74  enerated automat
1a400 69 63 61 6c 6c 79 2e 0d 0a 20 20 20 20 20 20 20  ically...       
1a410 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
1a420 20 20 20 20 20 20 2f 2f 2f 20 3c 63 6f 64 65 3e        /// <code>
1a430 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20  ..        ///   
1a440 20 20 61 72 67 63 20 3e 20 31 0d 0a 20 20 20 20    argc > 1..    
1a450 20 20 20 20 2f 2f 2f 20 20 20 20 20 61 72 67 76      ///     argv
1a460 5b 30 5d 20 3f 20 4e 55 4c 4c 0d 0a 20 20 20 20  [0] ? NULL..    
1a470 20 20 20 20 2f 2f 2f 20 20 20 20 20 61 72 67 76      ///     argv
1a480 5b 30 5d 20 3d 20 61 72 67 76 5b 31 5d 0d 0a 20  [0] = argv[1].. 
1a490 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 63 6f 64         /// </cod
1a4a0 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e>..        /// 
1a4b0 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
1a4c0 2f 2f 2f 20 20 20 20 20 20 20 20 20 54 68 65 20  ///         The 
1a4d0 72 6f 77 20 77 69 74 68 20 72 6f 77 69 64 20 61  row with rowid a
1a4e0 72 67 76 5b 30 5d 20 69 73 20 75 70 64 61 74 65  rgv[0] is update
1a4f0 64 20 77 69 74 68 20 6e 65 77 20 76 61 6c 75 65  d with new value
1a500 73 20 69 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  s in..        //
1a510 2f 20 20 20 20 20 20 20 20 20 61 72 67 76 5b 32  /         argv[2
1a520 5d 20 61 6e 64 20 66 6f 6c 6c 6f 77 69 6e 67 20  ] and following 
1a530 70 61 72 61 6d 65 74 65 72 73 2e 0d 0a 20 20 20  parameters...   
1a540 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
1a550 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 63  ..        /// <c
1a560 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode>..        //
1a570 2f 20 20 20 20 20 61 72 67 63 20 3e 20 31 0d 0a  /     argc > 1..
1a580 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20          ///     
1a590 61 72 67 76 5b 30 5d 20 3f 20 4e 55 4c 4c 0d 0a  argv[0] ? NULL..
1a5a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20          ///     
1a5b0 61 72 67 76 5b 30 5d 20 3f 20 61 72 67 76 5b 31  argv[0] ? argv[1
1a5c0 5d 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ]..        /// <
1a5d0 2f 63 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20 20  /code>..        
1a5e0 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
1a5f0 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20      ///         
1a600 54 68 65 20 72 6f 77 20 77 69 74 68 20 72 6f 77  The row with row
1a610 69 64 20 61 72 67 76 5b 30 5d 20 69 73 20 75 70  id argv[0] is up
1a620 64 61 74 65 64 20 77 69 74 68 20 72 6f 77 69 64  dated with rowid
1a630 20 61 72 67 76 5b 31 5d 0d 0a 20 20 20 20 20 20   argv[1]..      
1a640 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20 61 6e    ///         an
1a650 64 20 6e 65 77 20 76 61 6c 75 65 73 20 69 6e 20  d new values in 
1a660 61 72 67 76 5b 32 5d 20 61 6e 64 20 66 6f 6c 6c  argv[2] and foll
1a670 6f 77 69 6e 67 20 70 61 72 61 6d 65 74 65 72 73  owing parameters
1a680 2e 20 54 68 69 73 0d 0a 20 20 20 20 20 20 20 20  . This..        
1a690 2f 2f 2f 20 20 20 20 20 20 20 20 20 77 69 6c 6c  ///         will
1a6a0 20 6f 63 63 75 72 20 77 68 65 6e 20 61 6e 20 53   occur when an S
1a6b0 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 75 70 64  QL statement upd
1a6c0 61 74 65 73 20 61 20 72 6f 77 69 64 2c 20 61 73  ates a rowid, as
1a6d0 20 69 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   in..        ///
1a6e0 20 20 20 20 20 20 20 20 20 74 68 65 20 73 74 61           the sta
1a6f0 74 65 6d 65 6e 74 3a 0d 0a 20 20 20 20 20 20 20  tement:..       
1a700 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
1a710 20 20 20 20 20 20 2f 2f 2f 20 3c 63 6f 64 65 3e        /// <code>
1a720 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20  ..        ///   
1a730 20 20 20 20 20 20 20 20 20 20 55 50 44 41 54 45            UPDATE
1a740 20 74 61 62 6c 65 20 53 45 54 20 72 6f 77 69 64   table SET rowid
1a750 3d 72 6f 77 69 64 2b 31 20 57 48 45 52 45 20 2e  =rowid+1 WHERE .
1a760 2e 2e 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ..;..        ///
1a770 20 3c 2f 63 6f 64 65 3e 0d 0a 20 20 20 20 20 20   </code>..      
1a780 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20    /// <para>..  
1a790 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 78 55        /// The xU
1a7a0 70 64 61 74 65 20 6d 65 74 68 6f 64 20 6d 75 73  pdate method mus
1a7b0 74 20 72 65 74 75 72 6e 20 53 51 4c 49 54 45 5f  t return SQLITE_
1a7c0 4f 4b 20 69 66 20 61 6e 64 20 6f 6e 6c 79 20 69  OK if and only i
1a7d0 66 20 69 74 20 69 73 0d 0a 20 20 20 20 20 20 20  f it is..       
1a7e0 20 2f 2f 2f 20 73 75 63 63 65 73 73 66 75 6c 2e   /// successful.
1a7f0 20 49 66 20 61 20 66 61 69 6c 75 72 65 20 6f 63   If a failure oc
1a800 63 75 72 73 2c 20 74 68 65 20 78 55 70 64 61 74  curs, the xUpdat
1a810 65 20 6d 75 73 74 20 72 65 74 75 72 6e 20 61 6e  e must return an
1a820 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 70  ..        /// ap
1a830 70 72 6f 70 72 69 61 74 65 20 65 72 72 6f 72 20  propriate error 
1a840 63 6f 64 65 2e 20 4f 6e 20 61 20 66 61 69 6c 75  code. On a failu
1a850 72 65 2c 20 74 68 65 20 70 56 54 61 62 2d 3e 7a  re, the pVTab->z
1a860 45 72 72 4d 73 67 20 65 6c 65 6d 65 6e 74 0d 0a  ErrMsg element..
1a870 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 61 79 20          /// may 
1a880 6f 70 74 69 6f 6e 61 6c 6c 79 20 62 65 20 72 65  optionally be re
1a890 70 6c 61 63 65 64 20 77 69 74 68 20 65 72 72 6f  placed with erro
1a8a0 72 20 6d 65 73 73 61 67 65 20 74 65 78 74 20 73  r message text s
1a8b0 74 6f 72 65 64 20 69 6e 20 6d 65 6d 6f 72 79 0d  tored in memory.
1a8c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 6c 6c  .        /// all
1a8d0 6f 63 61 74 65 64 20 66 72 6f 6d 20 53 51 4c 69  ocated from SQLi
1a8e0 74 65 20 75 73 69 6e 67 20 66 75 6e 63 74 69 6f  te using functio
1a8f0 6e 73 20 73 75 63 68 20 61 73 20 73 71 6c 69 74  ns such as sqlit
1a900 65 33 5f 6d 70 72 69 6e 74 66 28 29 20 6f 72 0d  e3_mprintf() or.
1a910 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c  .        /// sql
1a920 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 2e 0d 0a  ite3_malloc()...
1a930 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1a940 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
1a950 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
1a960 20 2f 2f 2f 20 49 66 20 74 68 65 20 78 55 70 64   /// If the xUpd
1a970 61 74 65 20 6d 65 74 68 6f 64 20 76 69 6f 6c 61  ate method viola
1a980 74 65 73 20 73 6f 6d 65 20 63 6f 6e 73 74 72 61  tes some constra
1a990 69 6e 74 20 6f 66 20 74 68 65 20 76 69 72 74 75  int of the virtu
1a9a0 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20 20 20  al table..      
1a9b0 20 20 2f 2f 2f 20 28 69 6e 63 6c 75 64 69 6e 67    /// (including
1a9c0 2c 20 62 75 74 20 6e 6f 74 20 6c 69 6d 69 74 65  , but not limite
1a9d0 64 20 74 6f 2c 20 61 74 74 65 6d 70 74 69 6e 67  d to, attempting
1a9e0 20 74 6f 20 73 74 6f 72 65 20 61 20 76 61 6c 75   to store a valu
1a9f0 65 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20 20  e of the..      
1aa00 20 20 2f 2f 2f 20 77 72 6f 6e 67 20 64 61 74 61    /// wrong data
1aa10 74 79 70 65 2c 20 61 74 74 65 6d 70 74 69 6e 67  type, attempting
1aa20 20 74 6f 20 73 74 6f 72 65 20 61 20 76 61 6c 75   to store a valu
1aa30 65 20 74 68 61 74 20 69 73 20 74 6f 6f 20 6c 61  e that is too la
1aa40 72 67 65 20 6f 72 0d 0a 20 20 20 20 20 20 20 20  rge or..        
1aa50 2f 2f 2f 20 74 6f 6f 20 73 6d 61 6c 6c 2c 20 6f  /// too small, o
1aa60 72 20 61 74 74 65 6d 70 74 69 6e 67 20 74 6f 20  r attempting to 
1aa70 63 68 61 6e 67 65 20 61 20 72 65 61 64 2d 6f 6e  change a read-on
1aa80 6c 79 20 76 61 6c 75 65 29 20 74 68 65 6e 20 74  ly value) then t
1aa90 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
1aaa0 78 55 70 64 61 74 65 20 6d 75 73 74 20 66 61 69  xUpdate must fai
1aab0 6c 20 77 69 74 68 20 61 6e 20 61 70 70 72 6f 70  l with an approp
1aac0 72 69 61 74 65 20 65 72 72 6f 72 20 63 6f 64 65  riate error code
1aad0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1aae0 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
1aaf0 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
1ab00 20 20 20 20 2f 2f 2f 20 54 68 65 72 65 20 6d 69      /// There mi
1ab10 67 68 74 20 62 65 20 6f 6e 65 20 6f 72 20 6d 6f  ght be one or mo
1ab20 72 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f  re sqlite3_vtab_
1ab30 63 75 72 73 6f 72 20 6f 62 6a 65 63 74 73 20 6f  cursor objects o
1ab40 70 65 6e 20 61 6e 64 20 69 6e 0d 0a 20 20 20 20  pen and in..    
1ab50 20 20 20 20 2f 2f 2f 20 75 73 65 20 6f 6e 20 74      /// use on t
1ab60 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
1ab70 20 69 6e 73 74 61 6e 63 65 20 61 6e 64 20 70 65   instance and pe
1ab80 72 68 61 70 73 20 65 76 65 6e 20 6f 6e 20 74 68  rhaps even on th
1ab90 65 20 72 6f 77 20 6f 66 0d 0a 20 20 20 20 20 20  e row of..      
1aba0 20 20 2f 2f 2f 20 74 68 65 20 76 69 72 74 75 61    /// the virtua
1abb0 6c 20 74 61 62 6c 65 20 77 68 65 6e 20 74 68 65  l table when the
1abc0 20 78 55 70 64 61 74 65 20 6d 65 74 68 6f 64 20   xUpdate method 
1abd0 69 73 20 69 6e 76 6f 6b 65 64 2e 20 54 68 65 0d  is invoked. The.
1abe0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6d 70  .        /// imp
1abf0 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 78  lementation of x
1ac00 55 70 64 61 74 65 20 6d 75 73 74 20 62 65 20 70  Update must be p
1ac10 72 65 70 61 72 65 64 20 66 6f 72 20 61 74 74 65  repared for atte
1ac20 6d 70 74 73 20 74 6f 20 64 65 6c 65 74 65 0d 0a  mpts to delete..
1ac30 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20 6d          /// or m
1ac40 6f 64 69 66 79 20 72 6f 77 73 20 6f 66 20 74 68  odify rows of th
1ac50 65 20 74 61 62 6c 65 20 6f 75 74 20 66 72 6f 6d  e table out from
1ac60 20 6f 74 68 65 72 20 65 78 69 73 74 69 6e 67 20   other existing 
1ac70 63 75 72 73 6f 72 73 2e 20 49 66 20 74 68 65 0d  cursors. If the.
1ac80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 69 72  .        /// vir
1ac90 74 75 61 6c 20 74 61 62 6c 65 20 63 61 6e 6e 6f  tual table canno
1aca0 74 20 61 63 63 6f 6d 6d 6f 64 61 74 65 20 73 75  t accommodate su
1acb0 63 68 20 63 68 61 6e 67 65 73 2c 20 74 68 65 20  ch changes, the 
1acc0 78 55 70 64 61 74 65 20 6d 65 74 68 6f 64 0d 0a  xUpdate method..
1acd0 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 75 73 74          /// must
1ace0 20 72 65 74 75 72 6e 20 61 6e 20 65 72 72 6f 72   return an error
1acf0 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
1ad00 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20  /// </para>..   
1ad10 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
1ad20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1ad30 20 78 55 70 64 61 74 65 20 6d 65 74 68 6f 64 20   xUpdate method 
1ad40 69 73 20 6f 70 74 69 6f 6e 61 6c 2e 20 49 66 20  is optional. If 
1ad50 74 68 65 20 78 55 70 64 61 74 65 20 70 6f 69 6e  the xUpdate poin
1ad60 74 65 72 20 69 6e 20 74 68 65 0d 0a 20 20 20 20  ter in the..    
1ad70 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f      /// sqlite3_
1ad80 6d 6f 64 75 6c 65 20 66 6f 72 20 61 20 76 69 72  module for a vir
1ad90 74 75 61 6c 20 74 61 62 6c 65 20 69 73 20 61 20  tual table is a 
1ada0 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 2c 20 74 68  NULL pointer, th
1adb0 65 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  en the..        
1adc0 2f 2f 2f 20 76 69 72 74 75 61 6c 20 74 61 62 6c  /// virtual tabl
1add0 65 20 69 73 20 72 65 61 64 2d 6f 6e 6c 79 2e 0d  e is read-only..
1ade0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1adf0 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
1ae00 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1ae10 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1ae20 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a   name="pVtab">..
1ae30 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1ae40 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
1ae50 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74  o the sqlite3_vt
1ae60 61 62 20 64 65 72 69 76 65 64 20 73 74 72 75 63  ab derived struc
1ae70 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ture...        /
1ae80 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1ae90 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1aea0 6e 61 6d 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20  name="argc">..  
1aeb0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75        /// The nu
1aec0 6d 62 65 72 20 6f 66 20 6e 65 77 20 6f 72 20 6d  mber of new or m
1aed0 6f 64 69 66 69 65 64 20 63 6f 6c 75 6d 6e 20 76  odified column v
1aee0 61 6c 75 65 73 20 63 6f 6e 74 61 69 6e 65 64 20  alues contained 
1aef0 69 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  in..        /// 
1af00 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22  <paramref name="
1af10 61 72 67 76 22 20 2f 3e 2e 0d 0a 20 20 20 20 20  argv" />...     
1af20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1af30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1af40 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 76 22 3e  ram name="argv">
1af50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1af60 65 20 61 72 72 61 79 20 6f 66 20 6e 61 74 69 76  e array of nativ
1af70 65 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 73 71  e pointers to sq
1af80 6c 69 74 65 33 5f 76 61 6c 75 65 20 73 74 72 75  lite3_value stru
1af90 63 74 75 72 65 73 20 63 6f 6e 74 61 69 6e 69 6e  ctures containin
1afa0 67 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  g..        /// t
1afb0 68 65 20 6e 65 77 20 6f 72 20 6d 6f 64 69 66 69  he new or modifi
1afc0 65 64 20 63 6f 6c 75 6d 6e 20 76 61 6c 75 65 73  ed column values
1afd0 2c 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20 20  , if any...     
1afe0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1aff0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1b000 72 61 6d 20 6e 61 6d 65 3d 22 72 6f 77 49 64 22  ram name="rowId"
1b010 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55  >..        /// U
1b020 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69  pon success, thi
1b030 73 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74  s parameter must
1b040 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20   be modified to 
1b050 63 6f 6e 74 61 69 6e 20 74 68 65 20 75 6e 69 71  contain the uniq
1b060 75 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ue..        /// 
1b070 69 6e 74 65 67 65 72 20 72 6f 77 20 69 64 65 6e  integer row iden
1b080 74 69 66 69 65 72 20 66 6f 72 20 74 68 65 20 72  tifier for the r
1b090 6f 77 20 74 68 61 74 20 77 61 73 20 69 6e 73 65  ow that was inse
1b0a0 72 74 65 64 2c 20 69 66 20 61 6e 79 2e 0d 0a 20  rted, if any... 
1b0b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1b0c0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1b0d0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
1b0e0 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61      /// A standa
1b0f0 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e  rd SQLite return
1b100 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
1b110 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
1b120 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72          SQLiteEr
1b130 72 6f 72 43 6f 64 65 20 78 55 70 64 61 74 65 28  rorCode xUpdate(
1b140 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
1b150 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
1b160 20 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67           int arg
1b170 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  c,..            
1b180 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20  IntPtr argv,..  
1b190 20 20 20 20 20 20 20 20 20 20 72 65 66 20 6c 6f            ref lo
1b1a0 6e 67 20 72 6f 77 49 64 0d 0a 20 20 20 20 20 20  ng rowId..      
1b1b0 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20        );....    
1b1c0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1b1d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b1e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b1f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1b210 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
1b220 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1b230 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
1b240 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
1b250 64 20 62 65 67 69 6e 73 20 61 20 74 72 61 6e 73  d begins a trans
1b260 61 63 74 69 6f 6e 20 6f 6e 20 61 20 76 69 72 74  action on a virt
1b270 75 61 6c 20 74 61 62 6c 65 2e 20 54 68 69 73 20  ual table. This 
1b280 69 73 20 6d 65 74 68 6f 64 0d 0a 20 20 20 20 20  is method..     
1b290 20 20 20 2f 2f 2f 20 69 73 20 6f 70 74 69 6f 6e     /// is option
1b2a0 61 6c 2e 20 54 68 65 20 78 42 65 67 69 6e 20 70  al. The xBegin p
1b2b0 6f 69 6e 74 65 72 20 6f 66 20 73 71 6c 69 74 65  ointer of sqlite
1b2c0 33 5f 6d 6f 64 75 6c 65 20 6d 61 79 20 62 65 20  3_module may be 
1b2d0 4e 55 4c 4c 2e 0d 0a 20 20 20 20 20 20 20 20 2f  NULL...        /
1b2e0 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20  // </para>..    
1b2f0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a      /// <para>..
1b300 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
1b310 20 6d 65 74 68 6f 64 20 69 73 20 61 6c 77 61 79   method is alway
1b320 73 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 6f 6e  s followed by on
1b330 65 20 63 61 6c 6c 20 74 6f 20 65 69 74 68 65 72  e call to either
1b340 20 74 68 65 20 78 43 6f 6d 6d 69 74 20 6f 72 0d   the xCommit or.
1b350 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 78 52 6f  .        /// xRo
1b360 6c 6c 62 61 63 6b 20 6d 65 74 68 6f 64 2e 20 56  llback method. V
1b370 69 72 74 75 61 6c 20 74 61 62 6c 65 20 74 72 61  irtual table tra
1b380 6e 73 61 63 74 69 6f 6e 73 20 64 6f 20 6e 6f 74  nsactions do not
1b390 20 6e 65 73 74 2c 20 73 6f 20 74 68 65 0d 0a 20   nest, so the.. 
1b3a0 20 20 20 20 20 20 20 2f 2f 2f 20 78 42 65 67 69         /// xBegi
1b3b0 6e 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20 6e 6f  n method will no
1b3c0 74 20 62 65 20 69 6e 76 6f 6b 65 64 20 6d 6f 72  t be invoked mor
1b3d0 65 20 74 68 61 6e 20 6f 6e 63 65 20 6f 6e 20 61  e than once on a
1b3e0 20 73 69 6e 67 6c 65 0d 0a 20 20 20 20 20 20 20   single..       
1b3f0 20 2f 2f 2f 20 76 69 72 74 75 61 6c 20 74 61 62   /// virtual tab
1b400 6c 65 20 77 69 74 68 6f 75 74 20 61 6e 20 69 6e  le without an in
1b410 74 65 72 76 65 6e 69 6e 67 20 63 61 6c 6c 20 74  tervening call t
1b420 6f 20 65 69 74 68 65 72 20 78 43 6f 6d 6d 69 74  o either xCommit
1b430 20 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   or..        ///
1b440 20 78 52 6f 6c 6c 62 61 63 6b 2e 20 4d 75 6c 74   xRollback. Mult
1b450 69 70 6c 65 20 63 61 6c 6c 73 20 74 6f 20 6f 74  iple calls to ot
1b460 68 65 72 20 6d 65 74 68 6f 64 73 20 63 61 6e 20  her methods can 
1b470 61 6e 64 20 6c 69 6b 65 6c 79 20 77 69 6c 6c 0d  and likely will.
1b480 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 63 63  .        /// occ
1b490 75 72 20 69 6e 20 62 65 74 77 65 65 6e 20 74 68  ur in between th
1b4a0 65 20 78 42 65 67 69 6e 20 61 6e 64 20 74 68 65  e xBegin and the
1b4b0 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 78   corresponding x
1b4c0 43 6f 6d 6d 69 74 20 6f 72 0d 0a 20 20 20 20 20  Commit or..     
1b4d0 20 20 20 2f 2f 2f 20 78 52 6f 6c 6c 62 61 63 6b     /// xRollback
1b4e0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1b4f0 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
1b500 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1b510 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1b520 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e  am name="pVtab">
1b530 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1b540 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
1b550 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
1b560 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74 72  vtab derived str
1b570 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ucture...       
1b580 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1b590 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
1b5a0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
1b5b0 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c  / A standard SQL
1b5c0 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e  ite return code.
1b5d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1b5e0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1b5f0 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64    SQLiteErrorCod
1b600 65 20 78 42 65 67 69 6e 28 0d 0a 20 20 20 20 20  e xBegin(..     
1b610 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
1b620 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tab..           
1b630 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   );....        /
1b640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b680 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1b690 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1b6a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1b6b0 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
1b6c0 20 54 68 69 73 20 6d 65 74 68 6f 64 20 73 69 67   This method sig
1b6d0 6e 61 6c 73 20 74 68 65 20 73 74 61 72 74 20 6f  nals the start o
1b6e0 66 20 61 20 74 77 6f 2d 70 68 61 73 65 20 63 6f  f a two-phase co
1b6f0 6d 6d 69 74 20 6f 6e 20 61 20 76 69 72 74 75 61  mmit on a virtua
1b700 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  l..        /// t
1b710 61 62 6c 65 2e 20 54 68 69 73 20 69 73 20 6d 65  able. This is me
1b720 74 68 6f 64 20 69 73 20 6f 70 74 69 6f 6e 61 6c  thod is optional
1b730 2e 20 54 68 65 20 78 53 79 6e 63 20 70 6f 69 6e  . The xSync poin
1b740 74 65 72 20 6f 66 0d 0a 20 20 20 20 20 20 20 20  ter of..        
1b750 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75  /// sqlite3_modu
1b760 6c 65 20 6d 61 79 20 62 65 20 4e 55 4c 4c 2e 0d  le may be NULL..
1b770 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1b780 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
1b790 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
1b7a0 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
1b7b0 64 20 69 73 20 6f 6e 6c 79 20 69 6e 76 6f 6b 65  d is only invoke
1b7c0 64 20 61 66 74 65 72 20 63 61 6c 6c 20 74 6f 20  d after call to 
1b7d0 74 68 65 20 78 42 65 67 69 6e 20 6d 65 74 68 6f  the xBegin metho
1b7e0 64 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 2f  d and..        /
1b7f0 2f 2f 20 70 72 69 6f 72 20 74 6f 20 61 6e 20 78  // prior to an x
1b800 43 6f 6d 6d 69 74 20 6f 72 20 78 52 6f 6c 6c 62  Commit or xRollb
1b810 61 63 6b 2e 20 49 6e 20 6f 72 64 65 72 20 74 6f  ack. In order to
1b820 20 69 6d 70 6c 65 6d 65 6e 74 20 74 77 6f 2d 70   implement two-p
1b830 68 61 73 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hase..        //
1b840 2f 20 63 6f 6d 6d 69 74 2c 20 74 68 65 20 78 53  / commit, the xS
1b850 79 6e 63 20 6d 65 74 68 6f 64 20 6f 6e 20 61 6c  ync method on al
1b860 6c 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 73  l virtual tables
1b870 20 69 73 20 69 6e 76 6f 6b 65 64 20 70 72 69 6f   is invoked prio
1b880 72 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f  r to..        //
1b890 2f 20 69 6e 76 6f 6b 69 6e 67 20 74 68 65 20 78  / invoking the x
1b8a0 43 6f 6d 6d 69 74 20 6d 65 74 68 6f 64 20 6f 6e  Commit method on
1b8b0 20 61 6e 79 20 76 69 72 74 75 61 6c 20 74 61 62   any virtual tab
1b8c0 6c 65 2e 20 49 66 20 61 6e 79 20 6f 66 20 74 68  le. If any of th
1b8d0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 78  e..        /// x
1b8e0 53 79 6e 63 20 6d 65 74 68 6f 64 73 20 66 61 69  Sync methods fai
1b8f0 6c 2c 20 74 68 65 20 65 6e 74 69 72 65 20 74 72  l, the entire tr
1b900 61 6e 73 61 63 74 69 6f 6e 20 69 73 20 72 6f 6c  ansaction is rol
1b910 6c 65 64 20 62 61 63 6b 2e 0d 0a 20 20 20 20 20  led back...     
1b920 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a     /// </para>..
1b930 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
1b940 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1b950 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1b960 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20  "pVtab">..      
1b970 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
1b980 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
1b990 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72  sqlite3_vtab der
1b9a0 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d  ived structure..
1b9b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1b9c0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
1b9d0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
1b9e0 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e        /// A stan
1b9f0 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75  dard SQLite retu
1ba00 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  rn code...      
1ba10 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
1ba20 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65  ..        SQLite
1ba30 45 72 72 6f 72 43 6f 64 65 20 78 53 79 6e 63 28  ErrorCode xSync(
1ba40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
1ba50 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20  tPtr pVtab..    
1ba60 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20          );....  
1ba70 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1ba80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ba90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1baa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1bac0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
1bad0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1bae0 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
1baf0 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74      /// This met
1bb00 68 6f 64 20 63 61 75 73 65 73 20 61 20 76 69 72  hod causes a vir
1bb10 74 75 61 6c 20 74 61 62 6c 65 20 74 72 61 6e 73  tual table trans
1bb20 61 63 74 69 6f 6e 20 74 6f 20 63 6f 6d 6d 69 74  action to commit
1bb30 2e 20 54 68 69 73 20 69 73 0d 0a 20 20 20 20 20  . This is..     
1bb40 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 20 69 73     /// method is
1bb50 20 6f 70 74 69 6f 6e 61 6c 2e 20 54 68 65 20 78   optional. The x
1bb60 43 6f 6d 6d 69 74 20 70 6f 69 6e 74 65 72 20 6f  Commit pointer o
1bb70 66 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65  f sqlite3_module
1bb80 20 6d 61 79 20 62 65 0d 0a 20 20 20 20 20 20 20   may be..       
1bb90 20 2f 2f 2f 20 4e 55 4c 4c 2e 0d 0a 20 20 20 20   /// NULL...    
1bba0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d      /// </para>.
1bbb0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1bbc0 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
1bbd0 20 41 20 63 61 6c 6c 20 74 6f 20 74 68 69 73 20   A call to this 
1bbe0 6d 65 74 68 6f 64 20 61 6c 77 61 79 73 20 66 6f  method always fo
1bbf0 6c 6c 6f 77 73 20 61 20 70 72 69 6f 72 20 63 61  llows a prior ca
1bc00 6c 6c 20 74 6f 20 78 42 65 67 69 6e 20 61 6e 64  ll to xBegin and
1bc10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 78 53  ..        /// xS
1bc20 79 6e 63 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ync...        //
1bc30 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20  / </para>..     
1bc40 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1bc50 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1bc60 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61  param name="pVta
1bc70 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  b">..        ///
1bc80 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e   The native poin
1bc90 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74  ter to the sqlit
1bca0 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 20  e3_vtab derived 
1bcb0 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20  structure...    
1bcc0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1bcd0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
1bce0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1bcf0 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20   /// A standard 
1bd00 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f  SQLite return co
1bd10 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de...        ///
1bd20 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
1bd30 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72       SQLiteError
1bd40 43 6f 64 65 20 78 43 6f 6d 6d 69 74 28 0d 0a 20  Code xCommit(.. 
1bd50 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
1bd60 72 20 70 56 74 61 62 0d 0a 20 20 20 20 20 20 20  r pVtab..       
1bd70 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20       );....     
1bd80 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1bd90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bda0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bdb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bdc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1bdd0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
1bde0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1bdf0 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
1be00 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64   /// This method
1be10 20 63 61 75 73 65 73 20 61 20 76 69 72 74 75 61   causes a virtua
1be20 6c 20 74 61 62 6c 65 20 74 72 61 6e 73 61 63 74  l table transact
1be30 69 6f 6e 20 74 6f 20 72 6f 6c 6c 62 61 63 6b 2e  ion to rollback.
1be40 20 54 68 69 73 20 69 73 0d 0a 20 20 20 20 20 20   This is..      
1be50 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 20 69 73 20    /// method is 
1be60 6f 70 74 69 6f 6e 61 6c 2e 20 54 68 65 20 78 52  optional. The xR
1be70 6f 6c 6c 62 61 63 6b 20 70 6f 69 6e 74 65 72 20  ollback pointer 
1be80 6f 66 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c  of sqlite3_modul
1be90 65 20 6d 61 79 20 62 65 0d 0a 20 20 20 20 20 20  e may be..      
1bea0 20 20 2f 2f 2f 20 4e 55 4c 4c 2e 0d 0a 20 20 20    /// NULL...   
1beb0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
1bec0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1bed0 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
1bee0 2f 20 41 20 63 61 6c 6c 20 74 6f 20 74 68 69 73  / A call to this
1bef0 20 6d 65 74 68 6f 64 20 61 6c 77 61 79 73 20 66   method always f
1bf00 6f 6c 6c 6f 77 73 20 61 20 70 72 69 6f 72 20 63  ollows a prior c
1bf10 61 6c 6c 20 74 6f 20 78 42 65 67 69 6e 2e 0d 0a  all to xBegin...
1bf20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1bf30 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
1bf40 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1bf50 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1bf60 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20  name="pVtab">.. 
1bf70 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
1bf80 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
1bf90 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61   the sqlite3_vta
1bfa0 62 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74  b derived struct
1bfb0 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
1bfc0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1bfd0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
1bfe0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
1bff0 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
1c000 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
1c010 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
1c020 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53  urns>..        S
1c030 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
1c040 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20  Rollback(..     
1c050 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
1c060 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tab..           
1c070 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   );....        /
1c080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c0a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c0b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c0c0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1c0d0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1c0e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1c0f0 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
1c100 20 54 68 69 73 20 6d 65 74 68 6f 64 20 70 72 6f   This method pro
1c110 76 69 64 65 73 20 6e 6f 74 69 66 69 63 61 74 69  vides notificati
1c120 6f 6e 20 74 68 61 74 20 74 68 65 20 76 69 72 74  on that the virt
1c130 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20 20  ual table..     
1c140 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74     /// implement
1c150 61 74 69 6f 6e 20 74 68 61 74 20 74 68 65 20 76  ation that the v
1c160 69 72 74 75 61 6c 20 74 61 62 6c 65 20 77 69 6c  irtual table wil
1c170 6c 20 62 65 20 67 69 76 65 6e 20 61 20 6e 65 77  l be given a new
1c180 20 6e 61 6d 65 2e 20 49 66 0d 0a 20 20 20 20 20   name. If..     
1c190 20 20 20 2f 2f 2f 20 74 68 69 73 20 6d 65 74 68     /// this meth
1c1a0 6f 64 20 72 65 74 75 72 6e 73 20 53 51 4c 49 54  od returns SQLIT
1c1b0 45 5f 4f 4b 20 74 68 65 6e 20 53 51 4c 69 74 65  E_OK then SQLite
1c1c0 20 72 65 6e 61 6d 65 73 20 74 68 65 20 74 61 62   renames the tab
1c1d0 6c 65 2e 20 49 66 0d 0a 20 20 20 20 20 20 20 20  le. If..        
1c1e0 2f 2f 2f 20 74 68 69 73 20 6d 65 74 68 6f 64 20  /// this method 
1c1f0 72 65 74 75 72 6e 73 20 61 6e 20 65 72 72 6f 72  returns an error
1c200 20 63 6f 64 65 20 74 68 65 6e 20 74 68 65 20 72   code then the r
1c210 65 6e 61 6d 69 6e 67 20 69 73 20 70 72 65 76 65  enaming is preve
1c220 6e 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  nted...        /
1c230 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20  // </para>..    
1c240 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a      /// <para>..
1c250 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1c260 78 52 65 6e 61 6d 65 20 6d 65 74 68 6f 64 20 69  xRename method i
1c270 73 20 72 65 71 75 69 72 65 64 20 66 6f 72 20 65  s required for e
1c280 76 65 72 79 20 76 69 72 74 75 61 6c 20 74 61 62  very virtual tab
1c290 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  le..        /// 
1c2a0 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d  implementation..
1c2b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1c2c0 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
1c2d0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1c2e0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1c2f0 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a   name="pVtab">..
1c300 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1c310 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
1c320 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74  o the sqlite3_vt
1c330 61 62 20 64 65 72 69 76 65 64 20 73 74 72 75 63  ab derived struc
1c340 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ture...        /
1c350 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1c360 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1c370 6e 61 6d 65 3d 22 6e 41 72 67 22 3e 0d 0a 20 20  name="nArg">..  
1c380 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75        /// The nu
1c390 6d 62 65 72 20 6f 66 20 61 72 67 75 6d 65 6e 74  mber of argument
1c3a0 73 20 74 6f 20 74 68 65 20 66 75 6e 63 74 69 6f  s to the functio
1c3b0 6e 20 62 65 69 6e 67 20 73 6f 75 67 68 74 2e 0d  n being sought..
1c3c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1c3d0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
1c3e0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1c3f0 7a 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 20  zName">..       
1c400 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66   /// The name of
1c410 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 62 65   the function be
1c420 69 6e 67 20 73 6f 75 67 68 74 2e 0d 0a 20 20 20  ing sought...   
1c430 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
1c440 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1c450 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 61 6c 6c  param name="call
1c460 62 61 63 6b 22 3e 0d 0a 20 20 20 20 20 20 20 20  back">..        
1c470 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73  /// Upon success
1c480 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72  , this parameter
1c490 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65   must be modifie
1c4a0 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65  d to contain the
1c4b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 65  ..        /// de
1c4c0 6c 65 67 61 74 65 20 72 65 73 70 6f 6e 73 69 62  legate responsib
1c4d0 6c 65 20 66 6f 72 20 69 6d 70 6c 65 6d 65 6e 74  le for implement
1c4e0 69 6e 67 20 74 68 65 20 73 70 65 63 69 66 69 65  ing the specifie
1c4f0 64 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20  d function...   
1c500 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
1c510 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1c520 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 6c 69  param name="pCli
1c530 65 6e 74 44 61 74 61 22 3e 0d 0a 20 20 20 20 20  entData">..     
1c540 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63     /// Upon succ
1c550 65 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65  ess, this parame
1c560 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69  ter must be modi
1c570 66 69 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20  fied to contain 
1c580 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
1c590 20 6e 61 74 69 76 65 20 75 73 65 72 2d 64 61 74   native user-dat
1c5a0 61 20 70 6f 69 6e 74 65 72 20 61 73 73 6f 63 69  a pointer associ
1c5b0 61 74 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20  ated with..     
1c5c0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 72 65 66     /// <paramref
1c5d0 20 6e 61 6d 65 3d 22 63 61 6c 6c 62 61 63 6b 22   name="callback"
1c5e0 20 2f 3e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f   />...        //
1c5f0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1c600 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
1c610 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
1c620 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 73  on-zero if the s
1c630 70 65 63 69 66 69 65 64 20 66 75 6e 63 74 69 6f  pecified functio
1c640 6e 20 77 61 73 20 66 6f 75 6e 64 3b 20 7a 65 72  n was found; zer
1c650 6f 20 6f 74 68 65 72 77 69 73 65 2e 0d 0a 20 20  o otherwise...  
1c660 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
1c670 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e  rns>..        in
1c680 74 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28  t xFindFunction(
1c690 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
1c6a0 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
1c6b0 20 20 20 20 20 20 20 20 20 69 6e 74 20 6e 41 72           int nAr
1c6c0 67 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g,..            
1c6d0 49 6e 74 50 74 72 20 7a 4e 61 6d 65 2c 0d 0a 20  IntPtr zName,.. 
1c6e0 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 53             ref S
1c6f0 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 63 61  QLiteCallback ca
1c700 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20  llback,..       
1c710 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20       ref IntPtr 
1c720 70 43 6c 69 65 6e 74 44 61 74 61 0d 0a 20 20 20  pClientData..   
1c730 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20           );.... 
1c740 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1c750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1c790 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1c7a0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1c7b0 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
1c7c0 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65       /// This me
1c7d0 74 68 6f 64 20 70 72 6f 76 69 64 65 73 20 6e 6f  thod provides no
1c7e0 74 69 66 69 63 61 74 69 6f 6e 20 74 68 61 74 20  tification that 
1c7f0 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c  the virtual tabl
1c800 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  e..        /// i
1c810 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 74 68  mplementation th
1c820 61 74 20 74 68 65 20 76 69 72 74 75 61 6c 20 74  at the virtual t
1c830 61 62 6c 65 20 77 69 6c 6c 20 62 65 20 67 69 76  able will be giv
1c840 65 6e 20 61 20 6e 65 77 20 6e 61 6d 65 2e 20 49  en a new name. I
1c850 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  f..        /// t
1c860 68 69 73 20 6d 65 74 68 6f 64 20 72 65 74 75 72  his method retur
1c870 6e 73 20 53 51 4c 49 54 45 5f 4f 4b 20 74 68 65  ns SQLITE_OK the
1c880 6e 20 53 51 4c 69 74 65 20 72 65 6e 61 6d 65 73  n SQLite renames
1c890 20 74 68 65 20 74 61 62 6c 65 2e 20 49 66 0d 0a   the table. If..
1c8a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 69 73          /// this
1c8b0 20 6d 65 74 68 6f 64 20 72 65 74 75 72 6e 73 20   method returns 
1c8c0 61 6e 20 65 72 72 6f 72 20 63 6f 64 65 20 74 68  an error code th
1c8d0 65 6e 20 74 68 65 20 72 65 6e 61 6d 69 6e 67 20  en the renaming 
1c8e0 69 73 20 70 72 65 76 65 6e 74 65 64 2e 0d 0a 20  is prevented... 
1c8f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1c900 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
1c910 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
1c920 2f 2f 2f 20 54 68 65 20 78 52 65 6e 61 6d 65 20  /// The xRename 
1c930 6d 65 74 68 6f 64 20 69 73 20 72 65 71 75 69 72  method is requir
1c940 65 64 20 66 6f 72 20 65 76 65 72 79 20 76 69 72  ed for every vir
1c950 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20  tual table..    
1c960 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e      /// implemen
1c970 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  tation...       
1c980 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
1c990 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
1c9a0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1c9b0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
1c9c0 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
1c9d0 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70  /// The native p
1c9e0 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71  ointer to the sq
1c9f0 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76  lite3_vtab deriv
1ca00 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  ed structure... 
1ca10 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1ca20 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1ca30 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 7a 4e   <param name="zN
1ca40 65 77 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ew">..        //
1ca50 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69  / The native poi
1ca60 6e 74 65 72 20 74 6f 20 74 68 65 20 55 54 46 2d  nter to the UTF-
1ca70 38 20 65 6e 63 6f 64 65 64 20 73 74 72 69 6e 67  8 encoded string
1ca80 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20   containing the 
1ca90 6e 65 77 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  new..        ///
1caa0 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 76 69   name for the vi
1cab0 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20  rtual table...  
1cac0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1cad0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
1cae0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
1caf0 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72     /// A standar
1cb00 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20  d SQLite return 
1cb10 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  code...        /
1cb20 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
1cb30 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72         SQLiteErr
1cb40 6f 72 43 6f 64 65 20 78 52 65 6e 61 6d 65 28 0d  orCode xRename(.
1cb50 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
1cb60 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
1cb70 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 7a          IntPtr z
1cb80 4e 65 77 0d 0a 20 20 20 20 20 20 20 20 20 20 20  New..           
1cb90 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   );....        /
1cba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cbb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cbc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cbd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cbe0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1cbf0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1cc00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1cc10 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
1cc20 20 54 68 65 73 65 20 6d 65 74 68 6f 64 73 20 70   These methods p
1cc30 72 6f 76 69 64 65 20 74 68 65 20 76 69 72 74 75  rovide the virtu
1cc40 61 6c 20 74 61 62 6c 65 20 69 6d 70 6c 65 6d 65  al table impleme
1cc50 6e 74 61 74 69 6f 6e 20 61 6e 0d 0a 20 20 20 20  ntation an..    
1cc60 20 20 20 20 2f 2f 2f 20 6f 70 70 6f 72 74 75 6e      /// opportun
1cc70 69 74 79 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74  ity to implement
1cc80 20 6e 65 73 74 65 64 20 74 72 61 6e 73 61 63 74   nested transact
1cc90 69 6f 6e 73 2e 20 54 68 65 79 20 61 72 65 20 61  ions. They are a
1cca0 6c 77 61 79 73 0d 0a 20 20 20 20 20 20 20 20 2f  lways..        /
1ccb0 2f 2f 20 6f 70 74 69 6f 6e 61 6c 20 61 6e 64 20  // optional and 
1ccc0 77 69 6c 6c 20 6f 6e 6c 79 20 62 65 20 63 61 6c  will only be cal
1ccd0 6c 65 64 20 69 6e 20 53 51 4c 69 74 65 20 76 65  led in SQLite ve
1cce0 72 73 69 6f 6e 20 33 2e 37 2e 37 20 61 6e 64 20  rsion 3.7.7 and 
1ccf0 6c 61 74 65 72 2e 0d 0a 20 20 20 20 20 20 20 20  later...        
1cd00 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20  /// </para>..   
1cd10 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
1cd20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 57 68 65  .        /// Whe
1cd30 6e 20 78 53 61 76 65 70 6f 69 6e 74 28 58 2c 4e  n xSavepoint(X,N
1cd40 29 20 69 73 20 69 6e 76 6f 6b 65 64 2c 20 74 68  ) is invoked, th
1cd50 61 74 20 69 73 20 61 20 73 69 67 6e 61 6c 20 74  at is a signal t
1cd60 6f 20 74 68 65 20 76 69 72 74 75 61 6c 0d 0a 20  o the virtual.. 
1cd70 20 20 20 20 20 20 20 2f 2f 2f 20 74 61 62 6c 65         /// table
1cd80 20 58 20 74 68 61 74 20 69 74 20 73 68 6f 75 6c   X that it shoul
1cd90 64 20 73 61 76 65 20 69 74 73 20 63 75 72 72 65  d save its curre
1cda0 6e 74 20 73 74 61 74 65 20 61 73 20 73 61 76 65  nt state as save
1cdb0 70 6f 69 6e 74 20 4e 2e 20 41 0d 0a 20 20 20 20  point N. A..    
1cdc0 20 20 20 20 2f 2f 2f 20 73 75 62 73 65 71 75 65      /// subseque
1cdd0 6e 74 20 63 61 6c 6c 20 74 6f 20 78 52 6f 6c 6c  nt call to xRoll
1cde0 62 61 63 6b 54 6f 28 58 2c 52 29 20 6d 65 61 6e  backTo(X,R) mean
1cdf0 73 20 74 68 61 74 20 74 68 65 20 73 74 61 74 65  s that the state
1ce00 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20 20 20   of the..       
1ce10 20 2f 2f 2f 20 76 69 72 74 75 61 6c 20 74 61 62   /// virtual tab
1ce20 6c 65 20 73 68 6f 75 6c 64 20 72 65 74 75 72 6e  le should return
1ce30 20 74 6f 20 77 68 61 74 20 69 74 20 77 61 73 20   to what it was 
1ce40 77 68 65 6e 20 78 53 61 76 65 70 6f 69 6e 74 28  when xSavepoint(
1ce50 58 2c 52 29 20 77 61 73 0d 0a 20 20 20 20 20 20  X,R) was..      
1ce60 20 20 2f 2f 2f 20 6c 61 73 74 20 63 61 6c 6c 65    /// last calle
1ce70 64 2e 20 54 68 65 20 63 61 6c 6c 20 74 6f 20 78  d. The call to x
1ce80 52 6f 6c 6c 62 61 63 6b 54 6f 28 58 2c 52 29 20  RollbackTo(X,R) 
1ce90 77 69 6c 6c 20 69 6e 76 61 6c 69 64 61 74 65 20  will invalidate 
1cea0 61 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  all..        ///
1ceb0 20 73 61 76 65 70 6f 69 6e 74 73 20 77 69 74 68   savepoints with
1cec0 20 4e 3e 52 3b 20 6e 6f 6e 65 20 6f 66 20 74 68   N>R; none of th
1ced0 65 20 69 6e 76 61 6c 69 64 65 64 20 73 61 76 65  e invalided save
1cee0 70 6f 69 6e 74 73 20 77 69 6c 6c 20 62 65 0d 0a  points will be..
1cef0 20 20 20 20 20 20 20 20 2f 2f 2f 20 72 6f 6c 6c          /// roll
1cf00 65 64 20 62 61 63 6b 20 6f 72 20 72 65 6c 65 61  ed back or relea
1cf10 73 65 64 20 77 69 74 68 6f 75 74 20 66 69 72 73  sed without firs
1cf20 74 20 62 65 69 6e 67 20 72 65 69 6e 69 74 69 61  t being reinitia
1cf30 6c 69 7a 65 64 20 62 79 20 61 20 63 61 6c 6c 0d  lized by a call.
1cf40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20  .        /// to 
1cf50 78 53 61 76 65 70 6f 69 6e 74 28 29 2e 20 41 20  xSavepoint(). A 
1cf60 63 61 6c 6c 20 74 6f 20 78 52 65 6c 65 61 73 65  call to xRelease
1cf70 28 58 2c 4d 29 20 69 6e 76 61 6c 69 64 61 74 65  (X,M) invalidate
1cf80 73 20 61 6c 6c 20 73 61 76 65 70 6f 69 6e 74 73  s all savepoints
1cf90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 68  ..        /// wh
1cfa0 65 72 65 20 4e 3e 3d 4d 2e 0d 0a 20 20 20 20 20  ere N>=M...     
1cfb0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a     /// </para>..
1cfc0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1cfd0 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
1cfe0 4e 6f 6e 65 20 6f 66 20 74 68 65 20 78 53 61 76  None of the xSav
1cff0 65 70 6f 69 6e 74 28 29 2c 20 78 52 65 6c 65 61  epoint(), xRelea
1d000 73 65 28 29 2c 20 6f 72 20 78 52 6f 6c 6c 62 61  se(), or xRollba
1d010 63 6b 54 6f 28 29 20 6d 65 74 68 6f 64 73 20 77  ckTo() methods w
1d020 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ill..        ///
1d030 20 65 76 65 72 20 62 65 20 63 61 6c 6c 65 64 20   ever be called 
1d040 65 78 63 65 70 74 20 69 6e 20 62 65 74 77 65 65  except in betwee
1d050 6e 20 63 61 6c 6c 73 20 74 6f 20 78 42 65 67 69  n calls to xBegi
1d060 6e 28 29 20 61 6e 64 20 65 69 74 68 65 72 0d 0a  n() and either..
1d070 20 20 20 20 20 20 20 20 2f 2f 2f 20 78 43 6f 6d          /// xCom
1d080 6d 69 74 28 29 20 6f 72 20 78 52 6f 6c 6c 62 61  mit() or xRollba
1d090 63 6b 28 29 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ck()...        /
1d0a0 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20  // </para>..    
1d0b0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1d0c0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1d0d0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74  <param name="pVt
1d0e0 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ab">..        //
1d0f0 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69  / The native poi
1d100 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69  nter to the sqli
1d110 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64  te3_vtab derived
1d120 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
1d130 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
1d140 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1d150 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 53 61 76  param name="iSav
1d160 65 70 6f 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20  epoint">..      
1d170 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 61 6e    /// This is an
1d180 20 69 6e 74 65 67 65 72 20 69 64 65 6e 74 69 66   integer identif
1d190 69 65 72 20 75 6e 64 65 72 20 77 68 69 63 68 20  ier under which 
1d1a0 74 68 65 20 74 68 65 20 63 75 72 72 65 6e 74 20  the the current 
1d1b0 73 74 61 74 65 20 6f 66 0d 0a 20 20 20 20 20 20  state of..      
1d1c0 20 20 2f 2f 2f 20 74 68 65 20 76 69 72 74 75 61    /// the virtua
1d1d0 6c 20 74 61 62 6c 65 20 73 68 6f 75 6c 64 20 62  l table should b
1d1e0 65 20 73 61 76 65 64 2e 0d 0a 20 20 20 20 20 20  e saved...      
1d1f0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
1d200 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
1d210 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
1d220 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51  // A standard SQ
1d230 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65  Lite return code
1d240 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1d250 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
1d260 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f     SQLiteErrorCo
1d270 64 65 20 78 53 61 76 65 70 6f 69 6e 74 28 0d 0a  de xSavepoint(..
1d280 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
1d290 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
1d2a0 20 20 20 20 20 20 20 69 6e 74 20 69 53 61 76 65         int iSave
1d2b0 70 6f 69 6e 74 0d 0a 20 20 20 20 20 20 20 20 20  point..         
1d2c0 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20     );....       
1d2d0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1d2e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d2f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d310 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1d320 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1d330 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1d340 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
1d350 2f 2f 20 54 68 65 73 65 20 6d 65 74 68 6f 64 73  // These methods
1d360 20 70 72 6f 76 69 64 65 20 74 68 65 20 76 69 72   provide the vir
1d370 74 75 61 6c 20 74 61 62 6c 65 20 69 6d 70 6c 65  tual table imple
1d380 6d 65 6e 74 61 74 69 6f 6e 20 61 6e 0d 0a 20 20  mentation an..  
1d390 20 20 20 20 20 20 2f 2f 2f 20 6f 70 70 6f 72 74        /// opport
1d3a0 75 6e 69 74 79 20 74 6f 20 69 6d 70 6c 65 6d 65  unity to impleme
1d3b0 6e 74 20 6e 65 73 74 65 64 20 74 72 61 6e 73 61  nt nested transa
1d3c0 63 74 69 6f 6e 73 2e 20 54 68 65 79 20 61 72 65  ctions. They are
1d3d0 20 61 6c 77 61 79 73 0d 0a 20 20 20 20 20 20 20   always..       
1d3e0 20 2f 2f 2f 20 6f 70 74 69 6f 6e 61 6c 20 61 6e   /// optional an
1d3f0 64 20 77 69 6c 6c 20 6f 6e 6c 79 20 62 65 20 63  d will only be c
1d400 61 6c 6c 65 64 20 69 6e 20 53 51 4c 69 74 65 20  alled in SQLite 
1d410 76 65 72 73 69 6f 6e 20 33 2e 37 2e 37 20 61 6e  version 3.7.7 an
1d420 64 20 6c 61 74 65 72 2e 0d 0a 20 20 20 20 20 20  d later...      
1d430 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
1d440 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1d450 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 57  >..        /// W
1d460 68 65 6e 20 78 53 61 76 65 70 6f 69 6e 74 28 58  hen xSavepoint(X
1d470 2c 4e 29 20 69 73 20 69 6e 76 6f 6b 65 64 2c 20  ,N) is invoked, 
1d480 74 68 61 74 20 69 73 20 61 20 73 69 67 6e 61 6c  that is a signal
1d490 20 74 6f 20 74 68 65 20 76 69 72 74 75 61 6c 0d   to the virtual.
1d4a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 61 62  .        /// tab
1d4b0 6c 65 20 58 20 74 68 61 74 20 69 74 20 73 68 6f  le X that it sho
1d4c0 75 6c 64 20 73 61 76 65 20 69 74 73 20 63 75 72  uld save its cur
1d4d0 72 65 6e 74 20 73 74 61 74 65 20 61 73 20 73 61  rent state as sa
1d4e0 76 65 70 6f 69 6e 74 20 4e 2e 20 41 0d 0a 20 20  vepoint N. A..  
1d4f0 20 20 20 20 20 20 2f 2f 2f 20 73 75 62 73 65 71        /// subseq
1d500 75 65 6e 74 20 63 61 6c 6c 20 74 6f 20 78 52 6f  uent call to xRo
1d510 6c 6c 62 61 63 6b 54 6f 28 58 2c 52 29 20 6d 65  llbackTo(X,R) me
1d520 61 6e 73 20 74 68 61 74 20 74 68 65 20 73 74 61  ans that the sta
1d530 74 65 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20  te of the..     
1d540 20 20 20 2f 2f 2f 20 76 69 72 74 75 61 6c 20 74     /// virtual t
1d550 61 62 6c 65 20 73 68 6f 75 6c 64 20 72 65 74 75  able should retu
1d560 72 6e 20 74 6f 20 77 68 61 74 20 69 74 20 77 61  rn to what it wa
1d570 73 20 77 68 65 6e 20 78 53 61 76 65 70 6f 69 6e  s when xSavepoin
1d580 74 28 58 2c 52 29 20 77 61 73 0d 0a 20 20 20 20  t(X,R) was..    
1d590 20 20 20 20 2f 2f 2f 20 6c 61 73 74 20 63 61 6c      /// last cal
1d5a0 6c 65 64 2e 20 54 68 65 20 63 61 6c 6c 20 74 6f  led. The call to
1d5b0 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 58 2c 52   xRollbackTo(X,R
1d5c0 29 20 77 69 6c 6c 20 69 6e 76 61 6c 69 64 61 74  ) will invalidat
1d5d0 65 20 61 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f  e all..        /
1d5e0 2f 2f 20 73 61 76 65 70 6f 69 6e 74 73 20 77 69  // savepoints wi
1d5f0 74 68 20 4e 3e 52 3b 20 6e 6f 6e 65 20 6f 66 20  th N>R; none of 
1d600 74 68 65 20 69 6e 76 61 6c 69 64 65 64 20 73 61  the invalided sa
1d610 76 65 70 6f 69 6e 74 73 20 77 69 6c 6c 20 62 65  vepoints will be
1d620 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 72 6f  ..        /// ro
1d630 6c 6c 65 64 20 62 61 63 6b 20 6f 72 20 72 65 6c  lled back or rel
1d640 65 61 73 65 64 20 77 69 74 68 6f 75 74 20 66 69  eased without fi
1d650 72 73 74 20 62 65 69 6e 67 20 72 65 69 6e 69 74  rst being reinit
1d660 69 61 6c 69 7a 65 64 20 62 79 20 61 20 63 61 6c  ialized by a cal
1d670 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  l..        /// t
1d680 6f 20 78 53 61 76 65 70 6f 69 6e 74 28 29 2e 20  o xSavepoint(). 
1d690 41 20 63 61 6c 6c 20 74 6f 20 78 52 65 6c 65 61  A call to xRelea
1d6a0 73 65 28 58 2c 4d 29 20 69 6e 76 61 6c 69 64 61  se(X,M) invalida
1d6b0 74 65 73 20 61 6c 6c 20 73 61 76 65 70 6f 69 6e  tes all savepoin
1d6c0 74 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ts..        /// 
1d6d0 77 68 65 72 65 20 4e 3e 3d 4d 2e 0d 0a 20 20 20  where N>=M...   
1d6e0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
1d6f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1d700 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
1d710 2f 20 4e 6f 6e 65 20 6f 66 20 74 68 65 20 78 53  / None of the xS
1d720 61 76 65 70 6f 69 6e 74 28 29 2c 20 78 52 65 6c  avepoint(), xRel
1d730 65 61 73 65 28 29 2c 20 6f 72 20 78 52 6f 6c 6c  ease(), or xRoll
1d740 62 61 63 6b 54 6f 28 29 20 6d 65 74 68 6f 64 73  backTo() methods
1d750 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f   will..        /
1d760 2f 2f 20 65 76 65 72 20 62 65 20 63 61 6c 6c 65  // ever be calle
1d770 64 20 65 78 63 65 70 74 20 69 6e 20 62 65 74 77  d except in betw
1d780 65 65 6e 20 63 61 6c 6c 73 20 74 6f 20 78 42 65  een calls to xBe
1d790 67 69 6e 28 29 20 61 6e 64 20 65 69 74 68 65 72  gin() and either
1d7a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 78 43  ..        /// xC
1d7b0 6f 6d 6d 69 74 28 29 20 6f 72 20 78 52 6f 6c 6c  ommit() or xRoll
1d7c0 62 61 63 6b 28 29 2e 0d 0a 20 20 20 20 20 20 20  back()...       
1d7d0 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
1d7e0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
1d7f0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1d800 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
1d810 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
1d820 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70  /// The native p
1d830 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71  ointer to the sq
1d840 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76  lite3_vtab deriv
1d850 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  ed structure... 
1d860 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1d870 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1d880 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 53   <param name="iS
1d890 61 76 65 70 6f 69 6e 74 22 3e 0d 0a 20 20 20 20  avepoint">..    
1d8a0 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20      /// This is 
1d8b0 61 6e 20 69 6e 74 65 67 65 72 20 75 73 65 64 20  an integer used 
1d8c0 74 6f 20 69 6e 64 69 63 61 74 65 20 74 68 61 74  to indicate that
1d8d0 20 61 6e 79 20 73 61 76 65 64 20 73 74 61 74 65   any saved state
1d8e0 73 20 77 69 74 68 20 61 6e 0d 0a 20 20 20 20 20  s with an..     
1d8f0 20 20 20 2f 2f 2f 20 69 64 65 6e 74 69 66 69 65     /// identifie
1d900 72 20 67 72 65 61 74 65 72 20 74 68 61 6e 20 6f  r greater than o
1d910 72 20 65 71 75 61 6c 20 74 6f 20 74 68 69 73 20  r equal to this 
1d920 73 68 6f 75 6c 64 20 62 65 20 64 65 6c 65 74 65  should be delete
1d930 64 20 62 79 20 74 68 65 0d 0a 20 20 20 20 20 20  d by the..      
1d940 20 20 2f 2f 2f 20 76 69 72 74 75 61 6c 20 74 61    /// virtual ta
1d950 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
1d960 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1d970 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
1d980 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
1d990 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
1d9a0 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
1d9b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
1d9c0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53  urns>..        S
1d9d0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
1d9e0 52 65 6c 65 61 73 65 28 0d 0a 20 20 20 20 20 20  Release(..      
1d9f0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
1da00 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ab,..           
1da10 20 69 6e 74 20 69 53 61 76 65 70 6f 69 6e 74 0d   int iSavepoint.
1da20 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d  .            );.
1da30 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1da40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1da50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1da60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1da70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1da80 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
1da90 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1daa0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
1dab0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1dac0 73 65 20 6d 65 74 68 6f 64 73 20 70 72 6f 76 69  se methods provi
1dad0 64 65 20 74 68 65 20 76 69 72 74 75 61 6c 20 74  de the virtual t
1dae0 61 62 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74  able implementat
1daf0 69 6f 6e 20 61 6e 0d 0a 20 20 20 20 20 20 20 20  ion an..        
1db00 2f 2f 2f 20 6f 70 70 6f 72 74 75 6e 69 74 79 20  /// opportunity 
1db10 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 6e 65 73  to implement nes
1db20 74 65 64 20 74 72 61 6e 73 61 63 74 69 6f 6e 73  ted transactions
1db30 2e 20 54 68 65 79 20 61 72 65 20 61 6c 77 61 79  . They are alway
1db40 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f  s..        /// o
1db50 70 74 69 6f 6e 61 6c 20 61 6e 64 20 77 69 6c 6c  ptional and will
1db60 20 6f 6e 6c 79 20 62 65 20 63 61 6c 6c 65 64 20   only be called 
1db70 69 6e 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f  in SQLite versio
1db80 6e 20 33 2e 37 2e 37 20 61 6e 64 20 6c 61 74 65  n 3.7.7 and late
1db90 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
1dba0 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
1dbb0 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
1dbc0 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 78 53       /// When xS
1dbd0 61 76 65 70 6f 69 6e 74 28 58 2c 4e 29 20 69 73  avepoint(X,N) is
1dbe0 20 69 6e 76 6f 6b 65 64 2c 20 74 68 61 74 20 69   invoked, that i
1dbf0 73 20 61 20 73 69 67 6e 61 6c 20 74 6f 20 74 68  s a signal to th
1dc00 65 20 76 69 72 74 75 61 6c 0d 0a 20 20 20 20 20  e virtual..     
1dc10 20 20 20 2f 2f 2f 20 74 61 62 6c 65 20 58 20 74     /// table X t
1dc20 68 61 74 20 69 74 20 73 68 6f 75 6c 64 20 73 61  hat it should sa
1dc30 76 65 20 69 74 73 20 63 75 72 72 65 6e 74 20 73  ve its current s
1dc40 74 61 74 65 20 61 73 20 73 61 76 65 70 6f 69 6e  tate as savepoin
1dc50 74 20 4e 2e 20 41 0d 0a 20 20 20 20 20 20 20 20  t N. A..        
1dc60 2f 2f 2f 20 73 75 62 73 65 71 75 65 6e 74 20 63  /// subsequent c
1dc70 61 6c 6c 20 74 6f 20 78 52 6f 6c 6c 62 61 63 6b  all to xRollback
1dc80 54 6f 28 58 2c 52 29 20 6d 65 61 6e 73 20 74 68  To(X,R) means th
1dc90 61 74 20 74 68 65 20 73 74 61 74 65 20 6f 66 20  at the state of 
1dca0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
1dcb0 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 73   virtual table s
1dcc0 68 6f 75 6c 64 20 72 65 74 75 72 6e 20 74 6f 20  hould return to 
1dcd0 77 68 61 74 20 69 74 20 77 61 73 20 77 68 65 6e  what it was when
1dce0 20 78 53 61 76 65 70 6f 69 6e 74 28 58 2c 52 29   xSavepoint(X,R)
1dcf0 20 77 61 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f   was..        //
1dd00 2f 20 6c 61 73 74 20 63 61 6c 6c 65 64 2e 20 54  / last called. T
1dd10 68 65 20 63 61 6c 6c 20 74 6f 20 78 52 6f 6c 6c  he call to xRoll
1dd20 62 61 63 6b 54 6f 28 58 2c 52 29 20 77 69 6c 6c  backTo(X,R) will
1dd30 20 69 6e 76 61 6c 69 64 61 74 65 20 61 6c 6c 0d   invalidate all.
1dd40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 61 76  .        /// sav
1dd50 65 70 6f 69 6e 74 73 20 77 69 74 68 20 4e 3e 52  epoints with N>R
1dd60 3b 20 6e 6f 6e 65 20 6f 66 20 74 68 65 20 69 6e  ; none of the in
1dd70 76 61 6c 69 64 65 64 20 73 61 76 65 70 6f 69 6e  valided savepoin
1dd80 74 73 20 77 69 6c 6c 20 62 65 0d 0a 20 20 20 20  ts will be..    
1dd90 20 20 20 20 2f 2f 2f 20 72 6f 6c 6c 65 64 20 62      /// rolled b
1dda0 61 63 6b 20 6f 72 20 72 65 6c 65 61 73 65 64 20  ack or released 
1ddb0 77 69 74 68 6f 75 74 20 66 69 72 73 74 20 62 65  without first be
1ddc0 69 6e 67 20 72 65 69 6e 69 74 69 61 6c 69 7a 65  ing reinitialize
1ddd0 64 20 62 79 20 61 20 63 61 6c 6c 0d 0a 20 20 20  d by a call..   
1dde0 20 20 20 20 20 2f 2f 2f 20 74 6f 20 78 53 61 76       /// to xSav
1ddf0 65 70 6f 69 6e 74 28 29 2e 20 41 20 63 61 6c 6c  epoint(). A call
1de00 20 74 6f 20 78 52 65 6c 65 61 73 65 28 58 2c 4d   to xRelease(X,M
1de10 29 20 69 6e 76 61 6c 69 64 61 74 65 73 20 61 6c  ) invalidates al
1de20 6c 20 73 61 76 65 70 6f 69 6e 74 73 0d 0a 20 20  l savepoints..  
1de30 20 20 20 20 20 20 2f 2f 2f 20 77 68 65 72 65 20        /// where 
1de40 4e 3e 3d 4d 2e 0d 0a 20 20 20 20 20 20 20 20 2f  N>=M...        /
1de50 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20  // </para>..    
1de60 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a      /// <para>..
1de70 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 65          /// None
1de80 20 6f 66 20 74 68 65 20 78 53 61 76 65 70 6f 69   of the xSavepoi
1de90 6e 74 28 29 2c 20 78 52 65 6c 65 61 73 65 28 29  nt(), xRelease()
1dea0 2c 20 6f 72 20 78 52 6f 6c 6c 62 61 63 6b 54 6f  , or xRollbackTo
1deb0 28 29 20 6d 65 74 68 6f 64 73 20 77 69 6c 6c 0d  () methods will.
1dec0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 65 76 65  .        /// eve
1ded0 72 20 62 65 20 63 61 6c 6c 65 64 20 65 78 63 65  r be called exce
1dee0 70 74 20 69 6e 20 62 65 74 77 65 65 6e 20 63 61  pt in between ca
1def0 6c 6c 73 20 74 6f 20 78 42 65 67 69 6e 28 29 20  lls to xBegin() 
1df00 61 6e 64 20 65 69 74 68 65 72 0d 0a 20 20 20 20  and either..    
1df10 20 20 20 20 2f 2f 2f 20 78 43 6f 6d 6d 69 74 28      /// xCommit(
1df20 29 20 6f 72 20 78 52 6f 6c 6c 62 61 63 6b 28 29  ) or xRollback()
1df30 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1df40 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
1df50 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1df60 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1df70 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e  am name="pVtab">
1df80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1df90 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
1dfa0 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
1dfb0 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74 72  vtab derived str
1dfc0 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ucture...       
1dfd0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1dfe0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1dff0 6d 20 6e 61 6d 65 3d 22 69 53 61 76 65 70 6f 69  m name="iSavepoi
1e000 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nt">..        //
1e010 2f 20 54 68 69 73 20 69 73 20 61 6e 20 69 6e 74  / This is an int
1e020 65 67 65 72 20 69 64 65 6e 74 69 66 69 65 72 20  eger identifier 
1e030 75 73 65 64 20 74 6f 20 73 70 65 63 69 66 79 20  used to specify 
1e040 61 20 73 70 65 63 69 66 69 63 20 73 61 76 65 64  a specific saved
1e050 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74  ..        /// st
1e060 61 74 65 20 66 6f 72 20 74 68 65 20 76 69 72 74  ate for the virt
1e070 75 61 6c 20 74 61 62 6c 65 20 66 6f 72 20 69 74  ual table for it
1e080 20 74 6f 20 72 65 73 74 6f 72 65 20 69 74 73 65   to restore itse
1e090 6c 66 20 62 61 63 6b 20 74 6f 2c 20 77 68 69 63  lf back to, whic
1e0a0 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  h..        /// s
1e0b0 68 6f 75 6c 64 20 61 6c 73 6f 20 68 61 76 65 20  hould also have 
1e0c0 74 68 65 20 65 66 66 65 63 74 20 6f 66 20 64 65  the effect of de
1e0d0 6c 65 74 69 6e 67 20 61 6c 6c 20 73 61 76 65 64  leting all saved
1e0e0 20 73 74 61 74 65 73 20 77 69 74 68 20 61 6e 0d   states with an.
1e0f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74  .        /// int
1e100 65 67 65 72 20 69 64 65 6e 74 69 66 69 65 72 20  eger identifier 
1e110 67 72 65 61 74 65 72 20 74 68 61 6e 20 74 68 69  greater than thi
1e120 73 20 6f 6e 65 2e 0d 0a 20 20 20 20 20 20 20 20  s one...        
1e130 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1e140 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
1e150 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
1e160 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69   A standard SQLi
1e170 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d  te return code..
1e180 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
1e190 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1e1a0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1e1b0 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20   xRollbackTo(.. 
1e1c0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
1e1d0 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20  r pVtab,..      
1e1e0 20 20 20 20 20 20 69 6e 74 20 69 53 61 76 65 70        int iSavep
1e1f0 6f 69 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20  oint..          
1e200 20 20 29 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 20    );..    }..   
1e210 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
1e220 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1e230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1e270 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 49 53  ..    #region IS
1e280 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75  QLiteManagedModu
1e290 6c 65 20 49 6e 74 65 72 66 61 63 65 0d 0a 20 20  le Interface..  
1e2a0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1e2b0 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 6e  .    /// This in
1e2c0 74 65 72 66 61 63 65 20 72 65 70 72 65 73 65 6e  terface represen
1e2d0 74 73 20 61 20 76 69 72 74 75 61 6c 20 74 61 62  ts a virtual tab
1e2e0 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  le implementatio
1e2f0 6e 20 77 72 69 74 74 65 6e 20 69 6e 0d 0a 20 20  n written in..  
1e300 20 20 2f 2f 2f 20 6d 61 6e 61 67 65 64 20 63 6f    /// managed co
1e310 64 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  de...    /// </s
1e320 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62  ummary>..    pub
1e330 6c 69 63 20 69 6e 74 65 72 66 61 63 65 20 49 53  lic interface IS
1e340 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75  QLiteManagedModu
1e350 6c 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  le..    {..     
1e360 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1e370 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65  ..        /// Re
1e380 74 75 72 6e 73 20 6e 6f 6e 2d 7a 65 72 6f 20 69  turns non-zero i
1e390 66 20 74 68 65 20 73 63 68 65 6d 61 20 66 6f 72  f the schema for
1e3a0 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
1e3b0 6c 65 20 68 61 73 20 62 65 65 6e 0d 0a 20 20 20  le has been..   
1e3c0 20 20 20 20 20 2f 2f 2f 20 64 65 63 6c 61 72 65       /// declare
1e3d0 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
1e3e0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1e3f0 20 20 20 20 62 6f 6f 6c 20 44 65 63 6c 61 72 65      bool Declare
1e400 64 20 7b 20 67 65 74 3b 20 7d 0d 0a 0d 0a 20 20  d { get; }....  
1e410 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1e420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1e460 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
1e470 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1e480 2f 2f 2f 20 52 65 74 75 72 6e 73 20 74 68 65 20  /// Returns the 
1e490 6e 61 6d 65 20 6f 66 20 74 68 65 20 6d 6f 64 75  name of the modu
1e4a0 6c 65 20 61 73 20 69 74 20 77 61 73 20 72 65 67  le as it was reg
1e4b0 69 73 74 65 72 65 64 20 77 69 74 68 20 74 68 65  istered with the
1e4c0 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 20   SQLite..       
1e4d0 20 2f 2f 2f 20 63 6f 72 65 20 6c 69 62 72 61 72   /// core librar
1e4e0 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y...        /// 
1e4f0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1e500 20 20 20 20 73 74 72 69 6e 67 20 4e 61 6d 65 20      string Name 
1e510 7b 20 67 65 74 3b 20 7d 0d 0a 0d 0a 20 20 20 20  { get; }....    
1e520 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1e530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1e570 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
1e580 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1e590 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73  / This method is
1e5a0 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f   called in respo
1e5b0 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20  nse to the..    
1e5c0 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
1e5d0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
1e5e0 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 22 20  Module.xCreate" 
1e5f0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
1e600 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1e610 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1e620 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e  <param name="con
1e630 6e 65 63 74 69 6f 6e 22 3e 0d 0a 20 20 20 20 20  nection">..     
1e640 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
1e650 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e  cref="SQLiteConn
1e660 65 63 74 69 6f 6e 22 20 2f 3e 20 6f 62 6a 65 63  ection" /> objec
1e670 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63  t instance assoc
1e680 69 61 74 65 64 20 77 69 74 68 0d 0a 20 20 20 20  iated with..    
1e690 20 20 20 20 2f 2f 2f 20 74 68 65 20 76 69 72 74      /// the virt
1e6a0 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
1e6b0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1e6c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1e6d0 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 6c 69 65  aram name="pClie
1e6e0 6e 74 44 61 74 61 22 3e 0d 0a 20 20 20 20 20 20  ntData">..      
1e6f0 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
1e700 20 75 73 65 72 2d 64 61 74 61 20 70 6f 69 6e 74   user-data point
1e710 65 72 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  er associated wi
1e720 74 68 20 74 68 69 73 20 6d 6f 64 75 6c 65 2c 20  th this module, 
1e730 61 73 20 69 74 20 77 61 73 0d 0a 20 20 20 20 20  as it was..     
1e740 20 20 20 2f 2f 2f 20 70 72 6f 76 69 64 65 64 20     /// provided 
1e750 74 6f 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  to the SQLite co
1e760 72 65 20 6c 69 62 72 61 72 79 20 77 68 65 6e 20  re library when 
1e770 74 68 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c  the native modul
1e780 65 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20  e instance..    
1e790 20 20 20 20 2f 2f 2f 20 77 61 73 20 63 72 65 61      /// was crea
1e7a0 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ted...        //
1e7b0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1e7c0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1e7d0 61 6d 65 3d 22 61 72 67 75 6d 65 6e 74 73 22 3e  ame="arguments">
1e7e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1e7f0 65 20 6d 6f 64 75 6c 65 20 6e 61 6d 65 2c 20 64  e module name, d
1e800 61 74 61 62 61 73 65 20 6e 61 6d 65 2c 20 76 69  atabase name, vi
1e810 72 74 75 61 6c 20 74 61 62 6c 65 20 6e 61 6d 65  rtual table name
1e820 2c 20 61 6e 64 20 61 6c 6c 20 6f 74 68 65 72 0d  , and all other.
1e830 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 72 67  .        /// arg
1e840 75 6d 65 6e 74 73 20 70 61 73 73 65 64 20 74 6f  uments passed to
1e850 20 74 68 65 20 43 52 45 41 54 45 20 56 49 52 54   the CREATE VIRT
1e860 55 41 4c 20 54 41 42 4c 45 20 73 74 61 74 65 6d  UAL TABLE statem
1e870 65 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ent...        //
1e880 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1e890 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1e8a0 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20  ame="table">..  
1e8b0 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73        /// Upon s
1e8c0 75 63 63 65 73 73 2c 20 74 68 69 73 20 70 61 72  uccess, this par
1e8d0 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d  ameter must be m
1e8e0 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74 61  odified to conta
1e8f0 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  in the..        
1e900 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53  /// <see cref="S
1e910 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
1e920 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  e" /> object ins
1e930 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64  tance associated
1e940 20 77 69 74 68 0d 0a 20 20 20 20 20 20 20 20 2f   with..        /
1e950 2f 2f 20 74 68 65 20 76 69 72 74 75 61 6c 20 74  // the virtual t
1e960 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  able...        /
1e970 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1e980 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1e990 6e 61 6d 65 3d 22 65 72 72 6f 72 22 3e 0d 0a 20  name="error">.. 
1e9a0 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20         /// Upon 
1e9b0 66 61 69 6c 75 72 65 2c 20 74 68 69 73 20 70 61  failure, this pa
1e9c0 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20  rameter must be 
1e9d0 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74  modified to cont
1e9e0 61 69 6e 20 61 6e 20 65 72 72 6f 72 0d 0a 20 20  ain an error..  
1e9f0 20 20 20 20 20 20 2f 2f 2f 20 6d 65 73 73 61 67        /// messag
1ea00 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
1ea10 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
1ea20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
1ea30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73  .        /// A s
1ea40 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72  tandard SQLite r
1ea50 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20  eturn code...   
1ea60 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
1ea70 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c  ns>..        SQL
1ea80 69 74 65 45 72 72 6f 72 43 6f 64 65 20 43 72 65  iteErrorCode Cre
1ea90 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ate(..          
1eaa0 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69    SQLiteConnecti
1eab0 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 20  on connection,  
1eac0 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
1ead0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 6c        IntPtr pCl
1eae0 69 65 6e 74 44 61 74 61 2c 20 20 20 20 20 20 20  ientData,       
1eaf0 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20      /* in */..  
1eb00 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
1eb10 5b 5d 20 61 72 67 75 6d 65 6e 74 73 2c 20 20 20  [] arguments,   
1eb20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f          /* in */
1eb30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
1eb40 66 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  f SQLiteVirtualT
1eb50 61 62 6c 65 20 74 61 62 6c 65 2c 20 2f 2a 20 6f  able table, /* o
1eb60 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ut */..         
1eb70 20 20 20 72 65 66 20 73 74 72 69 6e 67 20 65 72     ref string er
1eb80 72 6f 72 20 20 20 20 20 20 20 20 20 20 20 20 20  ror             
1eb90 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20   /* out */..    
1eba0 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20          );....  
1ebb0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1ebc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ebd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ebe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ebf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1ec00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
1ec10 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1ec20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20  /// This method 
1ec30 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73  is called in res
1ec40 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20  ponse to the..  
1ec50 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
1ec60 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
1ec70 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63  veModule.xConnec
1ec80 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  t" /> method... 
1ec90 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
1eca0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1ecb0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1ecc0 63 6f 6e 6e 65 63 74 69 6f 6e 22 3e 0d 0a 20 20  connection">..  
1ecd0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
1ece0 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43  ee cref="SQLiteC
1ecf0 6f 6e 6e 65 63 74 69 6f 6e 22 20 2f 3e 20 6f 62  onnection" /> ob
1ed00 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73  ject instance as
1ed10 73 6f 63 69 61 74 65 64 20 77 69 74 68 0d 0a 20  sociated with.. 
1ed20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 76         /// the v
1ed30 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20  irtual table... 
1ed40 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1ed50 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1ed60 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43   <param name="pC
1ed70 6c 69 65 6e 74 44 61 74 61 22 3e 0d 0a 20 20 20  lientData">..   
1ed80 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
1ed90 69 76 65 20 75 73 65 72 2d 64 61 74 61 20 70 6f  ive user-data po
1eda0 69 6e 74 65 72 20 61 73 73 6f 63 69 61 74 65 64  inter associated
1edb0 20 77 69 74 68 20 74 68 69 73 20 6d 6f 64 75 6c   with this modul
1edc0 65 2c 20 61 73 20 69 74 20 77 61 73 0d 0a 20 20  e, as it was..  
1edd0 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f 76 69 64        /// provid
1ede0 65 64 20 74 6f 20 74 68 65 20 53 51 4c 69 74 65  ed to the SQLite
1edf0 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 77 68   core library wh
1ee00 65 6e 20 74 68 65 20 6e 61 74 69 76 65 20 6d 6f  en the native mo
1ee10 64 75 6c 65 20 69 6e 73 74 61 6e 63 65 0d 0a 20  dule instance.. 
1ee20 20 20 20 20 20 20 20 2f 2f 2f 20 77 61 73 20 63         /// was c
1ee30 72 65 61 74 65 64 2e 0d 0a 20 20 20 20 20 20 20  reated...       
1ee40 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1ee50 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1ee60 6d 20 6e 61 6d 65 3d 22 61 72 67 75 6d 65 6e 74  m name="argument
1ee70 73 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  s">..        ///
1ee80 20 54 68 65 20 6d 6f 64 75 6c 65 20 6e 61 6d 65   The module name
1ee90 2c 20 64 61 74 61 62 61 73 65 20 6e 61 6d 65 2c  , database name,
1eea0 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 6e   virtual table n
1eeb0 61 6d 65 2c 20 61 6e 64 20 61 6c 6c 20 6f 74 68  ame, and all oth
1eec0 65 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  er..        /// 
1eed0 61 72 67 75 6d 65 6e 74 73 20 70 61 73 73 65 64  arguments passed
1eee0 20 74 6f 20 74 68 65 20 43 52 45 41 54 45 20 56   to the CREATE V
1eef0 49 52 54 55 41 4c 20 54 41 42 4c 45 20 73 74 61  IRTUAL TABLE sta
1ef00 74 65 6d 65 6e 74 2e 0d 0a 20 20 20 20 20 20 20  tement...       
1ef10 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1ef20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1ef30 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d  m name="table">.
1ef40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f  .        /// Upo
1ef50 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69 73 20  n success, this 
1ef60 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62  parameter must b
1ef70 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f  e modified to co
1ef80 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20 20 20 20  ntain the..     
1ef90 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
1efa0 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  ="SQLiteVirtualT
1efb0 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20  able" /> object 
1efc0 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61  instance associa
1efd0 74 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20  ted with..      
1efe0 20 20 2f 2f 2f 20 74 68 65 20 76 69 72 74 75 61    /// the virtua
1eff0 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  l table...      
1f000 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
1f010 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1f020 61 6d 20 6e 61 6d 65 3d 22 65 72 72 6f 72 22 3e  am name="error">
1f030 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70  ..        /// Up
1f040 6f 6e 20 66 61 69 6c 75 72 65 2c 20 74 68 69 73  on failure, this
1f050 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20   parameter must 
1f060 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 63  be modified to c
1f070 6f 6e 74 61 69 6e 20 61 6e 20 65 72 72 6f 72 0d  ontain an error.
1f080 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 73  .        /// mes
1f090 73 61 67 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  sage...        /
1f0a0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1f0b0 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
1f0c0 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
1f0d0 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74  A standard SQLit
1f0e0 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a  e return code...
1f0f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
1f100 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
1f110 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1f120 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20  Connect(..      
1f130 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e        SQLiteConn
1f140 65 63 74 69 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f  ection connectio
1f150 6e 2c 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20  n,  /* in */..  
1f160 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
1f170 20 70 43 6c 69 65 6e 74 44 61 74 61 2c 20 20 20   pClientData,   
1f180 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f          /* in */
1f190 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74  ..            st
1f1a0 72 69 6e 67 5b 5d 20 61 72 67 75 6d 65 6e 74 73  ring[] arguments
1f1b0 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69  ,           /* i
1f1c0 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
1f1d0 20 20 72 65 66 20 53 51 4c 69 74 65 56 69 72 74    ref SQLiteVirt
1f1e0 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c 20  ualTable table, 
1f1f0 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20  /* out */..     
1f200 20 20 20 20 20 20 20 72 65 66 20 73 74 72 69 6e         ref strin
1f210 67 20 65 72 72 6f 72 20 20 20 20 20 20 20 20 20  g error         
1f220 20 20 20 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a       /* out */..
1f230 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a              );..
1f240 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f290 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
1f2a0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
1f2b0 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74      /// This met
1f2c0 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e  hod is called in
1f2d0 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65   response to the
1f2e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1f2f0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
1f300 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65  NativeModule.xBe
1f310 73 74 49 6e 64 65 78 22 20 2f 3e 20 6d 65 74 68  stIndex" /> meth
1f320 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  od...        ///
1f330 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1f340 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1f350 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20  name="table">.. 
1f360 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
1f370 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
1f380 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e  VirtualTable" />
1f390 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
1f3a0 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20   associated..   
1f3b0 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68       /// with th
1f3c0 69 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  is virtual table
1f3d0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1f3e0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1f3f0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1f400 3d 22 69 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20  ="index">..     
1f410 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
1f420 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65  cref="SQLiteInde
1f430 78 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  x" /> object ins
1f440 74 61 6e 63 65 20 63 6f 6e 74 61 69 6e 69 6e 67  tance containing
1f450 20 61 6c 6c 20 74 68 65 0d 0a 20 20 20 20 20 20   all the..      
1f460 20 20 2f 2f 2f 20 64 61 74 61 20 66 6f 72 20 74    /// data for t
1f470 68 65 20 69 6e 70 75 74 73 20 61 6e 64 20 6f 75  he inputs and ou
1f480 74 70 75 74 73 20 72 65 6c 61 74 69 6e 67 20 74  tputs relating t
1f490 6f 20 69 6e 64 65 78 20 73 65 6c 65 63 74 69 6f  o index selectio
1f4a0 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  n...        /// 
1f4b0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
1f4c0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
1f4d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73  .        /// A s
1f4e0 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72  tandard SQLite r
1f4f0 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20  eturn code...   
1f500 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
1f510 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c  ns>..        SQL
1f520 69 74 65 45 72 72 6f 72 43 6f 64 65 20 42 65 73  iteErrorCode Bes
1f530 74 49 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20  tIndex(..       
1f540 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75       SQLiteVirtu
1f550 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c 20 2f  alTable table, /
1f560 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
1f570 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78       SQLiteIndex
1f580 20 69 6e 64 65 78 20 20 20 20 20 20 20 20 20 2f   index         /
1f590 2a 20 69 6e 2c 20 6f 75 74 20 2a 2f 0d 0a 20 20  * in, out */..  
1f5a0 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a            );....
1f5b0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1f5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f5d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f5e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f5f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1f600 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1f610 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1f620 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
1f630 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72  d is called in r
1f640 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a  esponse to the..
1f650 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
1f660 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
1f670 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 69 73 63  tiveModule.xDisc
1f680 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f  onnect" /> metho
1f690 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
1f6a0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1f6b0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1f6c0 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20  ame="table">..  
1f6d0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
1f6e0 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56  ee cref="SQLiteV
1f6f0 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20  irtualTable" /> 
1f700 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
1f710 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20  associated..    
1f720 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69      /// with thi
1f730 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e  s virtual table.
1f740 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1f750 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1f760 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
1f770 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61         /// A sta
1f780 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74  ndard SQLite ret
1f790 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  urn code...     
1f7a0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
1f7b0 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  >..        SQLit
1f7c0 65 45 72 72 6f 72 43 6f 64 65 20 44 69 73 63 6f  eErrorCode Disco
1f7d0 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20  nnect(..        
1f7e0 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61      SQLiteVirtua
1f7f0 6c 54 61 62 6c 65 20 74 61 62 6c 65 20 2f 2a 20  lTable table /* 
1f800 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
1f810 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20     );....       
1f820 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1f830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f860 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1f870 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1f880 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1f890 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61  his method is ca
1f8a0 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65  lled in response
1f8b0 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20   to the..       
1f8c0 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
1f8d0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
1f8e0 75 6c 65 2e 78 44 65 73 74 72 6f 79 22 20 2f 3e  ule.xDestroy" />
1f8f0 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
1f900 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1f910 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1f920 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65  aram name="table
1f930 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
1f940 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
1f950 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
1f960 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  e" /> object ins
1f970 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64  tance associated
1f980 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69  ..        /// wi
1f990 74 68 20 74 68 69 73 20 76 69 72 74 75 61 6c 20  th this virtual 
1f9a0 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20  table...        
1f9b0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1f9c0 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
1f9d0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
1f9e0 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69   A standard SQLi
1f9f0 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d  te return code..
1fa00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
1fa10 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1fa20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1fa30 20 44 65 73 74 72 6f 79 28 0d 0a 20 20 20 20 20   Destroy(..     
1fa40 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72         SQLiteVir
1fa50 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 20  tualTable table 
1fa60 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
1fa70 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20        );....    
1fa80 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1fa90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1faa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1fad0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
1fae0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1faf0 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73  / This method is
1fb00 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f   called in respo
1fb10 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20  nse to the..    
1fb20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
1fb30 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
1fb40 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e 22 20 2f 3e  Module.xOpen" />
1fb50 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
1fb60 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1fb70 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1fb80 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65  aram name="table
1fb90 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
1fba0 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
1fbb0 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
1fbc0 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  e" /> object ins
1fbd0 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64  tance associated
1fbe0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69  ..        /// wi
1fbf0 74 68 20 74 68 69 73 20 76 69 72 74 75 61 6c 20  th this virtual 
1fc00 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20  table...        
1fc10 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1fc20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1fc30 20 6e 61 6d 65 3d 22 63 75 72 73 6f 72 22 3e 0d   name="cursor">.
1fc40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f  .        /// Upo
1fc50 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69 73 20  n success, this 
1fc60 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62  parameter must b
1fc70 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f  e modified to co
1fc80 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20 20 20 20  ntain the..     
1fc90 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
1fca0 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  ="SQLiteVirtualT
1fcb0 61 62 6c 65 43 75 72 73 6f 72 22 20 2f 3e 20 6f  ableCursor" /> o
1fcc0 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61  bject instance a
1fcd0 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20  ssociated..     
1fce0 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 65 20     /// with the 
1fcf0 6e 65 77 6c 79 20 6f 70 65 6e 65 64 20 76 69 72  newly opened vir
1fd00 74 75 61 6c 20 74 61 62 6c 65 20 63 75 72 73 6f  tual table curso
1fd10 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
1fd20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
1fd30 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
1fd40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73  .        /// A s
1fd50 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72  tandard SQLite r
1fd60 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20  eturn code...   
1fd70 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
1fd80 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c  ns>..        SQL
1fd90 69 74 65 45 72 72 6f 72 43 6f 64 65 20 4f 70 65  iteErrorCode Ope
1fda0 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n(..            
1fdb0 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
1fdc0 6c 65 20 74 61 62 6c 65 2c 20 20 20 20 20 20 20  le table,       
1fdd0 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20      /* in */..  
1fde0 20 20 20 20 20 20 20 20 20 20 72 65 66 20 53 51            ref SQ
1fdf0 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
1fe00 43 75 72 73 6f 72 20 63 75 72 73 6f 72 20 2f 2a  Cursor cursor /*
1fe10 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20   out */..       
1fe20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20       );....     
1fe30 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1fe40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fe50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fe60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fe70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1fe80 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
1fe90 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1fea0 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20   This method is 
1feb0 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e  called in respon
1fec0 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20  se to the..     
1fed0 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
1fee0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
1fef0 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 22 20 2f 3e  odule.xClose" />
1ff00 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
1ff10 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1ff20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1ff30 61 72 61 6d 20 6e 61 6d 65 3d 22 63 75 72 73 6f  aram name="curso
1ff40 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  r">..        ///
1ff50 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
1ff60 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
1ff70 6c 65 43 75 72 73 6f 72 22 20 2f 3e 20 6f 62 6a  leCursor" /> obj
1ff80 65 63 74 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20  ect instance..  
1ff90 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69        /// associ
1ffa0 61 74 65 64 20 77 69 74 68 20 74 68 65 20 70 72  ated with the pr
1ffb0 65 76 69 6f 75 73 6c 79 20 6f 70 65 6e 65 64 20  eviously opened 
1ffc0 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 63 75  virtual table cu
1ffd0 72 73 6f 72 20 74 6f 20 62 65 0d 0a 20 20 20 20  rsor to be..    
1ffe0 20 20 20 20 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20      /// used... 
1fff0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
20000 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
20010 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
20020 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61      /// A standa
20030 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e  rd SQLite return
20040 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
20050 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
20060 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72          SQLiteEr
20070 72 6f 72 43 6f 64 65 20 43 6c 6f 73 65 28 0d 0a  rorCode Close(..
20080 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
20090 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75  teVirtualTableCu
200a0 72 73 6f 72 20 63 75 72 73 6f 72 20 2f 2a 20 69  rsor cursor /* i
200b0 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
200c0 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    );....        
200d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
200e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
200f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20110 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
20120 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
20130 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
20140 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c  is method is cal
20150 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20  led in response 
20160 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
20170 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
20180 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
20190 6c 65 2e 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d  le.xFilter" /> m
201a0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
201b0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
201c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
201d0 61 6d 20 6e 61 6d 65 3d 22 63 75 72 73 6f 72 22  am name="cursor"
201e0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
201f0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
20200 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
20210 43 75 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65 63  Cursor" /> objec
20220 74 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20  t instance..    
20230 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74      /// associat
20240 65 64 20 77 69 74 68 20 74 68 65 20 70 72 65 76  ed with the prev
20250 69 6f 75 73 6c 79 20 6f 70 65 6e 65 64 20 76 69  iously opened vi
20260 72 74 75 61 6c 20 74 61 62 6c 65 20 63 75 72 73  rtual table curs
20270 6f 72 20 74 6f 20 62 65 0d 0a 20 20 20 20 20 20  or to be..      
20280 20 20 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20 20 20    /// used...   
20290 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
202a0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
202b0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65  param name="inde
202c0 78 4e 75 6d 62 65 72 22 3e 0d 0a 20 20 20 20 20  xNumber">..     
202d0 20 20 20 2f 2f 2f 20 4e 75 6d 62 65 72 20 75 73     /// Number us
202e0 65 64 20 74 6f 20 68 65 6c 70 20 69 64 65 6e 74  ed to help ident
202f0 69 66 79 20 74 68 65 20 73 65 6c 65 63 74 65 64  ify the selected
20300 20 69 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20 20   index...       
20310 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
20320 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
20330 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78 53 74 72  m name="indexStr
20340 69 6e 67 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ing">..        /
20350 2f 2f 20 53 74 72 69 6e 67 20 75 73 65 64 20 74  // String used t
20360 6f 20 68 65 6c 70 20 69 64 65 6e 74 69 66 79 20  o help identify 
20370 74 68 65 20 73 65 6c 65 63 74 65 64 20 69 6e 64  the selected ind
20380 65 78 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ex...        ///
20390 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
203a0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
203b0 6d 65 3d 22 76 61 6c 75 65 73 22 3e 0d 0a 20 20  me="values">..  
203c0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61        /// The va
203d0 6c 75 65 73 20 63 6f 72 72 65 73 70 6f 6e 64 69  lues correspondi
203e0 6e 67 20 74 6f 20 65 61 63 68 20 63 6f 6c 75 6d  ng to each colum
203f0 6e 20 69 6e 20 74 68 65 20 73 65 6c 65 63 74 65  n in the selecte
20400 64 20 69 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20  d index...      
20410 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
20420 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
20430 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
20440 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51  // A standard SQ
20450 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65  Lite return code
20460 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
20470 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
20480 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f     SQLiteErrorCo
20490 64 65 20 46 69 6c 74 65 72 28 0d 0a 20 20 20 20  de Filter(..    
204a0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69          SQLiteVi
204b0 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72  rtualTableCursor
204c0 20 63 75 72 73 6f 72 2c 20 2f 2a 20 69 6e 20 2a   cursor, /* in *
204d0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  /..            i
204e0 6e 74 20 69 6e 64 65 78 4e 75 6d 62 65 72 2c 20  nt indexNumber, 
204f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20500 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
20510 20 20 20 20 20 20 73 74 72 69 6e 67 20 69 6e 64        string ind
20520 65 78 53 74 72 69 6e 67 2c 20 20 20 20 20 20 20  exString,       
20530 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d         /* in */.
20540 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
20550 69 74 65 56 61 6c 75 65 5b 5d 20 76 61 6c 75 65  iteValue[] value
20560 73 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a  s             /*
20570 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
20580 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20      );....      
20590 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
205a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
205b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
205c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
205d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
205e0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
205f0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
20600 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63  This method is c
20610 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73  alled in respons
20620 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  e to the..      
20630 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
20640 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
20650 64 75 6c 65 2e 78 4e 65 78 74 22 20 2f 3e 20 6d  dule.xNext" /> m
20660 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
20670 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
20680 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
20690 61 6d 20 6e 61 6d 65 3d 22 63 75 72 73 6f 72 22  am name="cursor"
206a0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
206b0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
206c0 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
206d0 43 75 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65 63  Cursor" /> objec
206e0 74 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20  t instance..    
206f0 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74      /// associat
20700 65 64 20 77 69 74 68 20 74 68 65 20 70 72 65 76  ed with the prev
20710 69 6f 75 73 6c 79 20 6f 70 65 6e 65 64 20 76 69  iously opened vi
20720 72 74 75 61 6c 20 74 61 62 6c 65 20 63 75 72 73  rtual table curs
20730 6f 72 20 74 6f 20 62 65 0d 0a 20 20 20 20 20 20  or to be..      
20740 20 20 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20 20 20    /// used...   
20750 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
20760 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
20770 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
20780 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64    /// A standard
20790 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63   SQLite return c
207a0 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode...        //
207b0 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
207c0 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f        SQLiteErro
207d0 72 43 6f 64 65 20 4e 65 78 74 28 0d 0a 20 20 20  rCode Next(..   
207e0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56           SQLiteV
207f0 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f  irtualTableCurso
20800 72 20 63 75 72 73 6f 72 20 2f 2a 20 69 6e 20 2a  r cursor /* in *
20810 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  /..            )
20820 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
20830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20870 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
20880 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
20890 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
208a0 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64  method is called
208b0 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20   in response to 
208c0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
208d0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
208e0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
208f0 78 45 6f 66 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  xEof" /> method.
20900 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
20910 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
20920 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
20930 65 3d 22 63 75 72 73 6f 72 22 3e 0d 0a 20 20 20  e="cursor">..   
20940 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
20950 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69  e cref="SQLiteVi
20960 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72  rtualTableCursor
20970 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
20980 61 6e 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ance..        //
20990 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  / associated wit
209a0 68 20 74 68 65 20 70 72 65 76 69 6f 75 73 6c 79  h the previously
209b0 20 6f 70 65 6e 65 64 20 76 69 72 74 75 61 6c 20   opened virtual 
209c0 74 61 62 6c 65 20 63 75 72 73 6f 72 20 74 6f 20  table cursor to 
209d0 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  be..        /// 
209e0 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  used...        /
209f0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
20a00 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
20a10 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
20a20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 6e 6f 20 6d  Non-zero if no m
20a30 6f 72 65 20 72 6f 77 73 20 61 72 65 20 61 76 61  ore rows are ava
20a40 69 6c 61 62 6c 65 3b 20 7a 65 72 6f 20 6f 74 68  ilable; zero oth
20a50 65 72 77 69 73 65 2e 0d 0a 20 20 20 20 20 20 20  erwise...       
20a60 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
20a70 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 45 6f  .        bool Eo
20a80 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f(..            
20a90 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
20aa0 6c 65 43 75 72 73 6f 72 20 63 75 72 73 6f 72 20  leCursor cursor 
20ab0 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
20ac0 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20        );....    
20ad0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
20ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
20b20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
20b30 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
20b40 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73  / This method is
20b50 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f   called in respo
20b60 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20  nse to the..    
20b70 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
20b80 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
20b90 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 22 20  Module.xColumn" 
20ba0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
20bb0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
20bc0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
20bd0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 75 72  <param name="cur
20be0 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  sor">..        /
20bf0 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
20c00 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  ="SQLiteVirtualT
20c10 61 62 6c 65 43 75 72 73 6f 72 22 20 2f 3e 20 6f  ableCursor" /> o
20c20 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 0d 0a  bject instance..
20c30 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f          /// asso
20c40 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20  ciated with the 
20c50 70 72 65 76 69 6f 75 73 6c 79 20 6f 70 65 6e 65  previously opene
20c60 64 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  d virtual table 
20c70 63 75 72 73 6f 72 20 74 6f 20 62 65 0d 0a 20 20  cursor to be..  
20c80 20 20 20 20 20 20 2f 2f 2f 20 75 73 65 64 2e 0d        /// used..
20c90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
20ca0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
20cb0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
20cc0 63 6f 6e 74 65 78 74 22 3e 0d 0a 20 20 20 20 20  context">..     
20cd0 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
20ce0 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 74  cref="SQLiteCont
20cf0 65 78 74 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  ext" /> object i
20d00 6e 73 74 61 6e 63 65 20 74 6f 20 62 65 20 75 73  nstance to be us
20d10 65 64 20 66 6f 72 0d 0a 20 20 20 20 20 20 20 20  ed for..        
20d20 2f 2f 2f 20 72 65 74 75 72 6e 69 6e 67 20 74 68  /// returning th
20d30 65 20 73 70 65 63 69 66 69 65 64 20 63 6f 6c 75  e specified colu
20d40 6d 6e 20 76 61 6c 75 65 20 74 6f 20 74 68 65 20  mn value to the 
20d50 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
20d60 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary...        //
20d70 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
20d80 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
20d90 61 6d 65 3d 22 69 6e 64 65 78 22 3e 0d 0a 20 20  ame="index">..  
20da0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 7a 65        /// The ze
20db0 72 6f 2d 62 61 73 65 64 20 69 6e 64 65 78 20 63  ro-based index c
20dc0 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20  orresponding to 
20dd0 74 68 65 20 63 6f 6c 75 6d 6e 20 63 6f 6e 74 61  the column conta
20de0 69 6e 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20  ining the..     
20df0 20 20 20 2f 2f 2f 20 76 61 6c 75 65 20 74 6f 20     /// value to 
20e00 62 65 20 72 65 74 75 72 6e 65 64 2e 0d 0a 20 20  be returned...  
20e10 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
20e20 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
20e30 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
20e40 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72     /// A standar
20e50 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20  d SQLite return 
20e60 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  code...        /
20e70 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
20e80 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72         SQLiteErr
20e90 6f 72 43 6f 64 65 20 43 6f 6c 75 6d 6e 28 0d 0a  orCode Column(..
20ea0 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
20eb0 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75  teVirtualTableCu
20ec0 72 73 6f 72 20 63 75 72 73 6f 72 2c 20 2f 2a 20  rsor cursor, /* 
20ed0 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
20ee0 20 20 20 53 51 4c 69 74 65 43 6f 6e 74 65 78 74     SQLiteContext
20ef0 20 63 6f 6e 74 65 78 74 2c 20 20 20 20 20 20 20   context,       
20f00 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20      /* in */..  
20f10 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 6e            int in
20f20 64 65 78 20 20 20 20 20 20 20 20 20 20 20 20 20  dex             
20f30 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e             /* in
20f40 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
20f50 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   );....        /
20f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20fa0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
20fb0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
20fc0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
20fd0 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c  s method is call
20fe0 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74  ed in response t
20ff0 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  o the..        /
21000 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  // <see cref="IS
21010 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
21020 65 2e 78 52 6f 77 49 64 22 20 2f 3e 20 6d 65 74  e.xRowId" /> met
21030 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
21040 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
21050 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
21060 20 6e 61 6d 65 3d 22 63 75 72 73 6f 72 22 3e 0d   name="cursor">.
21070 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
21080 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
21090 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75  teVirtualTableCu
210a0 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20  rsor" /> object 
210b0 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20 20 20  instance..      
210c0 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64    /// associated
210d0 20 77 69 74 68 20 74 68 65 20 70 72 65 76 69 6f   with the previo
210e0 75 73 6c 79 20 6f 70 65 6e 65 64 20 76 69 72 74  usly opened virt
210f0 75 61 6c 20 74 61 62 6c 65 20 63 75 72 73 6f 72  ual table cursor
21100 20 74 6f 20 62 65 0d 0a 20 20 20 20 20 20 20 20   to be..        
21110 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20 20 20 20 20  /// used...     
21120 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
21130 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
21140 72 61 6d 20 6e 61 6d 65 3d 22 72 6f 77 49 64 22  ram name="rowId"
21150 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55  >..        /// U
21160 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69  pon success, thi
21170 73 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74  s parameter must
21180 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20   be modified to 
21190 63 6f 6e 74 61 69 6e 20 74 68 65 20 75 6e 69 71  contain the uniq
211a0 75 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ue..        /// 
211b0 69 6e 74 65 67 65 72 20 72 6f 77 20 69 64 65 6e  integer row iden
211c0 74 69 66 69 65 72 20 66 6f 72 20 74 68 65 20 63  tifier for the c
211d0 75 72 72 65 6e 74 20 72 6f 77 20 66 6f 72 20 74  urrent row for t
211e0 68 65 20 73 70 65 63 69 66 69 65 64 20 63 75 72  he specified cur
211f0 73 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  sor...        //
21200 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
21210 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
21220 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
21230 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
21240 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
21250 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
21260 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53  urns>..        S
21270 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 52  QLiteErrorCode R
21280 6f 77 49 64 28 0d 0a 20 20 20 20 20 20 20 20 20  owId(..         
21290 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c     SQLiteVirtual
212a0 54 61 62 6c 65 43 75 72 73 6f 72 20 63 75 72 73  TableCursor curs
212b0 6f 72 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20  or, /* in */..  
212c0 20 20 20 20 20 20 20 20 20 20 72 65 66 20 6c 6f            ref lo
212d0 6e 67 20 72 6f 77 49 64 20 20 20 20 20 20 20 20  ng rowId        
212e0 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 6f 75             /* ou
212f0 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  t */..          
21300 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    );....        
21310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21350 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
21360 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
21370 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
21380 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c  is method is cal
21390 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20  led in response 
213a0 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
213b0 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
213c0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
213d0 6c 65 2e 78 55 70 64 61 74 65 22 20 2f 3e 20 6d  le.xUpdate" /> m
213e0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
213f0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
21400 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
21410 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e  am name="table">
21420 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
21430 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
21440 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22  iteVirtualTable"
21450 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
21460 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a  nce associated..
21470 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68          /// with
21480 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61   this virtual ta
21490 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
214a0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
214b0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
214c0 61 6d 65 3d 22 76 61 6c 75 65 73 22 3e 0d 0a 20  ame="values">.. 
214d0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61         /// The a
214e0 72 72 61 79 20 6f 66 20 3c 73 65 65 20 63 72 65  rray of <see cre
214f0 66 3d 22 53 51 4c 69 74 65 56 61 6c 75 65 22 20  f="SQLiteValue" 
21500 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
21510 63 65 73 20 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a  ces containing..
21520 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20          /// the 
21530 6e 65 77 20 6f 72 20 6d 6f 64 69 66 69 65 64 20  new or modified 
21540 63 6f 6c 75 6d 6e 20 76 61 6c 75 65 73 2c 20 69  column values, i
21550 66 20 61 6e 79 2e 0d 0a 20 20 20 20 20 20 20 20  f any...        
21560 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
21570 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
21580 20 6e 61 6d 65 3d 22 72 6f 77 49 64 22 3e 0d 0a   name="rowId">..
21590 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e          /// Upon
215a0 20 73 75 63 63 65 73 73 2c 20 74 68 69 73 20 70   success, this p
215b0 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65  arameter must be
215c0 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e   modified to con
215d0 74 61 69 6e 20 74 68 65 20 75 6e 69 71 75 65 0d  tain the unique.
215e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74  .        /// int
215f0 65 67 65 72 20 72 6f 77 20 69 64 65 6e 74 69 66  eger row identif
21600 69 65 72 20 66 6f 72 20 74 68 65 20 72 6f 77 20  ier for the row 
21610 74 68 61 74 20 77 61 73 20 69 6e 73 65 72 74 65  that was inserte
21620 64 2c 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20  d, if any...    
21630 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
21640 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
21650 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
21660 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20   /// A standard 
21670 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f  SQLite return co
21680 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de...        ///
21690 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
216a0 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72       SQLiteError
216b0 43 6f 64 65 20 55 70 64 61 74 65 28 0d 0a 20 20  Code Update(..  
216c0 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
216d0 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62  VirtualTable tab
216e0 6c 65 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20  le, /* in */..  
216f0 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
21700 56 61 6c 75 65 5b 5d 20 76 61 6c 75 65 73 2c 20  Value[] values, 
21710 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20      /* in */..  
21720 20 20 20 20 20 20 20 20 20 20 72 65 66 20 6c 6f            ref lo
21730 6e 67 20 72 6f 77 49 64 20 20 20 20 20 20 20 20  ng rowId        
21740 20 20 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20      /* out */.. 
21750 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d             );...
21760 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
21770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
217a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
217b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
217c0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
217d0 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68     /// This meth
217e0 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20  od is called in 
217f0 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d  response to the.
21800 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
21810 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
21820 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 67  ativeModule.xBeg
21830 69 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  in" /> method...
21840 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
21850 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
21860 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
21870 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20  "table">..      
21880 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
21890 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75  ref="SQLiteVirtu
218a0 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65  alTable" /> obje
218b0 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f  ct instance asso
218c0 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20  ciated..        
218d0 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20 76 69  /// with this vi
218e0 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20  rtual table...  
218f0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
21900 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
21910 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
21920 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72     /// A standar
21930 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20  d SQLite return 
21940 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  code...        /
21950 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
21960 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72         SQLiteErr
21970 6f 72 43 6f 64 65 20 42 65 67 69 6e 28 0d 0a 20  orCode Begin(.. 
21980 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
21990 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61  eVirtualTable ta
219a0 62 6c 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20  ble /* in */..  
219b0 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a            );....
219c0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
219d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
219e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
219f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
21a10 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
21a20 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
21a30 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
21a40 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72  d is called in r
21a50 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a  esponse to the..
21a60 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
21a70 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
21a80 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53 79 6e 63  tiveModule.xSync
21a90 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
21aa0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
21ab0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
21ac0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74  / <param name="t
21ad0 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  able">..        
21ae0 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
21af0 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c  f="SQLiteVirtual
21b00 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74  Table" /> object
21b10 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69   instance associ
21b20 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ated..        //
21b30 2f 20 77 69 74 68 20 74 68 69 73 20 76 69 72 74  / with this virt
21b40 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
21b50 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
21b60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
21b70 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
21b80 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20   /// A standard 
21b90 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f  SQLite return co
21ba0 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de...        ///
21bb0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
21bc0 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72       SQLiteError
21bd0 43 6f 64 65 20 53 79 6e 63 28 0d 0a 20 20 20 20  Code Sync(..    
21be0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69          SQLiteVi
21bf0 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65  rtualTable table
21c00 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
21c10 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20         );....   
21c20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
21c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
21c70 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
21c80 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
21c90 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69  // This method i
21ca0 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70  s called in resp
21cb0 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20  onse to the..   
21cc0 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
21cd0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
21ce0 65 4d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 22  eModule.xCommit"
21cf0 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
21d00 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
21d10 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
21d20 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61   <param name="ta
21d30 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ble">..        /
21d40 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
21d50 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  ="SQLiteVirtualT
21d60 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20  able" /> object 
21d70 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61  instance associa
21d80 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ted..        ///
21d90 20 77 69 74 68 20 74 68 69 73 20 76 69 72 74 75   with this virtu
21da0 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20  al table...     
21db0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
21dc0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
21dd0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
21de0 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53  /// A standard S
21df0 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64  QLite return cod
21e00 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
21e10 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
21e20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43      SQLiteErrorC
21e30 6f 64 65 20 43 6f 6d 6d 69 74 28 0d 0a 20 20 20  ode Commit(..   
21e40 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56           SQLiteV
21e50 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c  irtualTable tabl
21e60 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20  e /* in */..    
21e70 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20          );....  
21e80 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
21e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
21ed0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
21ee0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
21ef0 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20  /// This method 
21f00 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73  is called in res
21f10 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20  ponse to the..  
21f20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
21f30 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
21f40 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61  veModule.xRollba
21f50 63 6b 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  ck" /> method...
21f60 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
21f70 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
21f80 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
21f90 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20  "table">..      
21fa0 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
21fb0 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75  ref="SQLiteVirtu
21fc0 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65  alTable" /> obje
21fd0 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f  ct instance asso
21fe0 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20  ciated..        
21ff0 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20 76 69  /// with this vi
22000 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20  rtual table...  
22010 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
22020 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
22030 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
22040 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72     /// A standar
22050 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20  d SQLite return 
22060 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  code...        /
22070 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
22080 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72         SQLiteErr
22090 6f 72 43 6f 64 65 20 52 6f 6c 6c 62 61 63 6b 28  orCode Rollback(
220a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
220b0 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
220c0 20 74 61 62 6c 65 20 2f 2a 20 69 6e 20 2a 2f 0d   table /* in */.
220d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d  .            );.
220e0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
220f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22130 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
22140 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
22150 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65       /// This me
22160 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69  thod is called i
22170 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68  n response to th
22180 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
22190 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
221a0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46  eNativeModule.xF
221b0 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20  indFunction" /> 
221c0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
221d0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
221e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
221f0 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22  ram name="table"
22200 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
22210 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
22220 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
22230 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
22240 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d  ance associated.
22250 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74  .        /// wit
22260 68 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74  h this virtual t
22270 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  able...        /
22280 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
22290 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
222a0 6e 61 6d 65 3d 22 61 72 67 75 6d 65 6e 74 43 6f  name="argumentCo
222b0 75 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  unt">..        /
222c0 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66  // The number of
222d0 20 61 72 67 75 6d 65 6e 74 73 20 74 6f 20 74 68   arguments to th
222e0 65 20 66 75 6e 63 74 69 6f 6e 20 62 65 69 6e 67  e function being
222f0 20 73 6f 75 67 68 74 2e 0d 0a 20 20 20 20 20 20   sought...      
22300 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
22310 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
22320 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d  am name="name">.
22330 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
22340 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 66 75 6e   name of the fun
22350 63 74 69 6f 6e 20 62 65 69 6e 67 20 73 6f 75 67  ction being soug
22360 68 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ht...        ///
22370 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
22380 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
22390 6d 65 3d 22 66 75 6e 63 74 69 6f 6e 22 3e 0d 0a  me="function">..
223a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e          /// Upon
223b0 20 73 75 63 63 65 73 73 2c 20 74 68 69 73 20 70   success, this p
223c0 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65  arameter must be
223d0 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e   modified to con
223e0 74 61 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20  tain the..      
223f0 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
22400 22 53 51 4c 69 74 65 46 75 6e 63 74 69 6f 6e 22  "SQLiteFunction"
22410 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
22420 6e 63 65 20 72 65 73 70 6f 6e 73 69 62 6c 65 20  nce responsible 
22430 66 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  for..        ///
22440 20 69 6d 70 6c 65 6d 65 6e 74 69 6e 67 20 74 68   implementing th
22450 65 20 73 70 65 63 69 66 69 65 64 20 66 75 6e 63  e specified func
22460 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  tion...        /
22470 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
22480 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
22490 6e 61 6d 65 3d 22 70 43 6c 69 65 6e 74 44 61 74  name="pClientDat
224a0 61 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  a">..        ///
224b0 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74   Upon success, t
224c0 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d 75  his parameter mu
224d0 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74  st be modified t
224e0 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20  o contain the.. 
224f0 20 20 20 20 20 20 20 2f 2f 2f 20 6e 61 74 69 76         /// nativ
22500 65 20 75 73 65 72 2d 64 61 74 61 20 70 6f 69 6e  e user-data poin
22510 74 65 72 20 61 73 73 6f 63 69 61 74 65 64 20 77  ter associated w
22520 69 74 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ith..        ///
22530 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d   <paramref name=
22540 22 66 75 6e 63 74 69 6f 6e 22 20 2f 3e 2e 0d 0a  "function" />...
22550 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
22560 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
22570 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
22580 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
22590 6f 20 69 66 20 74 68 65 20 73 70 65 63 69 66 69  o if the specifi
225a0 65 64 20 66 75 6e 63 74 69 6f 6e 20 77 61 73 20  ed function was 
225b0 66 6f 75 6e 64 3b 20 7a 65 72 6f 20 6f 74 68 65  found; zero othe
225c0 72 77 69 73 65 2e 0d 0a 20 20 20 20 20 20 20 20  rwise...        
225d0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
225e0 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 46 69 6e          bool Fin
225f0 64 46 75 6e 63 74 69 6f 6e 28 0d 0a 20 20 20 20  dFunction(..    
22600 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69          SQLiteVi
22610 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65  rtualTable table
22620 2c 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  ,    /* in */.. 
22630 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 61             int a
22640 72 67 75 6d 65 6e 74 43 6f 75 6e 74 2c 20 20 20  rgumentCount,   
22650 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f          /* in */
22660 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74  ..            st
22670 72 69 6e 67 20 6e 61 6d 65 2c 20 20 20 20 20 20  ring name,      
22680 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e             /* in
22690 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
226a0 20 72 65 66 20 53 51 4c 69 74 65 46 75 6e 63 74   ref SQLiteFunct
226b0 69 6f 6e 20 66 75 6e 63 74 69 6f 6e 2c 20 2f 2a  ion function, /*
226c0 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20   out */..       
226d0 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20       ref IntPtr 
226e0 70 43 6c 69 65 6e 74 44 61 74 61 20 20 20 20 20  pClientData     
226f0 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20    /* out */..   
22700 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20           );.... 
22710 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
22720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
22760 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
22770 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
22780 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64   /// This method
22790 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65   is called in re
227a0 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20  sponse to the.. 
227b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
227c0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
227d0 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d  iveModule.xRenam
227e0 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
227f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
22800 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
22810 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
22820 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20  table">..       
22830 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
22840 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61  ef="SQLiteVirtua
22850 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63  lTable" /> objec
22860 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63  t instance assoc
22870 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f  iated..        /
22880 2f 2f 20 77 69 74 68 20 74 68 69 73 20 76 69 72  // with this vir
22890 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20  tual table...   
228a0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
228b0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
228c0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 65 77 4e  param name="newN
228d0 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ame">..        /
228e0 2f 2f 20 54 68 65 20 6e 65 77 20 6e 61 6d 65 20  // The new name 
228f0 66 6f 72 20 74 68 65 20 76 69 72 74 75 61 6c 20  for the virtual 
22900 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20  table...        
22910 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
22920 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
22930 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
22940 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69   A standard SQLi
22950 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d  te return code..
22960 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
22970 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
22980 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
22990 20 52 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20   Rename(..      
229a0 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74        SQLiteVirt
229b0 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c 20  ualTable table, 
229c0 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
229d0 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e 65 77        string new
229e0 4e 61 6d 65 20 20 20 20 20 20 20 20 20 20 20 20  Name            
229f0 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
22a00 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20        );....    
22a10 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
22a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
22a60 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
22a70 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
22a80 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73  / This method is
22a90 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f   called in respo
22aa0 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20  nse to the..    
22ab0 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
22ac0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
22ad0 4d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e  Module.xSavepoin
22ae0 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  t" /> method... 
22af0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
22b00 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
22b10 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
22b20 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20  table">..       
22b30 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
22b40 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61  ef="SQLiteVirtua
22b50 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63  lTable" /> objec
22b60 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63  t instance assoc
22b70 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f  iated..        /
22b80 2f 2f 20 77 69 74 68 20 74 68 69 73 20 76 69 72  // with this vir
22b90 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20  tual table...   
22ba0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
22bb0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
22bc0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 61 76 65  param name="save
22bd0 70 6f 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20  point">..       
22be0 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 61 6e 20   /// This is an 
22bf0 69 6e 74 65 67 65 72 20 69 64 65 6e 74 69 66 69  integer identifi
22c00 65 72 20 75 6e 64 65 72 20 77 68 69 63 68 20 74  er under which t
22c10 68 65 20 74 68 65 20 63 75 72 72 65 6e 74 20 73  he the current s
22c20 74 61 74 65 20 6f 66 0d 0a 20 20 20 20 20 20 20  tate of..       
22c30 20 2f 2f 2f 20 74 68 65 20 76 69 72 74 75 61 6c   /// the virtual
22c40 20 74 61 62 6c 65 20 73 68 6f 75 6c 64 20 62 65   table should be
22c50 20 73 61 76 65 64 2e 0d 0a 20 20 20 20 20 20 20   saved...       
22c60 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
22c70 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
22c80 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
22c90 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c  / A standard SQL
22ca0 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e  ite return code.
22cb0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
22cc0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
22cd0 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64    SQLiteErrorCod
22ce0 65 20 53 61 76 65 70 6f 69 6e 74 28 0d 0a 20 20  e Savepoint(..  
22cf0 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
22d00 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62  VirtualTable tab
22d10 6c 65 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20  le, /* in */..  
22d20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 73 61            int sa
22d30 76 65 70 6f 69 6e 74 20 20 20 20 20 20 20 20 20  vepoint         
22d40 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20      /* in */..  
22d50 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a            );....
22d60 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
22d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
22db0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
22dc0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
22dd0 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
22de0 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72  d is called in r
22df0 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a  esponse to the..
22e00 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
22e10 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
22e20 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6c 65  tiveModule.xRele
22e30 61 73 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ase" /> method..
22e40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
22e50 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
22e60 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
22e70 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20  ="table">..     
22e80 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
22e90 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74  cref="SQLiteVirt
22ea0 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a  ualTable" /> obj
22eb0 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73  ect instance ass
22ec0 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20  ociated..       
22ed0 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20 76   /// with this v
22ee0 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20  irtual table... 
22ef0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
22f00 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
22f10 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 61   <param name="sa
22f20 76 65 70 6f 69 6e 74 22 3e 0d 0a 20 20 20 20 20  vepoint">..     
22f30 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 61     /// This is a
22f40 6e 20 69 6e 74 65 67 65 72 20 75 73 65 64 20 74  n integer used t
22f50 6f 20 69 6e 64 69 63 61 74 65 20 74 68 61 74 20  o indicate that 
22f60 61 6e 79 20 73 61 76 65 64 20 73 74 61 74 65 73  any saved states
22f70 20 77 69 74 68 20 61 6e 0d 0a 20 20 20 20 20 20   with an..      
22f80 20 20 2f 2f 2f 20 69 64 65 6e 74 69 66 69 65 72    /// identifier
22f90 20 67 72 65 61 74 65 72 20 74 68 61 6e 20 6f 72   greater than or
22fa0 20 65 71 75 61 6c 20 74 6f 20 74 68 69 73 20 73   equal to this s
22fb0 68 6f 75 6c 64 20 62 65 20 64 65 6c 65 74 65 64  hould be deleted
22fc0 20 62 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20   by the..       
22fd0 20 2f 2f 2f 20 76 69 72 74 75 61 6c 20 74 61 62   /// virtual tab
22fe0 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le...        ///
22ff0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
23000 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
23010 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20  ..        /// A 
23020 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20  standard SQLite 
23030 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20  return code...  
23040 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
23050 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51  rns>..        SQ
23060 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 52 65  LiteErrorCode Re
23070 6c 65 61 73 65 28 0d 0a 20 20 20 20 20 20 20 20  lease(..        
23080 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61      SQLiteVirtua
23090 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c 20 2f 2a  lTable table, /*
230a0 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
230b0 20 20 20 20 69 6e 74 20 73 61 76 65 70 6f 69 6e      int savepoin
230c0 74 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a  t             /*
230d0 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
230e0 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20      );....      
230f0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
23100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23130 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
23140 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
23150 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
23160 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63  This method is c
23170 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73  alled in respons
23180 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  e to the..      
23190 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
231a0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
231b0 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f  dule.xRollbackTo
231c0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
231d0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
231e0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
231f0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74  / <param name="t
23200 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  able">..        
23210 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
23220 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c  f="SQLiteVirtual
23230 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74  Table" /> object
23240 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69   instance associ
23250 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ated..        //
23260 2f 20 77 69 74 68 20 74 68 69 73 20 76 69 72 74  / with this virt
23270 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
23280 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
23290 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
232a0 61 72 61 6d 20 6e 61 6d 65 3d 22 73 61 76 65 70  aram name="savep
232b0 6f 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20  oint">..        
232c0 2f 2f 2f 20 54 68 69 73 20 69 73 20 61 6e 20 69  /// This is an i
232d0 6e 74 65 67 65 72 20 69 64 65 6e 74 69 66 69 65  nteger identifie
232e0 72 20 75 73 65 64 20 74 6f 20 73 70 65 63 69 66  r used to specif
232f0 79 20 61 20 73 70 65 63 69 66 69 63 20 73 61 76  y a specific sav
23300 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
23310 73 74 61 74 65 20 66 6f 72 20 74 68 65 20 76 69  state for the vi
23320 72 74 75 61 6c 20 74 61 62 6c 65 20 66 6f 72 20  rtual table for 
23330 69 74 20 74 6f 20 72 65 73 74 6f 72 65 20 69 74  it to restore it
23340 73 65 6c 66 20 62 61 63 6b 20 74 6f 2c 20 77 68  self back to, wh
23350 69 63 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ich..        ///
23360 20 73 68 6f 75 6c 64 20 61 6c 73 6f 20 68 61 76   should also hav
23370 65 20 74 68 65 20 65 66 66 65 63 74 20 6f 66 20  e the effect of 
23380 64 65 6c 65 74 69 6e 67 20 61 6c 6c 20 73 61 76  deleting all sav
23390 65 64 20 73 74 61 74 65 73 20 77 69 74 68 20 61  ed states with a
233a0 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  n..        /// i
233b0 6e 74 65 67 65 72 20 69 64 65 6e 74 69 66 69 65  nteger identifie
233c0 72 20 67 72 65 61 74 65 72 20 74 68 61 6e 20 74  r greater than t
233d0 68 69 73 20 6f 6e 65 2e 0d 0a 20 20 20 20 20 20  his one...      
233e0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
233f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
23400 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
23410 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51  // A standard SQ
23420 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65  Lite return code
23430 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
23440 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
23450 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f     SQLiteErrorCo
23460 64 65 20 52 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a  de RollbackTo(..
23470 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
23480 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74  teVirtualTable t
23490 61 62 6c 65 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a  able, /* in */..
234a0 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
234b0 73 61 76 65 70 6f 69 6e 74 20 20 20 20 20 20 20  savepoint       
234c0 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a        /* in */..
234d0 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a              );..
234e0 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72      }..    #endr
234f0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
23500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23540 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
23550 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 4d 65  #region SQLiteMe
23560 6d 6f 72 79 20 53 74 61 74 69 63 20 43 6c 61 73  mory Static Clas
23570 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  s..    /// <summ
23580 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
23590 69 73 20 63 6c 61 73 73 20 63 6f 6e 74 61 69 6e  is class contain
235a0 73 20 73 74 61 74 69 63 20 6d 65 74 68 6f 64 73  s static methods
235b0 20 74 68 61 74 20 61 72 65 20 75 73 65 64 20 74   that are used t
235c0 6f 20 61 6c 6c 6f 63 61 74 65 2c 0d 0a 20 20 20  o allocate,..   
235d0 20 2f 2f 2f 20 6d 61 6e 69 70 75 6c 61 74 65 2c   /// manipulate,
235e0 20 61 6e 64 20 66 72 65 65 20 6e 61 74 69 76 65   and free native
235f0 20 6d 65 6d 6f 72 79 20 70 72 6f 76 69 64 65 64   memory provided
23600 20 62 79 20 74 68 65 20 53 51 4c 69 74 65 20 63   by the SQLite c
23610 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ore library...  
23620 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
23630 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
23640 74 61 74 69 63 20 63 6c 61 73 73 20 53 51 4c 69  tatic class SQLi
23650 74 65 4d 65 6d 6f 72 79 0d 0a 20 20 20 20 7b 0d  teMemory..    {.
23660 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
23670 20 50 72 69 76 61 74 65 20 44 61 74 61 0d 0a 23   Private Data..#
23680 69 66 20 54 52 41 43 4b 5f 4d 45 4d 4f 52 59 5f  if TRACK_MEMORY_
23690 42 59 54 45 53 0d 0a 20 20 20 20 20 20 20 20 2f  BYTES..        /
236a0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
236b0 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6f        /// This o
236c0 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 69  bject instance i
236d0 73 20 75 73 65 64 20 74 6f 20 73 79 6e 63 68 72  s used to synchr
236e0 6f 6e 69 7a 65 20 61 63 63 65 73 73 20 74 6f 20  onize access to 
236f0 74 68 65 20 6f 74 68 65 72 0d 0a 20 20 20 20 20  the other..     
23700 20 20 20 2f 2f 2f 20 73 74 61 74 69 63 20 66 69     /// static fi
23710 65 6c 64 73 20 6f 66 20 74 68 69 73 20 63 6c 61  elds of this cla
23720 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ss...        ///
23730 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
23740 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
23750 74 69 63 20 6f 62 6a 65 63 74 20 73 79 6e 63 52  tic object syncR
23760 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74  oot = new object
23770 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ();....        /
23780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
237a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
237b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
237c0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
237d0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
237e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
237f0 20 74 6f 74 61 6c 20 6e 75 6d 62 65 72 20 6f 66   total number of
23800 20 6f 75 74 73 74 61 6e 64 69 6e 67 20 6d 65 6d   outstanding mem
23810 6f 72 79 20 62 79 74 65 73 20 61 6c 6c 6f 63 61  ory bytes alloca
23820 74 65 64 20 62 79 20 74 68 69 73 0d 0a 20 20 20  ted by this..   
23830 20 20 20 20 20 2f 2f 2f 20 63 6c 61 73 73 20 75       /// class u
23840 73 69 6e 67 20 74 68 65 20 53 51 4c 69 74 65 20  sing the SQLite 
23850 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20  core library... 
23860 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
23870 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
23880 72 69 76 61 74 65 20 73 74 61 74 69 63 20 69 6e  rivate static in
23890 74 20 62 79 74 65 73 41 6c 6c 6f 63 61 74 65 64  t bytesAllocated
238a0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
238b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
238c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
238d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
238e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
238f0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
23900 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
23910 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d         /// The m
23920 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66  aximum number of
23930 20 6f 75 74 73 74 61 6e 64 69 6e 67 20 6d 65 6d   outstanding mem
23940 6f 72 79 20 62 79 74 65 73 20 65 76 65 72 20 61  ory bytes ever a
23950 6c 6c 6f 63 61 74 65 64 20 62 79 0d 0a 20 20 20  llocated by..   
23960 20 20 20 20 20 2f 2f 2f 20 74 68 69 73 20 63 6c       /// this cl
23970 61 73 73 20 75 73 69 6e 67 20 74 68 65 20 53 51  ass using the SQ
23980 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
23990 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y...        /// 
239a0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
239b0 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
239c0 69 63 20 69 6e 74 20 6d 61 78 69 6d 75 6d 42 79  ic int maximumBy
239d0 74 65 73 41 6c 6c 6f 63 61 74 65 64 3b 0d 0a 23  tesAllocated;..#
239e0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 23  endif..        #
239f0 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
23a00 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
23a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
23a50 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
23a60 4d 65 6d 6f 72 79 20 41 6c 6c 6f 63 61 74 69 6f  Memory Allocatio
23a70 6e 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73  n Helper Methods
23a80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
23a90 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
23aa0 20 2f 2f 2f 20 41 6c 6c 6f 63 61 74 65 73 20 61   /// Allocates a
23ab0 74 20 6c 65 61 73 74 20 74 68 65 20 73 70 65 63  t least the spec
23ac0 69 66 69 65 64 20 6e 75 6d 62 65 72 20 6f 66 20  ified number of 
23ad0 62 79 74 65 73 20 6f 66 20 6e 61 74 69 76 65 20  bytes of native 
23ae0 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20 20 20  memory..        
23af0 2f 2f 2f 20 76 69 61 20 74 68 65 20 53 51 4c 69  /// via the SQLi
23b00 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20  te core library 
23b10 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29  sqlite3_malloc()
23b20 20 66 75 6e 63 74 69 6f 6e 20 61 6e 64 20 72 65   function and re
23b30 74 75 72 6e 73 0d 0a 20 20 20 20 20 20 20 20 2f  turns..        /
23b40 2f 2f 20 74 68 65 20 72 65 73 75 6c 74 69 6e 67  // the resulting
23b50 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 2e   native pointer.
23b60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
23b70 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
23b80 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
23b90 65 3d 22 73 69 7a 65 22 3e 0d 0a 20 20 20 20 20  e="size">..     
23ba0 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65     /// The numbe
23bb0 72 20 6f 66 20 62 79 74 65 73 20 74 6f 20 61 6c  r of bytes to al
23bc0 6c 6f 63 61 74 65 2e 0d 0a 20 20 20 20 20 20 20  locate...       
23bd0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
23be0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
23bf0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
23c00 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69  / The native poi
23c10 6e 74 65 72 20 74 68 61 74 20 70 6f 69 6e 74 73  nter that points
23c20 20 74 6f 20 61 20 62 6c 6f 63 6b 20 6f 66 20 6d   to a block of m
23c30 65 6d 6f 72 79 20 6f 66 20 61 74 20 6c 65 61 73  emory of at leas
23c40 74 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  t the..        /
23c50 2f 2f 20 73 70 65 63 69 66 69 65 64 20 73 69 7a  // specified siz
23c60 65 20 2d 4f 52 2d 20 3c 73 65 65 20 63 72 65 66  e -OR- <see cref
23c70 3d 22 49 6e 74 50 74 72 2e 5a 65 72 6f 22 20 2f  ="IntPtr.Zero" /
23c80 3e 20 69 66 20 74 68 65 20 6d 65 6d 6f 72 79 20  > if the memory 
23c90 63 6f 75 6c 64 0d 0a 20 20 20 20 20 20 20 20 2f  could..        /
23ca0 2f 2f 20 6e 6f 74 20 62 65 20 61 6c 6c 6f 63 61  // not be alloca
23cb0 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ted...        //
23cc0 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
23cd0 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
23ce0 74 69 63 20 49 6e 74 50 74 72 20 41 6c 6c 6f 63  tic IntPtr Alloc
23cf0 61 74 65 28 69 6e 74 20 73 69 7a 65 29 0d 0a 20  ate(int size).. 
23d00 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
23d10 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 4d 65        IntPtr pMe
23d20 6d 6f 72 79 20 3d 20 55 6e 73 61 66 65 4e 61 74  mory = UnsafeNat
23d30 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
23d40 65 33 5f 6d 61 6c 6c 6f 63 28 73 69 7a 65 29 3b  e3_malloc(size);
23d50 0d 0a 0d 0a 23 69 66 20 54 52 41 43 4b 5f 4d 45  ....#if TRACK_ME
23d60 4d 4f 52 59 5f 42 59 54 45 53 0d 0a 20 20 20 20  MORY_BYTES..    
23d70 20 20 20 20 20 20 20 20 69 66 20 28 70 4d 65 6d          if (pMem
23d80 6f 72 79 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  ory != IntPtr.Ze
23d90 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
23da0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
23db0 20 20 20 20 69 6e 74 20 62 6c 6f 63 6b 53 69 7a      int blockSiz
23dc0 65 20 3d 20 53 69 7a 65 28 70 4d 65 6d 6f 72 79  e = Size(pMemory
23dd0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
23de0 20 20 20 20 20 20 69 66 20 28 62 6c 6f 63 6b 53        if (blockS
23df0 69 7a 65 20 3e 20 30 29 0d 0a 20 20 20 20 20 20  ize > 0)..      
23e00 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
23e10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23e20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
23e30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23e40 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
23e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23e60 20 62 79 74 65 73 41 6c 6c 6f 63 61 74 65 64 20   bytesAllocated 
23e70 2b 3d 20 62 6c 6f 63 6b 53 69 7a 65 3b 0d 0a 0d  += blockSize;...
23e80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23e90 20 20 20 20 20 20 20 20 20 69 66 20 28 62 79 74           if (byt
23ea0 65 73 41 6c 6c 6f 63 61 74 65 64 20 3e 20 6d 61  esAllocated > ma
23eb0 78 69 6d 75 6d 42 79 74 65 73 41 6c 6c 6f 63 61  ximumBytesAlloca
23ec0 74 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ted)..          
23ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23ee0 20 20 6d 61 78 69 6d 75 6d 42 79 74 65 73 41 6c    maximumBytesAl
23ef0 6c 6f 63 61 74 65 64 20 3d 20 62 79 74 65 73 41  located = bytesA
23f00 6c 6c 6f 63 61 74 65 64 3b 0d 0a 20 20 20 20 20  llocated;..     
23f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
23f20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23f30 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
23f40 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20   }..#endif....  
23f50 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
23f60 20 70 4d 65 6d 6f 72 79 3b 0d 0a 20 20 20 20 20   pMemory;..     
23f70 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
23f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23fc0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
23fd0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
23fe0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 47 65  ..        /// Ge
23ff0 74 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74  ts and returns t
24000 68 65 20 61 63 74 75 61 6c 20 73 69 7a 65 20 6f  he actual size o
24010 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  f the specified 
24020 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b 20 74 68 61  memory block tha
24030 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77  t..        /// w
24040 61 73 20 70 72 65 76 69 6f 75 73 6c 79 20 6f 62  as previously ob
24050 74 61 69 6e 65 64 20 66 72 6f 6d 20 74 68 65 20  tained from the 
24060 3c 73 65 65 20 63 72 65 66 3d 22 41 6c 6c 6f 63  <see cref="Alloc
24070 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ate" /> method..
24080 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
24090 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
240a0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
240b0 3d 22 70 4d 65 6d 6f 72 79 22 3e 0d 0a 20 20 20  ="pMemory">..   
240c0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
240d0 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  ive pointer to t
240e0 68 65 20 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b 20  he memory block 
240f0 70 72 65 76 69 6f 75 73 6c 79 20 6f 62 74 61 69  previously obtai
24100 6e 65 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20  ned from the..  
24110 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
24120 72 65 66 3d 22 41 6c 6c 6f 63 61 74 65 22 20 2f  ref="Allocate" /
24130 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
24140 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
24150 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
24160 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
24170 2f 2f 2f 20 54 68 65 20 61 63 74 75 61 6c 20 73  /// The actual s
24180 69 7a 65 2c 20 69 6e 20 62 79 74 65 73 2c 20 6f  ize, in bytes, o
24190 66 20 74 68 65 20 6d 65 6d 6f 72 79 20 62 6c 6f  f the memory blo
241a0 63 6b 20 73 70 65 63 69 66 69 65 64 20 76 69 61  ck specified via
241b0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
241c0 2f 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  / native pointer
241d0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
241e0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
241f0 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
24200 20 69 6e 74 20 53 69 7a 65 28 49 6e 74 50 74 72   int Size(IntPtr
24210 20 70 4d 65 6d 6f 72 79 29 0d 0a 20 20 20 20 20   pMemory)..     
24220 20 20 20 7b 0d 0a 23 69 66 20 21 53 51 4c 49 54     {..#if !SQLIT
24230 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20  E_STANDARD..    
24240 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 55          return U
24250 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
24260 64 73 2e 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f  ds.sqlite3_mallo
24270 63 5f 73 69 7a 65 5f 69 6e 74 65 72 6f 70 28 70  c_size_interop(p
24280 4d 65 6d 6f 72 79 29 3b 0d 0a 23 65 6c 69 66 20  Memory);..#elif 
24290 54 52 41 43 4b 5f 4d 45 4d 4f 52 59 5f 42 59 54  TRACK_MEMORY_BYT
242a0 45 53 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ES..            
242b0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
242c0 2f 2f 20 48 41 43 4b 3a 20 4f 6b 2c 20 77 65 20  // HACK: Ok, we 
242d0 63 61 6e 6e 6f 74 20 64 65 74 65 72 6d 69 6e 65  cannot determine
242e0 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65   the size of the
242f0 20 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b 3b 0d 0a   memory block;..
24300 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
24310 20 20 20 20 20 74 68 65 72 65 66 6f 72 65 2c 20       therefore, 
24320 6a 75 73 74 20 74 72 61 63 6b 20 6e 75 6d 62 65  just track numbe
24330 72 20 6f 66 20 61 6c 6c 6f 63 61 74 69 6f 6e 73  r of allocations
24340 20 69 6e 73 74 65 61 64 2e 0d 0a 20 20 20 20 20   instead...     
24350 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
24360 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 70         return (p
24370 4d 65 6d 6f 72 79 20 21 3d 20 49 6e 74 50 74 72  Memory != IntPtr
24380 2e 5a 65 72 6f 29 20 3f 20 31 20 3a 20 30 3b 0d  .Zero) ? 1 : 0;.
24390 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
243a0 20 20 20 20 72 65 74 75 72 6e 20 30 3b 0d 0a 23      return 0;..#
243b0 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d  endif..        }
243c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
243d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
243e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
243f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24410 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
24420 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
24430 20 20 20 20 20 20 2f 2f 2f 20 46 72 65 65 73 20        /// Frees 
24440 61 20 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b 20 70  a memory block p
24450 72 65 76 69 6f 75 73 6c 79 20 6f 62 74 61 69 6e  reviously obtain
24460 65 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20  ed from the..   
24470 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
24480 65 66 3d 22 41 6c 6c 6f 63 61 74 65 22 20 2f 3e  ef="Allocate" />
24490 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
244a0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
244b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
244c0 61 72 61 6d 20 6e 61 6d 65 3d 22 70 4d 65 6d 6f  aram name="pMemo
244d0 72 79 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ry">..        //
244e0 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69  / The native poi
244f0 6e 74 65 72 20 74 6f 20 74 68 65 20 6d 65 6d 6f  nter to the memo
24500 72 79 20 62 6c 6f 63 6b 20 70 72 65 76 69 6f 75  ry block previou
24510 73 6c 79 20 6f 62 74 61 69 6e 65 64 20 66 72 6f  sly obtained fro
24520 6d 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  m the..        /
24530 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 41 6c  // <see cref="Al
24540 6c 6f 63 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f  locate" /> metho
24550 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
24560 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
24570 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
24580 76 6f 69 64 20 46 72 65 65 28 49 6e 74 50 74 72  void Free(IntPtr
24590 20 70 4d 65 6d 6f 72 79 29 0d 0a 20 20 20 20 20   pMemory)..     
245a0 20 20 20 7b 0d 0a 23 69 66 20 54 52 41 43 4b 5f     {..#if TRACK_
245b0 4d 45 4d 4f 52 59 5f 42 59 54 45 53 0d 0a 20 20  MEMORY_BYTES..  
245c0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 4d            if (pM
245d0 65 6d 6f 72 79 20 21 3d 20 49 6e 74 50 74 72 2e  emory != IntPtr.
245e0 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
245f0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
24600 20 20 20 20 20 20 69 6e 74 20 62 6c 6f 63 6b 53        int blockS
24610 69 7a 65 20 3d 20 53 69 7a 65 28 70 4d 65 6d 6f  ize = Size(pMemo
24620 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ry);....        
24630 20 20 20 20 20 20 20 20 69 66 20 28 62 6c 6f 63          if (bloc
24640 6b 53 69 7a 65 20 3e 20 30 29 0d 0a 20 20 20 20  kSize > 0)..    
24650 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
24660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24670 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
24680 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
24690 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
246a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
246b0 20 20 20 62 79 74 65 73 41 6c 6c 6f 63 61 74 65     bytesAllocate
246c0 64 20 2d 3d 20 62 6c 6f 63 6b 53 69 7a 65 3b 0d  d -= blockSize;.
246d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
246e0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
246f0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
24700 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
24710 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
24720 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
24730 6f 64 73 2e 73 71 6c 69 74 65 33 5f 66 72 65 65  ods.sqlite3_free
24740 28 70 4d 65 6d 6f 72 79 29 3b 0d 0a 20 20 20 20  (pMemory);..    
24750 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
24760 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d  endregion..    }
24770 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
24780 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
24790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
247a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
247b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
247c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
247d0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69  ///....    #regi
247e0 6f 6e 20 53 51 4c 69 74 65 53 74 72 69 6e 67 20  on SQLiteString 
247f0 53 74 61 74 69 63 20 43 6c 61 73 73 0d 0a 20 20  Static Class..  
24800 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
24810 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c  .    /// This cl
24820 61 73 73 20 63 6f 6e 74 61 69 6e 73 20 73 74 61  ass contains sta
24830 74 69 63 20 6d 65 74 68 6f 64 73 20 74 68 61 74  tic methods that
24840 20 61 72 65 20 75 73 65 64 20 74 6f 20 64 65 61   are used to dea
24850 6c 20 77 69 74 68 20 6e 61 74 69 76 65 0d 0a 20  l with native.. 
24860 20 20 20 2f 2f 2f 20 55 54 46 2d 38 20 73 74 72     /// UTF-8 str
24870 69 6e 67 20 70 6f 69 6e 74 65 72 73 20 74 6f 20  ing pointers to 
24880 62 65 20 75 73 65 64 20 77 69 74 68 20 74 68 65  be used with the
24890 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62   SQLite core lib
248a0 72 61 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  rary...    /// <
248b0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 69  /summary>..    i
248c0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 63  nternal static c
248d0 6c 61 73 73 20 53 51 4c 69 74 65 53 74 72 69 6e  lass SQLiteStrin
248e0 67 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  g..    {..      
248f0 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74    #region Privat
24900 65 20 43 6f 6e 73 74 61 6e 74 73 0d 0a 20 20 20  e Constants..   
24910 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
24920 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
24930 54 68 69 73 20 69 73 20 74 68 65 20 6d 61 78 69  This is the maxi
24940 6d 75 6d 20 70 6f 73 73 69 62 6c 65 20 6c 65 6e  mum possible len
24950 67 74 68 20 66 6f 72 20 74 68 65 20 6e 61 74 69  gth for the nati
24960 76 65 20 55 54 46 2d 38 20 65 6e 63 6f 64 65 64  ve UTF-8 encoded
24970 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74  ..        /// st
24980 72 69 6e 67 73 20 75 73 65 64 20 77 69 74 68 20  rings used with 
24990 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
249a0 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20  library...      
249b0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
249c0 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
249d0 65 20 73 74 61 74 69 63 20 69 6e 74 20 54 68 69  e static int Thi
249e0 72 74 79 42 69 74 73 20 3d 20 30 78 33 66 66 66  rtyBits = 0x3fff
249f0 66 66 66 66 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ffff;....       
24a00 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
24a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24a40 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
24a50 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
24a60 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
24a70 68 69 73 20 69 73 20 74 68 65 20 3c 73 65 65 20  his is the <see 
24a80 63 72 65 66 3d 22 45 6e 63 6f 64 69 6e 67 22 20  cref="Encoding" 
24a90 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
24aa0 63 65 20 75 73 65 64 20 74 6f 20 68 61 6e 64 6c  ce used to handl
24ab0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  e..        /// c
24ac0 6f 6e 76 65 72 73 69 6f 6e 73 20 66 72 6f 6d 2f  onversions from/
24ad0 74 6f 20 55 54 46 2d 38 2e 0d 0a 20 20 20 20 20  to UTF-8...     
24ae0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
24af0 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
24b00 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e  te static readon
24b10 6c 79 20 45 6e 63 6f 64 69 6e 67 20 55 74 66 38  ly Encoding Utf8
24b20 45 6e 63 6f 64 69 6e 67 20 3d 20 45 6e 63 6f 64  Encoding = Encod
24b30 69 6e 67 2e 55 54 46 38 3b 0d 0a 20 20 20 20 20  ing.UTF8;..     
24b40 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
24b50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
24b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24ba0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
24bb0 69 6f 6e 20 55 54 46 2d 38 20 45 6e 63 6f 64 69  ion UTF-8 Encodi
24bc0 6e 67 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64  ng Helper Method
24bd0 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
24be0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
24bf0 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 74    /// Converts t
24c00 68 65 20 73 70 65 63 69 66 69 65 64 20 6d 61 6e  he specified man
24c10 61 67 65 64 20 73 74 72 69 6e 67 20 69 6e 74 6f  aged string into
24c20 20 74 68 65 20 55 54 46 2d 38 20 65 6e 63 6f 64   the UTF-8 encod
24c30 69 6e 67 20 61 6e 64 0d 0a 20 20 20 20 20 20 20  ing and..       
24c40 20 2f 2f 2f 20 72 65 74 75 72 6e 73 20 74 68 65   /// returns the
24c50 20 61 72 72 61 79 20 6f 66 20 62 79 74 65 73 20   array of bytes 
24c60 63 6f 6e 74 61 69 6e 69 6e 67 20 69 74 73 20 72  containing its r
24c70 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 69 6e  epresentation in
24c80 20 74 68 61 74 0d 0a 20 20 20 20 20 20 20 20 2f   that..        /
24c90 2f 2f 20 65 6e 63 6f 64 69 6e 67 2e 0d 0a 20 20  // encoding...  
24ca0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
24cb0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
24cc0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76  / <param name="v
24cd0 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  alue">..        
24ce0 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20  /// The managed 
24cf0 73 74 72 69 6e 67 20 74 6f 20 63 6f 6e 76 65 72  string to conver
24d00 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  t...        /// 
24d10 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
24d20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
24d30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
24d40 20 61 72 72 61 79 20 6f 66 20 62 79 74 65 73 20   array of bytes 
24d50 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 72  containing the r
24d60 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66  epresentation of
24d70 20 74 68 65 20 6d 61 6e 61 67 65 64 0d 0a 20 20   the managed..  
24d80 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 69 6e 67        /// string
24d90 20 69 6e 20 74 68 65 20 55 54 46 2d 38 20 65 6e   in the UTF-8 en
24da0 63 6f 64 69 6e 67 20 6f 72 20 6e 75 6c 6c 20 75  coding or null u
24db0 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20  pon failure...  
24dc0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
24dd0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  rns>..        pu
24de0 62 6c 69 63 20 73 74 61 74 69 63 20 62 79 74 65  blic static byte
24df0 5b 5d 20 47 65 74 55 74 66 38 42 79 74 65 73 46  [] GetUtf8BytesF
24e00 72 6f 6d 53 74 72 69 6e 67 28 0d 0a 20 20 20 20  romString(..    
24e10 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 76          string v
24e20 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20  alue..          
24e30 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
24e40 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
24e50 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  value == null)..
24e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24e70 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a  return null;....
24e80 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
24e90 72 6e 20 55 74 66 38 45 6e 63 6f 64 69 6e 67 2e  rn Utf8Encoding.
24ea0 47 65 74 42 79 74 65 73 28 76 61 6c 75 65 29 3b  GetBytes(value);
24eb0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
24ec0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
24ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
24f10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
24f20 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
24f30 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 74 68   /// Converts th
24f40 65 20 73 70 65 63 69 66 69 65 64 20 61 72 72 61  e specified arra
24f50 79 20 6f 66 20 62 79 74 65 73 20 72 65 70 72 65  y of bytes repre
24f60 73 65 6e 74 69 6e 67 20 61 20 73 74 72 69 6e 67  senting a string
24f70 20 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20   in the..       
24f80 20 2f 2f 2f 20 55 54 46 2d 38 20 65 6e 63 6f 64   /// UTF-8 encod
24f90 69 6e 67 20 61 6e 64 20 72 65 74 75 72 6e 73 20  ing and returns 
24fa0 61 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67  a managed string
24fb0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
24fc0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
24fd0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
24fe0 6d 65 3d 22 62 79 74 65 73 22 3e 0d 0a 20 20 20  me="bytes">..   
24ff0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 72 72       /// The arr
25000 61 79 20 6f 66 20 62 79 74 65 73 20 74 6f 20 63  ay of bytes to c
25010 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 20  onvert...       
25020 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
25030 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
25040 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
25050 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20 73 74  / The managed st
25060 72 69 6e 67 20 6f 72 20 6e 75 6c 6c 20 75 70 6f  ring or null upo
25070 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20  n failure...    
25080 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
25090 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  s>..        publ
250a0 69 63 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  ic static string
250b0 20 47 65 74 53 74 72 69 6e 67 46 72 6f 6d 55 74   GetStringFromUt
250c0 66 38 42 79 74 65 73 28 0d 0a 20 20 20 20 20 20  f8Bytes(..      
250d0 20 20 20 20 20 20 62 79 74 65 5b 5d 20 62 79 74        byte[] byt
250e0 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  es..            
250f0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
25100 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 79            if (by
25110 74 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  tes == null)..  
25120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
25130 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 23 69  turn null;....#i
25140 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
25150 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
25160 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
25170 20 55 74 66 38 45 6e 63 6f 64 69 6e 67 2e 47 65   Utf8Encoding.Ge
25180 74 53 74 72 69 6e 67 28 62 79 74 65 73 29 3b 0d  tString(bytes);.
25190 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
251a0 20 20 20 20 72 65 74 75 72 6e 20 55 74 66 38 45      return Utf8E
251b0 6e 63 6f 64 69 6e 67 2e 47 65 74 53 74 72 69 6e  ncoding.GetStrin
251c0 67 28 62 79 74 65 73 2c 20 30 2c 20 62 79 74 65  g(bytes, 0, byte
251d0 73 2e 4c 65 6e 67 74 68 29 3b 0d 0a 23 65 6e 64  s.Length);..#end
251e0 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  if..        }.. 
251f0 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
25200 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
25210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25250 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
25260 23 72 65 67 69 6f 6e 20 55 54 46 2d 38 20 53 74  #region UTF-8 St
25270 72 69 6e 67 20 48 65 6c 70 65 72 20 4d 65 74 68  ring Helper Meth
25280 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ods..        ///
25290 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
252a0 20 20 20 20 2f 2f 2f 20 50 72 6f 62 65 73 20 61      /// Probes a
252b0 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
252c0 74 6f 20 61 20 73 74 72 69 6e 67 20 69 6e 20 74  to a string in t
252d0 68 65 20 55 54 46 2d 38 20 65 6e 63 6f 64 69 6e  he UTF-8 encodin
252e0 67 20 66 6f 72 20 69 74 73 0d 0a 20 20 20 20 20  g for its..     
252f0 20 20 20 2f 2f 2f 20 74 65 72 6d 69 6e 61 74 69     /// terminati
25300 6e 67 20 4e 55 4c 20 63 68 61 72 61 63 74 65 72  ng NUL character
25310 2c 20 77 69 74 68 69 6e 20 74 68 65 20 73 70 65  , within the spe
25320 63 69 66 69 65 64 20 6c 65 6e 67 74 68 20 6c 69  cified length li
25330 6d 69 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  mit...        //
25340 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
25350 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
25360 20 6e 61 6d 65 3d 22 70 56 61 6c 75 65 22 3e 0d   name="pValue">.
25370 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
25380 20 6e 61 74 69 76 65 20 4e 55 4c 2d 74 65 72 6d   native NUL-term
25390 69 6e 61 74 65 64 20 73 74 72 69 6e 67 20 70 6f  inated string po
253a0 69 6e 74 65 72 2e 0d 0a 20 20 20 20 20 20 20 20  inter...        
253b0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
253c0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
253d0 20 6e 61 6d 65 3d 22 6c 69 6d 69 74 22 3e 0d 0a   name="limit">..
253e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
253f0 6d 61 78 69 6d 75 6d 20 6c 65 6e 67 74 68 20 6f  maximum length o
25400 66 20 74 68 65 20 6e 61 74 69 76 65 20 73 74 72  f the native str
25410 69 6e 67 2c 20 69 6e 20 62 79 74 65 73 2e 0d 0a  ing, in bytes...
25420 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
25430 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
25440 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
25450 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6c 65 6e       /// The len
25460 67 74 68 20 6f 66 20 74 68 65 20 6e 61 74 69 76  gth of the nativ
25470 65 20 73 74 72 69 6e 67 2c 20 69 6e 20 62 79 74  e string, in byt
25480 65 73 20 2d 4f 52 2d 20 7a 65 72 6f 20 69 66 20  es -OR- zero if 
25490 74 68 65 20 6c 65 6e 67 74 68 0d 0a 20 20 20 20  the length..    
254a0 20 20 20 20 2f 2f 2f 20 63 6f 75 6c 64 20 6e 6f      /// could no
254b0 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e  t be determined.
254c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
254d0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
254e0 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
254f0 69 6e 74 20 50 72 6f 62 65 46 6f 72 55 74 66 38  int ProbeForUtf8
25500 42 79 74 65 4c 65 6e 67 74 68 28 0d 0a 20 20 20  ByteLength(..   
25510 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
25520 70 56 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20 20  pValue,..       
25530 20 20 20 20 20 69 6e 74 20 6c 69 6d 69 74 0d 0a       int limit..
25540 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
25550 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
25560 20 20 20 20 20 20 69 6e 74 20 6c 65 6e 67 74 68        int length
25570 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20   = 0;....       
25580 20 20 20 20 20 69 66 20 28 28 70 56 61 6c 75 65       if ((pValue
25590 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
255a0 20 26 26 20 28 6c 69 6d 69 74 20 3e 20 30 29 29   && (limit > 0))
255b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
255c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
255d0 20 64 6f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   do..           
255e0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
255f0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
25600 4d 61 72 73 68 61 6c 2e 52 65 61 64 42 79 74 65  Marshal.ReadByte
25610 28 70 56 61 6c 75 65 2c 20 6c 65 6e 67 74 68 29  (pValue, length)
25620 20 3d 3d 20 30 29 0d 0a 20 20 20 20 20 20 20 20   == 0)..        
25630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25640 62 72 65 61 6b 3b 0d 0a 0d 0a 20 20 20 20 20 20  break;....      
25650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
25660 20 28 6c 65 6e 67 74 68 20 3e 3d 20 6c 69 6d 69   (length >= limi
25670 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
25680 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61              brea
25690 6b 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  k;....          
256a0 20 20 20 20 20 20 20 20 20 20 6c 65 6e 67 74 68            length
256b0 2b 2b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ++;..           
256c0 20 20 20 20 20 7d 20 77 68 69 6c 65 20 28 74 72       } while (tr
256d0 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ue);..          
256e0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
256f0 20 20 20 72 65 74 75 72 6e 20 6c 65 6e 67 74 68     return length
25700 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
25710 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
25720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
25760 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
25770 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
25780 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 74    /// Converts t
25790 68 65 20 73 70 65 63 69 66 69 65 64 20 6e 61 74  he specified nat
257a0 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69 6e 61 74  ive NUL-terminat
257b0 65 64 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20  ed UTF-8 string 
257c0 70 6f 69 6e 74 65 72 0d 0a 20 20 20 20 20 20 20  pointer..       
257d0 20 2f 2f 2f 20 69 6e 74 6f 20 61 20 6d 61 6e 61   /// into a mana
257e0 67 65 64 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20  ged string...   
257f0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
25800 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
25810 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
25820 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  alue">..        
25830 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 4e  /// The native N
25840 55 4c 2d 74 65 72 6d 69 6e 61 74 65 64 20 55 54  UL-terminated UT
25850 46 2d 38 20 73 74 72 69 6e 67 20 70 6f 69 6e 74  F-8 string point
25860 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  er...        ///
25870 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
25880 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
25890 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
258a0 65 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67  e managed string
258b0 20 6f 72 20 6e 75 6c 6c 20 75 70 6f 6e 20 66 61   or null upon fa
258c0 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  ilure...        
258d0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
258e0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
258f0 74 61 74 69 63 20 73 74 72 69 6e 67 20 53 74 72  tatic string Str
25900 69 6e 67 46 72 6f 6d 55 74 66 38 49 6e 74 50 74  ingFromUtf8IntPt
25910 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
25920 49 6e 74 50 74 72 20 70 56 61 6c 75 65 0d 0a 20  IntPtr pValue.. 
25930 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
25940 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
25950 20 20 20 20 20 72 65 74 75 72 6e 20 53 74 72 69       return Stri
25960 6e 67 46 72 6f 6d 55 74 66 38 49 6e 74 50 74 72  ngFromUtf8IntPtr
25970 28 70 56 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20  (pValue,..      
25980 20 20 20 20 20 20 20 20 20 20 50 72 6f 62 65 46            ProbeF
25990 6f 72 55 74 66 38 42 79 74 65 4c 65 6e 67 74 68  orUtf8ByteLength
259a0 28 70 56 61 6c 75 65 2c 20 54 68 69 72 74 79 42  (pValue, ThirtyB
259b0 69 74 73 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  its));..        
259c0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
259d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
259e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
259f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25a10 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
25a20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
25a30 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65         /// Conve
25a40 72 74 73 20 74 68 65 20 73 70 65 63 69 66 69 65  rts the specifie
25a50 64 20 6e 61 74 69 76 65 20 55 54 46 2d 38 20 73  d native UTF-8 s
25a60 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 20 6f 66  tring pointer of
25a70 20 74 68 65 20 73 70 65 63 69 66 69 65 64 0d 0a   the specified..
25a80 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 65 6e 67          /// leng
25a90 74 68 20 69 6e 74 6f 20 61 20 6d 61 6e 61 67 65  th into a manage
25aa0 64 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 20  d string...     
25ab0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
25ac0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
25ad0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 61 6c  param name="pVal
25ae0 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ue">..        //
25af0 2f 20 54 68 65 20 6e 61 74 69 76 65 20 55 54 46  / The native UTF
25b00 2d 38 20 73 74 72 69 6e 67 20 70 6f 69 6e 74 65  -8 string pointe
25b10 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
25b20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
25b30 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
25b40 65 3d 22 6c 65 6e 67 74 68 22 3e 0d 0a 20 20 20  e="length">..   
25b50 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6c 65 6e       /// The len
25b60 67 74 68 20 6f 66 20 74 68 65 20 6e 61 74 69 76  gth of the nativ
25b70 65 20 73 74 72 69 6e 67 2c 20 69 6e 20 62 79 74  e string, in byt
25b80 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  es...        ///
25b90 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
25ba0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
25bb0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
25bc0 65 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67  e managed string
25bd0 20 6f 72 20 6e 75 6c 6c 20 75 70 6f 6e 20 66 61   or null upon fa
25be0 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  ilure...        
25bf0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
25c00 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
25c10 74 61 74 69 63 20 73 74 72 69 6e 67 20 53 74 72  tatic string Str
25c20 69 6e 67 46 72 6f 6d 55 74 66 38 49 6e 74 50 74  ingFromUtf8IntPt
25c30 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
25c40 49 6e 74 50 74 72 20 70 56 61 6c 75 65 2c 0d 0a  IntPtr pValue,..
25c50 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
25c60 6c 65 6e 67 74 68 0d 0a 20 20 20 20 20 20 20 20  length..        
25c70 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
25c80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
25c90 20 28 70 56 61 6c 75 65 20 3d 3d 20 49 6e 74 50   (pValue == IntP
25ca0 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
25cb0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
25cc0 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20   null;....      
25cd0 20 20 20 20 20 20 69 66 20 28 6c 65 6e 67 74 68        if (length
25ce0 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20   > 0)..         
25cf0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
25d00 20 20 20 20 20 20 62 79 74 65 5b 5d 20 62 79 74        byte[] byt
25d10 65 73 20 3d 20 6e 65 77 20 62 79 74 65 5b 6c 65  es = new byte[le
25d20 6e 67 74 68 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20  ngth];....      
25d30 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61            Marsha
25d40 6c 2e 43 6f 70 79 28 70 56 61 6c 75 65 2c 20 62  l.Copy(pValue, b
25d50 79 74 65 73 2c 20 30 2c 20 6c 65 6e 67 74 68 29  ytes, 0, length)
25d60 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
25d70 20 20 20 20 20 72 65 74 75 72 6e 20 47 65 74 53       return GetS
25d80 74 72 69 6e 67 46 72 6f 6d 55 74 66 38 42 79 74  tringFromUtf8Byt
25d90 65 73 28 62 79 74 65 73 29 3b 0d 0a 20 20 20 20  es(bytes);..    
25da0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
25db0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
25dc0 53 74 72 69 6e 67 2e 45 6d 70 74 79 3b 0d 0a 20  String.Empty;.. 
25dd0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
25de0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
25df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
25e30 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
25e40 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
25e50 2f 20 43 6f 6e 76 65 72 74 73 20 74 68 65 20 73  / Converts the s
25e60 70 65 63 69 66 69 65 64 20 6d 61 6e 61 67 65 64  pecified managed
25e70 20 73 74 72 69 6e 67 20 69 6e 74 6f 20 61 20 6e   string into a n
25e80 61 74 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69 6e  ative NUL-termin
25e90 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ated..        //
25ea0 2f 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20 70  / UTF-8 string p
25eb0 6f 69 6e 74 65 72 20 75 73 69 6e 67 20 6d 65 6d  ointer using mem
25ec0 6f 72 79 20 6f 62 74 61 69 6e 65 64 20 66 72 6f  ory obtained fro
25ed0 6d 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  m the SQLite cor
25ee0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c  e..        /// l
25ef0 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20  ibrary...       
25f00 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
25f10 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
25f20 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22  ram name="value"
25f30 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
25f40 68 65 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e  he managed strin
25f50 67 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20  g to convert... 
25f60 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
25f70 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
25f80 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
25f90 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
25fa0 76 65 20 4e 55 4c 2d 74 65 72 6d 69 6e 61 74 65  ve NUL-terminate
25fb0 64 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20 70  d UTF-8 string p
25fc0 6f 69 6e 74 65 72 20 6f 72 0d 0a 20 20 20 20 20  ointer or..     
25fd0 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
25fe0 3d 22 49 6e 74 50 74 72 2e 5a 65 72 6f 22 20 2f  ="IntPtr.Zero" /
25ff0 3e 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d  > upon failure..
26000 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
26010 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
26020 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 49   public static I
26030 6e 74 50 74 72 20 55 74 66 38 49 6e 74 50 74 72  ntPtr Utf8IntPtr
26040 46 72 6f 6d 53 74 72 69 6e 67 28 0d 0a 20 20 20  FromString(..   
26050 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
26060 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20  value..         
26070 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
26080 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
26090 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d  (value == null).
260a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
260b0 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a   return IntPtr.Z
260c0 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ero;....        
260d0 20 20 20 20 49 6e 74 50 74 72 20 72 65 73 75 6c      IntPtr resul
260e0 74 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  t = IntPtr.Zero;
260f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 79  ..            by
26100 74 65 5b 5d 20 62 79 74 65 73 20 3d 20 47 65 74  te[] bytes = Get
26110 55 74 66 38 42 79 74 65 73 46 72 6f 6d 53 74 72  Utf8BytesFromStr
26120 69 6e 67 28 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20  ing(value);.... 
26130 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62             if (b
26140 79 74 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  ytes == null).. 
26150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
26160 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72  eturn IntPtr.Zer
26170 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  o;....          
26180 20 20 69 6e 74 20 6c 65 6e 67 74 68 20 3d 20 62    int length = b
26190 79 74 65 73 2e 4c 65 6e 67 74 68 3b 0d 0a 0d 0a  ytes.Length;....
261a0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75              resu
261b0 6c 74 20 3d 20 53 51 4c 69 74 65 4d 65 6d 6f 72  lt = SQLiteMemor
261c0 79 2e 41 6c 6c 6f 63 61 74 65 28 6c 65 6e 67 74  y.Allocate(lengt
261d0 68 20 2b 20 31 29 3b 0d 0a 0d 0a 20 20 20 20 20  h + 1);....     
261e0 20 20 20 20 20 20 20 69 66 20 28 72 65 73 75 6c         if (resul
261f0 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  t == IntPtr.Zero
26200 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
26210 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72     return IntPtr
26220 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20  .Zero;....      
26230 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 43 6f        Marshal.Co
26240 70 79 28 62 79 74 65 73 2c 20 30 2c 20 72 65 73  py(bytes, 0, res
26250 75 6c 74 2c 20 6c 65 6e 67 74 68 29 3b 0d 0a 20  ult, length);.. 
26260 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68             Marsh
26270 61 6c 2e 57 72 69 74 65 42 79 74 65 28 72 65 73  al.WriteByte(res
26280 75 6c 74 2c 20 6c 65 6e 67 74 68 2c 20 30 29 3b  ult, length, 0);
26290 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
262a0 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a  return result;..
262b0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
262c0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
262d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
262e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
262f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26320 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
26330 69 6f 6e 20 55 54 46 2d 38 20 53 74 72 69 6e 67  ion UTF-8 String
26340 20 41 72 72 61 79 20 48 65 6c 70 65 72 20 4d 65   Array Helper Me
26350 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f  thods..        /
26360 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
26370 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72        /// Conver
26380 74 73 20 61 20 6c 6f 67 69 63 61 6c 20 61 72 72  ts a logical arr
26390 61 79 20 6f 66 20 6e 61 74 69 76 65 20 4e 55 4c  ay of native NUL
263a0 2d 74 65 72 6d 69 6e 61 74 65 64 20 55 54 46 2d  -terminated UTF-
263b0 38 20 73 74 72 69 6e 67 0d 0a 20 20 20 20 20 20  8 string..      
263c0 20 20 2f 2f 2f 20 70 6f 69 6e 74 65 72 73 20 69    /// pointers i
263d0 6e 74 6f 20 61 6e 20 61 72 72 61 79 20 6f 66 20  nto an array of 
263e0 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67 73 2e  managed strings.
263f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
26400 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
26410 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
26420 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20 20 20 20  e="argc">..     
26430 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65     /// The numbe
26440 72 20 6f 66 20 65 6c 65 6d 65 6e 74 73 20 69 6e  r of elements in
26450 20 74 68 65 20 6c 6f 67 69 63 61 6c 20 61 72 72   the logical arr
26460 61 79 20 6f 66 20 6e 61 74 69 76 65 0d 0a 20 20  ay of native..  
26470 20 20 20 20 20 20 2f 2f 2f 20 4e 55 4c 2d 74 65        /// NUL-te
26480 72 6d 69 6e 61 74 65 64 20 55 54 46 2d 38 20 73  rminated UTF-8 s
26490 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 73 2e 0d  tring pointers..
264a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
264b0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
264c0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
264d0 61 72 67 76 22 3e 0d 0a 20 20 20 20 20 20 20 20  argv">..        
264e0 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70  /// The native p
264f0 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 6c 6f  ointer to the lo
26500 67 69 63 61 6c 20 61 72 72 61 79 20 6f 66 20 6e  gical array of n
26510 61 74 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69 6e  ative NUL-termin
26520 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ated..        //
26530 2f 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20 70  / UTF-8 string p
26540 6f 69 6e 74 65 72 73 20 74 6f 20 63 6f 6e 76 65  ointers to conve
26550 72 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  rt...        ///
26560 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
26570 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
26580 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
26590 65 20 61 72 72 61 79 20 6f 66 20 6d 61 6e 61 67  e array of manag
265a0 65 64 20 73 74 72 69 6e 67 73 20 6f 72 20 6e 75  ed strings or nu
265b0 6c 6c 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e  ll upon failure.
265c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
265d0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
265e0 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
265f0 73 74 72 69 6e 67 5b 5d 20 53 74 72 69 6e 67 41  string[] StringA
26600 72 72 61 79 46 72 6f 6d 55 74 66 38 53 69 7a 65  rrayFromUtf8Size
26610 41 6e 64 49 6e 74 50 74 72 28 0d 0a 20 20 20 20  AndIntPtr(..    
26620 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63          int argc
26630 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  ,..            I
26640 6e 74 50 74 72 20 61 72 67 76 0d 0a 20 20 20 20  ntPtr argv..    
26650 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
26660 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
26670 20 20 69 66 20 28 61 72 67 63 20 3c 20 30 29 0d    if (argc < 0).
26680 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26690 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d   return null;...
266a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
266b0 28 61 72 67 76 20 3d 3d 20 49 6e 74 50 74 72 2e  (argv == IntPtr.
266c0 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
266d0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
266e0 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ll;....         
266f0 20 20 20 73 74 72 69 6e 67 5b 5d 20 72 65 73 75     string[] resu
26700 6c 74 20 3d 20 6e 65 77 20 73 74 72 69 6e 67 5b  lt = new string[
26710 61 72 67 63 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20  argc];....      
26720 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74 20 69        for (int i
26730 6e 64 65 78 20 3d 20 30 2c 20 6f 66 66 73 65 74  ndex = 0, offset
26740 20 3d 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 20   = 0;..         
26750 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 65 78             index
26760 20 3c 20 72 65 73 75 6c 74 2e 4c 65 6e 67 74 68   < result.Length
26770 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
26780 20 20 20 20 20 20 20 69 6e 64 65 78 2b 2b 2c 20         index++, 
26790 6f 66 66 73 65 74 20 2b 3d 20 49 6e 74 50 74 72  offset += IntPtr
267a0 2e 53 69 7a 65 29 0d 0a 20 20 20 20 20 20 20 20  .Size)..        
267b0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
267c0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 41         IntPtr pA
267d0 72 67 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  rg = SQLiteMarsh
267e0 61 6c 2e 52 65 61 64 49 6e 74 50 74 72 28 61 72  al.ReadIntPtr(ar
267f0 67 76 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a  gv, offset);....
26800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26810 72 65 73 75 6c 74 5b 69 6e 64 65 78 5d 20 3d 20  result[index] = 
26820 28 70 41 72 67 20 21 3d 20 49 6e 74 50 74 72 2e  (pArg != IntPtr.
26830 5a 65 72 6f 29 20 3f 0d 0a 20 20 20 20 20 20 20  Zero) ?..       
26840 20 20 20 20 20 20 20 20 20 20 20 20 20 53 74 72               Str
26850 69 6e 67 46 72 6f 6d 55 74 66 38 49 6e 74 50 74  ingFromUtf8IntPt
26860 72 28 70 41 72 67 29 20 3a 20 6e 75 6c 6c 3b 0d  r(pArg) : null;.
26870 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
26880 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
26890 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20  turn result;..  
268a0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
268b0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
268c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
268d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
268e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
268f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
26900 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
26910 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
26920 20 43 6f 6e 76 65 72 74 73 20 61 6e 20 61 72 72   Converts an arr
26930 61 79 20 6f 66 20 6d 61 6e 61 67 65 64 20 73 74  ay of managed st
26940 72 69 6e 67 73 20 69 6e 74 6f 20 61 6e 20 61 72  rings into an ar
26950 72 61 79 20 6f 66 20 6e 61 74 69 76 65 0d 0a 20  ray of native.. 
26960 20 20 20 20 20 20 20 2f 2f 2f 20 4e 55 4c 2d 74         /// NUL-t
26970 65 72 6d 69 6e 61 74 65 64 20 55 54 46 2d 38 20  erminated UTF-8 
26980 73 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 73 2e  string pointers.
26990 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
269a0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
269b0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
269c0 65 3d 22 76 61 6c 75 65 73 22 3e 0d 0a 20 20 20  e="values">..   
269d0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 72 72       /// The arr
269e0 61 79 20 6f 66 20 6d 61 6e 61 67 65 64 20 73 74  ay of managed st
269f0 72 69 6e 67 73 20 74 6f 20 63 6f 6e 76 65 72 74  rings to convert
26a00 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
26a10 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
26a20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
26a30 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
26a40 61 72 72 61 79 20 6f 66 20 6e 61 74 69 76 65 20  array of native 
26a50 4e 55 4c 2d 74 65 72 6d 69 6e 61 74 65 64 20 55  NUL-terminated U
26a60 54 46 2d 38 20 73 74 72 69 6e 67 20 70 6f 69 6e  TF-8 string poin
26a70 74 65 72 73 20 6f 72 20 6e 75 6c 6c 0d 0a 20 20  ters or null..  
26a80 20 20 20 20 20 20 2f 2f 2f 20 75 70 6f 6e 20 66        /// upon f
26a90 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ailure...       
26aa0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
26ab0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
26ac0 73 74 61 74 69 63 20 49 6e 74 50 74 72 5b 5d 20  static IntPtr[] 
26ad0 55 74 66 38 49 6e 74 50 74 72 41 72 72 61 79 46  Utf8IntPtrArrayF
26ae0 72 6f 6d 53 74 72 69 6e 67 41 72 72 61 79 28 0d  romStringArray(.
26af0 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72  .            str
26b00 69 6e 67 5b 5d 20 76 61 6c 75 65 73 0d 0a 20 20  ing[] values..  
26b10 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
26b20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
26b30 20 20 20 20 69 66 20 28 76 61 6c 75 65 73 20 3d      if (values =
26b40 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
26b50 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
26b60 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
26b70 20 20 20 20 20 49 6e 74 50 74 72 5b 5d 20 72 65       IntPtr[] re
26b80 73 75 6c 74 20 3d 20 6e 65 77 20 49 6e 74 50 74  sult = new IntPt
26b90 72 5b 76 61 6c 75 65 73 2e 4c 65 6e 67 74 68 5d  r[values.Length]
26ba0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
26bb0 20 66 6f 72 20 28 69 6e 74 20 69 6e 64 65 78 20   for (int index 
26bc0 3d 20 30 3b 20 69 6e 64 65 78 20 3c 20 72 65 73  = 0; index < res
26bd0 75 6c 74 2e 4c 65 6e 67 74 68 3b 20 69 6e 64 65  ult.Length; inde
26be0 78 2b 2b 29 0d 0a 20 20 20 20 20 20 20 20 20 20  x++)..          
26bf0 20 20 20 20 20 20 72 65 73 75 6c 74 5b 69 6e 64        result[ind
26c00 65 78 5d 20 3d 20 55 74 66 38 49 6e 74 50 74 72  ex] = Utf8IntPtr
26c10 46 72 6f 6d 53 74 72 69 6e 67 28 76 61 6c 75 65  FromString(value
26c20 73 5b 69 6e 64 65 78 5d 29 3b 0d 0a 0d 0a 20 20  s[index]);....  
26c30 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
26c40 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20   result;..      
26c50 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
26c60 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a  dregion..    }..
26c70 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
26c80 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
26c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26cd0 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
26ce0 20 53 51 4c 69 74 65 42 79 74 65 73 20 53 74 61   SQLiteBytes Sta
26cf0 74 69 63 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f  tic Class..    /
26d00 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
26d10 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73    /// This class
26d20 20 63 6f 6e 74 61 69 6e 73 20 73 74 61 74 69 63   contains static
26d30 20 6d 65 74 68 6f 64 73 20 74 68 61 74 20 61 72   methods that ar
26d40 65 20 75 73 65 64 20 74 6f 20 64 65 61 6c 20 77  e used to deal w
26d50 69 74 68 20 6e 61 74 69 76 65 0d 0a 20 20 20 20  ith native..    
26d60 2f 2f 2f 20 70 6f 69 6e 74 65 72 73 20 74 6f 20  /// pointers to 
26d70 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b 73 20 74 68  memory blocks th
26d80 61 74 20 6c 6f 67 69 63 61 6c 6c 79 20 63 6f 6e  at logically con
26d90 74 61 69 6e 20 61 72 72 61 79 73 20 6f 66 20 62  tain arrays of b
26da0 79 74 65 73 20 74 6f 20 62 65 0d 0a 20 20 20 20  ytes to be..    
26db0 2f 2f 2f 20 75 73 65 64 20 77 69 74 68 20 74 68  /// used with th
26dc0 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69  e SQLite core li
26dd0 62 72 61 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20  brary...    /// 
26de0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
26df0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
26e00 63 6c 61 73 73 20 53 51 4c 69 74 65 42 79 74 65  class SQLiteByte
26e10 73 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  s..    {..      
26e20 20 20 23 72 65 67 69 6f 6e 20 42 79 74 65 20 41    #region Byte A
26e30 72 72 61 79 20 48 65 6c 70 65 72 20 4d 65 74 68  rray Helper Meth
26e40 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ods..        ///
26e50 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
26e60 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73      /// Converts
26e70 20 61 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65   a native pointe
26e80 72 20 74 6f 20 61 20 6c 6f 67 69 63 61 6c 20 61  r to a logical a
26e90 72 72 61 79 20 6f 66 20 62 79 74 65 73 20 6f 66  rray of bytes of
26ea0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
26eb0 2f 20 73 70 65 63 69 66 69 65 64 20 6c 65 6e 67  / specified leng
26ec0 74 68 20 69 6e 74 6f 20 61 20 6d 61 6e 61 67 65  th into a manage
26ed0 64 20 62 79 74 65 20 61 72 72 61 79 2e 0d 0a 20  d byte array... 
26ee0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
26ef0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
26f00 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
26f10 70 56 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20  pValue">..      
26f20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
26f30 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
26f40 6c 6f 67 69 63 61 6c 20 61 72 72 61 79 20 6f 66  logical array of
26f50 20 62 79 74 65 73 20 74 6f 20 63 6f 6e 76 65 72   bytes to conver
26f60 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  t...        /// 
26f70 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
26f80 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
26f90 65 3d 22 6c 65 6e 67 74 68 22 3e 0d 0a 20 20 20  e="length">..   
26fa0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6c 65 6e       /// The len
26fb0 67 74 68 2c 20 69 6e 20 62 79 74 65 73 2c 20 6f  gth, in bytes, o
26fc0 66 20 74 68 65 20 6c 6f 67 69 63 61 6c 20 61 72  f the logical ar
26fd0 72 61 79 20 6f 66 20 62 79 74 65 73 20 74 6f 20  ray of bytes to 
26fe0 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20  convert...      
26ff0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
27000 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
27010 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
27020 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20 62  // The managed b
27030 79 74 65 20 61 72 72 61 79 20 6f 72 20 6e 75 6c  yte array or nul
27040 6c 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d  l upon failure..
27050 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
27060 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
27070 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 62   public static b
27080 79 74 65 5b 5d 20 46 72 6f 6d 49 6e 74 50 74 72  yte[] FromIntPtr
27090 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  (..            I
270a0 6e 74 50 74 72 20 70 56 61 6c 75 65 2c 0d 0a 20  ntPtr pValue,.. 
270b0 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6c             int l
270c0 65 6e 67 74 68 0d 0a 20 20 20 20 20 20 20 20 20  ength..         
270d0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
270e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
270f0 28 70 56 61 6c 75 65 20 3d 3d 20 49 6e 74 50 74  (pValue == IntPt
27100 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
27110 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
27120 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
27130 20 20 20 20 20 69 66 20 28 6c 65 6e 67 74 68 20       if (length 
27140 3d 3d 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20  == 0)..         
27150 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65         return ne
27160 77 20 62 79 74 65 5b 30 5d 3b 0d 0a 0d 0a 20 20  w byte[0];....  
27170 20 20 20 20 20 20 20 20 20 20 62 79 74 65 5b 5d            byte[]
27180 20 72 65 73 75 6c 74 20 3d 20 6e 65 77 20 62 79   result = new by
27190 74 65 5b 6c 65 6e 67 74 68 5d 3b 0d 0a 0d 0a 20  te[length];.... 
271a0 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68             Marsh
271b0 61 6c 2e 43 6f 70 79 28 70 56 61 6c 75 65 2c 20  al.Copy(pValue, 
271c0 72 65 73 75 6c 74 2c 20 30 2c 20 6c 65 6e 67 74  result, 0, lengt
271d0 68 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  h);....         
271e0 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74     return result
271f0 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
27200 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
27210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
27250 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
27260 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
27270 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61    /// Converts a
27280 20 6d 61 6e 61 67 65 64 20 62 79 74 65 20 61 72   managed byte ar
27290 72 61 79 20 69 6e 74 6f 20 61 20 6e 61 74 69 76  ray into a nativ
272a0 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6c  e pointer to a l
272b0 6f 67 69 63 61 6c 0d 0a 20 20 20 20 20 20 20 20  ogical..        
272c0 2f 2f 2f 20 61 72 72 61 79 20 6f 66 20 62 79 74  /// array of byt
272d0 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  es...        ///
272e0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
272f0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
27300 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20  name="value">.. 
27310 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d         /// The m
27320 61 6e 61 67 65 64 20 62 79 74 65 20 61 72 72 61  anaged byte arra
27330 79 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20  y to convert... 
27340 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
27350 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
27360 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
27370 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
27380 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20  ve pointer to a 
27390 6c 6f 67 69 63 61 6c 20 62 79 74 65 20 61 72 72  logical byte arr
273a0 61 79 20 6f 72 20 6e 75 6c 6c 20 75 70 6f 6e 20  ay or null upon 
273b0 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20  failure...      
273c0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
273d0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
273e0 20 73 74 61 74 69 63 20 49 6e 74 50 74 72 20 54   static IntPtr T
273f0 6f 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20  oIntPtr(..      
27400 20 20 20 20 20 20 62 79 74 65 5b 5d 20 76 61 6c        byte[] val
27410 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ue..            
27420 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
27430 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61            if (va
27440 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  lue == null)..  
27450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
27460 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f  turn IntPtr.Zero
27470 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
27480 20 69 6e 74 20 6c 65 6e 67 74 68 20 3d 20 76 61   int length = va
27490 6c 75 65 2e 4c 65 6e 67 74 68 3b 0d 0a 0d 0a 20  lue.Length;.... 
274a0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c             if (l
274b0 65 6e 67 74 68 20 3d 3d 20 30 29 0d 0a 20 20 20  ength == 0)..   
274c0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
274d0 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  urn IntPtr.Zero;
274e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
274f0 49 6e 74 50 74 72 20 72 65 73 75 6c 74 20 3d 20  IntPtr result = 
27500 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 41 6c 6c  SQLiteMemory.All
27510 6f 63 61 74 65 28 6c 65 6e 67 74 68 29 3b 0d 0a  ocate(length);..
27520 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
27530 20 28 72 65 73 75 6c 74 20 3d 3d 20 49 6e 74 50   (result == IntP
27540 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
27550 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
27560 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d   IntPtr.Zero;...
27570 0a 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72  .            Mar
27580 73 68 61 6c 2e 43 6f 70 79 28 76 61 6c 75 65 2c  shal.Copy(value,
27590 20 30 2c 20 72 65 73 75 6c 74 2c 20 6c 65 6e 67   0, result, leng
275a0 74 68 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  th);....        
275b0 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c      return resul
275c0 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  t;..        }.. 
275d0 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
275e0 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65  n..    }..    #e
275f0 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
27600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
27650 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74     #region SQLit
27660 65 4d 61 72 73 68 61 6c 20 53 74 61 74 69 63 20  eMarshal Static 
27670 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c  Class..    /// <
27680 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
27690 2f 20 54 68 69 73 20 63 6c 61 73 73 20 63 6f 6e  / This class con
276a0 74 61 69 6e 73 20 73 74 61 74 69 63 20 6d 65 74  tains static met
276b0 68 6f 64 73 20 74 68 61 74 20 61 72 65 20 75 73  hods that are us
276c0 65 64 20 74 6f 20 70 65 72 66 6f 72 6d 20 73 65  ed to perform se
276d0 76 65 72 61 6c 0d 0a 20 20 20 20 2f 2f 2f 20 6c  veral..    /// l
276e0 6f 77 2d 6c 65 76 65 6c 20 64 61 74 61 20 6d 61  ow-level data ma
276f0 72 73 68 61 6c 6c 69 6e 67 20 74 61 73 6b 73 20  rshalling tasks 
27700 62 65 74 77 65 65 6e 20 6e 61 74 69 76 65 20 61  between native a
27710 6e 64 20 6d 61 6e 61 67 65 64 20 63 6f 64 65 2e  nd managed code.
27720 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
27730 61 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ary>..    intern
27740 61 6c 20 73 74 61 74 69 63 20 63 6c 61 73 73 20  al static class 
27750 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 0d 0a 20  SQLiteMarshal.. 
27760 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72     {..        #r
27770 65 67 69 6f 6e 20 49 6e 74 50 74 72 20 48 65 6c  egion IntPtr Hel
27780 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20  per Methods..   
27790 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
277a0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
277b0 52 65 74 75 72 6e 73 20 61 20 6e 65 77 20 3c 73  Returns a new <s
277c0 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22  ee cref="IntPtr"
277d0 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
277e0 6e 63 65 20 62 61 73 65 64 20 6f 6e 20 74 68 65  nce based on the
277f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 70  ..        /// sp
27800 65 63 69 66 69 65 64 20 3c 73 65 65 20 63 72 65  ecified <see cre
27810 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62  f="IntPtr" /> ob
27820 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 6e  ject instance an
27830 64 20 61 6e 20 69 6e 74 65 67 65 72 0d 0a 20 20  d an integer..  
27840 20 20 20 20 20 20 2f 2f 2f 20 6f 66 66 73 65 74        /// offset
27850 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
27860 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
27870 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
27880 6d 65 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20  me="pointer">.. 
27890 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
278a0 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72  see cref="IntPtr
278b0 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
278c0 61 6e 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e  ance representin
278d0 67 20 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20  g the base..    
278e0 20 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c      /// memory l
278f0 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ocation...      
27900 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
27910 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
27920 61 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22  am name="offset"
27930 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
27940 68 65 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65  he integer offse
27950 74 20 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20  t from the base 
27960 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20  memory location 
27970 74 68 61 74 20 74 68 65 20 6e 65 77 0d 0a 20 20  that the new..  
27980 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
27990 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20  ref="IntPtr" /> 
279a0 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
279b0 73 68 6f 75 6c 64 20 70 6f 69 6e 74 20 74 6f 2e  should point to.
279c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
279d0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
279e0 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
279f0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
27a00 65 77 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  ew <see cref="In
27a10 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20  tPtr" /> object 
27a20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20  instance...     
27a30 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
27a40 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
27a50 63 20 73 74 61 74 69 63 20 49 6e 74 50 74 72 20  c static IntPtr 
27a60 49 6e 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28  IntPtrForOffset(
27a70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
27a80 74 50 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a 20  tPtr pointer,.. 
27a90 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f             int o
27aa0 66 66 73 65 74 0d 0a 20 20 20 20 20 20 20 20 20  ffset..         
27ab0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
27ac0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
27ad0 75 72 6e 20 6e 65 77 20 49 6e 74 50 74 72 28 70  urn new IntPtr(p
27ae0 6f 69 6e 74 65 72 2e 54 6f 49 6e 74 36 34 28 29  ointer.ToInt64()
27af0 20 2b 20 6f 66 66 73 65 74 29 3b 0d 0a 20 20 20   + offset);..   
27b00 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
27b10 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
27b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
27b60 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
27b70 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
27b80 52 6f 75 6e 64 73 20 75 70 20 61 6e 20 69 6e 74  Rounds up an int
27b90 65 67 65 72 20 73 69 7a 65 20 74 6f 20 74 68 65  eger size to the
27ba0 20 6e 65 78 74 20 6d 75 6c 74 69 70 6c 65 20 6f   next multiple o
27bb0 66 20 74 68 65 20 61 6c 69 67 6e 6d 65 6e 74 2e  f the alignment.
27bc0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
27bd0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
27be0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
27bf0 65 3d 22 73 69 7a 65 22 3e 0d 0a 20 20 20 20 20  e="size">..     
27c00 20 20 20 2f 2f 2f 20 54 68 65 20 73 69 7a 65 2c     /// The size,
27c10 20 69 6e 20 62 79 74 65 73 2c 20 74 6f 20 62 65   in bytes, to be
27c20 20 72 6f 75 6e 64 65 64 20 75 70 2e 0d 0a 20 20   rounded up...  
27c30 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
27c40 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
27c50 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 6c 69  <param name="ali
27c60 67 6e 6d 65 6e 74 22 3e 0d 0a 20 20 20 20 20 20  gnment">..      
27c70 20 20 2f 2f 2f 20 54 68 65 20 72 65 71 75 69 72    /// The requir
27c80 65 64 20 61 6c 69 67 6e 6d 65 6e 74 20 66 6f 72  ed alignment for
27c90 20 74 68 65 20 72 65 74 75 72 6e 20 76 61 6c 75   the return valu
27ca0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
27cb0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
27cc0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
27cd0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
27ce0 20 73 69 7a 65 2c 20 69 6e 20 62 79 74 65 73 2c   size, in bytes,
27cf0 20 72 6f 75 6e 64 65 64 20 75 70 20 74 6f 20 74   rounded up to t
27d00 68 65 20 6e 65 78 74 20 6d 75 6c 74 69 70 6c 65  he next multiple
27d10 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20 20 20   of the..       
27d20 20 2f 2f 2f 20 61 6c 69 67 6e 6d 65 6e 74 2e 20   /// alignment. 
27d30 20 54 68 69 73 20 76 61 6c 75 65 20 6d 61 79 20   This value may 
27d40 65 6e 64 20 75 70 20 62 65 69 6e 67 20 74 68 65  end up being the
27d50 20 73 61 6d 65 20 61 73 20 74 68 65 20 6f 72 69   same as the ori
27d60 67 69 6e 61 6c 0d 0a 20 20 20 20 20 20 20 20 2f  ginal..        /
27d70 2f 2f 20 73 69 7a 65 2e 0d 0a 20 20 20 20 20 20  // size...      
27d80 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
27d90 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
27da0 20 73 74 61 74 69 63 20 69 6e 74 20 52 6f 75 6e   static int Roun
27db0 64 55 70 28 0d 0a 20 20 20 20 20 20 20 20 20 20  dUp(..          
27dc0 20 20 69 6e 74 20 73 69 7a 65 2c 0d 0a 20 20 20    int size,..   
27dd0 20 20 20 20 20 20 20 20 20 69 6e 74 20 61 6c 69           int ali
27de0 67 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20 20  gnment..        
27df0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
27e00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
27e10 74 20 61 6c 69 67 6e 6d 65 6e 74 4d 69 6e 75 73  t alignmentMinus
27e20 4f 6e 65 20 3d 20 61 6c 69 67 6e 6d 65 6e 74 20  One = alignment 
27e30 2d 20 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  - 1;..          
27e40 20 20 72 65 74 75 72 6e 20 28 28 73 69 7a 65 20    return ((size 
27e50 2b 20 61 6c 69 67 6e 6d 65 6e 74 4d 69 6e 75 73  + alignmentMinus
27e60 4f 6e 65 29 20 26 20 7e 61 6c 69 67 6e 6d 65 6e  One) & ~alignmen
27e70 74 4d 69 6e 75 73 4f 6e 65 29 3b 0d 0a 20 20 20  tMinusOne);..   
27e80 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
27e90 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
27ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
27ee0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
27ef0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
27f00 44 65 74 65 72 6d 69 6e 65 73 20 74 68 65 20 6f  Determines the o
27f10 66 66 73 65 74 2c 20 69 6e 20 62 79 74 65 73 2c  ffset, in bytes,
27f20 20 6f 66 20 74 68 65 20 6e 65 78 74 20 73 74 72   of the next str
27f30 75 63 74 75 72 65 20 6d 65 6d 62 65 72 2e 0d 0a  ucture member...
27f40 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
27f50 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
27f60 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
27f70 22 6f 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20  "offset">..     
27f80 20 20 20 2f 2f 2f 20 54 68 65 20 6f 66 66 73 65     /// The offse
27f90 74 2c 20 69 6e 20 62 79 74 65 73 2c 20 6f 66 20  t, in bytes, of 
27fa0 74 68 65 20 63 75 72 72 65 6e 74 20 73 74 72 75  the current stru
27fb0 63 74 75 72 65 20 6d 65 6d 62 65 72 2e 0d 0a 20  cture member... 
27fc0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
27fd0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
27fe0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 69   <param name="si
27ff0 7a 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ze">..        //
28000 2f 20 54 68 65 20 73 69 7a 65 2c 20 69 6e 20 62  / The size, in b
28010 79 74 65 73 2c 20 6f 66 20 74 68 65 20 63 75 72  ytes, of the cur
28020 72 65 6e 74 20 73 74 72 75 63 74 75 72 65 20 6d  rent structure m
28030 65 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20 20 20  ember...        
28040 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
28050 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
28060 20 6e 61 6d 65 3d 22 61 6c 69 67 6e 6d 65 6e 74   name="alignment
28070 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
28080 54 68 65 20 61 6c 69 67 6e 6d 65 6e 74 2c 20 69  The alignment, i
28090 6e 20 62 79 74 65 73 2c 20 6f 66 20 74 68 65 20  n bytes, of the 
280a0 6e 65 78 74 20 73 74 72 75 63 74 75 72 65 20 6d  next structure m
280b0 65 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20 20 20  ember...        
280c0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
280d0 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
280e0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
280f0 20 54 68 65 20 6f 66 66 73 65 74 2c 20 69 6e 20   The offset, in 
28100 62 79 74 65 73 2c 20 6f 66 20 74 68 65 20 6e 65  bytes, of the ne
28110 78 74 20 73 74 72 75 63 74 75 72 65 20 6d 65 6d  xt structure mem
28120 62 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ber...        //
28130 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
28140 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
28150 74 69 63 20 69 6e 74 20 4e 65 78 74 4f 66 66 73  tic int NextOffs
28160 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20  etOf(..         
28170 20 20 20 69 6e 74 20 6f 66 66 73 65 74 2c 0d 0a     int offset,..
28180 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
28190 73 69 7a 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  size,..         
281a0 20 20 20 69 6e 74 20 61 6c 69 67 6e 6d 65 6e 74     int alignment
281b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
281c0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
281d0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 52          return R
281e0 6f 75 6e 64 55 70 28 6f 66 66 73 65 74 20 2b 20  oundUp(offset + 
281f0 73 69 7a 65 2c 20 61 6c 69 67 6e 6d 65 6e 74 29  size, alignment)
28200 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
28210 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
28220 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
28230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28270 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
28280 72 65 67 69 6f 6e 20 4d 61 72 73 68 61 6c 20 52  region Marshal R
28290 65 61 64 20 48 65 6c 70 65 72 20 4d 65 74 68 6f  ead Helper Metho
282a0 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
282b0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
282c0 20 20 20 2f 2f 2f 20 52 65 61 64 73 20 61 20 3c     /// Reads a <
282d0 73 65 65 20 63 72 65 66 3d 22 49 6e 74 33 32 22  see cref="Int32"
282e0 20 2f 3e 20 76 61 6c 75 65 20 66 72 6f 6d 20 74   /> value from t
282f0 68 65 20 73 70 65 63 69 66 69 65 64 20 6d 65 6d  he specified mem
28300 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ory..        ///
28310 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20   location...    
28320 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
28330 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
28340 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69  <param name="poi
28350 6e 74 65 72 22 3e 0d 0a 20 20 20 20 20 20 20 20  nter">..        
28360 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
28370 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62  f="IntPtr" /> ob
28380 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 72 65  ject instance re
28390 70 72 65 73 65 6e 74 69 6e 67 20 74 68 65 20 62  presenting the b
283a0 61 73 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ase..        ///
283b0 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e   memory location
283c0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
283d0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
283e0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
283f0 3d 22 6f 66 66 73 65 74 22 3e 0d 0a 20 20 20 20  ="offset">..    
28400 20 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65      /// The inte
28410 67 65 72 20 6f 66 66 73 65 74 20 66 72 6f 6d 20  ger offset from 
28420 74 68 65 20 62 61 73 65 20 6d 65 6d 6f 72 79 20  the base memory 
28430 6c 6f 63 61 74 69 6f 6e 20 77 68 65 72 65 20 74  location where t
28440 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
28450 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 33 32  <see cref="Int32
28460 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 62 65  " /> value to be
28470 20 72 65 61 64 20 69 73 20 6c 6f 63 61 74 65 64   read is located
28480 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
28490 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
284a0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
284b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
284c0 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 33 32  <see cref="Int32
284d0 22 20 2f 3e 20 76 61 6c 75 65 20 61 74 20 74 68  " /> value at th
284e0 65 20 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f  e specified memo
284f0 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20  ry location...  
28500 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
28510 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  rns>..        pu
28520 62 6c 69 63 20 73 74 61 74 69 63 20 69 6e 74 20  blic static int 
28530 52 65 61 64 49 6e 74 33 32 28 0d 0a 20 20 20 20  ReadInt32(..    
28540 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
28550 6f 69 6e 74 65 72 2c 0d 0a 20 20 20 20 20 20 20  ointer,..       
28560 20 20 20 20 20 69 6e 74 20 6f 66 66 73 65 74 0d       int offset.
28570 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
28580 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
28590 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
285a0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
285b0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 61         return Ma
285c0 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 33 32 28  rshal.ReadInt32(
285d0 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29  pointer, offset)
285e0 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
285f0 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 61 72        return Mar
28600 73 68 61 6c 2e 52 65 61 64 49 6e 74 33 32 28 49  shal.ReadInt32(I
28610 6e 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28 70  ntPtrForOffset(p
28620 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 29  ointer, offset))
28630 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
28640 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
28650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28690 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
286a0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
286b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65  ..        /// Re
286c0 61 64 73 20 61 20 3c 73 65 65 20 63 72 65 66 3d  ads a <see cref=
286d0 22 44 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75  "Double" /> valu
286e0 65 20 66 72 6f 6d 20 74 68 65 20 73 70 65 63 69  e from the speci
286f0 66 69 65 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20  fied memory..   
28700 20 20 20 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f       /// locatio
28710 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  n...        /// 
28720 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
28730 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
28740 61 6d 65 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a  ame="pointer">..
28750 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
28760 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74  <see cref="IntPt
28770 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  r" /> object ins
28780 74 61 6e 63 65 20 72 65 70 72 65 73 65 6e 74 69  tance representi
28790 6e 67 20 74 68 65 20 62 61 73 65 0d 0a 20 20 20  ng the base..   
287a0 20 20 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20       /// memory 
287b0 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  location...     
287c0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
287d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
287e0 72 61 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74  ram name="offset
287f0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
28800 54 68 65 20 69 6e 74 65 67 65 72 20 6f 66 66 73  The integer offs
28810 65 74 20 66 72 6f 6d 20 74 68 65 20 62 61 73 65  et from the base
28820 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e   memory location
28830 20 77 68 65 72 65 20 74 68 65 0d 0a 20 20 20 20   where the..    
28840 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
28850 66 3d 22 44 6f 75 62 6c 65 22 20 2f 3e 20 74 6f  f="Double" /> to
28860 20 62 65 20 72 65 61 64 20 69 73 20 6c 6f 63 61   be read is loca
28870 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ted...        //
28880 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
28890 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
288a0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
288b0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 44 6f  he <see cref="Do
288c0 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65 20 61  uble" /> value a
288d0 74 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  t the specified 
288e0 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e  memory location.
288f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
28900 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
28910 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
28920 64 6f 75 62 6c 65 20 52 65 61 64 44 6f 75 62 6c  double ReadDoubl
28930 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
28940 49 6e 74 50 74 72 20 70 6f 69 6e 74 65 72 2c 0d  IntPtr pointer,.
28950 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
28960 20 6f 66 66 73 65 74 0d 0a 20 20 20 20 20 20 20   offset..       
28970 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
28980 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  {..#if !PLATFORM
28990 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
289a0 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  K..            r
289b0 65 74 75 72 6e 20 42 69 74 43 6f 6e 76 65 72 74  eturn BitConvert
289c0 65 72 2e 49 6e 74 36 34 42 69 74 73 54 6f 44 6f  er.Int64BitsToDo
289d0 75 62 6c 65 28 4d 61 72 73 68 61 6c 2e 52 65 61  uble(Marshal.Rea
289e0 64 49 6e 74 36 34 28 0d 0a 20 20 20 20 20 20 20  dInt64(..       
289f0 20 20 20 20 20 20 20 20 20 70 6f 69 6e 74 65 72           pointer
28a00 2c 20 6f 66 66 73 65 74 29 29 3b 0d 0a 23 65 6c  , offset));..#el
28a10 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
28a20 72 65 74 75 72 6e 20 42 69 74 43 6f 6e 76 65 72  return BitConver
28a30 74 65 72 2e 54 6f 44 6f 75 62 6c 65 28 42 69 74  ter.ToDouble(Bit
28a40 43 6f 6e 76 65 72 74 65 72 2e 47 65 74 42 79 74  Converter.GetByt
28a50 65 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  es(..           
28a60 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 52 65 61       Marshal.Rea
28a70 64 49 6e 74 36 34 28 49 6e 74 50 74 72 46 6f 72  dInt64(IntPtrFor
28a80 4f 66 66 73 65 74 28 70 6f 69 6e 74 65 72 2c 20  Offset(pointer, 
28a90 6f 66 66 73 65 74 29 29 29 2c 20 30 29 3b 0d 0a  offset))), 0);..
28aa0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
28ab0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
28ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28b00 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
28b10 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
28b20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65 61 64 73         /// Reads
28b30 20 61 6e 20 3c 73 65 65 20 63 72 65 66 3d 22 49   an <see cref="I
28b40 6e 74 50 74 72 22 20 2f 3e 20 76 61 6c 75 65 20  ntPtr" /> value 
28b50 66 72 6f 6d 20 74 68 65 20 73 70 65 63 69 66 69  from the specifi
28b60 65 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20  ed memory..     
28b70 20 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e     /// location.
28b80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
28b90 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
28ba0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
28bb0 65 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20  e="pointer">..  
28bc0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
28bd0 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22  ee cref="IntPtr"
28be0 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
28bf0 6e 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e 67  nce representing
28c00 20 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20   the base..     
28c10 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f     /// memory lo
28c20 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  cation...       
28c30 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
28c40 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
28c50 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e  m name="offset">
28c60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
28c70 65 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65 74  e integer offset
28c80 20 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20 6d   from the base m
28c90 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77  emory location w
28ca0 68 65 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20  here the..      
28cb0 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
28cc0 22 49 6e 74 50 74 72 22 20 2f 3e 20 76 61 6c 75  "IntPtr" /> valu
28cd0 65 20 74 6f 20 62 65 20 72 65 61 64 20 69 73 20  e to be read is 
28ce0 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20 20 20  located...      
28cf0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
28d00 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
28d10 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
28d20 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
28d30 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20 76 61 6c  ="IntPtr" /> val
28d40 75 65 20 61 74 20 74 68 65 20 73 70 65 63 69 66  ue at the specif
28d50 69 65 64 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74  ied memory locat
28d60 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ion...        //
28d70 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
28d80 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
28d90 74 69 63 20 49 6e 74 50 74 72 20 52 65 61 64 49  tic IntPtr ReadI
28da0 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20  ntPtr(..        
28db0 20 20 20 20 49 6e 74 50 74 72 20 70 6f 69 6e 74      IntPtr point
28dc0 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  er,..           
28dd0 20 69 6e 74 20 6f 66 66 73 65 74 0d 0a 20 20 20   int offset..   
28de0 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
28df0 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54      {..#if !PLAT
28e00 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
28e10 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
28e20 20 20 20 72 65 74 75 72 6e 20 4d 61 72 73 68 61     return Marsha
28e30 6c 2e 52 65 61 64 49 6e 74 50 74 72 28 70 6f 69  l.ReadIntPtr(poi
28e40 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 3b 0d 0a  nter, offset);..
28e50 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
28e60 20 20 20 72 65 74 75 72 6e 20 4d 61 72 73 68 61     return Marsha
28e70 6c 2e 52 65 61 64 49 6e 74 50 74 72 28 49 6e 74  l.ReadIntPtr(Int
28e80 50 74 72 46 6f 72 4f 66 66 73 65 74 28 70 6f 69  PtrForOffset(poi
28e90 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 29 3b 0d  nter, offset));.
28ea0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
28eb0 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
28ec0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
28ed0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
28ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
28f20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 4d 61 72       #region Mar
28f30 73 68 61 6c 20 57 72 69 74 65 20 48 65 6c 70 65  shal Write Helpe
28f40 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20  r Methods..     
28f50 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
28f60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 57 72  ..        /// Wr
28f70 69 74 65 73 20 61 6e 20 3c 73 65 65 20 63 72 65  ites an <see cre
28f80 66 3d 22 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c  f="Int32" /> val
28f90 75 65 20 74 6f 20 74 68 65 20 73 70 65 63 69 66  ue to the specif
28fa0 69 65 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20  ied memory..    
28fb0 20 20 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e      /// location
28fc0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
28fd0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
28fe0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
28ff0 6d 65 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20  me="pointer">.. 
29000 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
29010 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72  see cref="IntPtr
29020 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
29030 61 6e 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e  ance representin
29040 67 20 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20  g the base..    
29050 20 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c      /// memory l
29060 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ocation...      
29070 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
29080 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
29090 61 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22  am name="offset"
290a0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
290b0 68 65 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65  he integer offse
290c0 74 20 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20  t from the base 
290d0 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20  memory location 
290e0 77 68 65 72 65 20 74 68 65 0d 0a 20 20 20 20 20  where the..     
290f0 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
29100 3d 22 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75  ="Int32" /> valu
29110 65 20 74 6f 20 62 65 20 77 72 69 74 74 65 6e 20  e to be written 
29120 69 73 20 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20  is located...   
29130 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
29140 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
29150 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75  param name="valu
29160 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
29170 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
29180 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75 65 20  Int32" /> value 
29190 74 6f 20 77 72 69 74 65 2e 0d 0a 20 20 20 20 20  to write...     
291a0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
291b0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
291c0 73 74 61 74 69 63 20 76 6f 69 64 20 57 72 69 74  static void Writ
291d0 65 49 6e 74 33 32 28 0d 0a 20 20 20 20 20 20 20  eInt32(..       
291e0 20 20 20 20 20 49 6e 74 50 74 72 20 70 6f 69 6e       IntPtr poin
291f0 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ter,..          
29200 20 20 69 6e 74 20 6f 66 66 73 65 74 2c 0d 0a 20    int offset,.. 
29210 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 76             int v
29220 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20  alue..          
29230 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
29240 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
29250 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
29260 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73              Mars
29270 68 61 6c 2e 57 72 69 74 65 49 6e 74 33 32 28 70  hal.WriteInt32(p
29280 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 2c 20  ointer, offset, 
29290 76 61 6c 75 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a  value);..#else..
292a0 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73              Mars
292b0 68 61 6c 2e 57 72 69 74 65 49 6e 74 33 32 28 49  hal.WriteInt32(I
292c0 6e 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28 70  ntPtrForOffset(p
292d0 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 2c  ointer, offset),
292e0 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66   value);..#endif
292f0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
29300 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
29310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
29350 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
29360 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
29370 20 2f 2f 2f 20 57 72 69 74 65 73 20 61 6e 20 3c   /// Writes an <
29380 73 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22  see cref="Int64"
29390 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 74 68 65   /> value to the
293a0 20 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72   specified memor
293b0 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c  y..        /// l
293c0 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ocation...      
293d0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
293e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
293f0 61 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74  aram name="point
29400 65 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  er">..        //
29410 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
29420 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65  "IntPtr" /> obje
29430 63 74 20 69 6e 73 74 61 6e 63 65 20 72 65 70 72  ct instance repr
29440 65 73 65 6e 74 69 6e 67 20 74 68 65 20 62 61 73  esenting the bas
29450 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d  e..        /// m
29460 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d  emory location..
29470 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
29480 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
29490 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
294a0 6f 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20  offset">..      
294b0 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67 65    /// The intege
294c0 72 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68  r offset from th
294d0 65 20 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f  e base memory lo
294e0 63 61 74 69 6f 6e 20 77 68 65 72 65 20 74 68 65  cation where the
294f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
29500 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20  ee cref="Int64" 
29510 2f 3e 20 76 61 6c 75 65 20 74 6f 20 62 65 20 77  /> value to be w
29520 72 69 74 74 65 6e 20 69 73 20 6c 6f 63 61 74 65  ritten is locate
29530 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
29540 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
29550 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
29560 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20  e="value">..    
29570 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
29580 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e   cref="Int64" />
29590 20 76 61 6c 75 65 20 74 6f 20 77 72 69 74 65 2e   value to write.
295a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
295b0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
295c0 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f  public static vo
295d0 69 64 20 57 72 69 74 65 49 6e 74 36 34 28 0d 0a  id WriteInt64(..
295e0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
295f0 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a 20 20 20  tr pointer,..   
29600 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66           int off
29610 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  set,..          
29620 20 20 6c 6f 6e 67 20 76 61 6c 75 65 0d 0a 20 20    long value..  
29630 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
29640 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41       {..#if !PLA
29650 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
29660 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
29670 20 20 20 20 4d 61 72 73 68 61 6c 2e 57 72 69 74      Marshal.Writ
29680 65 49 6e 74 36 34 28 70 6f 69 6e 74 65 72 2c 20  eInt64(pointer, 
29690 6f 66 66 73 65 74 2c 20 76 61 6c 75 65 29 3b 0d  offset, value);.
296a0 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
296b0 20 20 20 20 4d 61 72 73 68 61 6c 2e 57 72 69 74      Marshal.Writ
296c0 65 49 6e 74 36 34 28 49 6e 74 50 74 72 46 6f 72  eInt64(IntPtrFor
296d0 4f 66 66 73 65 74 28 70 6f 69 6e 74 65 72 2c 20  Offset(pointer, 
296e0 6f 66 66 73 65 74 29 2c 20 76 61 6c 75 65 29 3b  offset), value);
296f0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
29700 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
29710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29750 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
29760 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
29770 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 57 72 69  .        /// Wri
29780 74 65 73 20 61 20 3c 73 65 65 20 63 72 65 66 3d  tes a <see cref=
29790 22 44 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75  "Double" /> valu
297a0 65 20 74 6f 20 74 68 65 20 73 70 65 63 69 66 69  e to the specifi
297b0 65 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20  ed memory..     
297c0 20 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e     /// location.
297d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
297e0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
297f0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
29800 65 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20  e="pointer">..  
29810 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
29820 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22  ee cref="IntPtr"
29830 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
29840 6e 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e 67  nce representing
29850 20 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20   the base..     
29860 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f     /// memory lo
29870 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  cation...       
29880 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
29890 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
298a0 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e  m name="offset">
298b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
298c0 65 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65 74  e integer offset
298d0 20 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20 6d   from the base m
298e0 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77  emory location w
298f0 68 65 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20  here the..      
29900 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
29910 22 44 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75  "Double" /> valu
29920 65 20 74 6f 20 62 65 20 77 72 69 74 74 65 6e 20  e to be written 
29930 69 73 20 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20  is located...   
29940 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
29950 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
29960 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75  param name="valu
29970 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
29980 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
29990 44 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65  Double" /> value
299a0 20 74 6f 20 77 72 69 74 65 2e 0d 0a 20 20 20 20   to write...    
299b0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
299c0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
299d0 20 73 74 61 74 69 63 20 76 6f 69 64 20 57 72 69   static void Wri
299e0 74 65 44 6f 75 62 6c 65 28 0d 0a 20 20 20 20 20  teDouble(..     
299f0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 6f         IntPtr po
29a00 69 6e 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20  inter,..        
29a10 20 20 20 20 69 6e 74 20 6f 66 66 73 65 74 2c 0d      int offset,.
29a20 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 75  .            dou
29a30 62 6c 65 20 76 61 6c 75 65 0d 0a 20 20 20 20 20  ble value..     
29a40 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
29a50 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f    {..#if !PLATFO
29a60 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
29a70 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
29a80 20 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e   Marshal.WriteIn
29a90 74 36 34 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66  t64(pointer, off
29aa0 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  set,..          
29ab0 20 20 20 20 20 20 42 69 74 43 6f 6e 76 65 72 74        BitConvert
29ac0 65 72 2e 44 6f 75 62 6c 65 54 6f 49 6e 74 36 34  er.DoubleToInt64
29ad0 42 69 74 73 28 76 61 6c 75 65 29 29 3b 0d 0a 23  Bits(value));..#
29ae0 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
29af0 20 20 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49    Marshal.WriteI
29b00 6e 74 36 34 28 49 6e 74 50 74 72 46 6f 72 4f 66  nt64(IntPtrForOf
29b10 66 73 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f 66  fset(pointer, of
29b20 66 73 65 74 29 2c 0d 0a 20 20 20 20 20 20 20 20  fset),..        
29b30 20 20 20 20 20 20 20 20 42 69 74 43 6f 6e 76 65          BitConve
29b40 72 74 65 72 2e 54 6f 49 6e 74 36 34 28 42 69 74  rter.ToInt64(Bit
29b50 43 6f 6e 76 65 72 74 65 72 2e 47 65 74 42 79 74  Converter.GetByt
29b60 65 73 28 76 61 6c 75 65 29 2c 20 30 29 29 3b 0d  es(value), 0));.
29b70 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
29b80 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
29b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29bd0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
29be0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
29bf0 20 20 20 20 20 20 20 20 2f 2f 2f 20 57 72 69 74          /// Writ
29c00 65 73 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22  es a <see cref="
29c10 49 6e 74 50 74 72 22 20 2f 3e 20 76 61 6c 75 65  IntPtr" /> value
29c20 20 74 6f 20 74 68 65 20 73 70 65 63 69 66 69 65   to the specifie
29c30 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20  d memory..      
29c40 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e 0d    /// location..
29c50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
29c60 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
29c70 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
29c80 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20 20  ="pointer">..   
29c90 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
29ca0 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20  e cref="IntPtr" 
29cb0 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
29cc0 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20  ce representing 
29cd0 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20  the base..      
29ce0 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63    /// memory loc
29cf0 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ation...        
29d00 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
29d10 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
29d20 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d   name="offset">.
29d30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
29d40 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65 74 20   integer offset 
29d50 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20 6d 65  from the base me
29d60 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77 68  mory location wh
29d70 65 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ere the..       
29d80 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
29d90 49 6e 74 50 74 72 22 20 2f 3e 20 76 61 6c 75 65  IntPtr" /> value
29da0 20 74 6f 20 62 65 20 77 72 69 74 74 65 6e 20 69   to be written i
29db0 73 20 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20  s located...    
29dc0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
29dd0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
29de0 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65  aram name="value
29df0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
29e00 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  The <see cref="I
29e10 6e 74 50 74 72 22 20 2f 3e 20 76 61 6c 75 65 20  ntPtr" /> value 
29e20 74 6f 20 77 72 69 74 65 2e 0d 0a 20 20 20 20 20  to write...     
29e30 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
29e40 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
29e50 73 74 61 74 69 63 20 76 6f 69 64 20 57 72 69 74  static void Writ
29e60 65 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20  eIntPtr(..      
29e70 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 6f 69        IntPtr poi
29e80 6e 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20  nter,..         
29e90 20 20 20 69 6e 74 20 6f 66 66 73 65 74 2c 0d 0a     int offset,..
29ea0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
29eb0 74 72 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20  tr value..      
29ec0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
29ed0 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52   {..#if !PLATFOR
29ee0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
29ef0 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
29f00 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74  Marshal.WriteInt
29f10 50 74 72 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66  Ptr(pointer, off
29f20 73 65 74 2c 20 76 61 6c 75 65 29 3b 0d 0a 23 65  set, value);..#e
29f30 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
29f40 20 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e   Marshal.WriteIn
29f50 74 50 74 72 28 49 6e 74 50 74 72 46 6f 72 4f 66  tPtr(IntPtrForOf
29f60 66 73 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f 66  fset(pointer, of
29f70 66 73 65 74 29 2c 20 76 61 6c 75 65 29 3b 0d 0a  fset), value);..
29f80 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
29f90 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
29fa0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
29fb0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
29fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29ff0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2a000 20 20 20 20 23 72 65 67 69 6f 6e 20 4f 62 6a 65      #region Obje
2a010 63 74 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64  ct Helper Method
2a020 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
2a030 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2a040 20 20 2f 2f 2f 20 47 65 6e 65 72 61 74 65 73 20    /// Generates 
2a050 61 20 68 61 73 68 20 63 6f 64 65 20 76 61 6c 75  a hash code valu
2a060 65 20 66 6f 72 20 74 68 65 20 6f 62 6a 65 63 74  e for the object
2a070 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
2a080 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
2a090 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2a0a0 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20  me="value">..   
2a0b0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 62 6a       /// The obj
2a0c0 65 63 74 20 69 6e 73 74 61 6e 63 65 20 75 73 65  ect instance use
2a0d0 64 20 74 6f 20 63 61 6c 63 75 6c 61 74 65 20 74  d to calculate t
2a0e0 68 65 20 68 61 73 68 20 63 6f 64 65 2e 0d 0a 20  he hash code... 
2a0f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
2a100 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
2a110 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 64   <param name="id
2a120 65 6e 74 69 74 79 22 3e 0d 0a 20 20 20 20 20 20  entity">..      
2a130 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
2a140 66 20 64 69 66 66 65 72 65 6e 74 20 6f 62 6a 65  f different obje
2a150 63 74 20 69 6e 73 74 61 6e 63 65 73 20 77 69 74  ct instances wit
2a160 68 20 74 68 65 20 73 61 6d 65 20 76 61 6c 75 65  h the same value
2a170 20 73 68 6f 75 6c 64 0d 0a 20 20 20 20 20 20 20   should..       
2a180 20 2f 2f 2f 20 67 65 6e 65 72 61 74 65 20 64 69   /// generate di
2a190 66 66 65 72 65 6e 74 20 68 61 73 68 20 63 6f 64  fferent hash cod
2a1a0 65 73 2c 20 77 68 65 72 65 20 61 70 70 6c 69 63  es, where applic
2a1b0 61 62 6c 65 2e 20 20 54 68 69 73 20 70 61 72 61  able.  This para
2a1c0 6d 65 74 65 72 0d 0a 20 20 20 20 20 20 20 20 2f  meter..        /
2a1d0 2f 2f 20 68 61 73 20 6e 6f 20 65 66 66 65 63 74  // has no effect
2a1e0 20 6f 6e 20 74 68 65 20 2e 4e 45 54 20 43 6f 6d   on the .NET Com
2a1f0 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2e 0d  pact Framework..
2a200 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
2a210 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
2a220 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
2a230 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 68 61        /// The ha
2a240 73 68 20 63 6f 64 65 20 76 61 6c 75 65 20 2d 4f  sh code value -O
2a250 52 2d 20 7a 65 72 6f 20 69 66 20 74 68 65 20 6f  R- zero if the o
2a260 62 6a 65 63 74 20 69 73 20 6e 75 6c 6c 2e 0d 0a  bject is null...
2a270 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
2a280 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
2a290 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6e  public static in
2a2a0 74 20 47 65 74 48 61 73 68 43 6f 64 65 28 0d 0a  t GetHashCode(..
2a2b0 20 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65              obje
2a2c0 63 74 20 76 61 6c 75 65 2c 0d 0a 20 20 20 20 20  ct value,..     
2a2d0 20 20 20 20 20 20 20 62 6f 6f 6c 20 69 64 65 6e         bool iden
2a2e0 74 69 74 79 0d 0a 20 20 20 20 20 20 20 20 20 20  tity..          
2a2f0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
2a300 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
2a310 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
2a320 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2a330 69 64 65 6e 74 69 74 79 29 0d 0a 20 20 20 20 20  identity)..     
2a340 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2a350 6e 20 52 75 6e 74 69 6d 65 48 65 6c 70 65 72 73  n RuntimeHelpers
2a360 2e 47 65 74 48 61 73 68 43 6f 64 65 28 76 61 6c  .GetHashCode(val
2a370 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ue);..#endif....
2a380 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2a390 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 20 72  value == null) r
2a3a0 65 74 75 72 6e 20 30 3b 0d 0a 20 20 20 20 20 20  eturn 0;..      
2a3b0 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c        return val
2a3c0 75 65 2e 47 65 74 48 61 73 68 43 6f 64 65 28 29  ue.GetHashCode()
2a3d0 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
2a3e0 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
2a3f0 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e  ..    }..    #en
2a400 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
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 2f 2f  ////////////////
2a450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2a460 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65    #region SQLite
2a470 4d 6f 64 75 6c 65 20 42 61 73 65 20 43 6c 61 73  Module Base Clas
2a480 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  s..    /// <summ
2a490 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
2a4a0 69 73 20 63 6c 61 73 73 20 72 65 70 72 65 73 65  is class represe
2a4b0 6e 74 73 20 61 20 6d 61 6e 61 67 65 64 20 76 69  nts a managed vi
2a4c0 72 74 75 61 6c 20 74 61 62 6c 65 20 6d 6f 64 75  rtual table modu
2a4d0 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  le implementatio
2a4e0 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 49 74 20 69  n...    /// It i
2a4f0 73 20 6e 6f 74 20 73 65 61 6c 65 64 20 61 6e 64  s not sealed and
2a500 20 6d 75 73 74 20 62 65 20 75 73 65 64 20 61 73   must be used as
2a510 20 74 68 65 20 62 61 73 65 20 63 6c 61 73 73 20   the base class 
2a520 66 6f 72 20 61 6e 79 0d 0a 20 20 20 20 2f 2f 2f  for any..    ///
2a530 20 75 73 65 72 2d 64 65 66 69 6e 65 64 20 76 69   user-defined vi
2a540 72 74 75 61 6c 20 74 61 62 6c 65 20 6d 6f 64 75  rtual table modu
2a550 6c 65 20 63 6c 61 73 73 65 73 20 69 6d 70 6c 65  le classes imple
2a560 6d 65 6e 74 65 64 20 69 6e 20 6d 61 6e 61 67 65  mented in manage
2a570 64 20 63 6f 64 65 2e 0d 0a 20 20 20 20 2f 2f 2f  d code...    ///
2a580 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
2a590 20 70 75 62 6c 69 63 20 61 62 73 74 72 61 63 74   public abstract
2a5a0 20 63 6c 61 73 73 20 53 51 4c 69 74 65 4d 6f 64   class SQLiteMod
2a5b0 75 6c 65 20 3a 0d 0a 20 20 20 20 20 20 20 20 20  ule :..         
2a5c0 20 20 20 49 53 51 4c 69 74 65 4d 61 6e 61 67 65     ISQLiteManage
2a5d0 64 4d 6f 64 75 6c 65 2c 20 2f 2a 49 53 51 4c 69  dModule, /*ISQLi
2a5e0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2c 2a  teNativeModule,*
2a5f0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  /..            I
2a600 44 69 73 70 6f 73 61 62 6c 65 20 2f 2a 20 4e 4f  Disposable /* NO
2a610 54 20 53 45 41 4c 45 44 20 2a 2f 0d 0a 20 20 20  T SEALED */..   
2a620 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67   {..        #reg
2a630 69 6f 6e 20 53 51 4c 69 74 65 4e 61 74 69 76 65  ion SQLiteNative
2a640 4d 6f 64 75 6c 65 20 50 72 69 76 61 74 65 20 43  Module Private C
2a650 6c 61 73 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  lass..        //
2a660 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
2a670 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c       /// This cl
2a680 61 73 73 20 69 6d 70 6c 65 6d 65 6e 74 73 20 74  ass implements t
2a690 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
2a6a0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2a6b0 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f  e" />..        /
2a6c0 2f 2f 20 69 6e 74 65 72 66 61 63 65 20 62 79 20  // interface by 
2a6d0 66 6f 72 77 61 72 64 69 6e 67 20 74 68 6f 73 65  forwarding those
2a6e0 20 6d 65 74 68 6f 64 20 63 61 6c 6c 73 20 74 6f   method calls to
2a6f0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
2a700 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  / <see cref="SQL
2a710 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62  iteModule" /> ob
2a720 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 69 74  ject instance it
2a730 20 63 6f 6e 74 61 69 6e 73 2e 20 20 49 66 20 74   contains.  If t
2a740 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
2a750 63 6f 6e 74 61 69 6e 65 64 20 3c 73 65 65 20 63  contained <see c
2a760 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c  ref="SQLiteModul
2a770 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  e" /> object ins
2a780 74 61 6e 63 65 20 69 73 20 6e 75 6c 6c 2c 20 61  tance is null, a
2a790 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ll..        /// 
2a7a0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
2a7b0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2a7c0 6c 65 22 20 2f 3e 20 6d 65 74 68 6f 64 73 20 73  le" /> methods s
2a7d0 69 6d 70 6c 79 20 67 65 6e 65 72 61 74 65 20 61  imply generate a
2a7e0 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 65  n..        /// e
2a7f0 72 72 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f  rror...        /
2a800 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2a810 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73         private s
2a820 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69  ealed class SQLi
2a830 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20 3a  teNativeModule :
2a840 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a850 20 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d    ISQLiteNativeM
2a860 6f 64 75 6c 65 2c 20 49 44 69 73 70 6f 73 61 62  odule, IDisposab
2a870 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  le..        {.. 
2a880 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69             #regi
2a890 6f 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74  on Private Const
2a8a0 61 6e 74 73 0d 0a 20 20 20 20 20 20 20 20 20 20  ants..          
2a8b0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
2a8c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2a8d0 20 54 68 69 73 20 69 73 20 74 68 65 20 76 61 6c   This is the val
2a8e0 75 65 20 74 68 61 74 20 69 73 20 61 6c 77 61 79  ue that is alway
2a8f0 73 20 75 73 65 64 20 66 6f 72 20 74 68 65 20 22  s used for the "
2a900 6c 6f 67 45 72 72 6f 72 73 22 0d 0a 20 20 20 20  logErrors"..    
2a910 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 61 72 61          /// para
2a920 6d 65 74 65 72 20 74 6f 20 74 68 65 20 76 61 72  meter to the var
2a930 69 6f 75 73 20 73 74 61 74 69 63 20 65 72 72 6f  ious static erro
2a940 72 20 68 61 6e 64 6c 69 6e 67 20 6d 65 74 68 6f  r handling metho
2a950 64 73 20 70 72 6f 76 69 64 65 64 0d 0a 20 20 20  ds provided..   
2a960 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 62 79 20           /// by 
2a970 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  the <see cref="S
2a980 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20  QLiteModule" /> 
2a990 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20  class...        
2a9a0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2a9b0 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
2a9c0 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 62 6f  private const bo
2a9d0 6f 6c 20 44 65 66 61 75 6c 74 4c 6f 67 45 72 72  ol DefaultLogErr
2a9e0 6f 72 73 20 3d 20 74 72 75 65 3b 0d 0a 0d 0a 20  ors = true;.... 
2a9f0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
2aa00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aa10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aa20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aa30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2aa40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2aa50 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
2aa60 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69           /// Thi
2aa70 73 20 69 73 20 74 68 65 20 65 72 72 6f 72 20 6d  s is the error m
2aa80 65 73 73 61 67 65 20 74 65 78 74 20 75 73 65 64  essage text used
2aa90 20 77 68 65 6e 20 74 68 65 20 63 6f 6e 74 61 69   when the contai
2aaa0 6e 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ned..           
2aab0 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
2aac0 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e  SQLiteModule" />
2aad0 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
2aae0 20 69 73 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c   is not availabl
2aaf0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  e..            /
2ab00 2f 2f 20 66 6f 72 20 61 6e 79 20 72 65 61 73 6f  // for any reaso
2ab10 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n...            
2ab20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
2ab30 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
2ab40 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67  ate const string
2ab50 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61   ModuleNotAvaila
2ab60 62 6c 65 45 72 72 6f 72 4d 65 73 73 61 67 65 20  bleErrorMessage 
2ab70 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  =..             
2ab80 20 20 20 22 6e 61 74 69 76 65 20 6d 6f 64 75 6c     "native modul
2ab90 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e implementation
2aba0 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65 22 3b   not available";
2abb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65  ..            #e
2abc0 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
2abd0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2abe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2abf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ac00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ac10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2ac20 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69             #regi
2ac30 6f 6e 20 50 72 69 76 61 74 65 20 44 61 74 61 0d  on Private Data.
2ac40 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2ac50 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2ac60 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
2ac70 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
2ac80 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65  eModule" /> obje
2ac90 63 74 20 69 6e 73 74 61 6e 63 65 20 75 73 65 64  ct instance used
2aca0 20 74 6f 20 70 72 6f 76 69 64 65 0d 0a 20 20 20   to provide..   
2acb0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 6e 20           /// an 
2acc0 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f  implementation o
2acd0 66 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  f the <see cref=
2ace0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2acf0 64 75 6c 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20  dule" />..      
2ad00 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65 72 66        /// interf
2ad10 61 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ace...          
2ad20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2ad30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
2ad40 69 76 61 74 65 20 53 51 4c 69 74 65 4d 6f 64 75  ivate SQLiteModu
2ad50 6c 65 20 6d 6f 64 75 6c 65 3b 0d 0a 20 20 20 20  le module;..    
2ad60 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
2ad70 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  on....          
2ad80 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2ad90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ada0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2adb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2adc0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2add0 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62       #region Pub
2ade0 6c 69 63 20 43 6f 6e 73 74 72 75 63 74 6f 72 73  lic Constructors
2adf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2ae00 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
2ae10 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e           /// Con
2ae20 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61  structs an insta
2ae30 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73  nce of this clas
2ae40 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s...            
2ae50 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
2ae60 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2ae70 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64  <param name="mod
2ae80 75 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  ule">..         
2ae90 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
2aea0 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75  cref="SQLiteModu
2aeb0 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  le" /> object in
2aec0 73 74 61 6e 63 65 20 75 73 65 64 20 74 6f 20 70  stance used to p
2aed0 72 6f 76 69 64 65 0d 0a 20 20 20 20 20 20 20 20  rovide..        
2aee0 20 20 20 20 2f 2f 2f 20 61 6e 20 69 6d 70 6c 65      /// an imple
2aef0 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65  mentation of the
2af00 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2af10 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22  iteNativeModule"
2af20 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20   />..           
2af30 20 2f 2f 2f 20 69 6e 74 65 72 66 61 63 65 2e 0d   /// interface..
2af40 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2af50 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
2af60 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51         public SQ
2af70 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2af80 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2af90 20 20 20 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20     SQLiteModule 
2afa0 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20 20 20 20  module..        
2afb0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
2afc0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2afd0 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6d            this.m
2afe0 6f 64 75 6c 65 20 3d 20 6d 6f 64 75 6c 65 3b 0d  odule = module;.
2aff0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2b000 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64              #end
2b010 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
2b020 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2b030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b060 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2b070 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e           #region
2b080 20 50 72 69 76 61 74 65 20 53 74 61 74 69 63 20   Private Static 
2b090 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20  Methods..       
2b0a0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
2b0b0 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
2b0c0 2f 2f 2f 20 53 65 74 73 20 74 68 65 20 74 61 62  /// Sets the tab
2b0d0 6c 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65  le error message
2b0e0 20 74 6f 20 6f 6e 65 20 74 68 61 74 20 69 6e 64   to one that ind
2b0f0 69 63 61 74 65 73 20 74 68 65 20 6e 61 74 69 76  icates the nativ
2b100 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  e..            /
2b110 2f 2f 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65 6d  // module implem
2b120 65 6e 74 61 74 69 6f 6e 20 69 73 20 6e 6f 74 20  entation is not 
2b130 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20  available...    
2b140 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
2b150 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2b160 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
2b170 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20  ame="pVtab">..  
2b180 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68            /// Th
2b190 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
2b1a0 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
2b1b0 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74 72  vtab derived str
2b1c0 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ucture...       
2b1d0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2b1e0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2b1f0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
2b200 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68            /// Th
2b210 65 20 76 61 6c 75 65 20 6f 66 20 3c 73 65 65 20  e value of <see 
2b220 63 72 65 66 3d 22 53 51 4c 69 74 65 45 72 72 6f  cref="SQLiteErro
2b230 72 43 6f 64 65 2e 45 72 72 6f 72 22 20 2f 3e 2e  rCode.Error" />.
2b240 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2b250 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
2b260 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
2b270 65 20 73 74 61 74 69 63 20 53 51 4c 69 74 65 45  e static SQLiteE
2b280 72 72 6f 72 43 6f 64 65 20 4d 6f 64 75 6c 65 4e  rrorCode ModuleN
2b290 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65  otAvailableTable
2b2a0 45 72 72 6f 72 28 0d 0a 20 20 20 20 20 20 20 20  Error(..        
2b2b0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
2b2c0 56 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20  Vtab..          
2b2d0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
2b2e0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2b2f0 20 20 20 20 20 20 20 20 53 65 74 54 61 62 6c 65          SetTable
2b300 45 72 72 6f 72 28 6e 75 6c 6c 2c 20 70 56 74 61  Error(null, pVta
2b310 62 2c 20 44 65 66 61 75 6c 74 4c 6f 67 45 72 72  b, DefaultLogErr
2b320 6f 72 73 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ors,..          
2b330 20 20 20 20 20 20 20 20 20 20 4d 6f 64 75 6c 65            Module
2b340 4e 6f 74 41 76 61 69 6c 61 62 6c 65 45 72 72 6f  NotAvailableErro
2b350 72 4d 65 73 73 61 67 65 29 3b 0d 0a 0d 0a 20 20  rMessage);....  
2b360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2b370 74 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  turn SQLiteError
2b380 43 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20  Code.Error;..   
2b390 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
2b3a0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
2b3b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b3c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b3d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b3e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2b3f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2b400 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2b410 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 74 73          /// Sets
2b420 20 74 68 65 20 74 61 62 6c 65 20 65 72 72 6f 72   the table error
2b430 20 6d 65 73 73 61 67 65 20 74 6f 20 6f 6e 65 20   message to one 
2b440 74 68 61 74 20 69 6e 64 69 63 61 74 65 73 20 74  that indicates t
2b450 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20  he native..     
2b460 20 20 20 20 20 20 20 2f 2f 2f 20 6d 6f 64 75 6c         /// modul
2b470 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e implementation
2b480 20 69 73 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c   is not availabl
2b490 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
2b4a0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
2b4b0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2b4c0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75  <param name="pCu
2b4d0 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20  rsor">..        
2b4e0 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
2b4f0 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
2b500 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63  e sqlite3_vtab_c
2b510 75 72 73 6f 72 20 64 65 72 69 76 65 64 0d 0a 20  ursor derived.. 
2b520 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 73             /// s
2b530 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20  tructure...     
2b540 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
2b550 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
2b560 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
2b570 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2b580 54 68 65 20 76 61 6c 75 65 20 6f 66 20 3c 73 65  The value of <se
2b590 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 45 72  e cref="SQLiteEr
2b5a0 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 22 20 2f  rorCode.Error" /
2b5b0 3e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  >...            
2b5c0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
2b5d0 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
2b5e0 61 74 65 20 73 74 61 74 69 63 20 53 51 4c 69 74  ate static SQLit
2b5f0 65 45 72 72 6f 72 43 6f 64 65 20 4d 6f 64 75 6c  eErrorCode Modul
2b600 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43 75 72  eNotAvailableCur
2b610 73 6f 72 45 72 72 6f 72 28 0d 0a 20 20 20 20 20  sorError(..     
2b620 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
2b630 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 20  r pCursor..     
2b640 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
2b650 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2b660 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74               Set
2b670 43 75 72 73 6f 72 45 72 72 6f 72 28 6e 75 6c 6c  CursorError(null
2b680 2c 20 70 43 75 72 73 6f 72 2c 20 44 65 66 61 75  , pCursor, Defau
2b690 6c 74 4c 6f 67 45 72 72 6f 72 73 2c 0d 0a 20 20  ltLogErrors,..  
2b6a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b6b0 20 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c    ModuleNotAvail
2b6c0 61 62 6c 65 45 72 72 6f 72 4d 65 73 73 61 67 65  ableErrorMessage
2b6d0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2b6e0 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c        return SQL
2b6f0 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 45 72 72  iteErrorCode.Err
2b700 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  or;..           
2b710 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
2b720 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
2b730 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
2b740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2b780 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65  .            #re
2b790 67 69 6f 6e 20 49 53 51 4c 69 74 65 4e 61 74 69  gion ISQLiteNati
2b7a0 76 65 4d 6f 64 75 6c 65 20 4d 65 6d 62 65 72 73  veModule Members
2b7b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2b7c0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
2b7d0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
2b7e0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
2b7f0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2b800 75 6c 65 2e 78 43 72 65 61 74 65 22 20 2f 3e 20  ule.xCreate" /> 
2b810 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2b820 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
2b830 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
2b840 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2b850 3d 22 70 44 62 22 3e 0d 0a 20 20 20 20 20 20 20  ="pDb">..       
2b860 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2b870 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2b880 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2b890 78 43 72 65 61 74 65 22 20 2f 3e 20 6d 65 74 68  xCreate" /> meth
2b8a0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
2b8b0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
2b8c0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2b8d0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 41 75 78  param name="pAux
2b8e0 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
2b8f0 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
2b900 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
2b910 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61  tiveModule.xCrea
2b920 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  te" /> method...
2b930 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2b940 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
2b950 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
2b960 20 6e 61 6d 65 3d 22 61 72 67 63 22 3e 0d 0a 20   name="argc">.. 
2b970 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
2b980 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
2b990 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
2b9a0 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 22 20 2f  odule.xCreate" /
2b9b0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
2b9c0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
2b9d0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
2b9e0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2b9f0 3d 22 61 72 67 76 22 3e 0d 0a 20 20 20 20 20 20  ="argv">..      
2ba00 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
2ba10 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
2ba20 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2ba30 2e 78 43 72 65 61 74 65 22 20 2f 3e 20 6d 65 74  .xCreate" /> met
2ba40 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
2ba50 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2ba60 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2ba70 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74  <param name="pVt
2ba80 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ab">..          
2ba90 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
2baa0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2bab0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72  NativeModule.xCr
2bac0 65 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  eate" /> method.
2bad0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2bae0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
2baf0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
2bb00 61 6d 20 6e 61 6d 65 3d 22 70 45 72 72 6f 72 22  am name="pError"
2bb10 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2bb20 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
2bb30 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
2bb40 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74  iveModule.xCreat
2bb50 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
2bb60 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2bb70 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
2bb80 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
2bb90 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
2bba0 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
2bbb0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
2bbc0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61  tiveModule.xCrea
2bbd0 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  te" /> method...
2bbe0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2bbf0 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
2bc00 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53          public S
2bc10 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
2bc20 43 72 65 61 74 65 28 0d 0a 20 20 20 20 20 20 20  Create(..       
2bc30 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
2bc40 70 44 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  pDb,..          
2bc50 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 41 75        IntPtr pAu
2bc60 78 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  x,..            
2bc70 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20      int argc,.. 
2bc80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
2bc90 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20 20  ntPtr argv,..   
2bca0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
2bcb0 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
2bcc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bcd0 72 65 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f  ref IntPtr pErro
2bce0 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  r..             
2bcf0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
2bd00 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2bd10 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
2bd20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
2bd30 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69  : Called by nati
2bd40 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  ve code...      
2bd50 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
2bd60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2bd70 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
2bd80 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a  ; /* EXEMPT */..
2bd90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2bda0 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20    if (module == 
2bdb0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
2bdc0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2bdd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 45                pE
2bde0 72 72 6f 72 20 3d 20 53 51 4c 69 74 65 53 74 72  rror = SQLiteStr
2bdf0 69 6e 67 2e 55 74 66 38 49 6e 74 50 74 72 46 72  ing.Utf8IntPtrFr
2be00 6f 6d 53 74 72 69 6e 67 28 0d 0a 20 20 20 20 20  omString(..     
2be10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2be20 20 20 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69     ModuleNotAvai
2be30 6c 61 62 6c 65 45 72 72 6f 72 4d 65 73 73 61 67  lableErrorMessag
2be40 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
2be50 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2be60 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
2be70 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20 20 20 20  e.Error;..      
2be80 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
2be90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2bea0 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 43 72  eturn module.xCr
2beb0 65 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20  eate(..         
2bec0 20 20 20 20 20 20 20 20 20 20 20 70 44 62 2c 20             pDb, 
2bed0 70 41 75 78 2c 20 61 72 67 63 2c 20 61 72 67 76  pAux, argc, argv
2bee0 2c 20 72 65 66 20 70 56 74 61 62 2c 20 72 65 66  , ref pVtab, ref
2bef0 20 70 45 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20   pError);..     
2bf00 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2bf10 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2bf20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bf30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bf40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bf50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2bf60 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2bf70 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2bf80 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
2bf90 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
2bfa0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2bfb0 2e 78 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65  .xConnect" /> me
2bfc0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2bfd0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
2bfe0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2bff0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
2c000 70 44 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  pDb">..         
2c010 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2c020 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2c030 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
2c040 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f  onnect" /> metho
2c050 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
2c060 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
2c070 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
2c080 61 72 61 6d 20 6e 61 6d 65 3d 22 70 41 75 78 22  aram name="pAux"
2c090 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2c0a0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
2c0b0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
2c0c0 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65  iveModule.xConne
2c0d0 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  ct" /> method...
2c0e0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2c0f0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
2c100 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
2c110 20 6e 61 6d 65 3d 22 61 72 67 63 22 3e 0d 0a 20   name="argc">.. 
2c120 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
2c130 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
2c140 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
2c150 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 22 20  odule.xConnect" 
2c160 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2c170 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
2c180 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
2c190 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2c1a0 65 3d 22 61 72 67 76 22 3e 0d 0a 20 20 20 20 20  e="argv">..     
2c1b0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
2c1c0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
2c1d0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2c1e0 65 2e 78 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d  e.xConnect" /> m
2c1f0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2c200 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2c210 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2c220 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
2c230 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
2c240 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
2c250 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
2c260 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
2c270 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68  Connect" /> meth
2c280 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
2c290 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
2c2a0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2c2b0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 45 72 72  param name="pErr
2c2c0 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  or">..          
2c2d0 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
2c2e0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2c2f0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  NativeModule.xCo
2c300 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64  nnect" /> method
2c310 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2c320 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
2c330 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65           /// <re
2c340 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
2c350 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
2c360 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
2c370 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
2c380 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68  Connect" /> meth
2c390 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
2c3a0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
2c3b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
2c3c0 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43  lic SQLiteErrorC
2c3d0 6f 64 65 20 78 43 6f 6e 6e 65 63 74 28 0d 0a 20  ode xConnect(.. 
2c3e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
2c3f0 6e 74 50 74 72 20 70 44 62 2c 0d 0a 20 20 20 20  ntPtr pDb,..    
2c400 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
2c410 74 72 20 70 41 75 78 2c 0d 0a 20 20 20 20 20 20  tr pAux,..      
2c420 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 61 72            int ar
2c430 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  gc,..           
2c440 20 20 20 20 20 49 6e 74 50 74 72 20 61 72 67 76       IntPtr argv
2c450 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2c460 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 56     ref IntPtr pV
2c470 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  tab,..          
2c480 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72        ref IntPtr
2c490 20 70 45 72 72 6f 72 0d 0a 20 20 20 20 20 20 20   pError..       
2c4a0 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
2c4b0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2c4c0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
2c4d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2c4e0 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62  / NOTE: Called b
2c4f0 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a  y native code...
2c500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c510 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
2c520 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70      // CheckDisp
2c530 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50  osed(); /* EXEMP
2c540 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  T */....        
2c550 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75          if (modu
2c560 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  le == null)..   
2c570 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
2c580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c590 20 20 20 20 70 45 72 72 6f 72 20 3d 20 53 51 4c      pError = SQL
2c5a0 69 74 65 53 74 72 69 6e 67 2e 55 74 66 38 49 6e  iteString.Utf8In
2c5b0 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28 0d  tPtrFromString(.
2c5c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c5d0 20 20 20 20 20 20 20 20 20 4d 6f 64 75 6c 65 4e           ModuleN
2c5e0 6f 74 41 76 61 69 6c 61 62 6c 65 45 72 72 6f 72  otAvailableError
2c5f0 4d 65 73 73 61 67 65 29 3b 0d 0a 0d 0a 20 20 20  Message);....   
2c600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c610 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65 45 72   return SQLiteEr
2c620 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a  rorCode.Error;..
2c630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c640 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
2c650 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75       return modu
2c660 6c 65 2e 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20  le.xConnect(..  
2c670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c680 20 20 70 44 62 2c 20 70 41 75 78 2c 20 61 72 67    pDb, pAux, arg
2c690 63 2c 20 61 72 67 76 2c 20 72 65 66 20 70 56 74  c, argv, ref pVt
2c6a0 61 62 2c 20 72 65 66 20 70 45 72 72 6f 72 29 3b  ab, ref pError);
2c6b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2c6c0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2c6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c6e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c6f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c710 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
2c720 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
2c730 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2c740 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
2c750 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
2c760 65 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64  eModule.xBestInd
2c770 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  ex" /> method...
2c780 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2c790 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
2c7a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
2c7b0 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e  am name="pVtab">
2c7c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2c7d0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
2c7e0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
2c7f0 76 65 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e  veModule.xBestIn
2c800 64 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  dex" /> method..
2c810 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2c820 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
2c830 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
2c840 6d 20 6e 61 6d 65 3d 22 70 49 6e 64 65 78 22 3e  m name="pIndex">
2c850 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2c860 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
2c870 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
2c880 76 65 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e  veModule.xBestIn
2c890 64 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  dex" /> method..
2c8a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2c8b0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
2c8c0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
2c8d0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
2c8e0 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
2c8f0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2c900 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65  NativeModule.xBe
2c910 73 74 49 6e 64 65 78 22 20 2f 3e 20 6d 65 74 68  stIndex" /> meth
2c920 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
2c930 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
2c940 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
2c950 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43  lic SQLiteErrorC
2c960 6f 64 65 20 78 42 65 73 74 49 6e 64 65 78 28 0d  ode xBestIndex(.
2c970 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c980 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
2c990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c9a0 49 6e 74 50 74 72 20 70 49 6e 64 65 78 0d 0a 20  IntPtr pIndex.. 
2c9b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
2c9c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2c9d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c9e0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
2c9f0 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61       // NOTE: Ca
2ca00 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63  lled by native c
2ca10 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ode...          
2ca20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
2ca30 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65            // Che
2ca40 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a  ckDisposed(); /*
2ca50 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20   EXEMPT */....  
2ca60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
2ca70 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c   (module == null
2ca80 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2ca90 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f         return Mo
2caa0 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65  duleNotAvailable
2cab0 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62  TableError(pVtab
2cac0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2cad0 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64        return mod
2cae0 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 28 70  ule.xBestIndex(p
2caf0 56 74 61 62 2c 20 70 49 6e 64 65 78 29 3b 0d 0a  Vtab, pIndex);..
2cb00 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
2cb10 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2cb20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cb30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cb40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cb50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cb60 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2cb70 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2cb80 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
2cb90 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
2cba0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
2cbb0 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63  odule.xDisconnec
2cbc0 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  t" /> method... 
2cbd0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2cbe0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
2cbf0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
2cc00 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d  m name="pVtab">.
2cc10 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2cc20 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
2cc30 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
2cc40 65 4d 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e  eModule.xDisconn
2cc50 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ect" /> method..
2cc60 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2cc70 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
2cc80 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
2cc90 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
2cca0 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
2ccb0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2ccc0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 69  NativeModule.xDi
2ccd0 73 63 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74  sconnect" /> met
2cce0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
2ccf0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
2cd00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
2cd10 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72  blic SQLiteError
2cd20 43 6f 64 65 20 78 44 69 73 63 6f 6e 6e 65 63 74  Code xDisconnect
2cd30 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2cd40 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d     IntPtr pVtab.
2cd50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2cd60 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
2cd70 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2cd80 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
2cd90 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
2cda0 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65  Called by native
2cdb0 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
2cdc0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
2cdd0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43              // C
2cde0 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20  heckDisposed(); 
2cdf0 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a  /* EXEMPT */....
2ce00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ce10 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75  if (module == nu
2ce20 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
2ce30 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2ce40 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62  ModuleNotAvailab
2ce50 6c 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74  leTableError(pVt
2ce60 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ab);....        
2ce70 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d          return m
2ce80 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63  odule.xDisconnec
2ce90 74 28 70 56 74 61 62 29 3b 0d 0a 20 20 20 20 20  t(pVtab);..     
2cea0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2ceb0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2cec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ced0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2cf00 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2cf10 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2cf20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
2cf30 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
2cf40 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2cf50 2e 78 44 65 73 74 72 6f 79 22 20 2f 3e 20 6d 65  .xDestroy" /> me
2cf60 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2cf70 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
2cf80 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2cf90 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
2cfa0 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20  pVtab">..       
2cfb0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2cfc0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2cfd0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2cfe0 78 44 65 73 74 72 6f 79 22 20 2f 3e 20 6d 65 74  xDestroy" /> met
2cff0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
2d000 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2d010 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2d020 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
2d030 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
2d040 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
2d050 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2d060 65 2e 78 44 65 73 74 72 6f 79 22 20 2f 3e 20 6d  e.xDestroy" /> m
2d070 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2d080 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
2d090 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
2d0a0 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72  public SQLiteErr
2d0b0 6f 72 43 6f 64 65 20 78 44 65 73 74 72 6f 79 28  orCode xDestroy(
2d0c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d0d0 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a    IntPtr pVtab..
2d0e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d0f0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
2d100 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d110 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
2d120 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43        // NOTE: C
2d130 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20  alled by native 
2d140 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  code...         
2d150 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
2d160 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68             // Ch
2d170 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f  eckDisposed(); /
2d180 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20  * EXEMPT */.... 
2d190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
2d1a0 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c  f (module == nul
2d1b0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
2d1c0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d          return M
2d1d0 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c  oduleNotAvailabl
2d1e0 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61  eTableError(pVta
2d1f0 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  b);....         
2d200 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f         return mo
2d210 64 75 6c 65 2e 78 44 65 73 74 72 6f 79 28 70 56  dule.xDestroy(pV
2d220 74 61 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  tab);..         
2d230 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
2d240 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2d250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d280 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2d290 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
2d2a0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
2d2b0 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
2d2c0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2d2d0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4f 70  NativeModule.xOp
2d2e0 65 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  en" /> method...
2d2f0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2d300 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
2d310 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
2d320 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e  am name="pVtab">
2d330 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2d340 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
2d350 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
2d360 76 65 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e 22 20  veModule.xOpen" 
2d370 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2d380 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
2d390 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
2d3a0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2d3b0 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20  e="pCursor">..  
2d3c0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2d3d0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
2d3e0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2d3f0 64 75 6c 65 2e 78 4f 70 65 6e 22 20 2f 3e 20 6d  dule.xOpen" /> m
2d400 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2d410 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2d420 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2d430 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
2d440 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
2d450 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
2d460 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2d470 75 6c 65 2e 78 4f 70 65 6e 22 20 2f 3e 20 6d 65  ule.xOpen" /> me
2d480 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2d490 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
2d4a0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
2d4b0 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f  ublic SQLiteErro
2d4c0 72 43 6f 64 65 20 78 4f 70 65 6e 28 0d 0a 20 20  rCode xOpen(..  
2d4d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
2d4e0 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
2d4f0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
2d500 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d   IntPtr pCursor.
2d510 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d520 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
2d530 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2d540 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
2d550 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
2d560 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65  Called by native
2d570 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
2d580 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
2d590 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43              // C
2d5a0 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20  heckDisposed(); 
2d5b0 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a  /* EXEMPT */....
2d5c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d5d0 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75  if (module == nu
2d5e0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
2d5f0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2d600 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62  ModuleNotAvailab
2d610 6c 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74  leTableError(pVt
2d620 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ab);....        
2d630 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d          return m
2d640 6f 64 75 6c 65 2e 78 4f 70 65 6e 28 70 56 74 61  odule.xOpen(pVta
2d650 62 2c 20 72 65 66 20 70 43 75 72 73 6f 72 29 3b  b, ref pCursor);
2d660 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2d670 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2d680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d6a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d6b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d6c0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
2d6d0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
2d6e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2d6f0 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
2d700 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
2d710 65 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 22 20  eModule.xClose" 
2d720 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2d730 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
2d740 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2d750 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
2d760 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a  ame="pCursor">..
2d770 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2d780 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
2d790 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
2d7a0 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 22 20 2f  Module.xClose" /
2d7b0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
2d7c0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
2d7d0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
2d7e0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
2d7f0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2d800 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
2d810 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
2d820 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 22 20 2f  Module.xClose" /
2d830 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
2d840 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
2d850 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
2d860 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
2d870 45 72 72 6f 72 43 6f 64 65 20 78 43 6c 6f 73 65  ErrorCode xClose
2d880 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2d890 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f     IntPtr pCurso
2d8a0 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  r..             
2d8b0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
2d8c0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2d8d0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
2d8e0 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
2d8f0 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69  : Called by nati
2d900 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  ve code...      
2d910 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
2d920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2d930 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
2d940 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a  ; /* EXEMPT */..
2d950 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d960 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20    if (module == 
2d970 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
2d980 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2d990 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c  n ModuleNotAvail
2d9a0 61 62 6c 65 43 75 72 73 6f 72 45 72 72 6f 72 28  ableCursorError(
2d9b0 70 43 75 72 73 6f 72 29 3b 0d 0a 0d 0a 20 20 20  pCursor);....   
2d9c0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2d9d0 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 43 6c 6f 73  urn module.xClos
2d9e0 65 28 70 43 75 72 73 6f 72 29 3b 0d 0a 20 20 20  e(pCursor);..   
2d9f0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
2da00 20 20 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2da30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2da40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2da50 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2da60 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2da70 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
2da80 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
2da90 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2daa0 6c 65 2e 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d  le.xFilter" /> m
2dab0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2dac0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2dad0 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
2dae0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
2daf0 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20  "pCursor">..    
2db00 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
2db10 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
2db20 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2db30 6c 65 2e 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d  le.xFilter" /> m
2db40 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2db50 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2db60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2db70 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69  / <param name="i
2db80 64 78 4e 75 6d 22 3e 0d 0a 20 20 20 20 20 20 20  dxNum">..       
2db90 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2dba0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2dbb0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2dbc0 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68  xFilter" /> meth
2dbd0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
2dbe0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
2dbf0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2dc00 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 64 78 53  param name="idxS
2dc10 74 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  tr">..          
2dc20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
2dc30 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2dc40 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69  NativeModule.xFi
2dc50 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  lter" /> method.
2dc60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2dc70 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
2dc80 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
2dc90 61 6d 20 6e 61 6d 65 3d 22 61 72 67 63 22 3e 0d  am name="argc">.
2dca0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2dcb0 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
2dcc0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
2dcd0 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 22  eModule.xFilter"
2dce0 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
2dcf0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
2dd00 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
2dd10 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2dd20 6d 65 3d 22 61 72 67 76 22 3e 0d 0a 20 20 20 20  me="argv">..    
2dd30 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
2dd40 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
2dd50 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2dd60 6c 65 2e 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d  le.xFilter" /> m
2dd70 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2dd80 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2dd90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2dda0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
2ddb0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
2ddc0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
2ddd0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2dde0 75 6c 65 2e 78 46 69 6c 74 65 72 22 20 2f 3e 20  ule.xFilter" /> 
2ddf0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2de00 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
2de10 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
2de20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72   public SQLiteEr
2de30 72 6f 72 43 6f 64 65 20 78 46 69 6c 74 65 72 28  rorCode xFilter(
2de40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2de50 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72    IntPtr pCursor
2de60 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2de70 20 20 20 69 6e 74 20 69 64 78 4e 75 6d 2c 0d 0a     int idxNum,..
2de80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2de90 49 6e 74 50 74 72 20 69 64 78 53 74 72 2c 0d 0a  IntPtr idxStr,..
2dea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2deb0 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20  int argc,..     
2dec0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
2ded0 72 20 61 72 67 76 0d 0a 20 20 20 20 20 20 20 20  r argv..        
2dee0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
2def0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2df00 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
2df10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2df20 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79   NOTE: Called by
2df30 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20   native code... 
2df40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2df50 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
2df60 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f     // CheckDispo
2df70 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54  sed(); /* EXEMPT
2df80 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   */....         
2df90 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c         if (modul
2dfa0 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
2dfb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dfc0 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74  return ModuleNot
2dfd0 41 76 61 69 6c 61 62 6c 65 43 75 72 73 6f 72 45  AvailableCursorE
2dfe0 72 72 6f 72 28 70 43 75 72 73 6f 72 29 3b 0d 0a  rror(pCursor);..
2dff0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e000 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e    return module.
2e010 78 46 69 6c 74 65 72 28 70 43 75 72 73 6f 72 2c  xFilter(pCursor,
2e020 20 69 64 78 4e 75 6d 2c 20 69 64 78 53 74 72 2c   idxNum, idxStr,
2e030 20 61 72 67 63 2c 20 61 72 67 76 29 3b 0d 0a 20   argc, argv);.. 
2e040 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
2e050 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
2e060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2e0a0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2e0b0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
2e0c0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2e0d0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
2e0e0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2e0f0 64 75 6c 65 2e 78 4e 65 78 74 22 20 2f 3e 20 6d  dule.xNext" /> m
2e100 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2e110 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2e120 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
2e130 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
2e140 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20  "pCursor">..    
2e150 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
2e160 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
2e170 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2e180 6c 65 2e 78 4e 65 78 74 22 20 2f 3e 20 6d 65 74  le.xNext" /> met
2e190 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
2e1a0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2e1b0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2e1c0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
2e1d0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
2e1e0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
2e1f0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2e200 65 2e 78 4e 65 78 74 22 20 2f 3e 20 6d 65 74 68  e.xNext" /> meth
2e210 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
2e220 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
2e230 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
2e240 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43  lic SQLiteErrorC
2e250 6f 64 65 20 78 4e 65 78 74 28 0d 0a 20 20 20 20  ode xNext(..    
2e260 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
2e270 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20  tr pCursor..    
2e280 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
2e290 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2e2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2e2b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e2c0 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65    // NOTE: Calle
2e2d0 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65  d by native code
2e2e0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2e2f0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
2e300 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44         // CheckD
2e310 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58  isposed(); /* EX
2e320 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20  EMPT */....     
2e330 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d             if (m
2e340 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  odule == null)..
2e350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e360 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c      return Modul
2e370 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43 75 72  eNotAvailableCur
2e380 73 6f 72 45 72 72 6f 72 28 70 43 75 72 73 6f 72  sorError(pCursor
2e390 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2e3a0 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64        return mod
2e3b0 75 6c 65 2e 78 4e 65 78 74 28 70 43 75 72 73 6f  ule.xNext(pCurso
2e3c0 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r);..           
2e3d0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
2e3e0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2e3f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e420 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2e430 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
2e440 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
2e450 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
2e460 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
2e470 74 69 76 65 4d 6f 64 75 6c 65 2e 78 45 6f 66 22  tiveModule.xEof"
2e480 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
2e490 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73           /// </s
2e4a0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2e4b0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
2e4c0 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d  name="pCursor">.
2e4d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2e4e0 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
2e4f0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
2e500 65 4d 6f 64 75 6c 65 2e 78 45 6f 66 22 20 2f 3e  eModule.xEof" />
2e510 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
2e520 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
2e530 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
2e540 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
2e550 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
2e560 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
2e570 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
2e580 6f 64 75 6c 65 2e 78 45 6f 66 22 20 2f 3e 20 6d  odule.xEof" /> m
2e590 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2e5a0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
2e5b0 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
2e5c0 70 75 62 6c 69 63 20 69 6e 74 20 78 45 6f 66 28  public int xEof(
2e5d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e5e0 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72    IntPtr pCursor
2e5f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e600 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
2e610 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2e620 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
2e630 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
2e640 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76   Called by nativ
2e650 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  e code...       
2e660 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
2e670 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2e680 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
2e690 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d   /* EXEMPT */...
2e6a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e6b0 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e   if (module == n
2e6c0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
2e6d0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2e6e0 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f 64               Mod
2e6f0 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43  uleNotAvailableC
2e700 75 72 73 6f 72 45 72 72 6f 72 28 70 43 75 72 73  ursorError(pCurs
2e710 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  or);..          
2e720 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2e730 20 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20   1;..           
2e740 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2e750 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2e760 20 6d 6f 64 75 6c 65 2e 78 45 6f 66 28 70 43 75   module.xEof(pCu
2e770 72 73 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20  rsor);..        
2e780 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2e790 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2e7a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e7b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e7c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e7d0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2e7e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
2e7f0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
2e800 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2e810 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2e820 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
2e830 6f 6c 75 6d 6e 22 20 2f 3e 20 6d 65 74 68 6f 64  olumn" /> method
2e840 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2e850 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2e860 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2e870 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72  param name="pCur
2e880 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  sor">..         
2e890 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2e8a0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2e8b0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
2e8c0 6f 6c 75 6d 6e 22 20 2f 3e 20 6d 65 74 68 6f 64  olumn" /> method
2e8d0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2e8e0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
2e8f0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
2e900 72 61 6d 20 6e 61 6d 65 3d 22 70 43 6f 6e 74 65  ram name="pConte
2e910 78 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  xt">..          
2e920 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
2e930 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2e940 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  NativeModule.xCo
2e950 6c 75 6d 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  lumn" /> method.
2e960 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2e970 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
2e980 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
2e990 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78 22 3e  am name="index">
2e9a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2e9b0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
2e9c0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
2e9d0 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e  veModule.xColumn
2e9e0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
2e9f0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2ea00 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
2ea10 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
2ea20 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2ea30 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
2ea40 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
2ea50 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d  iveModule.xColum
2ea60 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  n" /> method... 
2ea70 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2ea80 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
2ea90 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51         public SQ
2eaa0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43  LiteErrorCode xC
2eab0 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20 20 20 20 20  olumn(..        
2eac0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
2ead0 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20  Cursor,..       
2eae0 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
2eaf0 70 43 6f 6e 74 65 78 74 2c 0d 0a 20 20 20 20 20  pContext,..     
2eb00 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69             int i
2eb10 6e 64 65 78 0d 0a 20 20 20 20 20 20 20 20 20 20  ndex..          
2eb20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
2eb30 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2eb40 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
2eb50 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
2eb60 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e  OTE: Called by n
2eb70 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20  ative code...   
2eb80 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
2eb90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2eba0 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65   // CheckDispose
2ebb0 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a  d(); /* EXEMPT *
2ebc0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
2ebd0 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20       if (module 
2ebe0 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
2ebf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2ec00 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76  turn ModuleNotAv
2ec10 61 69 6c 61 62 6c 65 43 75 72 73 6f 72 45 72 72  ailableCursorErr
2ec20 6f 72 28 70 43 75 72 73 6f 72 29 3b 0d 0a 0d 0a  or(pCursor);....
2ec30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ec40 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 43  return module.xC
2ec50 6f 6c 75 6d 6e 28 70 43 75 72 73 6f 72 2c 20 70  olumn(pCursor, p
2ec60 43 6f 6e 74 65 78 74 2c 20 69 6e 64 65 78 29 3b  Context, index);
2ec70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2ec80 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2ec90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ecb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ecc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ecd0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
2ece0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
2ecf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2ed00 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
2ed10 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
2ed20 65 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 22 20  eModule.xRowId" 
2ed30 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2ed40 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
2ed50 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2ed60 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
2ed70 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a  ame="pCursor">..
2ed80 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2ed90 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
2eda0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
2edb0 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 22 20 2f  Module.xRowId" /
2edc0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
2edd0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
2ede0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
2edf0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2ee00 3d 22 72 6f 77 49 64 22 3e 0d 0a 20 20 20 20 20  ="rowId">..     
2ee10 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
2ee20 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
2ee30 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2ee40 65 2e 78 52 6f 77 49 64 22 20 2f 3e 20 6d 65 74  e.xRowId" /> met
2ee50 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
2ee60 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2ee70 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2ee80 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
2ee90 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
2eea0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
2eeb0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2eec0 65 2e 78 52 6f 77 49 64 22 20 2f 3e 20 6d 65 74  e.xRowId" /> met
2eed0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
2eee0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
2eef0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
2ef00 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72  blic SQLiteError
2ef10 43 6f 64 65 20 78 52 6f 77 49 64 28 0d 0a 20 20  Code xRowId(..  
2ef20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
2ef30 74 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20  tPtr pCursor,.. 
2ef40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2ef50 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a 20  ef long rowId.. 
2ef60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
2ef70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2ef80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ef90 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
2efa0 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61       // NOTE: Ca
2efb0 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63  lled by native c
2efc0 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ode...          
2efd0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
2efe0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65            // Che
2eff0 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a  ckDisposed(); /*
2f000 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20   EXEMPT */....  
2f010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
2f020 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c   (module == null
2f030 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2f040 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f         return Mo
2f050 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65  duleNotAvailable
2f060 43 75 72 73 6f 72 45 72 72 6f 72 28 70 43 75 72  CursorError(pCur
2f070 73 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  sor);....       
2f080 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2f090 6d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 28 70 43  module.xRowId(pC
2f0a0 75 72 73 6f 72 2c 20 72 65 66 20 72 6f 77 49 64  ursor, ref rowId
2f0b0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2f0c0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
2f0d0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2f0e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f0f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f110 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2f120 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2f130 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2f140 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
2f150 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
2f160 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74  iveModule.xUpdat
2f170 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
2f180 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2f190 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
2f1a0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
2f1b0 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d  m name="pVtab">.
2f1c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2f1d0 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
2f1e0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
2f1f0 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 22  eModule.xUpdate"
2f200 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
2f210 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
2f220 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
2f230 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2f240 6d 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20 20 20  me="argc">..    
2f250 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
2f260 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
2f270 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2f280 6c 65 2e 78 55 70 64 61 74 65 22 20 2f 3e 20 6d  le.xUpdate" /> m
2f290 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2f2a0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2f2b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2f2c0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61  / <param name="a
2f2d0 72 67 76 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  rgv">..         
2f2e0 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2f2f0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2f300 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 55  eNativeModule.xU
2f310 70 64 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64  pdate" /> method
2f320 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2f330 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
2f340 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
2f350 72 61 6d 20 6e 61 6d 65 3d 22 72 6f 77 49 64 22  ram name="rowId"
2f360 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2f370 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
2f380 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
2f390 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74  iveModule.xUpdat
2f3a0 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
2f3b0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2f3c0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
2f3d0 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
2f3e0 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
2f3f0 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
2f400 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
2f410 74 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61  tiveModule.xUpda
2f420 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  te" /> method...
2f430 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2f440 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
2f450 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53          public S
2f460 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
2f470 55 70 64 61 74 65 28 0d 0a 20 20 20 20 20 20 20  Update(..       
2f480 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
2f490 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20  pVtab,..        
2f4a0 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63          int argc
2f4b0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2f4c0 20 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c 0d     IntPtr argv,.
2f4d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f4e0 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d   ref long rowId.
2f4f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f500 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
2f510 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2f520 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
2f530 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
2f540 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65  Called by native
2f550 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
2f560 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
2f570 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43              // C
2f580 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20  heckDisposed(); 
2f590 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a  /* EXEMPT */....
2f5a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f5b0 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75  if (module == nu
2f5c0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
2f5d0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2f5e0 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62  ModuleNotAvailab
2f5f0 6c 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74  leTableError(pVt
2f600 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ab);....        
2f610 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d          return m
2f620 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 28 70 56  odule.xUpdate(pV
2f630 74 61 62 2c 20 61 72 67 63 2c 20 61 72 67 76 2c  tab, argc, argv,
2f640 20 72 65 66 20 72 6f 77 49 64 29 3b 0d 0a 20 20   ref rowId);..  
2f650 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
2f660 20 20 20 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2f6b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2f6c0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
2f6d0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
2f6e0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
2f6f0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2f700 75 6c 65 2e 78 42 65 67 69 6e 22 20 2f 3e 20 6d  ule.xBegin" /> m
2f710 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2f720 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2f730 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
2f740 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
2f750 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20  "pVtab">..      
2f760 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
2f770 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
2f780 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2f790 2e 78 42 65 67 69 6e 22 20 2f 3e 20 6d 65 74 68  .xBegin" /> meth
2f7a0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
2f7b0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
2f7c0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2f7d0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
2f7e0 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
2f7f0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
2f800 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2f810 2e 78 42 65 67 69 6e 22 20 2f 3e 20 6d 65 74 68  .xBegin" /> meth
2f820 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
2f830 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
2f840 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
2f850 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43  lic SQLiteErrorC
2f860 6f 64 65 20 78 42 65 67 69 6e 28 0d 0a 20 20 20  ode xBegin(..   
2f870 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
2f880 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 20  Ptr pVtab..     
2f890 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
2f8a0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2f8b0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
2f8c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f8d0 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64   // NOTE: Called
2f8e0 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e   by native code.
2f8f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f900 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
2f910 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69        // CheckDi
2f920 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45  sposed(); /* EXE
2f930 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20  MPT */....      
2f940 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f            if (mo
2f950 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  dule == null).. 
2f960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f970 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65     return Module
2f980 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c  NotAvailableTabl
2f990 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a  eError(pVtab);..
2f9a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f9b0 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e    return module.
2f9c0 78 42 65 67 69 6e 28 70 56 74 61 62 29 3b 0d 0a  xBegin(pVtab);..
2f9d0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
2f9e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2f9f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fa00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fa10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fa20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fa30 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2fa40 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2fa50 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
2fa60 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
2fa70 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
2fa80 6f 64 75 6c 65 2e 78 53 79 6e 63 22 20 2f 3e 20  odule.xSync" /> 
2fa90 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2faa0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
2fab0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
2fac0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2fad0 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20  ="pVtab">..     
2fae0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
2faf0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
2fb00 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2fb10 65 2e 78 53 79 6e 63 22 20 2f 3e 20 6d 65 74 68  e.xSync" /> meth
2fb20 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
2fb30 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
2fb40 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2fb50 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
2fb60 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
2fb70 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
2fb80 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2fb90 2e 78 53 79 6e 63 22 20 2f 3e 20 6d 65 74 68 6f  .xSync" /> metho
2fba0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
2fbb0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
2fbc0 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
2fbd0 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  ic SQLiteErrorCo
2fbe0 64 65 20 78 53 79 6e 63 28 0d 0a 20 20 20 20 20  de xSync(..     
2fbf0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
2fc00 72 20 70 56 74 61 62 0d 0a 20 20 20 20 20 20 20  r pVtab..       
2fc10 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
2fc20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2fc30 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
2fc40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2fc50 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62  / NOTE: Called b
2fc60 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a  y native code...
2fc70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fc80 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
2fc90 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70      // CheckDisp
2fca0 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50  osed(); /* EXEMP
2fcb0 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  T */....        
2fcc0 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75          if (modu
2fcd0 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  le == null)..   
2fce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fcf0 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f   return ModuleNo
2fd00 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45  tAvailableTableE
2fd10 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a  rror(pVtab);....
2fd20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fd30 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 53  return module.xS
2fd40 79 6e 63 28 70 56 74 61 62 29 3b 0d 0a 20 20 20  ync(pVtab);..   
2fd50 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
2fd60 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
2fd70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fd80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fd90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fda0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2fdb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2fdc0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2fdd0 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
2fde0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
2fdf0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2fe00 6c 65 2e 78 43 6f 6d 6d 69 74 22 20 2f 3e 20 6d  le.xCommit" /> m
2fe10 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2fe20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2fe30 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
2fe40 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
2fe50 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20  "pVtab">..      
2fe60 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
2fe70 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
2fe80 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2fe90 2e 78 43 6f 6d 6d 69 74 22 20 2f 3e 20 6d 65 74  .xCommit" /> met
2fea0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
2feb0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2fec0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2fed0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
2fee0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
2fef0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
2ff00 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2ff10 65 2e 78 43 6f 6d 6d 69 74 22 20 2f 3e 20 6d 65  e.xCommit" /> me
2ff20 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2ff30 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
2ff40 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
2ff50 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f  ublic SQLiteErro
2ff60 72 43 6f 64 65 20 78 43 6f 6d 6d 69 74 28 0d 0a  rCode xCommit(..
2ff70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ff80 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20  IntPtr pVtab..  
2ff90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
2ffa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
2ffb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ffc0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
2ffd0 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c      // NOTE: Cal
2ffe0 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f  led by native co
2fff0 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  de...           
30000 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
30010 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63           // Chec
30020 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20  kDisposed(); /* 
30030 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20  EXEMPT */....   
30040 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
30050 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29  (module == null)
30060 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30070 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64        return Mod
30080 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54  uleNotAvailableT
30090 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29  ableError(pVtab)
300a0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
300b0 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75       return modu
300c0 6c 65 2e 78 43 6f 6d 6d 69 74 28 70 56 74 61 62  le.xCommit(pVtab
300d0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
300e0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
300f0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
30100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30130 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
30140 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
30150 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
30160 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
30170 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
30180 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62  iveModule.xRollb
30190 61 63 6b 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ack" /> method..
301a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
301b0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
301c0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
301d0 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22  ram name="pVtab"
301e0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
301f0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
30200 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
30210 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62  iveModule.xRollb
30220 61 63 6b 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ack" /> method..
30230 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
30240 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
30250 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
30260 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
30270 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
30280 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
30290 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f  NativeModule.xRo
302a0 6c 6c 62 61 63 6b 22 20 2f 3e 20 6d 65 74 68 6f  llback" /> metho
302b0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
302c0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
302d0 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
302e0 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  ic SQLiteErrorCo
302f0 64 65 20 78 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20  de xRollback(.. 
30300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
30310 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20  ntPtr pVtab..   
30320 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
30330 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
30340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
30350 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
30360 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c     // NOTE: Call
30370 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64  ed by native cod
30380 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
30390 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
303a0 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b          // Check
303b0 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45  Disposed(); /* E
303c0 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20  XEMPT */....    
303d0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
303e0 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d  module == null).
303f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30400 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75       return Modu
30410 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61  leNotAvailableTa
30420 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b  bleError(pVtab);
30430 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
30440 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c      return modul
30450 65 2e 78 52 6f 6c 6c 62 61 63 6b 28 70 56 74 61  e.xRollback(pVta
30460 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  b);..           
30470 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
30480 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
30490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
304a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
304b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
304c0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
304d0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
304e0 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
304f0 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
30500 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
30510 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64  tiveModule.xFind
30520 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6d 65 74  Function" /> met
30530 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
30540 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
30550 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
30560 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
30570 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
30580 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
30590 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
305a0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
305b0 46 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e  FindFunction" />
305c0 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
305d0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
305e0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
305f0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
30600 22 6e 41 72 67 22 3e 0d 0a 20 20 20 20 20 20 20  "nArg">..       
30610 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
30620 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
30630 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
30640 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f  xFindFunction" /
30650 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
30660 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
30670 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
30680 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
30690 3d 22 7a 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20  ="zName">..     
306a0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
306b0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
306c0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
306d0 65 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 22  e.xFindFunction"
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 70           /// </p
30700 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
30710 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
30720 6d 65 3d 22 63 61 6c 6c 62 61 63 6b 22 3e 0d 0a  me="callback">..
30730 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
30740 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
30750 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
30760 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63  Module.xFindFunc
30770 74 69 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  tion" /> method.
30780 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
30790 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
307a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
307b0 61 6d 20 6e 61 6d 65 3d 22 70 43 6c 69 65 6e 74  am name="pClient
307c0 44 61 74 61 22 3e 0d 0a 20 20 20 20 20 20 20 20  Data">..        
307d0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
307e0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
307f0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
30800 46 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e  FindFunction" />
30810 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
30820 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
30830 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
30840 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
30850 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
30860 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
30870 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
30880 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74  odule.xFindFunct
30890 69 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ion" /> method..
308a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
308b0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
308c0 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
308d0 69 6e 74 20 78 46 69 6e 64 46 75 6e 63 74 69 6f  int xFindFunctio
308e0 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n(..            
308f0 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
30900 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
30910 20 20 20 69 6e 74 20 6e 41 72 67 2c 0d 0a 20 20     int nArg,..  
30920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
30930 74 50 74 72 20 7a 4e 61 6d 65 2c 0d 0a 20 20 20  tPtr zName,..   
30940 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
30950 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20   SQLiteCallback 
30960 63 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20  callback,..     
30970 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 49             ref I
30980 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74  ntPtr pClientDat
30990 61 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  a..             
309a0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
309b0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
309c0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
309d0 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
309e0 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69  : Called by nati
309f0 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  ve code...      
30a00 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
30a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
30a20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
30a30 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a  ; /* EXEMPT */..
30a40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30a50 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20    if (module == 
30a60 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
30a70 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
30a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f                Mo
30a90 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65  duleNotAvailable
30aa0 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62  TableError(pVtab
30ab0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
30ac0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 30          return 0
30ad0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
30ae0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
30af0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d          return m
30b00 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74  odule.xFindFunct
30b10 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ion(..          
30b20 20 20 20 20 20 20 20 20 20 20 70 56 74 61 62 2c            pVtab,
30b30 20 6e 41 72 67 2c 20 7a 4e 61 6d 65 2c 20 72 65   nArg, zName, re
30b40 66 20 63 61 6c 6c 62 61 63 6b 2c 20 72 65 66 20  f callback, ref 
30b50 70 43 6c 69 65 6e 74 44 61 74 61 29 3b 0d 0a 20  pClientData);.. 
30b60 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
30b70 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
30b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
30bc0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
30bd0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
30be0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
30bf0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
30c00 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
30c10 64 75 6c 65 2e 78 52 65 6e 61 6d 65 22 20 2f 3e  dule.xRename" />
30c20 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
30c30 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
30c40 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
30c50 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
30c60 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20  e="pVtab">..    
30c70 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
30c80 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
30c90 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
30ca0 6c 65 2e 78 52 65 6e 61 6d 65 22 20 2f 3e 20 6d  le.xRename" /> m
30cb0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
30cc0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
30cd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
30ce0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 7a  / <param name="z
30cf0 4e 65 77 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  New">..         
30d00 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
30d10 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
30d20 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52  eNativeModule.xR
30d30 65 6e 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64  ename" /> method
30d40 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
30d50 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
30d60 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65           /// <re
30d70 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
30d80 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
30d90 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
30da0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
30db0 52 65 6e 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f  Rename" /> metho
30dc0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
30dd0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
30de0 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
30df0 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  ic SQLiteErrorCo
30e00 64 65 20 78 52 65 6e 61 6d 65 28 0d 0a 20 20 20  de xRename(..   
30e10 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
30e20 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
30e30 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
30e40 74 72 20 7a 4e 65 77 0d 0a 20 20 20 20 20 20 20  tr zNew..       
30e50 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
30e60 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
30e70 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
30e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
30e90 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62  / NOTE: Called b
30ea0 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a  y native code...
30eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30ec0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
30ed0 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70      // CheckDisp
30ee0 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50  osed(); /* EXEMP
30ef0 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  T */....        
30f00 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75          if (modu
30f10 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  le == null)..   
30f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30f30 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f   return ModuleNo
30f40 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45  tAvailableTableE
30f50 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a  rror(pVtab);....
30f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30f70 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 52  return module.xR
30f80 65 6e 61 6d 65 28 70 56 74 61 62 2c 20 7a 4e 65  ename(pVtab, zNe
30f90 77 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  w);..           
30fa0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
30fb0 20 20 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
31000 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
31010 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
31020 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
31030 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
31040 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53 61 76 65  tiveModule.xSave
31050 70 6f 69 6e 74 22 20 2f 3e 20 6d 65 74 68 6f 64  point" /> method
31060 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
31070 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
31080 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
31090 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61  param name="pVta
310a0 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  b">..           
310b0 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
310c0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
310d0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53 61 76  ativeModule.xSav
310e0 65 70 6f 69 6e 74 22 20 2f 3e 20 6d 65 74 68 6f  epoint" /> metho
310f0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
31100 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
31110 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
31120 61 72 61 6d 20 6e 61 6d 65 3d 22 69 53 61 76 65  aram name="iSave
31130 70 6f 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20  point">..       
31140 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
31150 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
31160 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
31170 78 53 61 76 65 70 6f 69 6e 74 22 20 2f 3e 20 6d  xSavepoint" /> m
31180 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
31190 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
311a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
311b0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
311c0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
311d0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
311e0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
311f0 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74 22 20  ule.xSavepoint" 
31200 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
31210 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
31220 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
31230 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
31240 65 45 72 72 6f 72 43 6f 64 65 20 78 53 61 76 65  eErrorCode xSave
31250 70 6f 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20  point(..        
31260 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
31270 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20  Vtab,..         
31280 20 20 20 20 20 20 20 69 6e 74 20 69 53 61 76 65         int iSave
31290 70 6f 69 6e 74 0d 0a 20 20 20 20 20 20 20 20 20  point..         
312a0 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
312b0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
312c0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
312d0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
312e0 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20  NOTE: Called by 
312f0 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20  native code...  
31300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
31310 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31320 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73    // CheckDispos
31330 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20  ed(); /* EXEMPT 
31340 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  */....          
31350 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65        if (module
31360 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
31370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
31380 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41  eturn ModuleNotA
31390 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72  vailableTableErr
313a0 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20  or(pVtab);....  
313b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
313c0 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 53 61 76  turn module.xSav
313d0 65 70 6f 69 6e 74 28 70 56 74 61 62 2c 20 69 53  epoint(pVtab, iS
313e0 61 76 65 70 6f 69 6e 74 29 3b 0d 0a 20 20 20 20  avepoint);..    
313f0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
31400 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
31410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
31450 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
31460 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
31470 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
31480 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
31490 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
314a0 65 2e 78 52 65 6c 65 61 73 65 22 20 2f 3e 20 6d  e.xRelease" /> m
314b0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
314c0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
314d0 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
314e0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
314f0 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20  "pVtab">..      
31500 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
31510 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
31520 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
31530 2e 78 52 65 6c 65 61 73 65 22 20 2f 3e 20 6d 65  .xRelease" /> me
31540 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
31550 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
31560 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
31570 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 53   <param name="iS
31580 61 76 65 70 6f 69 6e 74 22 3e 0d 0a 20 20 20 20  avepoint">..    
31590 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
315a0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
315b0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
315c0 6c 65 2e 78 52 65 6c 65 61 73 65 22 20 2f 3e 20  le.xRelease" /> 
315d0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
315e0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
315f0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
31600 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
31610 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
31620 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
31630 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
31640 64 75 6c 65 2e 78 52 65 6c 65 61 73 65 22 20 2f  dule.xRelease" /
31650 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
31660 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
31670 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
31680 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
31690 45 72 72 6f 72 43 6f 64 65 20 78 52 65 6c 65 61  ErrorCode xRelea
316a0 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se(..           
316b0 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
316c0 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  b,..            
316d0 20 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69      int iSavepoi
316e0 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  nt..            
316f0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
31700 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
31710 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
31720 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
31730 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74  E: Called by nat
31740 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  ive code...     
31750 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
31760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
31770 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  / CheckDisposed(
31780 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d  ); /* EXEMPT */.
31790 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
317a0 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d     if (module ==
317b0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
317c0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
317d0 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69  rn ModuleNotAvai
317e0 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72 28  lableTableError(
317f0 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20  pVtab);....     
31800 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
31810 6e 20 6d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73  n module.xReleas
31820 65 28 70 56 74 61 62 2c 20 69 53 61 76 65 70 6f  e(pVtab, iSavepo
31830 69 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  int);..         
31840 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
31850 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
31860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31890 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
318a0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
318b0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
318c0 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
318d0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
318e0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f  NativeModule.xRo
318f0 6c 6c 62 61 63 6b 54 6f 22 20 2f 3e 20 6d 65 74  llbackTo" /> met
31900 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
31910 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
31920 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
31930 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
31940 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
31950 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
31960 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
31970 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
31980 52 6f 6c 6c 62 61 63 6b 54 6f 22 20 2f 3e 20 6d  RollbackTo" /> m
31990 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
319a0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
319b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
319c0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69  / <param name="i
319d0 53 61 76 65 70 6f 69 6e 74 22 3e 0d 0a 20 20 20  Savepoint">..   
319e0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
319f0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
31a00 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
31a10 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 22  ule.xRollbackTo"
31a20 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
31a30 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
31a40 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
31a50 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
31a60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
31a70 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
31a80 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
31a90 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61  veModule.xRollba
31aa0 63 6b 54 6f 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  ckTo" /> method.
31ab0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
31ac0 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
31ad0 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
31ae0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
31af0 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20   xRollbackTo(.. 
31b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
31b10 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
31b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
31b30 74 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20  t iSavepoint..  
31b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
31b50 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
31b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31b70 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
31b80 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c      // NOTE: Cal
31b90 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f  led by native co
31ba0 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  de...           
31bb0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
31bc0 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63           // Chec
31bd0 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20  kDisposed(); /* 
31be0 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20  EXEMPT */....   
31bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
31c00 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29  (module == null)
31c10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31c20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64        return Mod
31c30 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54  uleNotAvailableT
31c40 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29  ableError(pVtab)
31c50 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
31c60 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75       return modu
31c70 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 70  le.xRollbackTo(p
31c80 56 74 61 62 2c 20 69 53 61 76 65 70 6f 69 6e 74  Vtab, iSavepoint
31c90 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
31ca0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  }..            #
31cb0 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
31cc0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
31cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
31d10 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67              #reg
31d20 69 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c 65 20  ion IDisposable 
31d30 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20  Members..       
31d40 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
31d50 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
31d60 2f 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f 66 20  /// Disposes of 
31d70 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74  this object inst
31d80 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  ance...         
31d90 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
31da0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
31db0 75 62 6c 69 63 20 76 6f 69 64 20 44 69 73 70 6f  ublic void Dispo
31dc0 73 65 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20  se()..          
31dd0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
31de0 20 20 20 20 20 44 69 73 70 6f 73 65 28 74 72 75       Dispose(tru
31df0 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
31e00 20 20 20 20 20 47 43 2e 53 75 70 70 72 65 73 73       GC.Suppress
31e10 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d  Finalize(this);.
31e20 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
31e30 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64              #end
31e40 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
31e50 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
31e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20  /////////....   
31ea0 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e           #region
31eb0 20 49 44 69 73 70 6f 73 61 62 6c 65 20 22 50 61   IDisposable "Pa
31ec0 74 74 65 72 6e 22 20 4d 65 6d 62 65 72 73 0d 0a  ttern" Members..
31ed0 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
31ee0 61 74 65 20 62 6f 6f 6c 20 64 69 73 70 6f 73 65  ate bool dispose
31ef0 64 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d;..            
31f00 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
31f10 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54             /// T
31f20 68 72 6f 77 73 20 61 6e 20 3c 73 65 65 20 63 72  hrows an <see cr
31f30 65 66 3d 22 4f 62 6a 65 63 74 44 69 73 70 6f 73  ef="ObjectDispos
31f40 65 64 45 78 63 65 70 74 69 6f 6e 22 20 2f 3e 20  edException" /> 
31f50 69 66 20 74 68 69 73 20 6f 62 6a 65 63 74 0d 0a  if this object..
31f60 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
31f70 69 6e 73 74 61 6e 63 65 20 68 61 73 20 62 65 65  instance has bee
31f80 6e 20 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20  n disposed...   
31f90 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73           /// </s
31fa0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
31fb0 20 20 20 20 20 70 72 69 76 61 74 65 20 76 6f 69       private voi
31fc0 64 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  d CheckDisposed(
31fd0 29 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ) /* throw */.. 
31fe0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69             {..#i
31ff0 66 20 54 48 52 4f 57 5f 4f 4e 5f 44 49 53 50 4f  f THROW_ON_DISPO
32000 53 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20  SED..           
32010 20 20 20 20 20 69 66 20 28 64 69 73 70 6f 73 65       if (dispose
32020 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d)..            
32030 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
32040 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
32050 20 6e 65 77 20 4f 62 6a 65 63 74 44 69 73 70 6f   new ObjectDispo
32060 73 65 64 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20  sedException(.. 
32070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32080 20 20 20 20 20 20 20 74 79 70 65 6f 66 28 53 51         typeof(SQ
32090 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
320a0 29 2e 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20  ).Name);..      
320b0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
320c0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
320d0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
320e0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
320f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32120 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
32130 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
32140 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
32150 2f 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f 66 20  /// Disposes of 
32160 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74  this object inst
32170 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  ance...         
32180 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
32190 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
321a0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
321b0 64 69 73 70 6f 73 69 6e 67 22 3e 0d 0a 20 20 20  disposing">..   
321c0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e           /// Non
321d0 2d 7a 65 72 6f 20 69 66 20 74 68 69 73 20 6d 65  -zero if this me
321e0 74 68 6f 64 20 69 73 20 62 65 69 6e 67 20 63 61  thod is being ca
321f0 6c 6c 65 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20  lled from the.. 
32200 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
32210 73 65 65 20 63 72 65 66 3d 22 44 69 73 70 6f 73  see cref="Dispos
32220 65 28 29 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 20  e()" /> method. 
32230 20 5a 65 72 6f 20 69 66 20 74 68 69 73 20 6d 65   Zero if this me
32240 74 68 6f 64 20 69 73 20 62 65 69 6e 67 0d 0a 20  thod is being.. 
32250 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 63             /// c
32260 61 6c 6c 65 64 20 66 72 6f 6d 20 74 68 65 20 66  alled from the f
32270 69 6e 61 6c 69 7a 65 72 2e 0d 0a 20 20 20 20 20  inalizer...     
32280 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
32290 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
322a0 20 70 72 69 76 61 74 65 20 2f 2a 20 70 72 6f 74   private /* prot
322b0 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 2a 2f  ected virtual */
322c0 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 62 6f   void Dispose(bo
322d0 6f 6c 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20  ol disposing).. 
322e0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
322f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
32300 20 28 21 64 69 73 70 6f 73 65 64 29 0d 0a 20 20   (!disposed)..  
32310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
32320 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32330 20 20 20 20 20 2f 2f 69 66 20 28 64 69 73 70 6f       //if (dispo
32340 73 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 20  sing)..         
32350 20 20 20 20 20 20 20 20 20 20 20 2f 2f 7b 0d 0a             //{..
32360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32370 20 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f      //    //////
32380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
323a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
323b0 20 20 20 20 2f 2f 20 20 20 20 2f 2f 20 64 69 73      //    // dis
323c0 70 6f 73 65 20 6d 61 6e 61 67 65 64 20 72 65 73  pose managed res
323d0 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a  ources here.....
323e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
323f0 20 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f      //    //////
32400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
32420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32430 20 20 20 20 2f 2f 7d 0d 0a 0d 0a 20 20 20 20 20      //}....     
32440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
32450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32470 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20  /////..         
32480 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 72 65             // re
32490 6c 65 61 73 65 20 75 6e 6d 61 6e 61 67 65 64 20  lease unmanaged 
324a0 72 65 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e  resources here..
324b0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
324c0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
324d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
324e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
324f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32500 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
32510 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
32520 4e 4f 54 45 3a 20 54 68 65 20 6d 6f 64 75 6c 65  NOTE: The module
32530 20 69 73 20 6e 6f 74 20 6f 77 6e 65 64 20 62 79   is not owned by
32540 20 75 73 3b 20 74 68 65 72 65 66 6f 72 65 2c 20   us; therefore, 
32550 64 6f 20 6e 6f 74 0d 0a 20 20 20 20 20 20 20 20  do not..        
32560 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
32570 20 20 20 20 20 64 69 73 70 6f 73 65 20 69 74 2e       dispose it.
32580 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
32590 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
325a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
325b0 20 28 6d 6f 64 75 6c 65 20 21 3d 20 6e 75 6c 6c   (module != null
325c0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
325d0 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c             modul
325e0 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  e = null;....   
325f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32600 20 64 69 73 70 6f 73 65 64 20 3d 20 74 72 75 65   disposed = true
32610 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
32620 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
32630 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
32640 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
32650 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
32660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
326a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72  ..            #r
326b0 65 67 69 6f 6e 20 44 65 73 74 72 75 63 74 6f 72  egion Destructor
326c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
326d0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
326e0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 46 69 6e           /// Fin
326f0 61 6c 69 7a 65 73 20 74 68 69 73 20 6f 62 6a 65  alizes this obje
32700 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20  ct instance...  
32710 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
32720 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
32730 20 20 20 20 20 20 7e 53 51 4c 69 74 65 4e 61 74        ~SQLiteNat
32740 69 76 65 4d 6f 64 75 6c 65 28 29 0d 0a 20 20 20  iveModule()..   
32750 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
32760 20 20 20 20 20 20 20 20 20 20 20 20 44 69 73 70              Disp
32770 6f 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20  ose(false);..   
32780 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
32790 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
327a0 6f 6e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  on..        }.. 
327b0 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
327c0 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
327d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
327e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
327f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32810 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
32820 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
32830 43 6f 6e 73 74 61 6e 74 73 0d 0a 20 20 20 20 20  Constants..     
32840 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
32850 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
32860 65 20 64 65 66 61 75 6c 74 20 76 65 72 73 69 6f  e default versio
32870 6e 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65 20  n of the native 
32880 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 73  sqlite3_module s
32890 74 72 75 63 74 75 72 65 20 69 6e 20 75 73 65 2e  tructure in use.
328a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
328b0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
328c0 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
328d0 20 72 65 61 64 6f 6e 6c 79 20 69 6e 74 20 44 65   readonly int De
328e0 66 61 75 6c 74 4d 6f 64 75 6c 65 56 65 72 73 69  faultModuleVersi
328f0 6f 6e 20 3d 20 32 3b 0d 0a 20 20 20 20 20 20 20  on = 2;..       
32900 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
32910 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
32920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
32960 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
32970 6e 20 50 72 69 76 61 74 65 20 44 61 74 61 0d 0a  n Private Data..
32980 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
32990 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
329a0 2f 2f 20 54 68 69 73 20 66 69 65 6c 64 20 69 73  // This field is
329b0 20 75 73 65 64 20 74 6f 20 73 74 6f 72 65 20 74   used to store t
329c0 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65  he native sqlite
329d0 33 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63 74 75  3_module structu
329e0 72 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  re..        /// 
329f0 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
32a00 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74  this object inst
32a10 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ance...        /
32a20 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
32a30 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 55         private U
32a40 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
32a50 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c  ds.sqlite3_modul
32a60 65 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 3b 0d  e nativeModule;.
32a70 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
32a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32ac0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
32ad0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
32ae0 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 66 69       /// This fi
32af0 65 6c 64 20 69 73 20 75 73 65 64 20 74 6f 20 73  eld is used to s
32b00 74 6f 72 65 20 74 68 65 20 64 65 73 74 72 75 63  tore the destruc
32b10 74 6f 72 20 64 65 6c 65 67 61 74 65 20 74 6f 20  tor delegate to 
32b20 62 65 20 70 61 73 73 65 64 20 74 6f 0d 0a 20 20  be passed to..  
32b30 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 53 51        /// the SQ
32b40 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
32b50 79 20 76 69 61 20 74 68 65 20 73 71 6c 69 74 65  y via the sqlite
32b60 33 5f 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61  3_create_disposa
32b70 62 6c 65 5f 6d 6f 64 75 6c 65 28 29 0d 0a 20 20  ble_module()..  
32b80 20 20 20 20 20 20 2f 2f 2f 20 66 75 6e 63 74 69        /// functi
32b90 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  on...        ///
32ba0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
32bb0 20 20 20 20 20 70 72 69 76 61 74 65 20 55 6e 73       private Uns
32bc0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
32bd0 2e 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 20  .xDestroyModule 
32be0 64 65 73 74 72 6f 79 4d 6f 64 75 6c 65 3b 0d 0a  destroyModule;..
32bf0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
32c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32c40 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
32c50 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
32c60 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 66 69 65      /// This fie
32c70 6c 64 20 69 73 20 75 73 65 64 20 74 6f 20 73 74  ld is used to st
32c80 6f 72 65 20 61 20 70 6f 69 6e 74 65 72 20 74 6f  ore a pointer to
32c90 20 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69   the native sqli
32ca0 74 65 33 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20 20  te3_module..    
32cb0 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72      /// structur
32cc0 65 20 72 65 74 75 72 6e 65 64 20 62 79 20 74 68  e returned by th
32cd0 65 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65  e sqlite3_create
32ce0 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75  _disposable_modu
32cf0 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  le..        /// 
32d00 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  function...     
32d10 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
32d20 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
32d30 74 65 20 49 6e 74 50 74 72 20 64 69 73 70 6f 73  te IntPtr dispos
32d40 61 62 6c 65 4d 6f 64 75 6c 65 3b 0d 0a 0d 0a 20  ableModule;.... 
32d50 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
32d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
32da0 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
32db0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
32dc0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
32dd0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
32de0 2f 2f 2f 20 54 68 69 73 20 66 69 65 6c 64 20 69  /// This field i
32df0 73 20 75 73 65 64 20 74 6f 20 68 6f 6c 64 20 74  s used to hold t
32e00 68 65 20 62 6c 6f 63 6b 20 6f 66 20 6e 61 74 69  he block of nati
32e10 76 65 20 6d 65 6d 6f 72 79 20 74 68 61 74 20 63  ve memory that c
32e20 6f 6e 74 61 69 6e 73 0d 0a 20 20 20 20 20 20 20  ontains..       
32e30 20 2f 2f 2f 20 74 68 65 20 6e 61 74 69 76 65 20   /// the native 
32e40 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 73  sqlite3_module s
32e50 74 72 75 63 74 75 72 65 20 61 73 73 6f 63 69 61  tructure associa
32e60 74 65 64 20 77 69 74 68 20 74 68 69 73 20 6f 62  ted with this ob
32e70 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ject..        //
32e80 2f 20 69 6e 73 74 61 6e 63 65 20 77 68 65 6e 20  / instance when 
32e90 72 75 6e 6e 69 6e 67 20 6f 6e 20 74 68 65 20 2e  running on the .
32ea0 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d  NET Compact Fram
32eb0 65 77 6f 72 6b 2e 0d 0a 20 20 20 20 20 20 20 20  ework...        
32ec0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
32ed0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
32ee0 49 6e 74 50 74 72 20 70 4e 61 74 69 76 65 4d 6f  IntPtr pNativeMo
32ef0 64 75 6c 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  dule;..#endif...
32f00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
32f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32f50 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
32f60 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
32f70 20 20 20 2f 2f 2f 20 54 68 69 73 20 66 69 65 6c     /// This fiel
32f80 64 20 69 73 20 75 73 65 64 20 74 6f 20 73 74 6f  d is used to sto
32f90 72 65 20 74 68 65 20 76 69 72 74 75 61 6c 20 74  re the virtual t
32fa0 61 62 6c 65 20 69 6e 73 74 61 6e 63 65 73 20 61  able instances a
32fb0 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20  ssociated..     
32fc0 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73     /// with this
32fd0 20 6d 6f 64 75 6c 65 2e 20 20 54 68 65 20 6e 61   module.  The na
32fe0 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
32ff0 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62  the sqlite3_vtab
33000 20 64 65 72 69 76 65 64 0d 0a 20 20 20 20 20 20   derived..      
33010 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 20    /// structure 
33020 69 73 20 75 73 65 64 20 74 6f 20 6b 65 79 20 69  is used to key i
33030 6e 74 6f 20 74 68 69 73 20 63 6f 6c 6c 65 63 74  nto this collect
33040 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ion...        //
33050 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
33060 20 20 20 20 20 20 70 72 69 76 61 74 65 20 44 69        private Di
33070 63 74 69 6f 6e 61 72 79 3c 49 6e 74 50 74 72 2c  ctionary<IntPtr,
33080 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
33090 62 6c 65 3e 20 74 61 62 6c 65 73 3b 0d 0a 0d 0a  ble> tables;....
330a0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
330b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
330c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
330d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
330e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
330f0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
33100 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
33110 20 20 2f 2f 2f 20 54 68 69 73 20 66 69 65 6c 64    /// This field
33120 20 69 73 20 75 73 65 64 20 74 6f 20 73 74 6f 72   is used to stor
33130 65 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  e the virtual ta
33140 62 6c 65 20 63 75 72 73 6f 72 20 69 6e 73 74 61  ble cursor insta
33150 6e 63 65 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nces..        //
33160 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  / associated wit
33170 68 20 74 68 69 73 20 6d 6f 64 75 6c 65 2e 20 20  h this module.  
33180 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  The native point
33190 65 72 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20  er to the..     
331a0 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 76     /// sqlite3_v
331b0 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69 76  tab_cursor deriv
331c0 65 64 20 73 74 72 75 63 74 75 72 65 20 69 73 20  ed structure is 
331d0 75 73 65 64 20 74 6f 20 6b 65 79 20 69 6e 74 6f  used to key into
331e0 20 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20 2f   this..        /
331f0 2f 2f 20 63 6f 6c 6c 65 63 74 69 6f 6e 2e 0d 0a  // collection...
33200 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
33210 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
33220 70 72 69 76 61 74 65 20 44 69 63 74 69 6f 6e 61  private Dictiona
33230 72 79 3c 49 6e 74 50 74 72 2c 20 53 51 4c 69 74  ry<IntPtr, SQLit
33240 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72  eVirtualTableCur
33250 73 6f 72 3e 20 63 75 72 73 6f 72 73 3b 0d 0a 0d  sor> cursors;...
33260 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
33270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
332a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
332b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
332c0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
332d0 20 20 20 2f 2f 2f 20 54 68 69 73 20 66 69 65 6c     /// This fiel
332e0 64 20 69 73 20 75 73 65 64 20 74 6f 20 73 74 6f  d is used to sto
332f0 72 65 20 74 68 65 20 76 69 72 74 75 61 6c 20 74  re the virtual t
33300 61 62 6c 65 20 66 75 6e 63 74 69 6f 6e 20 69 6e  able function in
33310 73 74 61 6e 63 65 73 0d 0a 20 20 20 20 20 20 20  stances..       
33320 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64 20   /// associated 
33330 77 69 74 68 20 74 68 69 73 20 6d 6f 64 75 6c 65  with this module
33340 2e 20 20 54 68 65 20 63 61 73 65 2d 69 6e 73 65  .  The case-inse
33350 6e 73 69 74 69 76 65 20 66 75 6e 63 74 69 6f 6e  nsitive function
33360 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 2f   name..        /
33370 2f 2f 20 61 6e 64 20 74 68 65 20 6e 75 6d 62 65  // and the numbe
33380 72 20 6f 66 20 61 72 67 75 6d 65 6e 74 73 20 28  r of arguments (
33390 77 69 74 68 20 2d 31 20 6d 65 61 6e 69 6e 67 20  with -1 meaning 
333a0 22 61 6e 79 22 29 20 61 72 65 20 75 73 65 64 20  "any") are used 
333b0 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  to..        /// 
333c0 63 6f 6e 73 74 72 75 63 74 20 74 68 65 20 73 74  construct the st
333d0 72 69 6e 67 20 74 68 61 74 20 69 73 20 75 73 65  ring that is use
333e0 64 20 74 6f 20 6b 65 79 20 69 6e 74 6f 20 74 68  d to key into th
333f0 69 73 20 63 6f 6c 6c 65 63 74 69 6f 6e 2e 0d 0a  is collection...
33400 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
33410 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
33420 70 72 69 76 61 74 65 20 44 69 63 74 69 6f 6e 61  private Dictiona
33430 72 79 3c 73 74 72 69 6e 67 2c 20 53 51 4c 69 74  ry<string, SQLit
33440 65 46 75 6e 63 74 69 6f 6e 3e 20 66 75 6e 63 74  eFunction> funct
33450 69 6f 6e 73 3b 0d 0a 20 20 20 20 20 20 20 20 23  ions;..        #
33460 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
33470 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
33480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
334a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
334b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
334c0 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
334d0 50 75 62 6c 69 63 20 43 6f 6e 73 74 72 75 63 74  Public Construct
334e0 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ors..        ///
334f0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
33500 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63      /// Construc
33510 74 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f  ts an instance o
33520 66 20 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20  f this class... 
33530 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
33540 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
33550 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
33560 6e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  name">..        
33570 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20  /// The name of 
33580 74 68 65 20 6d 6f 64 75 6c 65 2e 20 20 54 68 69  the module.  Thi
33590 73 20 70 61 72 61 6d 65 74 65 72 20 63 61 6e 6e  s parameter cann
335a0 6f 74 20 62 65 20 6e 75 6c 6c 2e 0d 0a 20 20 20  ot be null...   
335b0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
335c0 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
335d0 63 20 53 51 4c 69 74 65 4d 6f 64 75 6c 65 28 73  c SQLiteModule(s
335e0 74 72 69 6e 67 20 6e 61 6d 65 29 0d 0a 20 20 20  tring name)..   
335f0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
33600 20 20 20 20 69 66 20 28 6e 61 6d 65 20 3d 3d 20      if (name == 
33610 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
33620 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
33630 20 41 72 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63   ArgumentNullExc
33640 65 70 74 69 6f 6e 28 22 6e 61 6d 65 22 29 3b 0d  eption("name");.
33650 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ...            t
33660 68 69 73 2e 6e 61 6d 65 20 3d 20 6e 61 6d 65 3b  his.name = name;
33670 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
33680 69 73 2e 74 61 62 6c 65 73 20 3d 20 6e 65 77 20  is.tables = new 
33690 44 69 63 74 69 6f 6e 61 72 79 3c 49 6e 74 50 74  Dictionary<IntPt
336a0 72 2c 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c  r, SQLiteVirtual
336b0 54 61 62 6c 65 3e 28 29 3b 0d 0a 20 20 20 20 20  Table>();..     
336c0 20 20 20 20 20 20 20 74 68 69 73 2e 63 75 72 73         this.curs
336d0 6f 72 73 20 3d 20 6e 65 77 20 44 69 63 74 69 6f  ors = new Dictio
336e0 6e 61 72 79 3c 49 6e 74 50 74 72 2c 20 53 51 4c  nary<IntPtr, SQL
336f0 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43  iteVirtualTableC
33700 75 72 73 6f 72 3e 28 29 3b 0d 0a 20 20 20 20 20  ursor>();..     
33710 20 20 20 20 20 20 20 74 68 69 73 2e 66 75 6e 63         this.func
33720 74 69 6f 6e 73 20 3d 20 6e 65 77 20 44 69 63 74  tions = new Dict
33730 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 53  ionary<string, S
33740 51 4c 69 74 65 46 75 6e 63 74 69 6f 6e 3e 28 29  QLiteFunction>()
33750 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
33760 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
33770 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
33780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
337a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
337b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
337c0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
337d0 72 65 67 69 6f 6e 20 49 6e 74 65 72 6e 61 6c 20  region Internal 
337e0 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20  Methods..       
337f0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
33800 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 61 6c 6c          /// Call
33810 73 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c  s the native SQL
33820 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
33830 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 63 72 65   in order to cre
33840 61 74 65 20 61 20 6e 65 77 0d 0a 20 20 20 20 20  ate a new..     
33850 20 20 20 2f 2f 2f 20 64 69 73 70 6f 73 61 62 6c     /// disposabl
33860 65 20 6d 6f 64 75 6c 65 20 63 6f 6e 74 61 69 6e  e module contain
33870 69 6e 67 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e  ing the implemen
33880 74 61 74 69 6f 6e 20 6f 66 20 61 20 76 69 72 74  tation of a virt
33890 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
338a0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
338b0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
338c0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 44 62  <param name="pDb
338d0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
338e0 54 68 65 20 6e 61 74 69 76 65 20 64 61 74 61 62  The native datab
338f0 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 70  ase connection p
33900 6f 69 6e 74 65 72 20 74 6f 20 75 73 65 2e 0d 0a  ointer to use...
33910 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
33920 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
33930 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
33940 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
33950 6f 20 75 70 6f 6e 20 73 75 63 63 65 73 73 2e 0d  o upon success..
33960 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
33970 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
33980 20 69 6e 74 65 72 6e 61 6c 20 62 6f 6f 6c 20 43   internal bool C
33990 72 65 61 74 65 44 69 73 70 6f 73 61 62 6c 65 4d  reateDisposableM
339a0 6f 64 75 6c 65 28 0d 0a 20 20 20 20 20 20 20 20  odule(..        
339b0 20 20 20 20 49 6e 74 50 74 72 20 70 44 62 0d 0a      IntPtr pDb..
339c0 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
339d0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
339e0 20 20 20 20 20 20 69 66 20 28 64 69 73 70 6f 73        if (dispos
339f0 61 62 6c 65 4d 6f 64 75 6c 65 20 21 3d 20 49 6e  ableModule != In
33a00 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
33a10 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
33a20 72 6e 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 20  rn true;....    
33a30 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
33a40 4e 61 6d 65 20 3d 20 49 6e 74 50 74 72 2e 5a 65  Name = IntPtr.Ze
33a50 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ro;....         
33a60 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
33a70 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
33a80 20 20 20 20 20 20 20 70 4e 61 6d 65 20 3d 20 53         pName = S
33a90 51 4c 69 74 65 53 74 72 69 6e 67 2e 55 74 66 38  QLiteString.Utf8
33aa0 49 6e 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67  IntPtrFromString
33ab0 28 6e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  (name);....     
33ac0 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66             Unsaf
33ad0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
33ae0 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6e 61  qlite3_module na
33af0 74 69 76 65 4d 6f 64 75 6c 65 20 3d 0d 0a 20 20  tiveModule =..  
33b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33b10 20 20 41 6c 6c 6f 63 61 74 65 4e 61 74 69 76 65    AllocateNative
33b20 4d 6f 64 75 6c 65 28 29 3b 0d 0a 0d 0a 20 20 20  Module();....   
33b30 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 73               des
33b40 74 72 6f 79 4d 6f 64 75 6c 65 20 3d 20 6e 65 77  troyModule = new
33b50 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
33b60 68 6f 64 73 2e 78 44 65 73 74 72 6f 79 4d 6f 64  hods.xDestroyMod
33b70 75 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ule(..          
33b80 20 20 20 20 20 20 20 20 20 20 78 44 65 73 74 72            xDestr
33b90 6f 79 4d 6f 64 75 6c 65 29 3b 0d 0a 0d 0a 23 69  oyModule);....#i
33ba0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
33bb0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
33bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 69                di
33bd0 73 70 6f 73 61 62 6c 65 4d 6f 64 75 6c 65 20 3d  sposableModule =
33be0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
33bf0 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69        UnsafeNati
33c00 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
33c10 33 5f 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61  3_create_disposa
33c20 62 6c 65 5f 6d 6f 64 75 6c 65 28 0d 0a 20 20 20  ble_module(..   
33c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33c40 20 20 20 20 20 70 44 62 2c 20 70 4e 61 6d 65 2c       pDb, pName,
33c50 20 72 65 66 20 6e 61 74 69 76 65 4d 6f 64 75 6c   ref nativeModul
33c60 65 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2c 20  e, IntPtr.Zero, 
33c70 64 65 73 74 72 6f 79 4d 6f 64 75 6c 65 29 3b 0d  destroyModule);.
33c80 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
33c90 20 20 20 72 65 74 75 72 6e 20 28 64 69 73 70 6f     return (dispo
33ca0 73 61 62 6c 65 4d 6f 64 75 6c 65 20 21 3d 20 49  sableModule != I
33cb0 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 23 65  ntPtr.Zero);..#e
33cc0 6c 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e  lif !SQLITE_STAN
33cd0 44 41 52 44 0d 0a 20 20 20 20 20 20 20 20 20 20  DARD..          
33ce0 20 20 20 20 20 20 64 69 73 70 6f 73 61 62 6c 65        disposable
33cf0 4d 6f 64 75 6c 65 20 3d 0d 0a 20 20 20 20 20 20  Module =..      
33d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e                Un
33d10 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
33d20 73 2e 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65  s.sqlite3_create
33d30 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75  _disposable_modu
33d40 6c 65 5f 69 6e 74 65 72 6f 70 28 0d 0a 20 20 20  le_interop(..   
33d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33d60 20 20 20 20 70 44 62 2c 20 70 4e 61 6d 65 2c 20      pDb, pName, 
33d70 41 6c 6c 6f 63 61 74 65 4e 61 74 69 76 65 4d 6f  AllocateNativeMo
33d80 64 75 6c 65 49 6e 74 65 72 6f 70 28 29 2c 0d 0a  duleInterop(),..
33d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33da0 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
33db0 75 6c 65 2e 69 56 65 72 73 69 6f 6e 2c 20 6e 61  ule.iVersion, na
33dc0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61  tiveModule.xCrea
33dd0 74 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  te,..           
33de0 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
33df0 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63  veModule.xConnec
33e00 74 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  t, nativeModule.
33e10 78 42 65 73 74 49 6e 64 65 78 2c 0d 0a 20 20 20  xBestIndex,..   
33e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33e30 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
33e40 2e 78 44 69 73 63 6f 6e 6e 65 63 74 2c 20 6e 61  .xDisconnect, na
33e50 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 65 73 74  tiveModule.xDest
33e60 72 6f 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  roy,..          
33e70 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
33e80 69 76 65 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e 2c  iveModule.xOpen,
33e90 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43   nativeModule.xC
33ea0 6c 6f 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  lose,..         
33eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
33ec0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74  tiveModule.xFilt
33ed0 65 72 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65  er, nativeModule
33ee0 2e 78 4e 65 78 74 2c 0d 0a 20 20 20 20 20 20 20  .xNext,..       
33ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33f00 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 45 6f  nativeModule.xEo
33f10 66 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  f, nativeModule.
33f20 78 43 6f 6c 75 6d 6e 2c 0d 0a 20 20 20 20 20 20  xColumn,..      
33f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33f40 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52   nativeModule.xR
33f50 6f 77 49 64 2c 20 6e 61 74 69 76 65 4d 6f 64 75  owId, nativeModu
33f60 6c 65 2e 78 55 70 64 61 74 65 2c 0d 0a 20 20 20  le.xUpdate,..   
33f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33f80 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
33f90 2e 78 42 65 67 69 6e 2c 20 6e 61 74 69 76 65 4d  .xBegin, nativeM
33fa0 6f 64 75 6c 65 2e 78 53 79 6e 63 2c 0d 0a 20 20  odule.xSync,..  
33fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33fc0 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
33fd0 65 2e 78 43 6f 6d 6d 69 74 2c 20 6e 61 74 69 76  e.xCommit, nativ
33fe0 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63  eModule.xRollbac
33ff0 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k,..            
34000 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
34010 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e  eModule.xFindFun
34020 63 74 69 6f 6e 2c 20 6e 61 74 69 76 65 4d 6f 64  ction, nativeMod
34030 75 6c 65 2e 78 52 65 6e 61 6d 65 2c 0d 0a 20 20  ule.xRename,..  
34040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34050 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
34060 65 2e 78 53 61 76 65 70 6f 69 6e 74 2c 20 6e 61  e.xSavepoint, na
34070 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6c 65  tiveModule.xRele
34080 61 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ase,..          
34090 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
340a0 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62  iveModule.xRollb
340b0 61 63 6b 54 6f 2c 20 49 6e 74 50 74 72 2e 5a 65  ackTo, IntPtr.Ze
340c0 72 6f 2c 20 64 65 73 74 72 6f 79 4d 6f 64 75 6c  ro, destroyModul
340d0 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
340e0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 64         return (d
340f0 69 73 70 6f 73 61 62 6c 65 4d 6f 64 75 6c 65 20  isposableModule 
34100 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b  != IntPtr.Zero);
34110 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
34120 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e           throw n
34130 65 77 20 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74 65  ew NotImplemente
34140 64 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 23  dException();..#
34150 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
34160 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
34170 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20    finally..     
34180 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
34190 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 4e            if (pN
341a0 61 6d 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  ame != IntPtr.Ze
341b0 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
341c0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
341d0 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
341e0 74 65 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70 4e  teMemory.Free(pN
341f0 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ame);..         
34200 20 20 20 20 20 20 20 20 20 20 20 70 4e 61 6d 65             pName
34210 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d   = IntPtr.Zero;.
34220 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
34230 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
34240 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  }..        }..  
34250 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
34260 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
34270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
342a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
342b0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
342c0 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 4d  region Private M
342d0 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
342e0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
342f0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
34300 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64  method is called
34310 20 62 79 20 74 68 65 20 53 51 4c 69 74 65 20 63   by the SQLite c
34320 6f 72 65 20 6c 69 62 72 61 72 79 20 77 68 65 6e  ore library when
34330 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20   the native..   
34340 20 20 20 20 20 2f 2f 2f 20 6d 6f 64 75 6c 65 20       /// module 
34350 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
34360 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74  this object inst
34370 61 6e 63 65 20 69 73 20 62 65 69 6e 67 20 64 65  ance is being de
34380 73 74 72 6f 79 65 64 20 64 75 65 0d 0a 20 20 20  stroyed due..   
34390 20 20 20 20 20 2f 2f 2f 20 74 6f 20 69 74 73 20       /// to its 
343a0 70 61 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f  parent connectio
343b0 6e 20 62 65 69 6e 67 20 63 6c 6f 73 65 64 2e 20  n being closed. 
343c0 20 49 74 20 6d 61 79 20 61 6c 73 6f 20 62 65 20   It may also be 
343d0 63 61 6c 6c 65 64 20 62 79 0d 0a 20 20 20 20 20  called by..     
343e0 20 20 20 2f 2f 2f 20 74 68 65 20 22 76 74 73 68     /// the "vtsh
343f0 69 6d 22 20 6d 6f 64 75 6c 65 20 69 66 2f 77 68  im" module if/wh
34400 65 6e 20 74 68 65 20 73 71 6c 69 74 65 33 5f 64  en the sqlite3_d
34410 69 73 70 6f 73 65 5f 6d 6f 64 75 6c 65 28 29 20  ispose_module() 
34420 66 75 6e 63 74 69 6f 6e 0d 0a 20 20 20 20 20 20  function..      
34430 20 20 2f 2f 2f 20 69 73 20 63 61 6c 6c 65 64 2e    /// is called.
34440 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
34450 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
34460 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
34470 65 3d 22 70 43 6c 69 65 6e 74 44 61 74 61 22 3e  e="pClientData">
34480 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
34490 65 20 6e 61 74 69 76 65 20 75 73 65 72 2d 64 61  e native user-da
344a0 74 61 20 70 6f 69 6e 74 65 72 20 61 73 73 6f 63  ta pointer assoc
344b0 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20  iated with this 
344c0 6d 6f 64 75 6c 65 2c 20 61 73 20 69 74 20 77 61  module, as it wa
344d0 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70  s..        /// p
344e0 72 6f 76 69 64 65 64 20 74 6f 20 74 68 65 20 53  rovided to the S
344f0 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
34500 72 79 20 77 68 65 6e 20 74 68 65 20 6e 61 74 69  ry when the nati
34510 76 65 20 6d 6f 64 75 6c 65 20 69 6e 73 74 61 6e  ve module instan
34520 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ce..        /// 
34530 77 61 73 20 63 72 65 61 74 65 64 2e 0d 0a 20 20  was created...  
34540 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
34550 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  m>..        priv
34560 61 74 65 20 76 6f 69 64 20 78 44 65 73 74 72 6f  ate void xDestro
34570 79 4d 6f 64 75 6c 65 28 0d 0a 20 20 20 20 20 20  yModule(..      
34580 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 6c        IntPtr pCl
34590 69 65 6e 74 44 61 74 61 20 2f 2a 20 4e 4f 54 20  ientData /* NOT 
345a0 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20  USED */..       
345b0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
345c0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  {..            /
345d0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  /..            /
345e0 2f 20 4e 4f 54 45 3a 20 41 74 20 74 68 69 73 20  / NOTE: At this 
345f0 70 6f 69 6e 74 2c 20 6a 75 73 74 20 6d 61 6b 65  point, just make
34600 20 73 75 72 65 20 74 68 61 74 20 74 68 69 73 20   sure that this 
34610 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 0d 0a 20  native module.. 
34620 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
34630 20 20 20 20 68 61 6e 64 6c 65 20 69 73 20 6e 6f      handle is no
34640 74 20 72 65 75 73 65 64 2c 20 6e 6f 72 20 70 61  t reused, nor pa
34650 73 73 65 64 20 69 6e 74 6f 20 74 68 65 20 6e 61  ssed into the na
34660 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20  tive..          
34670 20 20 2f 2f 20 20 20 20 20 20 20 73 71 6c 69 74    //       sqlit
34680 65 33 5f 64 69 73 70 6f 73 65 5f 6d 6f 64 75 6c  e3_dispose_modul
34690 65 28 29 20 66 75 6e 63 74 69 6f 6e 20 6c 61 74  e() function lat
346a0 65 72 20 28 69 2e 65 2e 20 69 66 2f 77 68 65 6e  er (i.e. if/when
346b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
346c0 20 20 20 20 20 20 20 74 68 65 20 44 69 73 70 6f         the Dispo
346d0 73 65 28 29 20 6d 65 74 68 6f 64 20 6f 66 20 74  se() method of t
346e0 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  his object insta
346f0 6e 63 65 20 69 73 20 63 61 6c 6c 65 64 29 2e 0d  nce is called)..
34700 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  .            //.
34710 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 69 73  .            dis
34720 70 6f 73 61 62 6c 65 4d 6f 64 75 6c 65 20 3d 20  posableModule = 
34730 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
34740 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
34750 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
34760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
347a0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
347b0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
347c0 20 43 72 65 61 74 65 73 20 61 6e 64 20 72 65 74   Creates and ret
347d0 75 72 6e 73 20 74 68 65 20 6e 61 74 69 76 65 20  urns the native 
347e0 73 71 6c 69 74 65 5f 6d 6f 64 75 6c 65 20 73 74  sqlite_module st
347f0 72 75 63 74 75 72 65 20 75 73 69 6e 67 20 74 68  ructure using th
34800 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  e..        /// c
34810 6f 6e 66 69 67 75 72 65 64 20 28 6f 72 20 64 65  onfigured (or de
34820 66 61 75 6c 74 29 20 3c 73 65 65 20 63 72 65 66  fault) <see cref
34830 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
34840 6f 64 75 6c 65 22 20 2f 3e 0d 0a 20 20 20 20 20  odule" />..     
34850 20 20 20 2f 2f 2f 20 69 6e 74 65 72 66 61 63 65     /// interface
34860 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e   implementation.
34870 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
34880 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
34890 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
348a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
348b0 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 5f 6d   native sqlite_m
348c0 6f 64 75 6c 65 20 73 74 72 75 63 74 75 72 65 20  odule structure 
348d0 75 73 69 6e 67 20 74 68 65 20 63 6f 6e 66 69 67  using the config
348e0 75 72 65 64 20 28 6f 72 0d 0a 20 20 20 20 20 20  ured (or..      
348f0 20 20 2f 2f 2f 20 64 65 66 61 75 6c 74 29 20 3c    /// default) <
34900 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
34910 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f  eNativeModule" /
34920 3e 20 69 6e 74 65 72 66 61 63 65 0d 0a 20 20 20  > interface..   
34930 20 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65       /// impleme
34940 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ntation...      
34950 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
34960 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
34970 65 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  e UnsafeNativeMe
34980 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f  thods.sqlite3_mo
34990 64 75 6c 65 20 41 6c 6c 6f 63 61 74 65 4e 61 74  dule AllocateNat
349a0 69 76 65 4d 6f 64 75 6c 65 28 29 0d 0a 20 20 20  iveModule()..   
349b0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
349c0 20 20 20 20 72 65 74 75 72 6e 20 41 6c 6c 6f 63      return Alloc
349d0 61 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 28  ateNativeModule(
349e0 47 65 74 4e 61 74 69 76 65 4d 6f 64 75 6c 65 49  GetNativeModuleI
349f0 6d 70 6c 28 29 29 3b 0d 0a 20 20 20 20 20 20 20  mpl());..       
34a00 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
34a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34a50 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41  /////....#if PLA
34a60 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
34a70 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
34a80 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
34a90 20 20 20 20 20 20 20 2f 2f 2f 20 43 72 65 61 74         /// Creat
34aa0 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 61  es and returns a
34ab0 20 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b 20 6f 62   memory block ob
34ac0 74 61 69 6e 65 64 20 66 72 6f 6d 20 74 68 65 20  tained from the 
34ad0 53 51 4c 69 74 65 20 63 6f 72 65 0d 0a 20 20 20  SQLite core..   
34ae0 20 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79       /// library
34af0 20 75 73 65 64 20 74 6f 20 73 74 6f 72 65 20 74   used to store t
34b00 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65  he native sqlite
34b10 33 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63 74 75  3_module structu
34b20 72 65 20 66 6f 72 20 74 68 69 73 0d 0a 20 20 20  re for this..   
34b30 20 20 20 20 20 2f 2f 2f 20 6f 62 6a 65 63 74 20       /// object 
34b40 69 6e 73 74 61 6e 63 65 20 77 68 65 6e 20 72 75  instance when ru
34b50 6e 6e 69 6e 67 20 6f 6e 20 74 68 65 20 2e 4e 45  nning on the .NE
34b60 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77  T Compact Framew
34b70 6f 72 6b 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ork...        //
34b80 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
34b90 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
34ba0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
34bb0 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e   The native poin
34bc0 74 65 72 20 74 6f 20 74 68 65 20 6e 61 74 69 76  ter to the nativ
34bd0 65 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65  e sqlite3_module
34be0 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
34bf0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
34c00 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ns>..        pri
34c10 76 61 74 65 20 49 6e 74 50 74 72 20 41 6c 6c 6f  vate IntPtr Allo
34c20 63 61 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  cateNativeModule
34c30 49 6e 74 65 72 6f 70 28 29 0d 0a 20 20 20 20 20  Interop()..     
34c40 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
34c50 20 20 69 66 20 28 70 4e 61 74 69 76 65 4d 6f 64    if (pNativeMod
34c60 75 6c 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  ule == IntPtr.Ze
34c70 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
34c80 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
34c90 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
34ca0 20 20 20 20 20 20 20 20 2f 2f 20 48 41 43 4b 3a          // HACK:
34cb0 20 4e 6f 20 65 61 73 79 20 77 61 79 20 74 6f 20   No easy way to 
34cc0 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20 73 69  determine the si
34cd0 7a 65 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65  ze of the native
34ce0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
34cf0 20 20 2f 2f 20 20 20 20 20 20 20 73 71 6c 69 74    //       sqlit
34d00 65 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63 74 75  e_module structu
34d10 72 65 20 77 68 65 6e 20 72 75 6e 6e 69 6e 67 20  re when running 
34d20 6f 6e 20 74 68 65 20 2e 4e 45 54 0d 0a 20 20 20  on the .NET..   
34d30 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
34d40 20 20 20 20 20 20 43 6f 6d 70 61 63 74 20 46 72        Compact Fr
34d50 61 6d 65 77 6f 72 6b 3b 20 74 68 65 72 65 66 6f  amework; therefo
34d60 72 65 2c 20 6a 75 73 74 20 62 61 73 65 20 74 68  re, just base th
34d70 65 20 73 69 7a 65 0d 0a 20 20 20 20 20 20 20 20  e size..        
34d80 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
34d90 20 6f 6e 20 77 68 61 74 20 77 65 20 6b 6e 6f 77   on what we know
34da0 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
34db0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
34dc0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
34dd0 54 68 65 72 65 20 69 73 20 6f 6e 65 20 69 6e 74  There is one int
34de0 65 67 65 72 20 6d 65 6d 62 65 72 2e 0d 0a 20 20  eger member...  
34df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
34e00 20 20 20 20 20 20 20 54 68 65 72 65 20 61 72 65         There are
34e10 20 32 32 20 66 75 6e 63 74 69 6f 6e 20 70 6f 69   22 function poi
34e20 6e 74 65 72 20 6d 65 6d 62 65 72 73 2e 0d 0a 20  nter members... 
34e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
34e40 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
34e50 20 20 20 70 4e 61 74 69 76 65 4d 6f 64 75 6c 65     pNativeModule
34e60 20 3d 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e   = SQLiteMemory.
34e70 41 6c 6c 6f 63 61 74 65 28 32 33 20 2a 20 49 6e  Allocate(23 * In
34e80 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20  tPtr.Size);.... 
34e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
34ea0 66 20 28 70 4e 61 74 69 76 65 4d 6f 64 75 6c 65  f (pNativeModule
34eb0 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
34ec0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
34ed0 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
34ee0 4f 75 74 4f 66 4d 65 6d 6f 72 79 45 78 63 65 70  OutOfMemoryExcep
34ef0 74 69 6f 6e 28 22 73 71 6c 69 74 65 33 5f 6d 6f  tion("sqlite3_mo
34f00 64 75 6c 65 22 29 3b 0d 0a 20 20 20 20 20 20 20  dule");..       
34f10 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
34f20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 4e 61        return pNa
34f30 74 69 76 65 4d 6f 64 75 6c 65 3b 0d 0a 20 20 20  tiveModule;..   
34f40 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
34f50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
34f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34fa0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
34fb0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
34fc0 20 20 20 20 2f 2f 2f 20 43 72 65 61 74 65 73 20      /// Creates 
34fd0 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
34fe0 6e 61 74 69 76 65 20 73 71 6c 69 74 65 5f 6d 6f  native sqlite_mo
34ff0 64 75 6c 65 20 73 74 72 75 63 74 75 72 65 20 75  dule structure u
35000 73 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20  sing the..      
35010 20 20 2f 2f 2f 20 73 70 65 63 69 66 69 65 64 20    /// specified 
35020 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
35030 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20  teNativeModule" 
35040 2f 3e 20 69 6e 74 65 72 66 61 63 65 0d 0a 20 20  /> interface..  
35050 20 20 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d        /// implem
35060 65 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  entation...     
35070 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
35080 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
35090 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75  param name="modu
350a0 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  le">..        //
350b0 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
350c0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
350d0 64 75 6c 65 22 20 2f 3e 20 69 6e 74 65 72 66 61  dule" /> interfa
350e0 63 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  ce implementatio
350f0 6e 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f  n to..        //
35100 2f 20 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20  / use...        
35110 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
35120 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
35130 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
35140 20 54 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69   The native sqli
35150 74 65 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63 74  te_module struct
35160 75 72 65 20 75 73 69 6e 67 20 74 68 65 20 73 70  ure using the sp
35170 65 63 69 66 69 65 64 0d 0a 20 20 20 20 20 20 20  ecified..       
35180 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
35190 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
351a0 75 6c 65 22 20 2f 3e 20 69 6e 74 65 72 66 61 63  ule" /> interfac
351b0 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e implementation
351c0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
351d0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
351e0 20 20 20 70 72 69 76 61 74 65 20 55 6e 73 61 66     private Unsaf
351f0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
35200 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 41 6c  qlite3_module Al
35210 6c 6f 63 61 74 65 4e 61 74 69 76 65 4d 6f 64 75  locateNativeModu
35220 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le(..           
35230 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f   ISQLiteNativeMo
35240 64 75 6c 65 20 6d 6f 64 75 6c 65 0d 0a 20 20 20  dule module..   
35250 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
35260 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
35270 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 20     nativeModule 
35280 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
35290 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
352a0 33 5f 6d 6f 64 75 6c 65 28 29 3b 0d 0a 20 20 20  3_module();..   
352b0 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
352c0 6f 64 75 6c 65 2e 69 56 65 72 73 69 6f 6e 20 3d  odule.iVersion =
352d0 20 44 65 66 61 75 6c 74 4d 6f 64 75 6c 65 56 65   DefaultModuleVe
352e0 72 73 69 6f 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20  rsion;....      
352f0 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65        if (module
35300 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
35310 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
35320 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
35330 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 20 3d  Module.xCreate =
35340 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
35350 65 4d 65 74 68 6f 64 73 2e 78 43 72 65 61 74 65  eMethods.xCreate
35360 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
35370 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 43 72        module.xCr
35380 65 61 74 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  eate);....      
35390 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
353a0 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 20  Module.xConnect 
353b0 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
353c0 76 65 4d 65 74 68 6f 64 73 2e 78 43 6f 6e 6e 65  veMethods.xConne
353d0 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ct(..           
353e0 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e           module.
353f0 78 43 6f 6e 6e 65 63 74 29 3b 0d 0a 0d 0a 20 20  xConnect);....  
35400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
35410 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 73 74  tiveModule.xBest
35420 49 6e 64 65 78 20 3d 20 6e 65 77 20 55 6e 73 61  Index = new Unsa
35430 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
35440 78 42 65 73 74 49 6e 64 65 78 28 0d 0a 20 20 20  xBestIndex(..   
35450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35460 20 6d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64   module.xBestInd
35470 65 78 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ex);....        
35480 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
35490 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74  dule.xDisconnect
354a0 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
354b0 69 76 65 4d 65 74 68 6f 64 73 2e 78 44 69 73 63  iveMethods.xDisc
354c0 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20  onnect(..       
354d0 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64               mod
354e0 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 29  ule.xDisconnect)
354f0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
35500 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
35510 65 2e 78 44 65 73 74 72 6f 79 20 3d 20 6e 65 77  e.xDestroy = new
35520 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
35530 68 6f 64 73 2e 78 44 65 73 74 72 6f 79 28 0d 0a  hods.xDestroy(..
35540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35550 20 20 20 20 6d 6f 64 75 6c 65 2e 78 44 65 73 74      module.xDest
35560 72 6f 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  roy);....       
35570 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
35580 6f 64 75 6c 65 2e 78 4f 70 65 6e 20 3d 20 6e 65  odule.xOpen = ne
35590 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
355a0 74 68 6f 64 73 2e 78 4f 70 65 6e 28 0d 0a 20 20  thods.xOpen(..  
355b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
355c0 20 20 6d 6f 64 75 6c 65 2e 78 4f 70 65 6e 29 3b    module.xOpen);
355d0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
355e0 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
355f0 2e 78 43 6c 6f 73 65 20 3d 20 6e 65 77 20 55 6e  .xClose = new Un
35600 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
35610 73 2e 78 43 6c 6f 73 65 28 0d 0a 20 20 20 20 20  s.xClose(..     
35620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d                 m
35630 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 29 3b 0d 0a  odule.xClose);..
35640 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
35650 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
35660 46 69 6c 74 65 72 20 3d 20 6e 65 77 20 55 6e 73  Filter = new Uns
35670 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
35680 2e 78 46 69 6c 74 65 72 28 0d 0a 20 20 20 20 20  .xFilter(..     
35690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d                 m
356a0 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 29 3b 0d  odule.xFilter);.
356b0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
356c0 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
356d0 78 4e 65 78 74 20 3d 20 6e 65 77 20 55 6e 73 61  xNext = new Unsa
356e0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
356f0 78 4e 65 78 74 28 0d 0a 20 20 20 20 20 20 20 20  xNext(..        
35700 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75              modu
35710 6c 65 2e 78 4e 65 78 74 29 3b 0d 0a 0d 0a 20 20  le.xNext);....  
35720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
35730 74 69 76 65 4d 6f 64 75 6c 65 2e 78 45 6f 66 20  tiveModule.xEof 
35740 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
35750 76 65 4d 65 74 68 6f 64 73 2e 78 45 6f 66 28 6d  veMethods.xEof(m
35760 6f 64 75 6c 65 2e 78 45 6f 66 29 3b 0d 0a 0d 0a  odule.xEof);....
35770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35780 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  nativeModule.xCo
35790 6c 75 6d 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66  lumn = new Unsaf
357a0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
357b0 43 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20 20 20 20  Column(..       
357c0 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64               mod
357d0 75 6c 65 2e 78 43 6f 6c 75 6d 6e 29 3b 0d 0a 0d  ule.xColumn);...
357e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
357f0 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52   nativeModule.xR
35800 6f 77 49 64 20 3d 20 6e 65 77 20 55 6e 73 61 66  owId = new Unsaf
35810 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
35820 52 6f 77 49 64 28 0d 0a 20 20 20 20 20 20 20 20  RowId(..        
35830 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75              modu
35840 6c 65 2e 78 52 6f 77 49 64 29 3b 0d 0a 0d 0a 20  le.xRowId);.... 
35850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
35860 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64  ativeModule.xUpd
35870 61 74 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  ate = new Unsafe
35880 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 55  NativeMethods.xU
35890 70 64 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20  pdate(..        
358a0 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75              modu
358b0 6c 65 2e 78 55 70 64 61 74 65 29 3b 0d 0a 0d 0a  le.xUpdate);....
358c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
358d0 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65  nativeModule.xBe
358e0 67 69 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  gin = new Unsafe
358f0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 42  NativeMethods.xB
35900 65 67 69 6e 28 0d 0a 20 20 20 20 20 20 20 20 20  egin(..         
35910 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c             modul
35920 65 2e 78 42 65 67 69 6e 29 3b 0d 0a 0d 0a 20 20  e.xBegin);....  
35930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
35940 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53 79 6e 63  tiveModule.xSync
35950 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
35960 69 76 65 4d 65 74 68 6f 64 73 2e 78 53 79 6e 63  iveMethods.xSync
35970 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
35980 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 53         module.xS
35990 79 6e 63 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ync);....       
359a0 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
359b0 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 20 3d 20  odule.xCommit = 
359c0 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
359d0 4d 65 74 68 6f 64 73 2e 78 43 6f 6d 6d 69 74 28  Methods.xCommit(
359e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
359f0 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 43 6f        module.xCo
35a00 6d 6d 69 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  mmit);....      
35a10 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
35a20 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b  Module.xRollback
35a30 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
35a40 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 6f 6c 6c  iveMethods.xRoll
35a50 62 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 20  back(..         
35a60 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c             modul
35a70 65 2e 78 52 6f 6c 6c 62 61 63 6b 29 3b 0d 0a 0d  e.xRollback);...
35a80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
35a90 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46   nativeModule.xF
35aa0 69 6e 64 46 75 6e 63 74 69 6f 6e 20 3d 20 6e 65  indFunction = ne
35ab0 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
35ac0 74 68 6f 64 73 2e 78 46 69 6e 64 46 75 6e 63 74  thods.xFindFunct
35ad0 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ion(..          
35ae0 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65            module
35af0 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 29 3b  .xFindFunction);
35b00 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
35b10 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
35b20 2e 78 52 65 6e 61 6d 65 20 3d 20 6e 65 77 20 55  .xRename = new U
35b30 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
35b40 64 73 2e 78 52 65 6e 61 6d 65 28 0d 0a 20 20 20  ds.xRename(..   
35b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35b60 20 6d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65 29   module.xRename)
35b70 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
35b80 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
35b90 65 2e 78 53 61 76 65 70 6f 69 6e 74 20 3d 20 6e  e.xSavepoint = n
35ba0 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
35bb0 65 74 68 6f 64 73 2e 78 53 61 76 65 70 6f 69 6e  ethods.xSavepoin
35bc0 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
35bd0 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78          module.x
35be0 53 61 76 65 70 6f 69 6e 74 29 3b 0d 0a 0d 0a 20  Savepoint);.... 
35bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
35c00 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6c  ativeModule.xRel
35c10 65 61 73 65 20 3d 20 6e 65 77 20 55 6e 73 61 66  ease = new Unsaf
35c20 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
35c30 52 65 6c 65 61 73 65 28 0d 0a 20 20 20 20 20 20  Release(..      
35c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f                mo
35c50 64 75 6c 65 2e 78 52 65 6c 65 61 73 65 29 3b 0d  dule.xRelease);.
35c60 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
35c70 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
35c80 78 52 6f 6c 6c 62 61 63 6b 54 6f 20 3d 20 6e 65  xRollbackTo = ne
35c90 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
35ca0 74 68 6f 64 73 2e 78 52 6f 6c 6c 62 61 63 6b 54  thods.xRollbackT
35cb0 6f 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o(..            
35cc0 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78          module.x
35cd0 52 6f 6c 6c 62 61 63 6b 54 6f 29 3b 0d 0a 20 20  RollbackTo);..  
35ce0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
35cf0 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20           else.. 
35d00 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
35d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
35d20 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61  tiveModule.xCrea
35d30 74 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  te = new UnsafeN
35d40 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 43 72  ativeMethods.xCr
35d50 65 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20  eate(..         
35d60 20 20 20 20 20 20 20 20 20 20 20 78 43 72 65 61             xCrea
35d70 74 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  te);....        
35d80 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
35d90 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 20 3d 20  dule.xConnect = 
35da0 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
35db0 4d 65 74 68 6f 64 73 2e 78 43 6f 6e 6e 65 63 74  Methods.xConnect
35dc0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
35dd0 20 20 20 20 20 20 20 78 43 6f 6e 6e 65 63 74 29         xConnect)
35de0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
35df0 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
35e00 65 2e 78 42 65 73 74 49 6e 64 65 78 20 3d 20 6e  e.xBestIndex = n
35e10 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
35e20 65 74 68 6f 64 73 2e 78 42 65 73 74 49 6e 64 65  ethods.xBestInde
35e30 78 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  x(..            
35e40 20 20 20 20 20 20 20 20 78 42 65 73 74 49 6e 64          xBestInd
35e50 65 78 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ex);....        
35e60 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
35e70 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74  dule.xDisconnect
35e80 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
35e90 69 76 65 4d 65 74 68 6f 64 73 2e 78 44 69 73 63  iveMethods.xDisc
35ea0 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20  onnect(..       
35eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 78 44 69               xDi
35ec0 73 63 6f 6e 6e 65 63 74 29 3b 0d 0a 0d 0a 20 20  sconnect);....  
35ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
35ee0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 65 73 74  tiveModule.xDest
35ef0 72 6f 79 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  roy = new Unsafe
35f00 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 44  NativeMethods.xD
35f10 65 73 74 72 6f 79 28 0d 0a 20 20 20 20 20 20 20  estroy(..       
35f20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 44 65               xDe
35f30 73 74 72 6f 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  stroy);....     
35f40 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
35f50 65 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e 20 3d 20  eModule.xOpen = 
35f60 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
35f70 4d 65 74 68 6f 64 73 2e 78 4f 70 65 6e 28 78 4f  Methods.xOpen(xO
35f80 70 65 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  pen);..         
35f90 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
35fa0 75 6c 65 2e 78 43 6c 6f 73 65 20 3d 20 6e 65 77  ule.xClose = new
35fb0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
35fc0 68 6f 64 73 2e 78 43 6c 6f 73 65 28 78 43 6c 6f  hods.xClose(xClo
35fd0 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  se);....        
35fe0 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
35ff0 64 75 6c 65 2e 78 46 69 6c 74 65 72 20 3d 20 6e  dule.xFilter = n
36000 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
36010 65 74 68 6f 64 73 2e 78 46 69 6c 74 65 72 28 0d  ethods.xFilter(.
36020 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
36030 20 20 20 20 20 78 46 69 6c 74 65 72 29 3b 0d 0a       xFilter);..
36040 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
36050 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
36060 4e 65 78 74 20 3d 20 6e 65 77 20 55 6e 73 61 66  Next = new Unsaf
36070 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
36080 4e 65 78 74 28 78 4e 65 78 74 29 3b 0d 0a 20 20  Next(xNext);..  
36090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
360a0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 45 6f 66 20  tiveModule.xEof 
360b0 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
360c0 76 65 4d 65 74 68 6f 64 73 2e 78 45 6f 66 28 78  veMethods.xEof(x
360d0 45 6f 66 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Eof);....       
360e0 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
360f0 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 20 3d 20  odule.xColumn = 
36100 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
36110 4d 65 74 68 6f 64 73 2e 78 43 6f 6c 75 6d 6e 28  Methods.xColumn(
36120 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
36130 20 20 20 20 20 20 78 43 6f 6c 75 6d 6e 29 3b 0d        xColumn);.
36140 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
36150 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
36160 78 52 6f 77 49 64 20 3d 20 6e 65 77 20 55 6e 73  xRowId = new Uns
36170 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
36180 2e 78 52 6f 77 49 64 28 78 52 6f 77 49 64 29 3b  .xRowId(xRowId);
36190 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
361a0 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
361b0 2e 78 55 70 64 61 74 65 20 3d 20 6e 65 77 20 55  .xUpdate = new U
361c0 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
361d0 64 73 2e 78 55 70 64 61 74 65 28 0d 0a 20 20 20  ds.xUpdate(..   
361e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
361f0 20 78 55 70 64 61 74 65 29 3b 0d 0a 0d 0a 20 20   xUpdate);....  
36200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
36210 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 67 69  tiveModule.xBegi
36220 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  n = new UnsafeNa
36230 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 42 65 67  tiveMethods.xBeg
36240 69 6e 28 78 42 65 67 69 6e 29 3b 0d 0a 20 20 20  in(xBegin);..   
36250 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
36260 69 76 65 4d 6f 64 75 6c 65 2e 78 53 79 6e 63 20  iveModule.xSync 
36270 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
36280 76 65 4d 65 74 68 6f 64 73 2e 78 53 79 6e 63 28  veMethods.xSync(
36290 78 53 79 6e 63 29 3b 0d 0a 0d 0a 20 20 20 20 20  xSync);....     
362a0 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
362b0 65 4d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 20  eModule.xCommit 
362c0 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
362d0 76 65 4d 65 74 68 6f 64 73 2e 78 43 6f 6d 6d 69  veMethods.xCommi
362e0 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
362f0 20 20 20 20 20 20 20 20 78 43 6f 6d 6d 69 74 29          xCommit)
36300 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
36310 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
36320 65 2e 78 52 6f 6c 6c 62 61 63 6b 20 3d 20 6e 65  e.xRollback = ne
36330 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
36340 74 68 6f 64 73 2e 78 52 6f 6c 6c 62 61 63 6b 28  thods.xRollback(
36350 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
36360 20 20 20 20 20 20 78 52 6f 6c 6c 62 61 63 6b 29        xRollback)
36370 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
36380 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
36390 65 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 20  e.xFindFunction 
363a0 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
363b0 76 65 4d 65 74 68 6f 64 73 2e 78 46 69 6e 64 46  veMethods.xFindF
363c0 75 6e 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20  unction(..      
363d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 46                xF
363e0 69 6e 64 46 75 6e 63 74 69 6f 6e 29 3b 0d 0a 0d  indFunction);...
363f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
36400 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52   nativeModule.xR
36410 65 6e 61 6d 65 20 3d 20 6e 65 77 20 55 6e 73 61  ename = new Unsa
36420 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
36430 78 52 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20  xRename(..      
36440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 52                xR
36450 65 6e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  ename);....     
36460 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
36470 65 4d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69  eModule.xSavepoi
36480 6e 74 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  nt = new UnsafeN
36490 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 53 61  ativeMethods.xSa
364a0 76 65 70 6f 69 6e 74 28 0d 0a 20 20 20 20 20 20  vepoint(..      
364b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 53                xS
364c0 61 76 65 70 6f 69 6e 74 29 3b 0d 0a 0d 0a 20 20  avepoint);....  
364d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
364e0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6c 65  tiveModule.xRele
364f0 61 73 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  ase = new Unsafe
36500 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52  NativeMethods.xR
36510 65 6c 65 61 73 65 28 0d 0a 20 20 20 20 20 20 20  elease(..       
36520 20 20 20 20 20 20 20 20 20 20 20 20 20 78 52 65               xRe
36530 6c 65 61 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  lease);....     
36540 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
36550 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63  eModule.xRollbac
36560 6b 54 6f 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  kTo = new Unsafe
36570 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52  NativeMethods.xR
36580 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20 20 20 20  ollbackTo(..    
36590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
365a0 78 52 6f 6c 6c 62 61 63 6b 54 6f 29 3b 0d 0a 20  xRollbackTo);.. 
365b0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
365c0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
365d0 72 6e 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 3b  rn nativeModule;
365e0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
365f0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
36600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
36640 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
36650 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
36660 20 2f 2f 2f 20 43 72 65 61 74 65 73 20 61 20 63   /// Creates a c
36670 6f 70 79 20 6f 66 20 74 68 65 20 73 70 65 63 69  opy of the speci
36680 66 69 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  fied..        //
36690 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 55 6e 73  / <see cref="Uns
366a0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
366b0 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 22  .sqlite3_module"
366c0 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
366d0 6e 63 65 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nce,..        //
366e0 2f 20 75 73 69 6e 67 20 64 65 66 61 75 6c 74 20  / using default 
366f0 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20  implementations 
36700 66 6f 72 20 74 68 65 20 63 6f 6e 74 61 69 6e 65  for the containe
36710 64 20 64 65 6c 65 67 61 74 65 73 20 77 68 65 6e  d delegates when
36720 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 65  ..        /// ne
36730 63 65 73 73 61 72 79 2e 0d 0a 20 20 20 20 20 20  cessary...      
36740 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
36750 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
36760 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c  aram name="modul
36770 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
36780 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
36790 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
367a0 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75  ods.sqlite3_modu
367b0 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 0d 0a 20  le" /> object.. 
367c0 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61         /// insta
367d0 6e 63 65 20 74 6f 20 63 6f 70 79 2e 0d 0a 20 20  nce to copy...  
367e0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
367f0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
36800 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
36810 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65 77 20 3c     /// The new <
36820 73 65 65 20 63 72 65 66 3d 22 55 6e 73 61 66 65  see cref="Unsafe
36830 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
36840 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 22 20 2f 3e  lite3_module" />
36850 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 20   object..       
36860 20 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 2e 0d 0a   /// instance...
36870 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
36880 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
36890 70 72 69 76 61 74 65 20 55 6e 73 61 66 65 4e 61  private UnsafeNa
368a0 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
368b0 74 65 33 5f 6d 6f 64 75 6c 65 20 43 6f 70 79 4e  te3_module CopyN
368c0 61 74 69 76 65 4d 6f 64 75 6c 65 28 0d 0a 20 20  ativeModule(..  
368d0 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
368e0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
368f0 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6d 6f 64  lite3_module mod
36900 75 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ule..           
36910 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
36920 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66             Unsaf
36930 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
36940 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6e 65  qlite3_module ne
36950 77 4d 6f 64 75 6c 65 20 3d 0d 0a 20 20 20 20 20  wModule =..     
36960 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 55             new U
36970 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
36980 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c  ds.sqlite3_modul
36990 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  e();....        
369a0 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 69 56      newModule.iV
369b0 65 72 73 69 6f 6e 20 3d 20 6d 6f 64 75 6c 65 2e  ersion = module.
369c0 69 56 65 72 73 69 6f 6e 3b 0d 0a 0d 0a 20 20 20  iVersion;....   
369d0 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75           newModu
369e0 6c 65 2e 78 43 72 65 61 74 65 20 3d 20 6e 65 77  le.xCreate = new
369f0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
36a00 68 6f 64 73 2e 78 43 72 65 61 74 65 28 0d 0a 20  hods.xCreate(.. 
36a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
36a20 6d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 20 21  module.xCreate !
36a30 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65  = null) ? module
36a40 2e 78 43 72 65 61 74 65 20 3a 20 78 43 72 65 61  .xCreate : xCrea
36a50 74 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  te);....        
36a60 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 43      newModule.xC
36a70 6f 6e 6e 65 63 74 20 3d 20 6e 65 77 20 55 6e 73  onnect = new Uns
36a80 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
36a90 2e 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20  .xConnect(..    
36aa0 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64              (mod
36ab0 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 20 21 3d 20  ule.xConnect != 
36ac0 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78  null) ? module.x
36ad0 43 6f 6e 6e 65 63 74 20 3a 20 78 43 6f 6e 6e 65  Connect : xConne
36ae0 63 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ct);....        
36af0 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 42      newModule.xB
36b00 65 73 74 49 6e 64 65 78 20 3d 20 6e 65 77 20 55  estIndex = new U
36b10 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
36b20 64 73 2e 78 42 65 73 74 49 6e 64 65 78 28 0d 0a  ds.xBestIndex(..
36b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36b40 28 6d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64  (module.xBestInd
36b50 65 78 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f  ex != null) ? mo
36b60 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 20  dule.xBestIndex 
36b70 3a 20 78 42 65 73 74 49 6e 64 65 78 29 3b 0d 0a  : xBestIndex);..
36b80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
36b90 77 4d 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e  wModule.xDisconn
36ba0 65 63 74 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  ect = new Unsafe
36bb0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 44  NativeMethods.xD
36bc0 69 73 63 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20  isconnect(..    
36bd0 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64              (mod
36be0 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 20  ule.xDisconnect 
36bf0 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c  != null) ? modul
36c00 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 20 3a 0d  e.xDisconnect :.
36c10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
36c20 20 78 44 69 73 63 6f 6e 6e 65 63 74 29 3b 0d 0a   xDisconnect);..
36c30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
36c40 77 4d 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f 79  wModule.xDestroy
36c50 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
36c60 69 76 65 4d 65 74 68 6f 64 73 2e 78 44 65 73 74  iveMethods.xDest
36c70 72 6f 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  roy(..          
36c80 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 44        (module.xD
36c90 65 73 74 72 6f 79 20 21 3d 20 6e 75 6c 6c 29 20  estroy != null) 
36ca0 3f 20 6d 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f  ? module.xDestro
36cb0 79 20 3a 20 78 44 65 73 74 72 6f 79 29 3b 0d 0a  y : xDestroy);..
36cc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
36cd0 77 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e 20 3d 20  wModule.xOpen = 
36ce0 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
36cf0 4d 65 74 68 6f 64 73 2e 78 4f 70 65 6e 28 0d 0a  Methods.xOpen(..
36d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36d10 28 6d 6f 64 75 6c 65 2e 78 4f 70 65 6e 20 21 3d  (module.xOpen !=
36d20 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e   null) ? module.
36d30 78 4f 70 65 6e 20 3a 20 78 4f 70 65 6e 29 3b 0d  xOpen : xOpen);.
36d40 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ...            n
36d50 65 77 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 20  ewModule.xClose 
36d60 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
36d70 76 65 4d 65 74 68 6f 64 73 2e 78 43 6c 6f 73 65  veMethods.xClose
36d80 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
36d90 20 20 20 28 6d 6f 64 75 6c 65 2e 78 43 6c 6f 73     (module.xClos
36da0 65 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64  e != null) ? mod
36db0 75 6c 65 2e 78 43 6c 6f 73 65 20 3a 20 78 43 6c  ule.xClose : xCl
36dc0 6f 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ose);....       
36dd0 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78       newModule.x
36de0 46 69 6c 74 65 72 20 3d 20 6e 65 77 20 55 6e 73  Filter = new Uns
36df0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
36e00 2e 78 46 69 6c 74 65 72 28 0d 0a 20 20 20 20 20  .xFilter(..     
36e10 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75             (modu
36e20 6c 65 2e 78 46 69 6c 74 65 72 20 21 3d 20 6e 75  le.xFilter != nu
36e30 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 46 69  ll) ? module.xFi
36e40 6c 74 65 72 20 3a 20 78 46 69 6c 74 65 72 29 3b  lter : xFilter);
36e50 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
36e60 6e 65 77 4d 6f 64 75 6c 65 2e 78 4e 65 78 74 20  newModule.xNext 
36e70 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
36e80 76 65 4d 65 74 68 6f 64 73 2e 78 4e 65 78 74 28  veMethods.xNext(
36e90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
36ea0 20 20 28 6d 6f 64 75 6c 65 2e 78 4e 65 78 74 20    (module.xNext 
36eb0 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c  != null) ? modul
36ec0 65 2e 78 4e 65 78 74 20 3a 20 78 4e 65 78 74 29  e.xNext : xNext)
36ed0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
36ee0 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 45 6f 66 20   newModule.xEof 
36ef0 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
36f00 76 65 4d 65 74 68 6f 64 73 2e 78 45 6f 66 28 0d  veMethods.xEof(.
36f10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
36f20 20 28 6d 6f 64 75 6c 65 2e 78 45 6f 66 20 21 3d   (module.xEof !=
36f30 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e   null) ? module.
36f40 78 45 6f 66 20 3a 20 78 45 6f 66 29 3b 0d 0a 0d  xEof : xEof);...
36f50 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
36f60 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 20 3d  Module.xColumn =
36f70 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
36f80 65 4d 65 74 68 6f 64 73 2e 78 43 6f 6c 75 6d 6e  eMethods.xColumn
36f90 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
36fa0 20 20 20 28 6d 6f 64 75 6c 65 2e 78 43 6f 6c 75     (module.xColu
36fb0 6d 6e 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f  mn != null) ? mo
36fc0 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 20 3a 20 78  dule.xColumn : x
36fd0 43 6f 6c 75 6d 6e 29 3b 0d 0a 0d 0a 20 20 20 20  Column);....    
36fe0 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c          newModul
36ff0 65 2e 78 52 6f 77 49 64 20 3d 20 6e 65 77 20 55  e.xRowId = new U
37000 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
37010 64 73 2e 78 52 6f 77 49 64 28 0d 0a 20 20 20 20  ds.xRowId(..    
37020 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64              (mod
37030 75 6c 65 2e 78 52 6f 77 49 64 20 21 3d 20 6e 75  ule.xRowId != nu
37040 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 52 6f  ll) ? module.xRo
37050 77 49 64 20 3a 20 78 52 6f 77 49 64 29 3b 0d 0a  wId : xRowId);..
37060 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
37070 77 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 20  wModule.xUpdate 
37080 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
37090 76 65 4d 65 74 68 6f 64 73 2e 78 55 70 64 61 74  veMethods.xUpdat
370a0 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
370b0 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 55 70 64      (module.xUpd
370c0 61 74 65 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d  ate != null) ? m
370d0 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 20 3a 20  odule.xUpdate : 
370e0 78 55 70 64 61 74 65 29 3b 0d 0a 0d 0a 20 20 20  xUpdate);....   
370f0 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75           newModu
37100 6c 65 2e 78 42 65 67 69 6e 20 3d 20 6e 65 77 20  le.xBegin = new 
37110 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
37120 6f 64 73 2e 78 42 65 67 69 6e 28 0d 0a 20 20 20  ods.xBegin(..   
37130 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f               (mo
37140 64 75 6c 65 2e 78 42 65 67 69 6e 20 21 3d 20 6e  dule.xBegin != n
37150 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 42  ull) ? module.xB
37160 65 67 69 6e 20 3a 20 78 42 65 67 69 6e 29 3b 0d  egin : xBegin);.
37170 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ...            n
37180 65 77 4d 6f 64 75 6c 65 2e 78 53 79 6e 63 20 3d  ewModule.xSync =
37190 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
371a0 65 4d 65 74 68 6f 64 73 2e 78 53 79 6e 63 28 0d  eMethods.xSync(.
371b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
371c0 20 28 6d 6f 64 75 6c 65 2e 78 53 79 6e 63 20 21   (module.xSync !
371d0 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65  = null) ? module
371e0 2e 78 53 79 6e 63 20 3a 20 78 53 79 6e 63 29 3b  .xSync : xSync);
371f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
37200 6e 65 77 4d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69  newModule.xCommi
37210 74 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  t = new UnsafeNa
37220 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 43 6f 6d  tiveMethods.xCom
37230 6d 69 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mit(..          
37240 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 43        (module.xC
37250 6f 6d 6d 69 74 20 21 3d 20 6e 75 6c 6c 29 20 3f  ommit != null) ?
37260 20 6d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 20   module.xCommit 
37270 3a 20 78 43 6f 6d 6d 69 74 29 3b 0d 0a 0d 0a 20  : xCommit);.... 
37280 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f             newMo
37290 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 20 3d  dule.xRollback =
372a0 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
372b0 65 4d 65 74 68 6f 64 73 2e 78 52 6f 6c 6c 62 61  eMethods.xRollba
372c0 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ck(..           
372d0 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 52 6f       (module.xRo
372e0 6c 6c 62 61 63 6b 20 21 3d 20 6e 75 6c 6c 29 20  llback != null) 
372f0 3f 20 6d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61  ? module.xRollba
37300 63 6b 20 3a 20 78 52 6f 6c 6c 62 61 63 6b 29 3b  ck : xRollback);
37310 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
37320 6e 65 77 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46  newModule.xFindF
37330 75 6e 63 74 69 6f 6e 20 3d 20 6e 65 77 20 55 6e  unction = new Un
37340 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
37350 73 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28  s.xFindFunction(
37360 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
37370 20 20 28 6d 6f 64 75 6c 65 2e 78 46 69 6e 64 46    (module.xFindF
37380 75 6e 63 74 69 6f 6e 20 21 3d 20 6e 75 6c 6c 29  unction != null)
37390 20 3f 20 6d 6f 64 75 6c 65 2e 78 46 69 6e 64 46   ? module.xFindF
373a0 75 6e 63 74 69 6f 6e 20 3a 0d 0a 20 20 20 20 20  unction :..     
373b0 20 20 20 20 20 20 20 20 20 20 20 78 46 69 6e 64             xFind
373c0 46 75 6e 63 74 69 6f 6e 29 3b 0d 0a 0d 0a 20 20  Function);....  
373d0 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64            newMod
373e0 75 6c 65 2e 78 52 65 6e 61 6d 65 20 3d 20 6e 65  ule.xRename = ne
373f0 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
37400 74 68 6f 64 73 2e 78 52 65 6e 61 6d 65 28 0d 0a  thods.xRename(..
37410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37420 28 6d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65 20  (module.xRename 
37430 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c  != null) ? modul
37440 65 2e 78 52 65 6e 61 6d 65 20 3a 20 78 52 65 6e  e.xRename : xRen
37450 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ame);....       
37460 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78       newModule.x
37470 53 61 76 65 70 6f 69 6e 74 20 3d 20 6e 65 77 20  Savepoint = new 
37480 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
37490 6f 64 73 2e 78 53 61 76 65 70 6f 69 6e 74 28 0d  ods.xSavepoint(.
374a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
374b0 20 28 6d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f   (module.xSavepo
374c0 69 6e 74 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d  int != null) ? m
374d0 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74  odule.xSavepoint
374e0 20 3a 20 78 53 61 76 65 70 6f 69 6e 74 29 3b 0d   : xSavepoint);.
374f0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ...            n
37500 65 77 4d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73  ewModule.xReleas
37510 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  e = new UnsafeNa
37520 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 65 6c  tiveMethods.xRel
37530 65 61 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20  ease(..         
37540 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78         (module.x
37550 52 65 6c 65 61 73 65 20 21 3d 20 6e 75 6c 6c 29  Release != null)
37560 20 3f 20 6d 6f 64 75 6c 65 2e 78 52 65 6c 65 61   ? module.xRelea
37570 73 65 20 3a 20 78 52 65 6c 65 61 73 65 29 3b 0d  se : xRelease);.
37580 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ...            n
37590 65 77 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61  ewModule.xRollba
375a0 63 6b 54 6f 20 3d 20 6e 65 77 20 55 6e 73 61 66  ckTo = new Unsaf
375b0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
375c0 52 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20 20 20  RollbackTo(..   
375d0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f               (mo
375e0 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f  dule.xRollbackTo
375f0 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75   != null) ? modu
37600 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 20 3a  le.xRollbackTo :
37610 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
37620 20 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 29 3b 0d    xRollbackTo);.
37630 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
37640 65 74 75 72 6e 20 6e 65 77 4d 6f 64 75 6c 65 3b  eturn newModule;
37650 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
37660 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
37670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
376a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
376b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
376c0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
376d0 20 2f 2f 2f 20 43 61 6c 6c 73 20 6f 6e 65 20 6f   /// Calls one o
376e0 66 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  f the virtual ta
376f0 62 6c 65 20 69 6e 69 74 69 61 6c 69 7a 61 74 69  ble initializati
37700 6f 6e 20 6d 65 74 68 6f 64 73 2e 0d 0a 20 20 20  on methods...   
37710 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
37720 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
37730 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 72   <param name="cr
37740 65 61 74 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  eate">..        
37750 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 74 6f 20  /// Non-zero to 
37760 63 61 6c 6c 20 74 68 65 20 3c 73 65 65 20 63 72  call the <see cr
37770 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67  ef="ISQLiteManag
37780 65 64 4d 6f 64 75 6c 65 2e 43 72 65 61 74 65 22  edModule.Create"
37790 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   />..        ///
377a0 20 6d 65 74 68 6f 64 3b 20 6f 74 68 65 72 77 69   method; otherwi
377b0 73 65 2c 20 74 68 65 20 3c 73 65 65 20 63 72 65  se, the <see cre
377c0 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65  f="ISQLiteManage
377d0 64 4d 6f 64 75 6c 65 2e 43 6f 6e 6e 65 63 74 22  dModule.Connect"
377e0 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   />..        ///
377f0 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20 62 65 20   method will be 
37800 63 61 6c 6c 65 64 2e 0d 0a 20 20 20 20 20 20 20  called...       
37810 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
37820 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
37830 6d 20 6e 61 6d 65 3d 22 70 44 62 22 3e 0d 0a 20  m name="pDb">.. 
37840 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
37850 61 74 69 76 65 20 64 61 74 61 62 61 73 65 20 63  ative database c
37860 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 6e 64 6c 65  onnection handle
37870 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
37880 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
37890 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
378a0 3d 22 70 41 75 78 22 3e 0d 0a 20 20 20 20 20 20  ="pAux">..      
378b0 20 20 2f 2f 2f 20 54 68 65 20 6f 72 69 67 69 6e    /// The origin
378c0 61 6c 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  al native pointe
378d0 72 20 76 61 6c 75 65 20 74 68 61 74 20 77 61 73  r value that was
378e0 20 70 72 6f 76 69 64 65 64 20 74 6f 20 74 68 65   provided to the
378f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71  ..        /// sq
37900 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 6d 6f 64  lite3_create_mod
37910 75 6c 65 28 29 2c 20 73 71 6c 69 74 65 33 5f 63  ule(), sqlite3_c
37920 72 65 61 74 65 5f 6d 6f 64 75 6c 65 5f 76 32 28  reate_module_v2(
37930 29 20 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ) or..        //
37940 2f 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65  / sqlite3_create
37950 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75  _disposable_modu
37960 6c 65 28 29 20 66 75 6e 63 74 69 6f 6e 73 2e 0d  le() functions..
37970 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
37980 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
37990 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
379a0 61 72 67 63 22 3e 0d 0a 20 20 20 20 20 20 20 20  argc">..        
379b0 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f  /// The number o
379c0 66 20 61 72 67 75 6d 65 6e 74 73 20 66 72 6f 6d  f arguments from
379d0 20 74 68 65 20 43 52 45 41 54 45 20 56 49 52 54   the CREATE VIRT
379e0 55 41 4c 20 54 41 42 4c 45 20 73 74 61 74 65 6d  UAL TABLE statem
379f0 65 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ent...        //
37a00 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
37a10 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
37a20 61 6d 65 3d 22 61 72 67 76 22 3e 0d 0a 20 20 20  ame="argv">..   
37a30 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 72 72       /// The arr
37a40 61 79 20 6f 66 20 73 74 72 69 6e 67 20 61 72 67  ay of string arg
37a50 75 6d 65 6e 74 73 20 66 72 6f 6d 20 74 68 65 20  uments from the 
37a60 43 52 45 41 54 45 20 56 49 52 54 55 41 4c 20 54  CREATE VIRTUAL T
37a70 41 42 4c 45 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ABLE..        //
37a80 2f 20 73 74 61 74 65 6d 65 6e 74 2e 0d 0a 20 20  / statement...  
37a90 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
37aa0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
37ab0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74  <param name="pVt
37ac0 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ab">..        //
37ad0 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20  / Upon success, 
37ae0 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d  this parameter m
37af0 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64 20  ust be modified 
37b00 74 6f 20 70 6f 69 6e 74 20 74 6f 20 74 68 65 20  to point to the 
37b10 6e 65 77 6c 79 0d 0a 20 20 20 20 20 20 20 20 2f  newly..        /
37b20 2f 2f 20 63 72 65 61 74 65 64 20 6e 61 74 69 76  // created nativ
37b30 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64  e sqlite3_vtab d
37b40 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65  erived structure
37b50 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
37b60 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
37b70 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
37b80 3d 22 70 45 72 72 6f 72 22 3e 0d 0a 20 20 20 20  ="pError">..    
37b90 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 66 61 69      /// Upon fai
37ba0 6c 75 72 65 2c 20 74 68 69 73 20 70 61 72 61 6d  lure, this param
37bb0 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64  eter must be mod
37bc0 69 66 69 65 64 20 74 6f 20 70 6f 69 6e 74 20 74  ified to point t
37bd0 6f 20 74 68 65 20 65 72 72 6f 72 0d 0a 20 20 20  o the error..   
37be0 20 20 20 20 20 2f 2f 2f 20 6d 65 73 73 61 67 65       /// message
37bf0 2c 20 77 69 74 68 20 74 68 65 20 75 6e 64 65 72  , with the under
37c00 6c 79 69 6e 67 20 6d 65 6d 6f 72 79 20 68 61 76  lying memory hav
37c10 69 6e 67 20 62 65 65 6e 20 6f 62 74 61 69 6e 65  ing been obtaine
37c20 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20  d from the..    
37c30 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f      /// sqlite3_
37c40 6d 61 6c 6c 6f 63 28 29 20 66 75 6e 63 74 69 6f  malloc() functio
37c50 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  n...        /// 
37c60 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
37c70 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
37c80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73  .        /// A s
37c90 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72  tandard SQLite r
37ca0 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20  eturn code...   
37cb0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
37cc0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ns>..        pri
37cd0 76 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  vate SQLiteError
37ce0 43 6f 64 65 20 43 72 65 61 74 65 4f 72 43 6f 6e  Code CreateOrCon
37cf0 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20  nect(..         
37d00 20 20 20 62 6f 6f 6c 20 63 72 65 61 74 65 2c 0d     bool create,.
37d10 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
37d20 50 74 72 20 70 44 62 2c 0d 0a 20 20 20 20 20 20  Ptr pDb,..      
37d30 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 41 75        IntPtr pAu
37d40 78 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  x,..            
37d50 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20  int argc,..     
37d60 20