System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 0a9ba9d1dd350a9f26e2bda1c1938110f6af259d:


0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  /***************
0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 20 2a 20 41 44  *********.. * AD
0040: 4f 2e 4e 45 54 20 32 2e 30 20 44 61 74 61 20 50  O.NET 2.0 Data P
0050: 72 6f 76 69 64 65 72 20 66 6f 72 20 53 51 4c 69  rovider for SQLi
0060: 74 65 20 56 65 72 73 69 6f 6e 20 33 2e 58 0d 0a  te Version 3.X..
0070: 20 2a 20 57 72 69 74 74 65 6e 20 62 79 20 4a 6f   * Written by Jo
0080: 65 20 4d 69 73 74 61 63 68 6b 69 6e 20 28 6a 6f  e Mistachkin (jo
0090: 65 40 6d 69 73 74 61 63 68 6b 69 6e 2e 63 6f 6d  e@mistachkin.com
00a0: 29 0d 0a 20 2a 0d 0a 20 2a 20 52 65 6c 65 61 73  ).. *.. * Releas
00b0: 65 64 20 74 6f 20 74 68 65 20 70 75 62 6c 69 63  ed to the public
00c0: 20 64 6f 6d 61 69 6e 2c 20 75 73 65 20 61 74 20   domain, use at 
00d0: 79 6f 75 72 20 6f 77 6e 20 72 69 73 6b 21 0d 0a  your own risk!..
00e0: 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a   ***************
00f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0100: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0110: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0d 0a 0d 0a 75 73  *********/....us
0120: 69 6e 67 20 53 79 73 74 65 6d 2e 43 6f 6c 6c 65  ing System.Colle
0130: 63 74 69 6f 6e 73 2e 47 65 6e 65 72 69 63 3b 0d  ctions.Generic;.
0140: 0a 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 47 6c  .using System.Gl
0150: 6f 62 61 6c 69 7a 61 74 69 6f 6e 3b 0d 0a 75 73  obalization;..us
0160: 69 6e 67 20 53 79 73 74 65 6d 2e 52 75 6e 74 69  ing System.Runti
0170: 6d 65 2e 43 6f 6d 70 69 6c 65 72 53 65 72 76 69  me.CompilerServi
0180: 63 65 73 3b 0d 0a 75 73 69 6e 67 20 53 79 73 74  ces;..using Syst
0190: 65 6d 2e 52 75 6e 74 69 6d 65 2e 49 6e 74 65 72  em.Runtime.Inter
01a0: 6f 70 53 65 72 76 69 63 65 73 3b 0d 0a 75 73 69  opServices;..usi
01b0: 6e 67 20 53 79 73 74 65 6d 2e 54 65 78 74 3b 0d  ng System.Text;.
01c0: 0a 0d 0a 6e 61 6d 65 73 70 61 63 65 20 53 79 73  ...namespace Sys
01d0: 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 0d  tem.Data.SQLite.
01e0: 0a 7b 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  .{..    #region 
01f0: 53 51 4c 69 74 65 43 6f 6e 74 65 78 74 20 48 65  SQLiteContext He
0200: 6c 70 65 72 20 43 6c 61 73 73 0d 0a 20 20 20 20  lper Class..    
0210: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
0220: 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73     /// This clas
0230: 73 20 72 65 70 72 65 73 65 6e 74 73 20 61 20 63  s represents a c
0240: 6f 6e 74 65 78 74 20 66 72 6f 6d 20 74 68 65 20  ontext from the 
0250: 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
0260: 61 72 79 20 74 68 61 74 20 63 61 6e 0d 0a 20 20  ary that can..  
0270: 20 20 2f 2f 2f 20 62 65 20 70 61 73 73 65 64 20    /// be passed 
0280: 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 72  to the sqlite3_r
0290: 65 73 75 6c 74 5f 2a 28 29 20 61 6e 64 20 61 73  esult_*() and as
02a0: 73 6f 63 69 61 74 65 64 20 66 75 6e 63 74 69 6f  sociated functio
02b0: 6e 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ns...    /// </s
02c0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62  ummary>..    pub
02d0: 6c 69 63 20 73 65 61 6c 65 64 20 63 6c 61 73 73  lic sealed class
02e0: 20 53 51 4c 69 74 65 43 6f 6e 74 65 78 74 20 3a   SQLiteContext :
02f0: 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65 48 61   ISQLiteNativeHa
0300: 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  ndle..    {..   
0310: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69       #region Pri
0320: 76 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20 20  vate Data..     
0330: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
0340: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
0350: 65 20 6e 61 74 69 76 65 20 63 6f 6e 74 65 78 74  e native context
0360: 20 68 61 6e 64 6c 65 2e 0d 0a 20 20 20 20 20 20   handle...      
0370: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
0380: 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
0390: 65 20 49 6e 74 50 74 72 20 70 43 6f 6e 74 65 78  e IntPtr pContex
03a0: 74 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64  t;..        #end
03b0: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
03c0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
03d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
03e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
03f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
0410: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69       #region Pri
0420: 76 61 74 65 20 43 6f 6e 73 74 72 75 63 74 6f 72  vate Constructor
0430: 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
0440: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
0450: 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73    /// Constructs
0460: 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20   an instance of 
0470: 74 68 69 73 20 63 6c 61 73 73 20 75 73 69 6e 67  this class using
0480: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6e   the specified n
0490: 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f  ative..        /
04a0: 2f 2f 20 63 6f 6e 74 65 78 74 20 68 61 6e 64 6c  // context handl
04b0: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
04c0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
04d0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
04e0: 61 6d 65 3d 22 70 43 6f 6e 74 65 78 74 22 3e 0d  ame="pContext">.
04f0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
0500: 20 6e 61 74 69 76 65 20 63 6f 6e 74 65 78 74 20   native context 
0510: 68 61 6e 64 6c 65 20 74 6f 20 75 73 65 2e 0d 0a  handle to use...
0520: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
0530: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e  ram>..        in
0540: 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 43 6f 6e  ternal SQLiteCon
0550: 74 65 78 74 28 49 6e 74 50 74 72 20 70 43 6f 6e  text(IntPtr pCon
0560: 74 65 78 74 29 0d 0a 20 20 20 20 20 20 20 20 7b  text)..        {
0570: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
0580: 69 73 2e 70 43 6f 6e 74 65 78 74 20 3d 20 70 43  is.pContext = pC
0590: 6f 6e 74 65 78 74 3b 0d 0a 20 20 20 20 20 20 20  ontext;..       
05a0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
05b0: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
05c0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
05d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
05e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
05f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
0610: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 53 51       #region ISQ
0620: 4c 69 74 65 4e 61 74 69 76 65 48 61 6e 64 6c 65  LiteNativeHandle
0630: 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20   Members..      
0640: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
0650: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65 74  .        /// Ret
0660: 75 72 6e 73 20 74 68 65 20 75 6e 64 65 72 6c 79  urns the underly
0670: 69 6e 67 20 53 51 4c 69 74 65 20 6e 61 74 69 76  ing SQLite nativ
0680: 65 20 68 61 6e 64 6c 65 20 61 73 73 6f 63 69 61  e handle associa
0690: 74 65 64 20 77 69 74 68 20 74 68 69 73 0d 0a 20  ted with this.. 
06a0: 20 20 20 20 20 20 20 2f 2f 2f 20 6f 62 6a 65 63         /// objec
06b0: 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  t instance...   
06c0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
06d0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ry>..        pub
06e0: 6c 69 63 20 49 6e 74 50 74 72 20 4e 61 74 69 76  lic IntPtr Nativ
06f0: 65 48 61 6e 64 6c 65 0d 0a 20 20 20 20 20 20 20  eHandle..       
0700: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
0710: 67 65 74 20 7b 20 72 65 74 75 72 6e 20 70 43 6f  get { return pCo
0720: 6e 74 65 78 74 3b 20 7d 0d 0a 20 20 20 20 20 20  ntext; }..      
0730: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
0740: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
0750: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
0760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
07a0: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75        #region Pu
07b0: 62 6c 69 63 20 4d 65 74 68 6f 64 73 0d 0a 20 20  blic Methods..  
07c0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
07d0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
07e0: 20 53 65 74 73 20 74 68 65 20 63 6f 6e 74 65 78   Sets the contex
07f0: 74 20 72 65 73 75 6c 74 20 74 6f 20 4e 55 4c 4c  t result to NULL
0800: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
0810: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
0820: 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 53     public void S
0830: 65 74 4e 75 6c 6c 28 29 0d 0a 20 20 20 20 20 20  etNull()..      
0840: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
0850: 20 69 66 20 28 70 43 6f 6e 74 65 78 74 20 3d 3d   if (pContext ==
0860: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
0870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
0880: 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64  hrow new Invalid
0890: 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69  OperationExcepti
08a0: 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  on();....       
08b0: 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
08c0: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
08d0: 5f 72 65 73 75 6c 74 5f 6e 75 6c 6c 28 70 43 6f  _result_null(pCo
08e0: 6e 74 65 78 74 29 3b 0d 0a 20 20 20 20 20 20 20  ntext);..       
08f0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
0900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0940: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
0950: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
0960: 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 74 73          /// Sets
0970: 20 74 68 65 20 63 6f 6e 74 65 78 74 20 72 65 73   the context res
0980: 75 6c 74 20 74 6f 20 74 68 65 20 73 70 65 63 69  ult to the speci
0990: 66 69 65 64 20 3c 73 65 65 20 63 72 65 66 3d 22  fied <see cref="
09a0: 44 6f 75 62 6c 65 22 20 2f 3e 0d 0a 20 20 20 20  Double" />..    
09b0: 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a      /// value...
09c0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
09d0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
09e0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
09f0: 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20  "value">..      
0a00: 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
0a10: 72 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f 3e 20  ref="Double" /> 
0a20: 76 61 6c 75 65 20 74 6f 20 75 73 65 2e 0d 0a 20  value to use... 
0a30: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
0a40: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  am>..        pub
0a50: 6c 69 63 20 76 6f 69 64 20 53 65 74 44 6f 75 62  lic void SetDoub
0a60: 6c 65 28 64 6f 75 62 6c 65 20 76 61 6c 75 65 29  le(double value)
0a70: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
0a80: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f           if (pCo
0a90: 6e 74 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e  ntext == IntPtr.
0aa0: 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
0ab0: 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
0ac0: 20 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f   InvalidOperatio
0ad0: 6e 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d  nException();...
0ae0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
0af0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
0b00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73  .            Uns
0b10: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
0b20: 2e 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f  .sqlite3_result_
0b30: 64 6f 75 62 6c 65 28 70 43 6f 6e 74 65 78 74 2c  double(pContext,
0b40: 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6c 69 66 20   value);..#elif 
0b50: 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44  !SQLITE_STANDARD
0b60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e  ..            Un
0b70: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
0b80: 73 2e 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  s.sqlite3_result
0b90: 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f 70 28  _double_interop(
0ba0: 70 43 6f 6e 74 65 78 74 2c 20 72 65 66 20 76 61  pContext, ref va
0bb0: 6c 75 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  lue);..#else..  
0bc0: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
0bd0: 6e 65 77 20 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74  new NotImplement
0be0: 65 64 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a  edException();..
0bf0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
0c00: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
0c10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c50: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
0c60: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
0c70: 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 74 73 20         /// Sets 
0c80: 74 68 65 20 63 6f 6e 74 65 78 74 20 72 65 73 75  the context resu
0c90: 6c 74 20 74 6f 20 74 68 65 20 73 70 65 63 69 66  lt to the specif
0ca0: 69 65 64 20 3c 73 65 65 20 63 72 65 66 3d 22 49  ied <see cref="I
0cb0: 6e 74 33 32 22 20 2f 3e 0d 0a 20 20 20 20 20 20  nt32" />..      
0cc0: 20 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20 20    /// value...  
0cd0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
0ce0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
0cf0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76  / <param name="v
0d00: 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  alue">..        
0d10: 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
0d20: 66 3d 22 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c  f="Int32" /> val
0d30: 75 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20  ue to use...    
0d40: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
0d50: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
0d60: 20 76 6f 69 64 20 53 65 74 49 6e 74 28 69 6e 74   void SetInt(int
0d70: 20 76 61 6c 75 65 29 0d 0a 20 20 20 20 20 20 20   value)..       
0d80: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
0d90: 69 66 20 28 70 43 6f 6e 74 65 78 74 20 3d 3d 20  if (pContext == 
0da0: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
0db0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
0dc0: 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f  row new InvalidO
0dd0: 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69 6f  perationExceptio
0de0: 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  n();....        
0df0: 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65      UnsafeNative
0e00: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
0e10: 72 65 73 75 6c 74 5f 69 6e 74 28 70 43 6f 6e 74  result_int(pCont
0e20: 65 78 74 2c 20 76 61 6c 75 65 29 3b 0d 0a 20 20  ext, value);..  
0e30: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
0e40: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
0e50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
0e90: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
0ea0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
0eb0: 20 53 65 74 73 20 74 68 65 20 63 6f 6e 74 65 78   Sets the contex
0ec0: 74 20 72 65 73 75 6c 74 20 74 6f 20 74 68 65 20  t result to the 
0ed0: 73 70 65 63 69 66 69 65 64 20 3c 73 65 65 20 63  specified <see c
0ee0: 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e 0d 0a  ref="Int64" />..
0ef0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75          /// valu
0f00: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
0f10: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
0f20: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
0f30: 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20  ame="value">..  
0f40: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
0f50: 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20  ee cref="Int64" 
0f60: 2f 3e 20 76 61 6c 75 65 20 74 6f 20 75 73 65 2e  /> value to use.
0f70: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
0f80: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
0f90: 70 75 62 6c 69 63 20 76 6f 69 64 20 53 65 74 49  public void SetI
0fa0: 6e 74 36 34 28 6c 6f 6e 67 20 76 61 6c 75 65 29  nt64(long value)
0fb0: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
0fc0: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f           if (pCo
0fd0: 6e 74 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e  ntext == IntPtr.
0fe0: 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
0ff0: 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
1000: 20 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f   InvalidOperatio
1010: 6e 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d  nException();...
1020: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
1030: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
1040: 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73  .            Uns
1050: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
1060: 2e 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f  .sqlite3_result_
1070: 69 6e 74 36 34 28 70 43 6f 6e 74 65 78 74 2c 20  int64(pContext, 
1080: 76 61 6c 75 65 29 3b 0d 0a 23 65 6c 69 66 20 21  value);..#elif !
1090: 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
10a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73  .            Uns
10b0: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
10c0: 2e 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f  .sqlite3_result_
10d0: 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28 70 43  int64_interop(pC
10e0: 6f 6e 74 65 78 74 2c 20 72 65 66 20 76 61 6c 75  ontext, ref valu
10f0: 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  e);..#else..    
1100: 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65          throw ne
1110: 77 20 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74 65 64  w NotImplemented
1120: 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 23 65  Exception();..#e
1130: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ndif..        }.
1140: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1190: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
11a0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
11b0: 20 20 20 20 20 2f 2f 2f 20 53 65 74 73 20 74 68       /// Sets th
11c0: 65 20 63 6f 6e 74 65 78 74 20 72 65 73 75 6c 74  e context result
11d0: 20 74 6f 20 74 68 65 20 73 70 65 63 69 66 69 65   to the specifie
11e0: 64 20 3c 73 65 65 20 63 72 65 66 3d 22 53 74 72  d <see cref="Str
11f0: 69 6e 67 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20  ing" />..       
1200: 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20   /// value...   
1210: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1220: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1230: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61   <param name="va
1240: 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  lue">..        /
1250: 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
1260: 3d 22 53 74 72 69 6e 67 22 20 2f 3e 20 76 61 6c  ="String" /> val
1270: 75 65 20 74 6f 20 75 73 65 2e 20 20 54 68 69 73  ue to use.  This
1280: 20 76 61 6c 75 65 20 77 69 6c 6c 20 62 65 0d 0a   value will be..
1290: 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 76          /// conv
12a0: 65 72 74 65 64 20 74 6f 20 74 68 65 20 55 54 46  erted to the UTF
12b0: 2d 38 20 65 6e 63 6f 64 69 6e 67 20 70 72 69 6f  -8 encoding prio
12c0: 72 20 74 6f 20 62 65 69 6e 67 20 75 73 65 64 2e  r to being used.
12d0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
12e0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
12f0: 70 75 62 6c 69 63 20 76 6f 69 64 20 53 65 74 53  public void SetS
1300: 74 72 69 6e 67 28 73 74 72 69 6e 67 20 76 61 6c  tring(string val
1310: 75 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ue)..        {..
1320: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1330: 70 43 6f 6e 74 65 78 74 20 3d 3d 20 49 6e 74 50  pContext == IntP
1340: 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
1350: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
1360: 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72 61  new InvalidOpera
1370: 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 29 3b  tionException();
1380: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1390: 62 79 74 65 5b 5d 20 62 79 74 65 73 20 3d 20 53  byte[] bytes = S
13a0: 51 4c 69 74 65 53 74 72 69 6e 67 2e 47 65 74 55  QLiteString.GetU
13b0: 74 66 38 42 79 74 65 73 46 72 6f 6d 53 74 72 69  tf8BytesFromStri
13c0: 6e 67 28 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20  ng(value);....  
13d0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 79            if (by
13e0: 74 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  tes == null)..  
13f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
1400: 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65 6e 74  row new Argument
1410: 4e 75 6c 6c 45 78 63 65 70 74 69 6f 6e 28 22 76  NullException("v
1420: 61 6c 75 65 22 29 3b 0d 0a 0d 0a 20 20 20 20 20  alue");....     
1430: 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74         UnsafeNat
1440: 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
1450: 65 33 5f 72 65 73 75 6c 74 5f 74 65 78 74 28 0d  e3_result_text(.
1460: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1470: 20 70 43 6f 6e 74 65 78 74 2c 20 62 79 74 65 73   pContext, bytes
1480: 2c 20 62 79 74 65 73 2e 4c 65 6e 67 74 68 2c 20  , bytes.Length, 
1490: 28 49 6e 74 50 74 72 29 28 2d 31 29 29 3b 0d 0a  (IntPtr)(-1));..
14a0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
14b0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
14c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1500: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
1510: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1520: 2f 2f 20 53 65 74 73 20 74 68 65 20 63 6f 6e 74  // Sets the cont
1530: 65 78 74 20 72 65 73 75 6c 74 20 74 6f 20 74 68  ext result to th
1540: 65 20 73 70 65 63 69 66 69 65 64 20 3c 73 65 65  e specified <see
1550: 20 63 72 65 66 3d 22 53 74 72 69 6e 67 22 20 2f   cref="String" /
1560: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76  >..        /// v
1570: 61 6c 75 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20  alue containing 
1580: 61 6e 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65  an error message
1590: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
15a0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
15b0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
15c0: 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20  me="value">..   
15d0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
15e0: 65 20 63 72 65 66 3d 22 53 74 72 69 6e 67 22 20  e cref="String" 
15f0: 2f 3e 20 76 61 6c 75 65 20 63 6f 6e 74 61 69 6e  /> value contain
1600: 69 6e 67 20 74 68 65 20 65 72 72 6f 72 20 6d 65  ing the error me
1610: 73 73 61 67 65 20 74 65 78 74 2e 0d 0a 20 20 20  ssage text...   
1620: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 76 61       /// This va
1630: 6c 75 65 20 77 69 6c 6c 20 62 65 20 63 6f 6e 76  lue will be conv
1640: 65 72 74 65 64 20 74 6f 20 74 68 65 20 55 54 46  erted to the UTF
1650: 2d 38 20 65 6e 63 6f 64 69 6e 67 20 70 72 69 6f  -8 encoding prio
1660: 72 20 74 6f 20 62 65 69 6e 67 0d 0a 20 20 20 20  r to being..    
1670: 20 20 20 20 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20      /// used... 
1680: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1690: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  am>..        pub
16a0: 6c 69 63 20 76 6f 69 64 20 53 65 74 45 72 72 6f  lic void SetErro
16b0: 72 28 73 74 72 69 6e 67 20 76 61 6c 75 65 29 0d  r(string value).
16c0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
16d0: 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f 6e          if (pCon
16e0: 74 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  text == IntPtr.Z
16f0: 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
1700: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
1710: 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e  InvalidOperation
1720: 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a  Exception();....
1730: 20 20 20 20 20 20 20 20 20 20 20 20 62 79 74 65              byte
1740: 5b 5d 20 62 79 74 65 73 20 3d 20 53 51 4c 69 74  [] bytes = SQLit
1750: 65 53 74 72 69 6e 67 2e 47 65 74 55 74 66 38 42  eString.GetUtf8B
1760: 79 74 65 73 46 72 6f 6d 53 74 72 69 6e 67 28 76  ytesFromString(v
1770: 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  alue);....      
1780: 20 20 20 20 20 20 69 66 20 28 62 79 74 65 73 20        if (bytes 
1790: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
17a0: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
17b0: 6e 65 77 20 41 72 67 75 6d 65 6e 74 4e 75 6c 6c  new ArgumentNull
17c0: 45 78 63 65 70 74 69 6f 6e 28 22 76 61 6c 75 65  Exception("value
17d0: 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ");....         
17e0: 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
17f0: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 72  ethods.sqlite3_r
1800: 65 73 75 6c 74 5f 65 72 72 6f 72 28 0d 0a 20 20  esult_error(..  
1810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 43                pC
1820: 6f 6e 74 65 78 74 2c 20 62 79 74 65 73 2c 20 62  ontext, bytes, b
1830: 79 74 65 73 2e 4c 65 6e 67 74 68 29 3b 0d 0a 20  ytes.Length);.. 
1840: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
1850: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
18a0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
18b0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
18c0: 2f 20 53 65 74 73 20 74 68 65 20 63 6f 6e 74 65  / Sets the conte
18d0: 78 74 20 72 65 73 75 6c 74 20 74 6f 20 74 68 65  xt result to the
18e0: 20 73 70 65 63 69 66 69 65 64 20 3c 73 65 65 20   specified <see 
18f0: 63 72 65 66 3d 22 53 51 4c 69 74 65 45 72 72 6f  cref="SQLiteErro
1900: 72 43 6f 64 65 22 20 2f 3e 0d 0a 20 20 20 20 20  rCode" />..     
1910: 20 20 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20     /// value... 
1920: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
1930: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1940: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1950: 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20  value">..       
1960: 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
1970: 65 66 3d 22 53 51 4c 69 74 65 45 72 72 6f 72 43  ef="SQLiteErrorC
1980: 6f 64 65 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f  ode" /> value to
1990: 20 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f   use...        /
19a0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
19b0: 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64       public void
19c0: 20 53 65 74 45 72 72 6f 72 43 6f 64 65 28 53 51   SetErrorCode(SQ
19d0: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 76 61  LiteErrorCode va
19e0: 6c 75 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  lue)..        {.
19f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
1a00: 28 70 43 6f 6e 74 65 78 74 20 3d 3d 20 49 6e 74  (pContext == Int
1a10: 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
1a20: 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
1a30: 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72   new InvalidOper
1a40: 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 29  ationException()
1a50: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1a60: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
1a70: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 72 65 73  hods.sqlite3_res
1a80: 75 6c 74 5f 65 72 72 6f 72 5f 63 6f 64 65 28 70  ult_error_code(p
1a90: 43 6f 6e 74 65 78 74 2c 20 76 61 6c 75 65 29 3b  Context, value);
1aa0: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
1ab0: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1b00: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1b10: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1b20: 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20 63 6f   /// Sets the co
1b30: 6e 74 65 78 74 20 72 65 73 75 6c 74 20 74 6f 20  ntext result to 
1b40: 63 6f 6e 74 61 69 6e 20 74 68 65 20 65 72 72 6f  contain the erro
1b50: 72 20 63 6f 64 65 20 53 51 4c 49 54 45 5f 54 4f  r code SQLITE_TO
1b60: 4f 42 49 47 2e 0d 0a 20 20 20 20 20 20 20 20 2f  OBIG...        /
1b70: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1b80: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f         public vo
1b90: 69 64 20 53 65 74 45 72 72 6f 72 54 6f 6f 42 69  id SetErrorTooBi
1ba0: 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  g()..        {..
1bb0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1bc0: 70 43 6f 6e 74 65 78 74 20 3d 3d 20 49 6e 74 50  pContext == IntP
1bd0: 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
1be0: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
1bf0: 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72 61  new InvalidOpera
1c00: 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 29 3b  tionException();
1c10: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1c20: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
1c30: 6f 64 73 2e 73 71 6c 69 74 65 33 5f 72 65 73 75  ods.sqlite3_resu
1c40: 6c 74 5f 65 72 72 6f 72 5f 74 6f 6f 62 69 67 28  lt_error_toobig(
1c50: 70 43 6f 6e 74 65 78 74 29 3b 0d 0a 20 20 20 20  pContext);..    
1c60: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1c70: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1cc0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1cd0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53  >..        /// S
1ce0: 65 74 73 20 74 68 65 20 63 6f 6e 74 65 78 74 20  ets the context 
1cf0: 72 65 73 75 6c 74 20 74 6f 20 63 6f 6e 74 61 69  result to contai
1d00: 6e 20 74 68 65 20 65 72 72 6f 72 20 63 6f 64 65  n the error code
1d10: 20 53 51 4c 49 54 45 5f 4e 4f 4d 45 4d 2e 0d 0a   SQLITE_NOMEM...
1d20: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
1d30: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1d40: 70 75 62 6c 69 63 20 76 6f 69 64 20 53 65 74 45  public void SetE
1d50: 72 72 6f 72 4e 6f 4d 65 6d 6f 72 79 28 29 0d 0a  rrorNoMemory()..
1d60: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1d70: 20 20 20 20 20 20 20 69 66 20 28 70 43 6f 6e 74         if (pCont
1d80: 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  ext == IntPtr.Ze
1d90: 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
1da0: 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 49       throw new I
1db0: 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45  nvalidOperationE
1dc0: 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 20  xception();.... 
1dd0: 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66             Unsaf
1de0: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
1df0: 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72  qlite3_result_er
1e00: 72 6f 72 5f 6e 6f 6d 65 6d 28 70 43 6f 6e 74 65  ror_nomem(pConte
1e10: 78 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  xt);..        }.
1e20: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1e30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e70: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
1e80: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1e90: 20 20 20 20 20 2f 2f 2f 20 53 65 74 73 20 74 68       /// Sets th
1ea0: 65 20 63 6f 6e 74 65 78 74 20 72 65 73 75 6c 74  e context result
1eb0: 20 74 6f 20 74 68 65 20 73 70 65 63 69 66 69 65   to the specifie
1ec0: 64 20 3c 73 65 65 20 63 72 65 66 3d 22 42 79 74  d <see cref="Byt
1ed0: 65 22 20 2f 3e 20 61 72 72 61 79 0d 0a 20 20 20  e" /> array..   
1ee0: 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d       /// value..
1ef0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
1f00: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1f10: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1f20: 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20  ="value">..     
1f30: 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
1f40: 63 72 65 66 3d 22 42 79 74 65 22 20 2f 3e 20 61  cref="Byte" /> a
1f50: 72 72 61 79 20 76 61 6c 75 65 20 74 6f 20 75 73  rray value to us
1f60: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
1f70: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
1f80: 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 53 65    public void Se
1f90: 74 42 6c 6f 62 28 62 79 74 65 5b 5d 20 76 61 6c  tBlob(byte[] val
1fa0: 75 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ue)..        {..
1fb0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1fc0: 70 43 6f 6e 74 65 78 74 20 3d 3d 20 49 6e 74 50  pContext == IntP
1fd0: 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
1fe0: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
1ff0: 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72 61  new InvalidOpera
2000: 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 29 3b  tionException();
2010: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2020: 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c  if (value == nul
2030: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
2040: 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72      throw new Ar
2050: 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65 70 74  gumentNullExcept
2060: 69 6f 6e 28 22 76 61 6c 75 65 22 29 3b 0d 0a 0d  ion("value");...
2070: 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73  .            Uns
2080: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2090: 2e 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f  .sqlite3_result_
20a0: 62 6c 6f 62 28 0d 0a 20 20 20 20 20 20 20 20 20  blob(..         
20b0: 20 20 20 20 20 20 20 70 43 6f 6e 74 65 78 74 2c         pContext,
20c0: 20 76 61 6c 75 65 2c 20 76 61 6c 75 65 2e 4c 65   value, value.Le
20d0: 6e 67 74 68 2c 20 28 49 6e 74 50 74 72 29 28 2d  ngth, (IntPtr)(-
20e0: 31 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  1));..        }.
20f0: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2140: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
2150: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
2160: 20 20 20 20 20 2f 2f 2f 20 53 65 74 73 20 74 68       /// Sets th
2170: 65 20 63 6f 6e 74 65 78 74 20 72 65 73 75 6c 74  e context result
2180: 20 74 6f 20 61 20 42 4c 4f 42 20 6f 66 20 7a 65   to a BLOB of ze
2190: 72 6f 73 20 6f 66 20 74 68 65 20 73 70 65 63 69  ros of the speci
21a0: 66 69 65 64 20 73 69 7a 65 2e 0d 0a 20 20 20 20  fied size...    
21b0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
21c0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
21d0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c  <param name="val
21e0: 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ue">..        //
21f0: 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  / The number of 
2200: 7a 65 72 6f 20 62 79 74 65 73 20 74 6f 20 75 73  zero bytes to us
2210: 65 20 66 6f 72 20 74 68 65 20 42 4c 4f 42 20 63  e for the BLOB c
2220: 6f 6e 74 65 78 74 20 72 65 73 75 6c 74 2e 0d 0a  ontext result...
2230: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
2240: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ram>..        pu
2250: 62 6c 69 63 20 76 6f 69 64 20 53 65 74 5a 65 72  blic void SetZer
2260: 6f 42 6c 6f 62 28 69 6e 74 20 76 61 6c 75 65 29  oBlob(int value)
2270: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
2280: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f           if (pCo
2290: 6e 74 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e  ntext == IntPtr.
22a0: 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
22b0: 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
22c0: 20 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f   InvalidOperatio
22d0: 6e 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d  nException();...
22e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73  .            Uns
22f0: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2300: 2e 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f  .sqlite3_result_
2310: 7a 65 72 6f 62 6c 6f 62 28 70 43 6f 6e 74 65 78  zeroblob(pContex
2320: 74 2c 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20  t, value);..    
2330: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2340: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2380: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2390: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
23a0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53  >..        /// S
23b0: 65 74 73 20 74 68 65 20 63 6f 6e 74 65 78 74 20  ets the context 
23c0: 72 65 73 75 6c 74 20 74 6f 20 74 68 65 20 73 70  result to the sp
23d0: 65 63 69 66 69 65 64 20 3c 73 65 65 20 63 72 65  ecified <see cre
23e0: 66 3d 22 53 51 4c 69 74 65 56 61 6c 75 65 22 20  f="SQLiteValue" 
23f0: 2f 3e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  />...        ///
2400: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
2410: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
2420: 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20  name="value">.. 
2430: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
2440: 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
2450: 56 61 6c 75 65 22 20 2f 3e 20 74 6f 20 75 73 65  Value" /> to use
2460: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
2470: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
2480: 20 70 75 62 6c 69 63 20 76 6f 69 64 20 53 65 74   public void Set
2490: 56 61 6c 75 65 28 53 51 4c 69 74 65 56 61 6c 75  Value(SQLiteValu
24a0: 65 20 76 61 6c 75 65 29 0d 0a 20 20 20 20 20 20  e value)..      
24b0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
24c0: 20 69 66 20 28 70 43 6f 6e 74 65 78 74 20 3d 3d   if (pContext ==
24d0: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
24e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
24f0: 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64  hrow new Invalid
2500: 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69  OperationExcepti
2510: 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  on();....       
2520: 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d       if (value =
2530: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
2540: 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e           throw n
2550: 65 77 20 41 72 67 75 6d 65 6e 74 4e 75 6c 6c 45  ew ArgumentNullE
2560: 78 63 65 70 74 69 6f 6e 28 22 76 61 6c 75 65 22  xception("value"
2570: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2580: 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65    UnsafeNativeMe
2590: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 72 65  thods.sqlite3_re
25a0: 73 75 6c 74 5f 76 61 6c 75 65 28 0d 0a 20 20 20  sult_value(..   
25b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 43 6f               pCo
25c0: 6e 74 65 78 74 2c 20 76 61 6c 75 65 2e 4e 61 74  ntext, value.Nat
25d0: 69 76 65 48 61 6e 64 6c 65 29 3b 0d 0a 20 20 20  iveHandle);..   
25e0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
25f0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20  #endregion..    
2600: 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  }..    #endregio
2610: 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  n....    ///////
2620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2660: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
2670: 69 6f 6e 20 53 51 4c 69 74 65 56 61 6c 75 65 20  ion SQLiteValue 
2680: 48 65 6c 70 65 72 20 43 6c 61 73 73 0d 0a 20 20  Helper Class..  
2690: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
26a0: 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c  .    /// This cl
26b0: 61 73 73 20 72 65 70 72 65 73 65 6e 74 73 20 61  ass represents a
26c0: 20 76 61 6c 75 65 20 66 72 6f 6d 20 74 68 65 20   value from the 
26d0: 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
26e0: 61 72 79 20 74 68 61 74 20 63 61 6e 20 62 65 0d  ary that can be.
26f0: 0a 20 20 20 20 2f 2f 2f 20 70 61 73 73 65 64 20  .    /// passed 
2700: 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76  to the sqlite3_v
2710: 61 6c 75 65 5f 2a 28 29 20 61 6e 64 20 61 73 73  alue_*() and ass
2720: 6f 63 69 61 74 65 64 20 66 75 6e 63 74 69 6f 6e  ociated function
2730: 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  s...    /// </su
2740: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c  mmary>..    publ
2750: 69 63 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20  ic sealed class 
2760: 53 51 4c 69 74 65 56 61 6c 75 65 20 3a 20 49 53  SQLiteValue : IS
2770: 51 4c 69 74 65 4e 61 74 69 76 65 48 61 6e 64 6c  QLiteNativeHandl
2780: 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  e..    {..      
2790: 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74    #region Privat
27a0: 65 20 44 61 74 61 0d 0a 20 20 20 20 20 20 20 20  e Data..        
27b0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
27c0: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
27d0: 61 74 69 76 65 20 76 61 6c 75 65 20 68 61 6e 64  ative value hand
27e0: 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le...        ///
27f0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
2800: 20 20 20 20 20 70 72 69 76 61 74 65 20 49 6e 74       private Int
2810: 50 74 72 20 70 56 61 6c 75 65 3b 0d 0a 20 20 20  Ptr pValue;..   
2820: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
2830: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2880: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
2890: 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43 6f  egion Private Co
28a0: 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20  nstructors..    
28b0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
28c0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43  >..        /// C
28d0: 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73  onstructs an ins
28e0: 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c  tance of this cl
28f0: 61 73 73 20 75 73 69 6e 67 20 74 68 65 20 73 70  ass using the sp
2900: 65 63 69 66 69 65 64 20 6e 61 74 69 76 65 0d 0a  ecified native..
2910: 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75          /// valu
2920: 65 20 68 61 6e 64 6c 65 2e 0d 0a 20 20 20 20 20  e handle...     
2930: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
2940: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
2950: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 61 6c  param name="pVal
2960: 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ue">..        //
2970: 2f 20 54 68 65 20 6e 61 74 69 76 65 20 76 61 6c  / The native val
2980: 75 65 20 68 61 6e 64 6c 65 20 74 6f 20 75 73 65  ue handle to use
2990: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
29a0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
29b0: 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 56   private SQLiteV
29c0: 61 6c 75 65 28 49 6e 74 50 74 72 20 70 56 61 6c  alue(IntPtr pVal
29d0: 75 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ue)..        {..
29e0: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
29f0: 2e 70 56 61 6c 75 65 20 3d 20 70 56 61 6c 75 65  .pValue = pValue
2a00: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
2a10: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
2a20: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
2a30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a70: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
2a80: 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 4d  region Private M
2a90: 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
2aa0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2ab0: 20 20 20 20 20 20 20 2f 2f 2f 20 49 6e 76 61 6c         /// Inval
2ac0: 69 64 61 74 65 73 20 74 68 65 20 6e 61 74 69 76  idates the nativ
2ad0: 65 20 76 61 6c 75 65 20 68 61 6e 64 6c 65 2c 20  e value handle, 
2ae0: 74 68 65 72 65 62 79 20 70 72 65 76 65 6e 74 69  thereby preventi
2af0: 6e 67 20 66 75 72 74 68 65 72 0d 0a 20 20 20 20  ng further..    
2b00: 20 20 20 20 2f 2f 2f 20 61 63 63 65 73 73 20 74      /// access t
2b10: 6f 20 69 74 20 66 72 6f 6d 20 74 68 69 73 20 6f  o it from this o
2b20: 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d  bject instance..
2b30: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
2b40: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2b50: 20 70 72 69 76 61 74 65 20 76 6f 69 64 20 50 72   private void Pr
2b60: 65 76 65 6e 74 4e 61 74 69 76 65 41 63 63 65 73  eventNativeAcces
2b70: 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  s()..        {..
2b80: 20 20 20 20 20 20 20 20 20 20 20 20 70 56 61 6c              pVal
2b90: 75 65 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  ue = IntPtr.Zero
2ba0: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
2bb0: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
2bc0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
2bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c10: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
2c20: 72 65 67 69 6f 6e 20 49 6e 74 65 72 6e 61 6c 20  region Internal 
2c30: 4d 61 72 73 68 61 6c 20 48 65 6c 70 65 72 20 4d  Marshal Helper M
2c40: 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
2c50: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2c60: 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65         /// Conve
2c70: 72 74 73 20 61 20 6c 6f 67 69 63 61 6c 20 61 72  rts a logical ar
2c80: 72 61 79 20 6f 66 20 6e 61 74 69 76 65 20 70 6f  ray of native po
2c90: 69 6e 74 65 72 73 20 74 6f 20 6e 61 74 69 76 65  inters to native
2ca0: 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 0d 0a   sqlite3_value..
2cb0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75          /// stru
2cc0: 63 74 75 72 65 73 20 69 6e 74 6f 20 61 20 6d 61  ctures into a ma
2cd0: 6e 61 67 65 64 20 61 72 72 61 79 20 6f 66 20 3c  naged array of <
2ce0: 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
2cf0: 56 61 6c 75 65 22 20 2f 3e 0d 0a 20 20 20 20 20  Value" />..     
2d00: 20 20 20 2f 2f 2f 20 6f 62 6a 65 63 74 20 69 6e     /// object in
2d10: 73 74 61 6e 63 65 73 2e 0d 0a 20 20 20 20 20 20  stances...      
2d20: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2d30: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
2d40: 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 63 22  aram name="argc"
2d50: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
2d60: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 65 6c 65  he number of ele
2d70: 6d 65 6e 74 73 20 69 6e 20 74 68 65 20 6c 6f 67  ments in the log
2d80: 69 63 61 6c 20 61 72 72 61 79 20 6f 66 20 6e 61  ical array of na
2d90: 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76 61 6c  tive sqlite3_val
2da0: 75 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ue..        /// 
2db0: 73 74 72 75 63 74 75 72 65 73 2e 0d 0a 20 20 20  structures...   
2dc0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2dd0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
2de0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 76  param name="argv
2df0: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
2e00: 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  The native point
2e10: 65 72 20 74 6f 20 74 68 65 20 6c 6f 67 69 63 61  er to the logica
2e20: 6c 20 61 72 72 61 79 20 6f 66 20 6e 61 74 69 76  l array of nativ
2e30: 65 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 0d  e sqlite3_value.
2e40: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72  .        /// str
2e50: 75 63 74 75 72 65 73 20 74 6f 20 63 6f 6e 76 65  uctures to conve
2e60: 72 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  rt...        ///
2e70: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
2e80: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
2e90: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
2ea0: 65 20 6d 61 6e 61 67 65 64 20 61 72 72 61 79 20  e managed array 
2eb0: 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  of <see cref="SQ
2ec0: 4c 69 74 65 56 61 6c 75 65 22 20 2f 3e 20 6f 62  LiteValue" /> ob
2ed0: 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 73 20 6f  ject instances o
2ee0: 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e  r..        /// n
2ef0: 75 6c 6c 20 75 70 6f 6e 20 66 61 69 6c 75 72 65  ull upon failure
2f00: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
2f10: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
2f20: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
2f30: 69 63 20 53 51 4c 69 74 65 56 61 6c 75 65 5b 5d  ic SQLiteValue[]
2f40: 20 41 72 72 61 79 46 72 6f 6d 53 69 7a 65 41 6e   ArrayFromSizeAn
2f50: 64 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20  dIntPtr(..      
2f60: 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d        int argc,.
2f70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
2f80: 50 74 72 20 61 72 67 76 0d 0a 20 20 20 20 20 20  Ptr argv..      
2f90: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
2fa0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2fb0: 69 66 20 28 61 72 67 63 20 3c 20 30 29 0d 0a 20  if (argc < 0).. 
2fc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2fd0: 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  eturn null;.... 
2fe0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61             if (a
2ff0: 72 67 76 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  rgv == IntPtr.Ze
3000: 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
3010: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
3020: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
3030: 20 53 51 4c 69 74 65 56 61 6c 75 65 5b 5d 20 72   SQLiteValue[] r
3040: 65 73 75 6c 74 20 3d 20 6e 65 77 20 53 51 4c 69  esult = new SQLi
3050: 74 65 56 61 6c 75 65 5b 61 72 67 63 5d 3b 0d 0a  teValue[argc];..
3060: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f  ..            fo
3070: 72 20 28 69 6e 74 20 69 6e 64 65 78 20 3d 20 30  r (int index = 0
3080: 2c 20 6f 66 66 73 65 74 20 3d 20 30 3b 0d 0a 20  , offset = 0;.. 
3090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30a0: 20 20 20 69 6e 64 65 78 20 3c 20 72 65 73 75 6c     index < resul
30b0: 74 2e 4c 65 6e 67 74 68 3b 0d 0a 20 20 20 20 20  t.Length;..     
30c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
30d0: 6e 64 65 78 2b 2b 2c 20 6f 66 66 73 65 74 20 2b  ndex++, offset +
30e0: 3d 20 49 6e 74 50 74 72 2e 53 69 7a 65 29 0d 0a  = IntPtr.Size)..
30f0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
3100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
3110: 6e 74 50 74 72 20 70 41 72 67 20 3d 20 53 51 4c  ntPtr pArg = SQL
3120: 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49  iteMarshal.ReadI
3130: 6e 74 50 74 72 28 61 72 67 76 2c 20 6f 66 66 73  ntPtr(argv, offs
3140: 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  et);....        
3150: 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 5b 69          result[i
3160: 6e 64 65 78 5d 20 3d 20 28 70 41 72 67 20 21 3d  ndex] = (pArg !=
3170: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20 3f 0d   IntPtr.Zero) ?.
3180: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3190: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 56       new SQLiteV
31a0: 61 6c 75 65 28 70 41 72 67 29 20 3a 20 6e 75 6c  alue(pArg) : nul
31b0: 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l;..            
31c0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
31d0: 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d   return result;.
31e0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
31f0: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
3200: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
3210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3250: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
3260: 67 69 6f 6e 20 49 53 51 4c 69 74 65 4e 61 74 69  gion ISQLiteNati
3270: 76 65 48 61 6e 64 6c 65 20 4d 65 6d 62 65 72 73  veHandle Members
3280: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
3290: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
32a0: 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 74 68 65   /// Returns the
32b0: 20 75 6e 64 65 72 6c 79 69 6e 67 20 53 51 4c 69   underlying SQLi
32c0: 74 65 20 6e 61 74 69 76 65 20 68 61 6e 64 6c 65  te native handle
32d0: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
32e0: 20 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20 2f   this..        /
32f0: 2f 2f 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  // object instan
3300: 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ce...        ///
3310: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
3320: 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50       public IntP
3330: 74 72 20 4e 61 74 69 76 65 48 61 6e 64 6c 65 0d  tr NativeHandle.
3340: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
3350: 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65          get { re
3360: 74 75 72 6e 20 70 56 61 6c 75 65 3b 20 7d 0d 0a  turn pValue; }..
3370: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
3380: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
3390: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
33a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33e0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
33f0: 69 6f 6e 20 50 75 62 6c 69 63 20 50 72 6f 70 65  ion Public Prope
3400: 72 74 69 65 73 0d 0a 20 20 20 20 20 20 20 20 70  rties..        p
3410: 72 69 76 61 74 65 20 62 6f 6f 6c 20 70 65 72 73  rivate bool pers
3420: 69 73 74 65 64 3b 0d 0a 20 20 20 20 20 20 20 20  isted;..        
3430: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
3440: 20 20 20 20 20 20 20 2f 2f 2f 20 52 65 74 75 72         /// Retur
3450: 6e 73 20 6e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74  ns non-zero if t
3460: 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
3470: 20 76 61 6c 75 65 20 68 61 73 20 62 65 65 6e 20   value has been 
3480: 73 75 63 63 65 73 73 66 75 6c 6c 79 0d 0a 20 20  successfully..  
3490: 20 20 20 20 20 20 2f 2f 2f 20 70 65 72 73 69 73        /// persis
34a0: 74 65 64 20 61 73 20 61 20 6d 61 6e 61 67 65 64  ted as a managed
34b0: 20 76 61 6c 75 65 20 77 69 74 68 69 6e 20 74 68   value within th
34c0: 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  is object instan
34d0: 63 65 20 28 69 2e 65 2e 20 74 68 65 0d 0a 20 20  ce (i.e. the..  
34e0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
34f0: 72 65 66 3d 22 56 61 6c 75 65 22 20 2f 3e 20 70  ref="Value" /> p
3500: 72 6f 70 65 72 74 79 20 6d 61 79 20 74 68 65 6e  roperty may then
3510: 20 62 65 20 72 65 61 64 20 73 75 63 63 65 73 73   be read success
3520: 66 75 6c 6c 79 29 2e 0d 0a 20 20 20 20 20 20 20  fully)...       
3530: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
3540: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
3550: 62 6f 6f 6c 20 50 65 72 73 69 73 74 65 64 0d 0a  bool Persisted..
3560: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
3570: 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
3580: 75 72 6e 20 70 65 72 73 69 73 74 65 64 3b 20 7d  urn persisted; }
3590: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
35a0: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
35b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
35f0: 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
3600: 65 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 3b 0d  e object value;.
3610: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
3620: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
3630: 2f 2f 2f 20 49 66 20 74 68 65 20 6d 61 6e 61 67  /// If the manag
3640: 65 64 20 76 61 6c 75 65 20 66 6f 72 20 74 68 69  ed value for thi
3650: 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  s object instanc
3660: 65 20 69 73 20 61 76 61 69 6c 61 62 6c 65 20 28  e is available (
3670: 69 2e 65 2e 20 69 74 0d 0a 20 20 20 20 20 20 20  i.e. it..       
3680: 20 2f 2f 2f 20 68 61 73 20 62 65 65 6e 20 70 72   /// has been pr
3690: 65 76 69 6f 75 73 6c 79 20 70 65 72 73 69 73 74  eviously persist
36a0: 65 64 20 76 69 61 20 74 68 65 20 3c 73 65 65 20  ed via the <see 
36b0: 63 72 65 66 3d 22 50 65 72 73 69 73 74 22 20 2f  cref="Persist" /
36c0: 3e 29 20 6d 65 74 68 6f 64 2c 0d 0a 20 20 20 20  >) method,..    
36d0: 20 20 20 20 2f 2f 2f 20 74 68 61 74 20 76 61 6c      /// that val
36e0: 75 65 20 69 73 20 72 65 74 75 72 6e 65 64 3b 20  ue is returned; 
36f0: 6f 74 68 65 72 77 69 73 65 2c 20 61 6e 20 65 78  otherwise, an ex
3700: 63 65 70 74 69 6f 6e 20 69 73 20 74 68 72 6f 77  ception is throw
3710: 6e 2e 20 20 54 68 65 0d 0a 20 20 20 20 20 20 20  n.  The..       
3720: 20 2f 2f 2f 20 72 65 74 75 72 6e 65 64 20 76 61   /// returned va
3730: 6c 75 65 20 6d 61 79 20 62 65 20 6e 75 6c 6c 2e  lue may be null.
3740: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
3750: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
3760: 20 20 70 75 62 6c 69 63 20 6f 62 6a 65 63 74 20    public object 
3770: 56 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 7b  Value..        {
3780: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
3790: 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  t..            {
37a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
37b0: 20 20 69 66 20 28 21 70 65 72 73 69 73 74 65 64    if (!persisted
37c0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
37d0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
37e0: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
37f0: 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72 61  new InvalidOpera
3800: 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 0d 0a  tionException(..
3810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3820: 20 20 20 20 20 20 20 20 22 76 61 6c 75 65 20 77          "value w
3830: 61 73 20 6e 6f 74 20 70 65 72 73 69 73 74 65 64  as not persisted
3840: 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ");..           
3850: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
3860: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
3870: 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20   value;..       
3880: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
3890: 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
38a0: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
38b0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
38c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38f0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
3900: 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c      #region Publ
3910: 69 63 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20  ic Methods..    
3920: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
3930: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 47  >..        /// G
3940: 65 74 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20  ets and returns 
3950: 74 68 65 20 74 79 70 65 20 61 66 66 69 6e 69 74  the type affinit
3960: 79 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  y associated wit
3970: 68 20 74 68 69 73 20 76 61 6c 75 65 2e 0d 0a 20  h this value... 
3980: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
3990: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
39a0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
39b0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 74 79        /// The ty
39c0: 70 65 20 61 66 66 69 6e 69 74 79 20 61 73 73 6f  pe affinity asso
39d0: 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73  ciated with this
39e0: 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20   value...       
39f0: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
3a00: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
3a10: 54 79 70 65 41 66 66 69 6e 69 74 79 20 47 65 74  TypeAffinity Get
3a20: 54 79 70 65 41 66 66 69 6e 69 74 79 28 29 0d 0a  TypeAffinity()..
3a30: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
3a40: 20 20 20 20 20 20 20 69 66 20 28 70 56 61 6c 75         if (pValu
3a50: 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e == IntPtr.Zero
3a60: 29 20 72 65 74 75 72 6e 20 54 79 70 65 41 66 66  ) return TypeAff
3a70: 69 6e 69 74 79 2e 4e 6f 6e 65 3b 0d 0a 20 20 20  inity.None;..   
3a80: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
3a90: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
3aa0: 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76 61 6c 75  ods.sqlite3_valu
3ab0: 65 5f 74 79 70 65 28 70 56 61 6c 75 65 29 3b 0d  e_type(pValue);.
3ac0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
3ad0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
3ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
3b20: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
3b30: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
3b40: 2f 2f 2f 20 47 65 74 73 20 61 6e 64 20 72 65 74  /// Gets and ret
3b50: 75 72 6e 73 20 74 68 65 20 6e 75 6d 62 65 72 20  urns the number 
3b60: 6f 66 20 62 79 74 65 73 20 61 73 73 6f 63 69 61  of bytes associa
3b70: 74 65 64 20 77 69 74 68 20 74 68 69 73 20 76 61  ted with this va
3b80: 6c 75 65 2c 20 69 66 0d 0a 20 20 20 20 20 20 20  lue, if..       
3b90: 20 2f 2f 2f 20 69 74 20 72 65 66 65 72 73 20 74   /// it refers t
3ba0: 6f 20 61 20 55 54 46 2d 38 20 65 6e 63 6f 64 65  o a UTF-8 encode
3bb0: 64 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 20  d string...     
3bc0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
3bd0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
3be0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
3bf0: 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72    /// The number
3c00: 20 6f 66 20 62 79 74 65 73 20 61 73 73 6f 63 69   of bytes associ
3c10: 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20 76  ated with this v
3c20: 61 6c 75 65 2e 20 20 54 68 65 20 72 65 74 75 72  alue.  The retur
3c30: 6e 65 64 20 76 61 6c 75 65 0d 0a 20 20 20 20 20  ned value..     
3c40: 20 20 20 2f 2f 2f 20 6d 61 79 20 62 65 20 7a 65     /// may be ze
3c50: 72 6f 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ro...        ///
3c60: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
3c70: 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
3c80: 47 65 74 42 79 74 65 73 28 29 0d 0a 20 20 20 20  GetBytes()..    
3c90: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
3ca0: 20 20 20 69 66 20 28 70 56 61 6c 75 65 20 3d 3d     if (pValue ==
3cb0: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20 72 65   IntPtr.Zero) re
3cc0: 74 75 72 6e 20 30 3b 0d 0a 20 20 20 20 20 20 20  turn 0;..       
3cd0: 20 20 20 20 20 72 65 74 75 72 6e 20 55 6e 73 61       return Unsa
3ce0: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
3cf0: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 79  sqlite3_value_by
3d00: 74 65 73 28 70 56 61 6c 75 65 29 3b 0d 0a 20 20  tes(pValue);..  
3d10: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
3d20: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
3d30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
3d70: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
3d80: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
3d90: 20 47 65 74 73 20 61 6e 64 20 72 65 74 75 72 6e   Gets and return
3da0: 73 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  s the <see cref=
3db0: 22 49 6e 74 33 32 22 20 2f 3e 20 61 73 73 6f 63  "Int32" /> assoc
3dc0: 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73 0d  iated with this.
3dd0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c  .        /// val
3de0: 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ue...        ///
3df0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
3e00: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
3e10: 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
3e20: 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  The <see cref="I
3e30: 6e 74 33 32 22 20 2f 3e 20 61 73 73 6f 63 69 61  nt32" /> associa
3e40: 74 65 64 20 77 69 74 68 20 74 68 69 73 20 76 61  ted with this va
3e50: 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  lue...        //
3e60: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
3e70: 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
3e80: 20 47 65 74 49 6e 74 28 29 0d 0a 20 20 20 20 20   GetInt()..     
3e90: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
3ea0: 20 20 69 66 20 28 70 56 61 6c 75 65 20 3d 3d 20    if (pValue == 
3eb0: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20 72 65 74  IntPtr.Zero) ret
3ec0: 75 72 6e 20 64 65 66 61 75 6c 74 28 69 6e 74 29  urn default(int)
3ed0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ;..            r
3ee0: 65 74 75 72 6e 20 55 6e 73 61 66 65 4e 61 74 69  eturn UnsafeNati
3ef0: 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
3f00: 33 5f 76 61 6c 75 65 5f 69 6e 74 28 70 56 61 6c  3_value_int(pVal
3f10: 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ue);..        }.
3f20: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
3f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3f70: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
3f80: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
3f90: 20 20 20 20 20 2f 2f 2f 20 47 65 74 73 20 61 6e       /// Gets an
3fa0: 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 3c 73  d returns the <s
3fb0: 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20  ee cref="Int64" 
3fc0: 2f 3e 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  /> associated wi
3fd0: 74 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  th..        /// 
3fe0: 74 68 69 73 20 76 61 6c 75 65 2e 0d 0a 20 20 20  this value...   
3ff0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
4000: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
4010: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
4020: 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
4030: 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e   cref="Int64" />
4040: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
4050: 20 74 68 69 73 20 76 61 6c 75 65 2e 0d 0a 20 20   this value...  
4060: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
4070: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  rns>..        pu
4080: 62 6c 69 63 20 6c 6f 6e 67 20 47 65 74 49 6e 74  blic long GetInt
4090: 36 34 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  64()..        {.
40a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
40b0: 28 70 56 61 6c 75 65 20 3d 3d 20 49 6e 74 50 74  (pValue == IntPt
40c0: 72 2e 5a 65 72 6f 29 20 72 65 74 75 72 6e 20 64  r.Zero) return d
40d0: 65 66 61 75 6c 74 28 6c 6f 6e 67 29 3b 0d 0a 0d  efault(long);...
40e0: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
40f0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
4100: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
4110: 75 72 6e 20 55 6e 73 61 66 65 4e 61 74 69 76 65  urn UnsafeNative
4120: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
4130: 76 61 6c 75 65 5f 69 6e 74 36 34 28 70 56 61 6c  value_int64(pVal
4140: 75 65 29 3b 0d 0a 23 65 6c 69 66 20 21 53 51 4c  ue);..#elif !SQL
4150: 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20  ITE_STANDARD..  
4160: 20 20 20 20 20 20 20 20 20 20 6c 6f 6e 67 20 76            long v
4170: 61 6c 75 65 20 3d 20 30 3b 0d 0a 20 20 20 20 20  alue = 0;..     
4180: 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74         UnsafeNat
4190: 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
41a0: 65 33 5f 76 61 6c 75 65 5f 69 6e 74 36 34 5f 69  e3_value_int64_i
41b0: 6e 74 65 72 6f 70 28 70 56 61 6c 75 65 2c 20 72  nterop(pValue, r
41c0: 65 66 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20  ef value);..    
41d0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76          return v
41e0: 61 6c 75 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  alue;..#else..  
41f0: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
4200: 6e 65 77 20 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74  new NotImplement
4210: 65 64 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a  edException();..
4220: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
4230: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
4240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4280: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
4290: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
42a0: 20 20 20 20 20 20 20 2f 2f 2f 20 47 65 74 73 20         /// Gets 
42b0: 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
42c0: 3c 73 65 65 20 63 72 65 66 3d 22 44 6f 75 62 6c  <see cref="Doubl
42d0: 65 22 20 2f 3e 20 61 73 73 6f 63 69 61 74 65 64  e" /> associated
42e0: 20 77 69 74 68 20 74 68 69 73 0d 0a 20 20 20 20   with this..    
42f0: 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a      /// value...
4300: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
4310: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
4320: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
4330: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
4340: 73 65 65 20 63 72 65 66 3d 22 44 6f 75 62 6c 65  see cref="Double
4350: 22 20 2f 3e 20 61 73 73 6f 63 69 61 74 65 64 20  " /> associated 
4360: 77 69 74 68 20 74 68 69 73 20 76 61 6c 75 65 2e  with this value.
4370: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
4380: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
4390: 20 20 70 75 62 6c 69 63 20 64 6f 75 62 6c 65 20    public double 
43a0: 47 65 74 44 6f 75 62 6c 65 28 29 0d 0a 20 20 20  GetDouble()..   
43b0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
43c0: 20 20 20 20 69 66 20 28 70 56 61 6c 75 65 20 3d      if (pValue =
43d0: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20 72  = IntPtr.Zero) r
43e0: 65 74 75 72 6e 20 64 65 66 61 75 6c 74 28 64 6f  eturn default(do
43f0: 75 62 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21 50  uble);....#if !P
4400: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
4410: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
4420: 20 20 20 20 20 20 72 65 74 75 72 6e 20 55 6e 73        return Uns
4430: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
4440: 2e 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64  .sqlite3_value_d
4450: 6f 75 62 6c 65 28 70 56 61 6c 75 65 29 3b 0d 0a  ouble(pValue);..
4460: 23 65 6c 69 66 20 21 53 51 4c 49 54 45 5f 53 54  #elif !SQLITE_ST
4470: 41 4e 44 41 52 44 0d 0a 20 20 20 20 20 20 20 20  ANDARD..        
4480: 20 20 20 20 64 6f 75 62 6c 65 20 76 61 6c 75 65      double value
4490: 20 3d 20 30 2e 30 3b 0d 0a 20 20 20 20 20 20 20   = 0.0;..       
44a0: 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
44b0: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
44c0: 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65 5f 69 6e  _value_double_in
44d0: 74 65 72 6f 70 28 70 56 61 6c 75 65 2c 20 72 65  terop(pValue, re
44e0: 66 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20  f value);..     
44f0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61         return va
4500: 6c 75 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  lue;..#else..   
4510: 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e           throw n
4520: 65 77 20 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74 65  ew NotImplemente
4530: 64 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 23  dException();..#
4540: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d  endif..        }
4550: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
4560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
45a0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
45b0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
45c0: 20 20 20 20 20 20 2f 2f 2f 20 47 65 74 73 20 61        /// Gets a
45d0: 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 3c  nd returns the <
45e0: 73 65 65 20 63 72 65 66 3d 22 53 74 72 69 6e 67  see cref="String
45f0: 22 20 2f 3e 20 61 73 73 6f 63 69 61 74 65 64 20  " /> associated 
4600: 77 69 74 68 20 74 68 69 73 0d 0a 20 20 20 20 20  with this..     
4610: 20 20 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20     /// value... 
4620: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
4630: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
4640: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
4650: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
4660: 65 65 20 63 72 65 66 3d 22 53 74 72 69 6e 67 22  ee cref="String"
4670: 20 2f 3e 20 61 73 73 6f 63 69 61 74 65 64 20 77   /> associated w
4680: 69 74 68 20 74 68 69 73 20 76 61 6c 75 65 2e 20  ith this value. 
4690: 20 54 68 65 20 76 61 6c 75 65 20 69 73 0d 0a 20   The value is.. 
46a0: 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 76 65         /// conve
46b0: 72 74 65 64 20 66 72 6f 6d 20 74 68 65 20 55 54  rted from the UT
46c0: 46 2d 38 20 65 6e 63 6f 64 69 6e 67 20 70 72 69  F-8 encoding pri
46d0: 6f 72 20 74 6f 20 62 65 69 6e 67 20 72 65 74 75  or to being retu
46e0: 72 6e 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  rned...        /
46f0: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
4700: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
4710: 72 69 6e 67 20 47 65 74 53 74 72 69 6e 67 28 29  ring GetString()
4720: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
4730: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 56 61           if (pVa
4740: 6c 75 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  lue == IntPtr.Ze
4750: 72 6f 29 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b  ro) return null;
4760: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
4770: 69 6e 74 20 6c 65 6e 67 74 68 3b 0d 0a 20 20 20  int length;..   
4780: 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
4790: 70 53 74 72 69 6e 67 3b 0d 0a 0d 0a 23 69 66 20  pString;....#if 
47a0: 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
47b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 6e  .            len
47c0: 67 74 68 20 3d 20 55 6e 73 61 66 65 4e 61 74 69  gth = UnsafeNati
47d0: 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
47e0: 33 5f 76 61 6c 75 65 5f 62 79 74 65 73 28 70 56  3_value_bytes(pV
47f0: 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  alue);..        
4800: 20 20 20 20 70 53 74 72 69 6e 67 20 3d 20 55 6e      pString = Un
4810: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
4820: 73 2e 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  s.sqlite3_value_
4830: 74 65 78 74 28 70 56 61 6c 75 65 29 3b 0d 0a 23  text(pValue);..#
4840: 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
4850: 20 20 6c 65 6e 67 74 68 20 3d 20 30 3b 0d 0a 0d    length = 0;...
4860: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 53 74  .            pSt
4870: 72 69 6e 67 20 3d 20 55 6e 73 61 66 65 4e 61 74  ring = UnsafeNat
4880: 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
4890: 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 5f 69 6e  e3_value_text_in
48a0: 74 65 72 6f 70 28 0d 0a 20 20 20 20 20 20 20 20  terop(..        
48b0: 20 20 20 20 20 20 20 20 70 56 61 6c 75 65 2c 20          pValue, 
48c0: 72 65 66 20 6c 65 6e 67 74 68 29 3b 0d 0a 23 65  ref length);..#e
48d0: 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
48e0: 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74      return SQLit
48f0: 65 53 74 72 69 6e 67 2e 53 74 72 69 6e 67 46 72  eString.StringFr
4900: 6f 6d 55 74 66 38 49 6e 74 50 74 72 28 70 53 74  omUtf8IntPtr(pSt
4910: 72 69 6e 67 2c 20 6c 65 6e 67 74 68 29 3b 0d 0a  ring, length);..
4920: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
4930: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
4940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
4980: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
4990: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
49a0: 2f 2f 20 47 65 74 73 20 61 6e 64 20 72 65 74 75  // Gets and retu
49b0: 72 6e 73 20 74 68 65 20 3c 73 65 65 20 63 72 65  rns the <see cre
49c0: 66 3d 22 42 79 74 65 22 20 2f 3e 20 61 72 72 61  f="Byte" /> arra
49d0: 79 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  y associated wit
49e0: 68 20 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20  h this..        
49f0: 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20  /// value...    
4a00: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
4a10: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
4a20: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
4a30: 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
4a40: 63 72 65 66 3d 22 42 79 74 65 22 20 2f 3e 20 61  cref="Byte" /> a
4a50: 72 72 61 79 20 61 73 73 6f 63 69 61 74 65 64 20  rray associated 
4a60: 77 69 74 68 20 74 68 69 73 20 76 61 6c 75 65 2e  with this value.
4a70: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
4a80: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
4a90: 20 20 70 75 62 6c 69 63 20 62 79 74 65 5b 5d 20    public byte[] 
4aa0: 47 65 74 42 6c 6f 62 28 29 0d 0a 20 20 20 20 20  GetBlob()..     
4ab0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
4ac0: 20 20 69 66 20 28 70 56 61 6c 75 65 20 3d 3d 20    if (pValue == 
4ad0: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20 72 65 74  IntPtr.Zero) ret
4ae0: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  urn null;....   
4af0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
4b00: 53 51 4c 69 74 65 42 79 74 65 73 2e 46 72 6f 6d  SQLiteBytes.From
4b10: 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20  IntPtr(..       
4b20: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
4b30: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
4b40: 69 74 65 33 5f 76 61 6c 75 65 5f 62 6c 6f 62 28  ite3_value_blob(
4b50: 70 56 61 6c 75 65 29 2c 20 47 65 74 42 79 74 65  pValue), GetByte
4b60: 73 28 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  s());..        }
4b70: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
4b80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4bc0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
4bd0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
4be0: 20 20 20 20 20 20 2f 2f 2f 20 55 73 65 73 20 74        /// Uses t
4bf0: 68 65 20 6e 61 74 69 76 65 20 76 61 6c 75 65 20  he native value 
4c00: 68 61 6e 64 6c 65 20 74 6f 20 6f 62 74 61 69 6e  handle to obtain
4c10: 20 61 6e 64 20 73 74 6f 72 65 20 74 68 65 20 6d   and store the m
4c20: 61 6e 61 67 65 64 20 76 61 6c 75 65 0d 0a 20 20  anaged value..  
4c30: 20 20 20 20 20 20 2f 2f 2f 20 66 6f 72 20 74 68        /// for th
4c40: 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  is object instan
4c50: 63 65 2c 20 74 68 75 73 20 73 61 76 69 6e 67 20  ce, thus saving 
4c60: 69 74 20 66 6f 72 20 6c 61 74 65 72 20 75 73 65  it for later use
4c70: 2e 20 20 54 68 65 20 74 79 70 65 0d 0a 20 20 20  .  The type..   
4c80: 20 20 20 20 20 2f 2f 2f 20 6f 66 20 74 68 65 20       /// of the 
4c90: 6d 61 6e 61 67 65 64 20 76 61 6c 75 65 20 69 73  managed value is
4ca0: 20 64 65 74 65 72 6d 69 6e 65 64 20 62 79 20 74   determined by t
4cb0: 68 65 20 74 79 70 65 20 61 66 66 69 6e 69 74 79  he type affinity
4cc0: 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20 20 20   of the..       
4cd0: 20 2f 2f 2f 20 6e 61 74 69 76 65 20 76 61 6c 75   /// native valu
4ce0: 65 2e 20 20 49 66 20 74 68 65 20 74 79 70 65 20  e.  If the type 
4cf0: 61 66 66 69 6e 69 74 79 20 69 73 20 6e 6f 74 20  affinity is not 
4d00: 72 65 63 6f 67 6e 69 7a 65 64 20 62 79 20 74 68  recognized by th
4d10: 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  is..        /// 
4d20: 6d 65 74 68 6f 64 2c 20 6e 6f 20 77 6f 72 6b 20  method, no work 
4d30: 69 73 20 64 6f 6e 65 20 61 6e 64 20 66 61 6c 73  is done and fals
4d40: 65 20 69 73 20 72 65 74 75 72 6e 65 64 2e 0d 0a  e is returned...
4d50: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
4d60: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
4d70: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
4d80: 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a         /// Non-z
4d90: 65 72 6f 20 69 66 20 74 68 65 20 6e 61 74 69 76  ero if the nativ
4da0: 65 20 76 61 6c 75 65 20 77 61 73 20 70 65 72 73  e value was pers
4db0: 69 73 74 65 64 20 73 75 63 63 65 73 73 66 75 6c  isted successful
4dc0: 6c 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ly...        ///
4dd0: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
4de0: 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c       public bool
4df0: 20 50 65 72 73 69 73 74 28 29 0d 0a 20 20 20 20   Persist()..    
4e00: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
4e10: 20 20 20 73 77 69 74 63 68 20 28 47 65 74 54 79     switch (GetTy
4e20: 70 65 41 66 66 69 6e 69 74 79 28 29 29 0d 0a 20  peAffinity()).. 
4e30: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
4e40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
4e50: 73 65 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e  se TypeAffinity.
4e60: 55 6e 69 6e 69 74 69 61 6c 69 7a 65 64 3a 0d 0a  Uninitialized:..
4e70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4e80: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
4e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76                 v
4ea0: 61 6c 75 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20  alue = null;..  
4eb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4ec0: 20 20 20 20 20 20 50 72 65 76 65 6e 74 4e 61 74        PreventNat
4ed0: 69 76 65 41 63 63 65 73 73 28 29 3b 0d 0a 20 20  iveAccess();..  
4ee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4ef0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 70 65        return (pe
4f00: 72 73 69 73 74 65 64 20 3d 20 74 72 75 65 29 3b  rsisted = true);
4f10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4f20: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
4f30: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 54 79           case Ty
4f40: 70 65 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34  peAffinity.Int64
4f50: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
4f60: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
4f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4f80: 20 20 76 61 6c 75 65 20 3d 20 47 65 74 49 6e 74    value = GetInt
4f90: 36 34 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  64();..         
4fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 50                 P
4fb0: 72 65 76 65 6e 74 4e 61 74 69 76 65 41 63 63 65  reventNativeAcce
4fc0: 73 73 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ss();..         
4fd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
4fe0: 65 74 75 72 6e 20 28 70 65 72 73 69 73 74 65 64  eturn (persisted
4ff0: 20 3d 20 74 72 75 65 29 3b 0d 0a 20 20 20 20 20   = true);..     
5000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
5010: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5020: 20 20 63 61 73 65 20 54 79 70 65 41 66 66 69 6e    case TypeAffin
5030: 69 74 79 2e 44 6f 75 62 6c 65 3a 0d 0a 20 20 20  ity.Double:..   
5040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5050: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
5060: 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75              valu
5070: 65 20 3d 20 47 65 74 44 6f 75 62 6c 65 28 29 3b  e = GetDouble();
5080: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5090: 20 20 20 20 20 20 20 20 20 20 50 72 65 76 65 6e            Preven
50a0: 74 4e 61 74 69 76 65 41 63 63 65 73 73 28 29 3b  tNativeAccess();
50b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
50c0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
50d0: 20 28 70 65 72 73 69 73 74 65 64 20 3d 20 74 72   (persisted = tr
50e0: 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ue);..          
50f0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
5100: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73               cas
5110: 65 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 54  e TypeAffinity.T
5120: 65 78 74 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  ext:..          
5130: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
5140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5150: 20 20 20 20 20 76 61 6c 75 65 20 3d 20 47 65 74       value = Get
5160: 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20  String();..     
5170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5180: 20 20 20 50 72 65 76 65 6e 74 4e 61 74 69 76 65     PreventNative
5190: 41 63 63 65 73 73 28 29 3b 0d 0a 20 20 20 20 20  Access();..     
51a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
51b0: 20 20 20 72 65 74 75 72 6e 20 28 70 65 72 73 69     return (persi
51c0: 73 74 65 64 20 3d 20 74 72 75 65 29 3b 0d 0a 20  sted = true);.. 
51d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
51e0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
51f0: 20 20 20 20 20 20 63 61 73 65 20 54 79 70 65 41        case TypeA
5200: 66 66 69 6e 69 74 79 2e 42 6c 6f 62 3a 0d 0a 20  ffinity.Blob:.. 
5210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5220: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
5230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61                va
5240: 6c 75 65 20 3d 20 47 65 74 42 79 74 65 73 28 29  lue = GetBytes()
5250: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
5260: 20 20 20 20 20 20 20 20 20 20 20 50 72 65 76 65             Preve
5270: 6e 74 4e 61 74 69 76 65 41 63 63 65 73 73 28 29  ntNativeAccess()
5280: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
5290: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
52a0: 6e 20 28 70 65 72 73 69 73 74 65 64 20 3d 20 74  n (persisted = t
52b0: 72 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  rue);..         
52c0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
52d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
52e0: 73 65 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e  se TypeAffinity.
52f0: 4e 75 6c 6c 3a 0d 0a 20 20 20 20 20 20 20 20 20  Null:..         
5300: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
5310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5320: 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 44 42        value = DB
5330: 4e 75 6c 6c 2e 56 61 6c 75 65 3b 0d 0a 20 20 20  Null.Value;..   
5340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5350: 20 20 20 20 20 50 72 65 76 65 6e 74 4e 61 74 69       PreventNati
5360: 76 65 41 63 63 65 73 73 28 29 3b 0d 0a 20 20 20  veAccess();..   
5370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5380: 20 20 20 20 20 72 65 74 75 72 6e 20 28 70 65 72       return (per
5390: 73 69 73 74 65 64 20 3d 20 74 72 75 65 29 3b 0d  sisted = true);.
53a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
53b0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
53c0: 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a          default:
53d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
53e0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
53f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5400: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
5410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5420: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
5430: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
5440: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
5450: 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20  ion..    }..    
5460: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
5470: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
5480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
54c0: 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c  .    #region SQL
54d0: 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69  iteIndexConstrai
54e0: 6e 74 4f 70 20 45 6e 75 6d 65 72 61 74 69 6f 6e  ntOp Enumeration
54f0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
5500: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ry>..    /// The
5510: 73 65 20 61 72 65 20 74 68 65 20 61 6c 6c 6f 77  se are the allow
5520: 65 64 20 76 61 6c 75 65 73 20 66 6f 72 20 74 68  ed values for th
5530: 65 20 6f 70 65 72 61 74 6f 72 73 20 74 68 61 74  e operators that
5540: 20 61 72 65 20 70 61 72 74 20 6f 66 20 61 0d 0a   are part of a..
5550: 20 20 20 20 2f 2f 2f 20 63 6f 6e 73 74 72 61 69      /// constrai
5560: 6e 74 20 74 65 72 6d 20 69 6e 20 74 68 65 20 57  nt term in the W
5570: 48 45 52 45 20 63 6c 61 75 73 65 20 6f 66 20 61  HERE clause of a
5580: 20 71 75 65 72 79 20 74 68 61 74 20 75 73 65 73   query that uses
5590: 20 61 20 76 69 72 74 75 61 6c 0d 0a 20 20 20 20   a virtual..    
55a0: 2f 2f 2f 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  /// table...    
55b0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
55c0: 20 20 20 20 70 75 62 6c 69 63 20 65 6e 75 6d 20      public enum 
55d0: 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74  SQLiteIndexConst
55e0: 72 61 69 6e 74 4f 70 20 3a 20 62 79 74 65 0d 0a  raintOp : byte..
55f0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f      {..        /
5600: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
5610: 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 76        /// This v
5620: 61 6c 75 65 20 72 65 70 72 65 73 65 6e 74 73 20  alue represents 
5630: 74 68 65 20 65 71 75 61 6c 69 74 79 20 6f 70 65  the equality ope
5640: 72 61 74 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20  rator...        
5650: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
5660: 20 20 20 20 20 20 20 20 45 71 75 61 6c 54 6f 20          EqualTo 
5670: 3d 20 32 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20  = 2,....        
5680: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
5690: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
56a0: 76 61 6c 75 65 20 72 65 70 72 65 73 65 6e 74 73  value represents
56b0: 20 74 68 65 20 67 72 65 61 74 65 72 20 74 68 61   the greater tha
56c0: 6e 20 6f 70 65 72 61 74 6f 72 2e 0d 0a 20 20 20  n operator...   
56d0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
56e0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 47 72 65  ry>..        Gre
56f0: 61 74 65 72 54 68 61 6e 20 3d 20 34 2c 0d 0a 0d  aterThan = 4,...
5700: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
5710: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
5720: 2f 2f 2f 20 54 68 69 73 20 76 61 6c 75 65 20 72  /// This value r
5730: 65 70 72 65 73 65 6e 74 73 20 74 68 65 20 6c 65  epresents the le
5740: 73 73 20 74 68 61 6e 20 6f 72 20 65 71 75 61 6c  ss than or equal
5750: 20 74 6f 20 6f 70 65 72 61 74 6f 72 2e 0d 0a 20   to operator... 
5760: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
5770: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 4c  mary>..        L
5780: 65 73 73 54 68 61 6e 4f 72 45 71 75 61 6c 54 6f  essThanOrEqualTo
5790: 20 3d 20 38 2c 0d 0a 0d 0a 20 20 20 20 20 20 20   = 8,....       
57a0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
57b0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
57c0: 20 76 61 6c 75 65 20 72 65 70 72 65 73 65 6e 74   value represent
57d0: 73 20 74 68 65 20 6c 65 73 73 20 74 68 61 6e 20  s the less than 
57e0: 6f 70 65 72 61 74 6f 72 2e 0d 0a 20 20 20 20 20  operator...     
57f0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
5800: 3e 0d 0a 20 20 20 20 20 20 20 20 4c 65 73 73 54  >..        LessT
5810: 68 61 6e 20 3d 20 31 36 2c 0d 0a 0d 0a 20 20 20  han = 16,....   
5820: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
5830: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
5840: 54 68 69 73 20 76 61 6c 75 65 20 72 65 70 72 65  This value repre
5850: 73 65 6e 74 73 20 74 68 65 20 67 72 65 61 74 65  sents the greate
5860: 72 20 74 68 61 6e 20 6f 72 20 65 71 75 61 6c 20  r than or equal 
5870: 74 6f 20 6f 70 65 72 61 74 6f 72 2e 0d 0a 20 20  to operator...  
5880: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
5890: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 47 72  ary>..        Gr
58a0: 65 61 74 65 72 54 68 61 6e 4f 72 45 71 75 61 6c  eaterThanOrEqual
58b0: 54 6f 20 3d 20 33 32 2c 0d 0a 0d 0a 20 20 20 20  To = 32,....    
58c0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
58d0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
58e0: 68 69 73 20 76 61 6c 75 65 20 72 65 70 72 65 73  his value repres
58f0: 65 6e 74 73 20 74 68 65 20 4d 41 54 43 48 20 6f  ents the MATCH o
5900: 70 65 72 61 74 6f 72 2e 0d 0a 20 20 20 20 20 20  perator...      
5910: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
5920: 0d 0a 20 20 20 20 20 20 20 20 4d 61 74 63 68 20  ..        Match 
5930: 3d 20 36 34 0d 0a 20 20 20 20 7d 0d 0a 20 20 20  = 64..    }..   
5940: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
5950: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
5960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
59a0: 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51  ..    #region SQ
59b0: 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61  LiteIndexConstra
59c0: 69 6e 74 20 48 65 6c 70 65 72 20 43 6c 61 73 73  int Helper Class
59d0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
59e0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69  ry>..    /// Thi
59f0: 73 20 63 6c 61 73 73 20 72 65 70 72 65 73 65 6e  s class represen
5a00: 74 73 20 74 68 65 20 6e 61 74 69 76 65 20 73 71  ts the native sq
5a10: 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73  lite3_index_cons
5a20: 74 72 61 69 6e 74 20 73 74 72 75 63 74 75 72 65  traint structure
5a30: 0d 0a 20 20 20 20 2f 2f 2f 20 66 72 6f 6d 20 74  ..    /// from t
5a40: 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c  he SQLite core l
5a50: 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f  ibrary...    ///
5a60: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
5a70: 20 70 75 62 6c 69 63 20 73 65 61 6c 65 64 20 63   public sealed c
5a80: 6c 61 73 73 20 53 51 4c 69 74 65 49 6e 64 65 78  lass SQLiteIndex
5a90: 43 6f 6e 73 74 72 61 69 6e 74 0d 0a 20 20 20 20  Constraint..    
5aa0: 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  {..        #regi
5ab0: 6f 6e 20 49 6e 74 65 72 6e 61 6c 20 43 6f 6e 73  on Internal Cons
5ac0: 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20  tructors..      
5ad0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
5ae0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e  .        /// Con
5af0: 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61  structs an insta
5b00: 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73  nce of this clas
5b10: 73 20 75 73 69 6e 67 20 74 68 65 20 73 70 65 63  s using the spec
5b20: 69 66 69 65 64 20 6e 61 74 69 76 65 0d 0a 20 20  ified native..  
5b30: 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65        /// sqlite
5b40: 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69  3_index_constrai
5b50: 6e 74 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  nt structure... 
5b60: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
5b70: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
5b80: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
5b90: 63 6f 6e 73 74 72 61 69 6e 74 22 3e 0d 0a 20 20  constraint">..  
5ba0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
5bb0: 74 69 76 65 20 73 71 6c 69 74 65 33 5f 69 6e 64  tive sqlite3_ind
5bc0: 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 20 73 74  ex_constraint st
5bd0: 72 75 63 74 75 72 65 20 74 6f 20 75 73 65 2e 0d  ructure to use..
5be0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
5bf0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 69  aram>..        i
5c00: 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 49 6e  nternal SQLiteIn
5c10: 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 28 0d 0a  dexConstraint(..
5c20: 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
5c30: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
5c40: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
5c50: 6e 73 74 72 61 69 6e 74 20 63 6f 6e 73 74 72 61  nstraint constra
5c60: 69 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  int..           
5c70: 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
5c80: 3a 20 74 68 69 73 28 63 6f 6e 73 74 72 61 69 6e  : this(constrain
5c90: 74 2e 69 43 6f 6c 75 6d 6e 2c 20 63 6f 6e 73 74  t.iColumn, const
5ca0: 72 61 69 6e 74 2e 6f 70 2c 20 63 6f 6e 73 74 72  raint.op, constr
5cb0: 61 69 6e 74 2e 75 73 61 62 6c 65 2c 0d 0a 20 20  aint.usable,..  
5cc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5cd0: 20 63 6f 6e 73 74 72 61 69 6e 74 2e 69 54 65 72   constraint.iTer
5ce0: 6d 4f 66 66 73 65 74 29 0d 0a 20 20 20 20 20 20  mOffset)..      
5cf0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
5d00: 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
5d10: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
5d20: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
5d30: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
5d40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d80: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
5d90: 69 6f 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73  ion Private Cons
5da0: 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20  tructors..      
5db0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
5dc0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e  .        /// Con
5dd0: 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61  structs an insta
5de0: 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73  nce of this clas
5df0: 73 20 75 73 69 6e 67 20 74 68 65 20 73 70 65 63  s using the spec
5e00: 69 66 69 65 64 20 66 69 65 6c 64 0d 0a 20 20 20  ified field..   
5e10: 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 73 2e       /// values.
5e20: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
5e30: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
5e40: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
5e50: 65 3d 22 69 43 6f 6c 75 6d 6e 22 3e 0d 0a 20 20  e="iColumn">..  
5e60: 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6c 75 6d 6e        /// Column
5e70: 20 6f 6e 20 6c 65 66 74 2d 68 61 6e 64 20 73 69   on left-hand si
5e80: 64 65 20 6f 66 20 63 6f 6e 73 74 72 61 69 6e 74  de of constraint
5e90: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
5ea0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
5eb0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
5ec0: 3d 22 6f 70 22 3e 0d 0a 20 20 20 20 20 20 20 20  ="op">..        
5ed0: 2f 2f 2f 20 43 6f 6e 73 74 72 61 69 6e 74 20 6f  /// Constraint o
5ee0: 70 65 72 61 74 6f 72 20 28 3c 73 65 65 20 63 72  perator (<see cr
5ef0: 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 43  ef="SQLiteIndexC
5f00: 6f 6e 73 74 72 61 69 6e 74 4f 70 22 20 2f 3e 29  onstraintOp" />)
5f10: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
5f20: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
5f30: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
5f40: 3d 22 75 73 61 62 6c 65 22 3e 0d 0a 20 20 20 20  ="usable">..    
5f50: 20 20 20 20 2f 2f 2f 20 54 72 75 65 20 69 66 20      /// True if 
5f60: 74 68 69 73 20 63 6f 6e 73 74 72 61 69 6e 74 20  this constraint 
5f70: 69 73 20 75 73 61 62 6c 65 2e 0d 0a 20 20 20 20  is usable...    
5f80: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
5f90: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
5fa0: 61 72 61 6d 20 6e 61 6d 65 3d 22 69 54 65 72 6d  aram name="iTerm
5fb0: 4f 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20  Offset">..      
5fc0: 20 20 2f 2f 2f 20 55 73 65 64 20 69 6e 74 65 72    /// Used inter
5fd0: 6e 61 6c 6c 79 20 2d 20 3c 73 65 65 20 63 72 65  nally - <see cre
5fe0: 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65  f="ISQLiteManage
5ff0: 64 4d 6f 64 75 6c 65 2e 42 65 73 74 49 6e 64 65  dModule.BestInde
6000: 78 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f  x" />..        /
6010: 2f 2f 20 73 68 6f 75 6c 64 20 69 67 6e 6f 72 65  // should ignore
6020: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
6030: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
6040: 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 49   private SQLiteI
6050: 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 28 0d  ndexConstraint(.
6060: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
6070: 20 69 43 6f 6c 75 6d 6e 2c 0d 0a 20 20 20 20 20   iColumn,..     
6080: 20 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64         SQLiteInd
6090: 65 78 43 6f 6e 73 74 72 61 69 6e 74 4f 70 20 6f  exConstraintOp o
60a0: 70 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  p,..            
60b0: 62 79 74 65 20 75 73 61 62 6c 65 2c 0d 0a 20 20  byte usable,..  
60c0: 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 54            int iT
60d0: 65 72 6d 4f 66 66 73 65 74 0d 0a 20 20 20 20 20  ermOffset..     
60e0: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
60f0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
6100: 20 74 68 69 73 2e 69 43 6f 6c 75 6d 6e 20 3d 20   this.iColumn = 
6110: 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20  iColumn;..      
6120: 20 20 20 20 20 20 74 68 69 73 2e 6f 70 20 3d 20        this.op = 
6130: 6f 70 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  op;..           
6140: 20 74 68 69 73 2e 75 73 61 62 6c 65 20 3d 20 75   this.usable = u
6150: 73 61 62 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20  sable;..        
6160: 20 20 20 20 74 68 69 73 2e 69 54 65 72 6d 4f 66      this.iTermOf
6170: 66 73 65 74 20 3d 20 69 54 65 72 6d 4f 66 66 73  fset = iTermOffs
6180: 65 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  et;..        }..
6190: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
61a0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
61b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
61c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
61d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
61e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
61f0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
6200: 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 46  #region Public F
6210: 69 65 6c 64 73 0d 0a 20 20 20 20 20 20 20 20 2f  ields..        /
6220: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
6230: 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6c 75 6d 6e        /// Column
6240: 20 6f 6e 20 6c 65 66 74 2d 68 61 6e 64 20 73 69   on left-hand si
6250: 64 65 20 6f 66 20 63 6f 6e 73 74 72 61 69 6e 74  de of constraint
6260: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
6270: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
6280: 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 69 43     public int iC
6290: 6f 6c 75 6d 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20  olumn;....      
62a0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
62b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
62c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
62d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
62e0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
62f0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
6300: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43  >..        /// C
6310: 6f 6e 73 74 72 61 69 6e 74 20 6f 70 65 72 61 74  onstraint operat
6320: 6f 72 20 28 3c 73 65 65 20 63 72 65 66 3d 22 53  or (<see cref="S
6330: 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72  QLiteIndexConstr
6340: 61 69 6e 74 4f 70 22 20 2f 3e 29 2e 0d 0a 20 20  aintOp" />)...  
6350: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
6360: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
6370: 62 6c 69 63 20 53 51 4c 69 74 65 49 6e 64 65 78  blic SQLiteIndex
6380: 43 6f 6e 73 74 72 61 69 6e 74 4f 70 20 6f 70 3b  ConstraintOp op;
6390: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
63a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
63b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
63c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
63d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
63e0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
63f0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
6400: 20 20 20 20 20 2f 2f 2f 20 54 72 75 65 20 69 66       /// True if
6410: 20 74 68 69 73 20 63 6f 6e 73 74 72 61 69 6e 74   this constraint
6420: 20 69 73 20 75 73 61 62 6c 65 2e 0d 0a 20 20 20   is usable...   
6430: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
6440: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ry>..        pub
6450: 6c 69 63 20 62 79 74 65 20 75 73 61 62 6c 65 3b  lic byte usable;
6460: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
6470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
64a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
64b0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
64c0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
64d0: 20 20 20 20 20 2f 2f 2f 20 55 73 65 64 20 69 6e       /// Used in
64e0: 74 65 72 6e 61 6c 6c 79 20 2d 20 3c 73 65 65 20  ternally - <see 
64f0: 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e  cref="ISQLiteMan
6500: 61 67 65 64 4d 6f 64 75 6c 65 2e 42 65 73 74 49  agedModule.BestI
6510: 6e 64 65 78 22 20 2f 3e 0d 0a 20 20 20 20 20 20  ndex" />..      
6520: 20 20 2f 2f 2f 20 73 68 6f 75 6c 64 20 69 67 6e    /// should ign
6530: 6f 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ore...        //
6540: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
6550: 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
6560: 20 69 54 65 72 6d 4f 66 66 73 65 74 3b 0d 0a 20   iTermOffset;.. 
6570: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
6580: 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65  n..    }..    #e
6590: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
65a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
65b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
65c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
65d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
65e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
65f0: 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74     #region SQLit
6600: 65 49 6e 64 65 78 4f 72 64 65 72 42 79 20 48 65  eIndexOrderBy He
6610: 6c 70 65 72 20 43 6c 61 73 73 0d 0a 20 20 20 20  lper Class..    
6620: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
6630: 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73     /// This clas
6640: 73 20 72 65 70 72 65 73 65 6e 74 73 20 74 68 65  s represents the
6650: 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f   native sqlite3_
6660: 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 20 73 74  index_orderby st
6670: 72 75 63 74 75 72 65 20 66 72 6f 6d 0d 0a 20 20  ructure from..  
6680: 20 20 2f 2f 2f 20 74 68 65 20 53 51 4c 69 74 65    /// the SQLite
6690: 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a   core library...
66a0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
66b0: 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73  y>..    public s
66c0: 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69  ealed class SQLi
66d0: 74 65 49 6e 64 65 78 4f 72 64 65 72 42 79 0d 0a  teIndexOrderBy..
66e0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23      {..        #
66f0: 72 65 67 69 6f 6e 20 49 6e 74 65 72 6e 61 6c 20  region Internal 
6700: 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20  Constructors..  
6710: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
6720: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
6730: 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69   Constructs an i
6740: 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20  nstance of this 
6750: 63 6c 61 73 73 20 75 73 69 6e 67 20 74 68 65 20  class using the 
6760: 73 70 65 63 69 66 69 65 64 20 6e 61 74 69 76 65  specified native
6770: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71  ..        /// sq
6780: 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65  lite3_index_orde
6790: 72 62 79 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  rby structure...
67a0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
67b0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
67c0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
67d0: 22 6f 72 64 65 72 42 79 22 3e 0d 0a 20 20 20 20  "orderBy">..    
67e0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
67f0: 76 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ve sqlite3_index
6800: 5f 6f 72 64 65 72 62 79 20 73 74 72 75 63 74 75  _orderby structu
6810: 72 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20  re to use...    
6820: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
6830: 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
6840: 61 6c 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 72  al SQLiteIndexOr
6850: 64 65 72 42 79 28 0d 0a 20 20 20 20 20 20 20 20  derBy(..        
6860: 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65      UnsafeNative
6870: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
6880: 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 20 6f 72  index_orderby or
6890: 64 65 72 42 79 0d 0a 20 20 20 20 20 20 20 20 20  derBy..         
68a0: 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
68b0: 20 20 3a 20 74 68 69 73 28 6f 72 64 65 72 42 79    : this(orderBy
68c0: 2e 69 43 6f 6c 75 6d 6e 2c 20 6f 72 64 65 72 42  .iColumn, orderB
68d0: 79 2e 64 65 73 63 29 0d 0a 20 20 20 20 20 20 20  y.desc)..       
68e0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
68f0: 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
6900: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
6910: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
6920: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
6930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
6970: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
6980: 6f 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74  on Private Const
6990: 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20  ructors..       
69a0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
69b0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73          /// Cons
69c0: 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e  tructs an instan
69d0: 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73  ce of this class
69e0: 20 75 73 69 6e 67 20 74 68 65 20 73 70 65 63 69   using the speci
69f0: 66 69 65 64 20 66 69 65 6c 64 0d 0a 20 20 20 20  fied field..    
6a00: 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 73 2e 0d      /// values..
6a10: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
6a20: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
6a30: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
6a40: 3d 22 69 43 6f 6c 75 6d 6e 22 3e 0d 0a 20 20 20  ="iColumn">..   
6a50: 20 20 20 20 20 2f 2f 2f 20 43 6f 6c 75 6d 6e 20       /// Column 
6a60: 6e 75 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20 20  number...       
6a70: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
6a80: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
6a90: 6d 20 6e 61 6d 65 3d 22 64 65 73 63 22 3e 0d 0a  m name="desc">..
6aa0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 72 75 65          /// True
6ab0: 20 66 6f 72 20 44 45 53 43 2e 20 20 46 61 6c 73   for DESC.  Fals
6ac0: 65 20 66 6f 72 20 41 53 43 2e 0d 0a 20 20 20 20  e for ASC...    
6ad0: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
6ae0: 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
6af0: 65 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64  e SQLiteIndexOrd
6b00: 65 72 42 79 28 0d 0a 20 20 20 20 20 20 20 20 20  erBy(..         
6b10: 20 20 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 2c 0d     int iColumn,.
6b20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 79 74  .            byt
6b30: 65 20 64 65 73 63 0d 0a 20 20 20 20 20 20 20 20  e desc..        
6b40: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
6b50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
6b60: 69 73 2e 69 43 6f 6c 75 6d 6e 20 3d 20 69 43 6f  is.iColumn = iCo
6b70: 6c 75 6d 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20  lumn;..         
6b80: 20 20 20 74 68 69 73 2e 64 65 73 63 20 3d 20 64     this.desc = d
6b90: 65 73 63 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  esc;..        }.
6ba0: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
6bb0: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
6bc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6c00: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
6c10: 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
6c20: 46 69 65 6c 64 73 0d 0a 20 20 20 20 20 20 20 20  Fields..        
6c30: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
6c40: 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6c 75 6d         /// Colum
6c50: 6e 20 6e 75 6d 62 65 72 2e 0d 0a 20 20 20 20 20  n number...     
6c60: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
6c70: 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
6c80: 63 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b 0d 0a  c int iColumn;..
6c90: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
6ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ce0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
6cf0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
6d00: 20 20 20 2f 2f 2f 20 54 72 75 65 20 66 6f 72 20     /// True for 
6d10: 44 45 53 43 2e 20 20 46 61 6c 73 65 20 66 6f 72  DESC.  False for
6d20: 20 41 53 43 2e 0d 0a 20 20 20 20 20 20 20 20 2f   ASC...        /
6d30: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
6d40: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 79         public by
6d50: 74 65 20 64 65 73 63 3b 0d 0a 20 20 20 20 20 20  te desc;..      
6d60: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20    #endregion..  
6d70: 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67    }..    #endreg
6d80: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
6d90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6db0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6dd0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
6de0: 65 67 69 6f 6e 20 53 51 4c 69 74 65 49 6e 64 65  egion SQLiteInde
6df0: 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  xConstraintUsage
6e00: 20 48 65 6c 70 65 72 20 43 6c 61 73 73 0d 0a 20   Helper Class.. 
6e10: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
6e20: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63  ..    /// This c
6e30: 6c 61 73 73 20 72 65 70 72 65 73 65 6e 74 73 20  lass represents 
6e40: 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74  the native sqlit
6e50: 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61  e3_index_constra
6e60: 69 6e 74 5f 75 73 61 67 65 0d 0a 20 20 20 20 2f  int_usage..    /
6e70: 2f 2f 20 73 74 72 75 63 74 75 72 65 20 66 72 6f  // structure fro
6e80: 6d 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  m the SQLite cor
6e90: 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20  e library...    
6ea0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
6eb0: 20 20 20 20 70 75 62 6c 69 63 20 73 65 61 6c 65      public seale
6ec0: 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 49 6e  d class SQLiteIn
6ed0: 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  dexConstraintUsa
6ee0: 67 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ge..    {..     
6ef0: 20 20 20 23 72 65 67 69 6f 6e 20 49 6e 74 65 72     #region Inter
6f00: 6e 61 6c 20 43 6f 6e 73 74 72 75 63 74 6f 72 73  nal Constructors
6f10: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
6f20: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
6f30: 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20   /// Constructs 
6f40: 61 20 64 65 66 61 75 6c 74 20 69 6e 73 74 61 6e  a default instan
6f50: 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73  ce of this class
6f60: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
6f70: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
6f80: 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69     internal SQLi
6f90: 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
6fa0: 74 55 73 61 67 65 28 29 0d 0a 20 20 20 20 20 20  tUsage()..      
6fb0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
6fc0: 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
6fd0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
6fe0: 20 20 20 20 20 20 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 2f  ////////////////
7000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
7030: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
7040: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
7050: 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e  // Constructs an
7060: 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69   instance of thi
7070: 73 20 63 6c 61 73 73 20 75 73 69 6e 67 20 74 68  s class using th
7080: 65 20 73 70 65 63 69 66 69 65 64 20 6e 61 74 69  e specified nati
7090: 76 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ve..        /// 
70a0: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
70b0: 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65 20 73  nstraint_usage s
70c0: 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20  tructure...     
70d0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
70e0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
70f0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 73  param name="cons
7100: 74 72 61 69 6e 74 55 73 61 67 65 22 3e 0d 0a 20  traintUsage">.. 
7110: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
7120: 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 69 6e  ative sqlite3_in
7130: 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75  dex_constraint_u
7140: 73 61 67 65 20 73 74 72 75 63 74 75 72 65 20 74  sage structure t
7150: 6f 20 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20  o use...        
7160: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
7170: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53        internal S
7180: 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72  QLiteIndexConstr
7190: 61 69 6e 74 55 73 61 67 65 28 0d 0a 20 20 20 20  aintUsage(..    
71a0: 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61          UnsafeNa
71b0: 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
71c0: 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72  te3_index_constr
71d0: 61 69 6e 74 5f 75 73 61 67 65 20 63 6f 6e 73 74  aint_usage const
71e0: 72 61 69 6e 74 55 73 61 67 65 0d 0a 20 20 20 20  raintUsage..    
71f0: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
7200: 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 63 6f         : this(co
7210: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 2e 61 72  nstraintUsage.ar
7220: 67 76 49 6e 64 65 78 2c 20 63 6f 6e 73 74 72 61  gvIndex, constra
7230: 69 6e 74 55 73 61 67 65 2e 6f 6d 69 74 29 0d 0a  intUsage.omit)..
7240: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
7250: 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
7260: 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 7d  hing...        }
7270: 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
7280: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
7290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
72a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
72b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
72c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
72d0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
72e0: 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74    #region Privat
72f0: 65 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a  e Constructors..
7300: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
7310: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
7320: 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e  // Constructs an
7330: 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69   instance of thi
7340: 73 20 63 6c 61 73 73 20 75 73 69 6e 67 20 74 68  s class using th
7350: 65 20 73 70 65 63 69 66 69 65 64 20 66 69 65 6c  e specified fiel
7360: 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76  d..        /// v
7370: 61 6c 75 65 73 2e 0d 0a 20 20 20 20 20 20 20 20  alues...        
7380: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
7390: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
73a0: 61 6d 20 6e 61 6d 65 3d 22 61 72 67 76 49 6e 64  am name="argvInd
73b0: 65 78 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ex">..        //
73c0: 2f 20 49 66 20 67 72 65 61 74 65 72 20 74 68 61  / If greater tha
73d0: 6e 20 30 2c 20 63 6f 6e 73 74 72 61 69 6e 74 20  n 0, constraint 
73e0: 69 73 20 70 61 72 74 20 6f 66 20 61 72 67 76 20  is part of argv 
73f0: 74 6f 20 78 46 69 6c 74 65 72 2e 0d 0a 20 20 20  to xFilter...   
7400: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
7410: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
7420: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 6d 69 74  param name="omit
7430: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
7440: 44 6f 20 6e 6f 74 20 63 6f 64 65 20 61 20 74 65  Do not code a te
7450: 73 74 20 66 6f 72 20 74 68 69 73 20 63 6f 6e 73  st for this cons
7460: 74 72 61 69 6e 74 2e 0d 0a 20 20 20 20 20 20 20  traint...       
7470: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
7480: 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53         private S
7490: 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72  QLiteIndexConstr
74a0: 61 69 6e 74 55 73 61 67 65 28 0d 0a 20 20 20 20  aintUsage(..    
74b0: 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 76          int argv
74c0: 49 6e 64 65 78 2c 0d 0a 20 20 20 20 20 20 20 20  Index,..        
74d0: 20 20 20 20 62 79 74 65 20 6f 6d 69 74 0d 0a 20      byte omit.. 
74e0: 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
74f0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
7500: 20 20 20 20 20 74 68 69 73 2e 61 72 67 76 49 6e       this.argvIn
7510: 64 65 78 20 3d 20 61 72 67 76 49 6e 64 65 78 3b  dex = argvIndex;
7520: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
7530: 69 73 2e 6f 6d 69 74 20 3d 20 6f 6d 69 74 3b 0d  is.omit = omit;.
7540: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
7550: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
7560: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
7570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
75a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
75b0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
75c0: 67 69 6f 6e 20 50 75 62 6c 69 63 20 46 69 65 6c  gion Public Fiel
75d0: 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
75e0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
75f0: 20 20 20 2f 2f 2f 20 49 66 20 67 72 65 61 74 65     /// If greate
7600: 72 20 74 68 61 6e 20 30 2c 20 63 6f 6e 73 74 72  r than 0, constr
7610: 61 69 6e 74 20 69 73 20 70 61 72 74 20 6f 66 20  aint is part of 
7620: 61 72 67 76 20 74 6f 20 78 46 69 6c 74 65 72 2e  argv to xFilter.
7630: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
7640: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
7650: 20 20 70 75 62 6c 69 63 20 69 6e 74 20 61 72 67    public int arg
7660: 76 49 6e 64 65 78 3b 0d 0a 0d 0a 20 20 20 20 20  vIndex;....     
7670: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
7680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
76c0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
76d0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
76e0: 20 44 6f 20 6e 6f 74 20 63 6f 64 65 20 61 20 74   Do not code a t
76f0: 65 73 74 20 66 6f 72 20 74 68 69 73 20 63 6f 6e  est for this con
7700: 73 74 72 61 69 6e 74 2e 0d 0a 20 20 20 20 20 20  straint...      
7710: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
7720: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
7730: 20 62 79 74 65 20 6f 6d 69 74 3b 0d 0a 20 20 20   byte omit;..   
7740: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
7750: 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64  .    }..    #end
7760: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
7770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
77a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
77b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
77c0: 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 49   #region SQLiteI
77d0: 6e 64 65 78 49 6e 70 75 74 73 20 48 65 6c 70 65  ndexInputs Helpe
77e0: 72 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f  r Class..    ///
77f0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
7800: 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20 72  /// This class r
7810: 65 70 72 65 73 65 6e 74 73 20 74 68 65 20 76 61  epresents the va
7820: 72 69 6f 75 73 20 69 6e 70 75 74 73 20 70 72 6f  rious inputs pro
7830: 76 69 64 65 64 20 62 79 20 74 68 65 20 53 51 4c  vided by the SQL
7840: 69 74 65 20 63 6f 72 65 0d 0a 20 20 20 20 2f 2f  ite core..    //
7850: 2f 20 6c 69 62 72 61 72 79 20 74 6f 20 74 68 65  / library to the
7860: 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
7870: 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65  iteManagedModule
7880: 2e 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 20 6d  .BestIndex" /> m
7890: 65 74 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20  ethod...    /// 
78a0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
78b0: 70 75 62 6c 69 63 20 73 65 61 6c 65 64 20 63 6c  public sealed cl
78c0: 61 73 73 20 53 51 4c 69 74 65 49 6e 64 65 78 49  ass SQLiteIndexI
78d0: 6e 70 75 74 73 0d 0a 20 20 20 20 7b 0d 0a 20 20  nputs..    {..  
78e0: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 6e        #region In
78f0: 74 65 72 6e 61 6c 20 43 6f 6e 73 74 72 75 63 74  ternal Construct
7900: 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ors..        ///
7910: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
7920: 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63      /// Construc
7930: 74 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f  ts an instance o
7940: 66 20 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20  f this class... 
7950: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
7960: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
7970: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
7980: 6e 43 6f 6e 73 74 72 61 69 6e 74 22 3e 0d 0a 20  nConstraint">.. 
7990: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
79a0: 75 6d 62 65 72 20 6f 66 20 3c 73 65 65 20 63 72  umber of <see cr
79b0: 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 43  ef="SQLiteIndexC
79c0: 6f 6e 73 74 72 61 69 6e 74 22 20 2f 3e 20 69 6e  onstraint" /> in
79d0: 73 74 61 6e 63 65 73 20 74 6f 0d 0a 20 20 20 20  stances to..    
79e0: 20 20 20 20 2f 2f 2f 20 70 72 65 2d 61 6c 6c 6f      /// pre-allo
79f0: 63 61 74 65 20 73 70 61 63 65 20 66 6f 72 2e 0d  cate space for..
7a00: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
7a10: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
7a20: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
7a30: 6e 4f 72 64 65 72 42 79 22 3e 0d 0a 20 20 20 20  nOrderBy">..    
7a40: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62      /// The numb
7a50: 65 72 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d  er of <see cref=
7a60: 22 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65  "SQLiteIndexOrde
7a70: 72 42 79 22 20 2f 3e 20 69 6e 73 74 61 6e 63 65  rBy" /> instance
7a80: 73 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f  s to..        //
7a90: 2f 20 70 72 65 2d 61 6c 6c 6f 63 61 74 65 20 73  / pre-allocate s
7aa0: 70 61 63 65 20 66 6f 72 2e 0d 0a 20 20 20 20 20  pace for...     
7ab0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
7ac0: 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61  .        interna
7ad0: 6c 20 53 51 4c 69 74 65 49 6e 64 65 78 49 6e 70  l SQLiteIndexInp
7ae0: 75 74 73 28 69 6e 74 20 6e 43 6f 6e 73 74 72 61  uts(int nConstra
7af0: 69 6e 74 2c 20 69 6e 74 20 6e 4f 72 64 65 72 42  int, int nOrderB
7b00: 79 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  y)..        {.. 
7b10: 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74             const
7b20: 72 61 69 6e 74 73 20 3d 20 6e 65 77 20 53 51 4c  raints = new SQL
7b30: 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69  iteIndexConstrai
7b40: 6e 74 5b 6e 43 6f 6e 73 74 72 61 69 6e 74 5d 3b  nt[nConstraint];
7b50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 72  ..            or
7b60: 64 65 72 42 79 73 20 3d 20 6e 65 77 20 53 51 4c  derBys = new SQL
7b70: 69 74 65 49 6e 64 65 78 4f 72 64 65 72 42 79 5b  iteIndexOrderBy[
7b80: 6e 4f 72 64 65 72 42 79 5d 3b 0d 0a 20 20 20 20  nOrderBy];..    
7b90: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
7ba0: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
7bb0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
7bc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
7c00: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
7c10: 50 75 62 6c 69 63 20 50 72 6f 70 65 72 74 69 65  Public Propertie
7c20: 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  s..        priva
7c30: 74 65 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f  te SQLiteIndexCo
7c40: 6e 73 74 72 61 69 6e 74 5b 5d 20 63 6f 6e 73 74  nstraint[] const
7c50: 72 61 69 6e 74 73 3b 0d 0a 20 20 20 20 20 20 20  raints;..       
7c60: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
7c70: 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 6e 20 61          /// An a
7c80: 72 72 61 79 20 6f 66 20 3c 73 65 65 20 63 72 65  rray of <see cre
7c90: 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 43 6f  f="SQLiteIndexCo
7ca0: 6e 73 74 72 61 69 6e 74 22 20 2f 3e 20 6f 62 6a  nstraint" /> obj
7cb0: 65 63 74 20 69 6e 73 74 61 6e 63 65 73 2c 0d 0a  ect instances,..
7cc0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 65 61 63 68          /// each
7cd0: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 69 6e 66 6f   containing info
7ce0: 72 6d 61 74 69 6f 6e 20 73 75 70 70 6c 69 65 64  rmation supplied
7cf0: 20 62 79 20 74 68 65 20 53 51 4c 69 74 65 20 63   by the SQLite c
7d00: 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ore library...  
7d10: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
7d20: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
7d30: 62 6c 69 63 20 53 51 4c 69 74 65 49 6e 64 65 78  blic SQLiteIndex
7d40: 43 6f 6e 73 74 72 61 69 6e 74 5b 5d 20 43 6f 6e  Constraint[] Con
7d50: 73 74 72 61 69 6e 74 73 0d 0a 20 20 20 20 20 20  straints..      
7d60: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
7d70: 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 63 6f   get { return co
7d80: 6e 73 74 72 61 69 6e 74 73 3b 20 7d 0d 0a 20 20  nstraints; }..  
7d90: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
7da0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
7db0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7dd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7de0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
7df0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51        private SQ
7e00: 4c 69 74 65 49 6e 64 65 78 4f 72 64 65 72 42 79  LiteIndexOrderBy
7e10: 5b 5d 20 6f 72 64 65 72 42 79 73 3b 0d 0a 20 20  [] orderBys;..  
7e20: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
7e30: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
7e40: 20 41 6e 20 61 72 72 61 79 20 6f 66 20 3c 73 65   An array of <se
7e50: 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e  e cref="SQLiteIn
7e60: 64 65 78 4f 72 64 65 72 42 79 22 20 2f 3e 20 6f  dexOrderBy" /> o
7e70: 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 73 2c  bject instances,
7e80: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 65 61  ..        /// ea
7e90: 63 68 20 63 6f 6e 74 61 69 6e 69 6e 67 20 69 6e  ch containing in
7ea0: 66 6f 72 6d 61 74 69 6f 6e 20 73 75 70 70 6c 69  formation suppli
7eb0: 65 64 20 62 79 20 74 68 65 20 53 51 4c 69 74 65  ed by the SQLite
7ec0: 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a   core library...
7ed0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
7ee0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
7ef0: 70 75 62 6c 69 63 20 53 51 4c 69 74 65 49 6e 64  public SQLiteInd
7f00: 65 78 4f 72 64 65 72 42 79 5b 5d 20 4f 72 64 65  exOrderBy[] Orde
7f10: 72 42 79 73 0d 0a 20 20 20 20 20 20 20 20 7b 0d  rBys..        {.
7f20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
7f30: 20 7b 20 72 65 74 75 72 6e 20 6f 72 64 65 72 42   { return orderB
7f40: 79 73 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d  ys; }..        }
7f50: 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
7f60: 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20  gion..    }..   
7f70: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
7f80: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
7f90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7fa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7fb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7fc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
7fd0: 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51  ..    #region SQ
7fe0: 4c 69 74 65 49 6e 64 65 78 4f 75 74 70 75 74 73  LiteIndexOutputs
7ff0: 20 48 65 6c 70 65 72 20 43 6c 61 73 73 0d 0a 20   Helper Class.. 
8000: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
8010: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63  ..    /// This c
8020: 6c 61 73 73 20 72 65 70 72 65 73 65 6e 74 73 20  lass represents 
8030: 74 68 65 20 76 61 72 69 6f 75 73 20 6f 75 74 70  the various outp
8040: 75 74 73 20 70 72 6f 76 69 64 65 64 20 74 6f 20  uts provided to 
8050: 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 0d  the SQLite core.
8060: 0a 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79  .    /// library
8070: 20 62 79 20 74 68 65 20 3c 73 65 65 20 63 72 65   by the <see cre
8080: 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65  f="ISQLiteManage
8090: 64 4d 6f 64 75 6c 65 2e 42 65 73 74 49 6e 64 65  dModule.BestInde
80a0: 78 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  x" /> method... 
80b0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
80c0: 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73 65  >..    public se
80d0: 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74  aled class SQLit
80e0: 65 49 6e 64 65 78 4f 75 74 70 75 74 73 0d 0a 20  eIndexOutputs.. 
80f0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72     {..        #r
8100: 65 67 69 6f 6e 20 49 6e 74 65 72 6e 61 6c 20 43  egion Internal C
8110: 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20  onstructors..   
8120: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
8130: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
8140: 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e  Constructs an in
8150: 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63  stance of this c
8160: 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  lass...        /
8170: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
8180: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
8190: 6d 20 6e 61 6d 65 3d 22 6e 43 6f 6e 73 74 72 61  m name="nConstra
81a0: 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  int">..        /
81b0: 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66  // The number of
81c0: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
81d0: 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
81e0: 74 55 73 61 67 65 22 20 2f 3e 20 69 6e 73 74 61  tUsage" /> insta
81f0: 6e 63 65 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nces..        //
8200: 2f 20 74 6f 20 70 72 65 2d 61 6c 6c 6f 63 61 74  / to pre-allocat
8210: 65 20 73 70 61 63 65 20 66 6f 72 2e 0d 0a 20 20  e space for...  
8220: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
8230: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65  m>..        inte
8240: 72 6e 61 6c 20 53 51 4c 69 74 65 49 6e 64 65 78  rnal SQLiteIndex
8250: 4f 75 74 70 75 74 73 28 69 6e 74 20 6e 43 6f 6e  Outputs(int nCon
8260: 73 74 72 61 69 6e 74 29 0d 0a 20 20 20 20 20 20  straint)..      
8270: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
8280: 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65   constraintUsage
8290: 73 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 49 6e  s = new SQLiteIn
82a0: 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  dexConstraintUsa
82b0: 67 65 5b 6e 43 6f 6e 73 74 72 61 69 6e 74 5d 3b  ge[nConstraint];
82c0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
82d0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
82e0: 2f 2f 20 42 55 47 46 49 58 3a 20 43 72 65 61 74  // BUGFIX: Creat
82f0: 65 20 74 68 65 20 5b 65 6d 70 74 79 5d 20 63 6f  e the [empty] co
8300: 6e 73 74 72 61 69 6e 74 20 75 73 61 67 65 73 20  nstraint usages 
8310: 6e 6f 77 20 73 6f 20 74 68 65 79 20 63 61 6e 20  now so they can 
8320: 62 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  be..            
8330: 2f 2f 20 20 20 20 20 20 20 20 20 75 73 65 64 20  //         used 
8340: 62 79 20 74 68 65 20 78 42 65 73 74 49 6e 64 65  by the xBestInde
8350: 78 20 63 61 6c 6c 62 61 63 6b 2e 0d 0a 20 20 20  x callback...   
8360: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
8370: 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 69 6e           for (in
8380: 74 20 69 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20  t iConstraint = 
8390: 30 3b 20 69 43 6f 6e 73 74 72 61 69 6e 74 20 3c  0; iConstraint <
83a0: 20 6e 43 6f 6e 73 74 72 61 69 6e 74 3b 20 69 43   nConstraint; iC
83b0: 6f 6e 73 74 72 61 69 6e 74 2b 2b 29 0d 0a 20 20  onstraint++)..  
83c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
83d0: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 73 5b 69  nstraintUsages[i
83e0: 43 6f 6e 73 74 72 61 69 6e 74 5d 20 3d 20 6e 65  Constraint] = ne
83f0: 77 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e  w SQLiteIndexCon
8400: 73 74 72 61 69 6e 74 55 73 61 67 65 28 29 3b 0d  straintUsage();.
8410: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
8420: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
8430: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
8440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8480: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
8490: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
84a0: 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e      /// Determin
84b0: 65 73 20 69 66 20 74 68 65 20 6e 61 74 69 76 65  es if the native
84c0: 20 65 73 74 69 6d 61 74 65 64 52 6f 77 73 20 66   estimatedRows f
84d0: 69 65 6c 64 20 63 61 6e 20 62 65 20 75 73 65 64  ield can be used
84e0: 2c 20 62 61 73 65 64 20 6f 6e 0d 0a 20 20 20 20  , based on..    
84f0: 20 20 20 20 2f 2f 2f 20 74 68 65 20 61 76 61 69      /// the avai
8500: 6c 61 62 6c 65 20 76 65 72 73 69 6f 6e 20 6f 66  lable version of
8510: 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
8520: 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20   library...     
8530: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
8540: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
8550: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
8560: 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
8570: 66 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  f the <see cref=
8580: 22 45 73 74 69 6d 61 74 65 64 52 6f 77 73 22 20  "EstimatedRows" 
8590: 2f 3e 20 70 72 6f 70 65 72 74 79 20 69 73 20 73  /> property is s
85a0: 75 70 70 6f 72 74 65 64 0d 0a 20 20 20 20 20 20  upported..      
85b0: 20 20 2f 2f 2f 20 62 79 20 74 68 65 20 53 51 4c    /// by the SQL
85c0: 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
85d0: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
85e0: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
85f0: 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 43     public bool C
8600: 61 6e 55 73 65 45 73 74 69 6d 61 74 65 64 52 6f  anUseEstimatedRo
8610: 77 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ws()..        {.
8620: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
8630: 28 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74  (UnsafeNativeMet
8640: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6c 69 62  hods.sqlite3_lib
8650: 76 65 72 73 69 6f 6e 5f 6e 75 6d 62 65 72 28 29  version_number()
8660: 20 3e 3d 20 33 30 30 38 30 30 32 29 0d 0a 20 20   >= 3008002)..  
8670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
8680: 74 75 72 6e 20 74 72 75 65 3b 0d 0a 0d 0a 20 20  turn true;....  
8690: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
86a0: 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
86b0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
86f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8700: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
8710: 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
8720: 50 72 6f 70 65 72 74 69 65 73 0d 0a 20 20 20 20  Properties..    
8730: 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69      private SQLi
8740: 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
8750: 74 55 73 61 67 65 5b 5d 20 63 6f 6e 73 74 72 61  tUsage[] constra
8760: 69 6e 74 55 73 61 67 65 73 3b 0d 0a 20 20 20 20  intUsages;..    
8770: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
8780: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
8790: 6e 20 61 72 72 61 79 20 6f 66 20 3c 73 65 65 20  n array of <see 
87a0: 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65  cref="SQLiteInde
87b0: 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  xConstraintUsage
87c0: 22 20 2f 3e 20 6f 62 6a 65 63 74 0d 0a 20 20 20  " /> object..   
87d0: 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63       /// instanc
87e0: 65 73 2c 20 65 61 63 68 20 63 6f 6e 74 61 69 6e  es, each contain
87f0: 69 6e 67 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  ing information 
8800: 74 6f 20 62 65 20 73 75 70 70 6c 69 65 64 20 74  to be supplied t
8810: 6f 20 74 68 65 20 53 51 4c 69 74 65 0d 0a 20 20  o the SQLite..  
8820: 20 20 20 20 20 20 2f 2f 2f 20 63 6f 72 65 20 6c        /// core l
8830: 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20  ibrary...       
8840: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
8850: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
8860: 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74  SQLiteIndexConst
8870: 72 61 69 6e 74 55 73 61 67 65 5b 5d 20 43 6f 6e  raintUsage[] Con
8880: 73 74 72 61 69 6e 74 55 73 61 67 65 73 0d 0a 20  straintUsages.. 
8890: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
88a0: 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75        get { retu
88b0: 72 6e 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61  rn constraintUsa
88c0: 67 65 73 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  ges; }..        
88d0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
88e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8920: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
8930: 70 72 69 76 61 74 65 20 69 6e 74 20 69 6e 64 65  private int inde
8940: 78 4e 75 6d 62 65 72 3b 0d 0a 20 20 20 20 20 20  xNumber;..      
8950: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
8960: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 75 6d  .        /// Num
8970: 62 65 72 20 75 73 65 64 20 74 6f 20 68 65 6c 70  ber used to help
8980: 20 69 64 65 6e 74 69 66 79 20 74 68 65 20 73 65   identify the se
8990: 6c 65 63 74 65 64 20 69 6e 64 65 78 2e 20 20 54  lected index.  T
89a0: 68 69 73 20 76 61 6c 75 65 20 77 69 6c 6c 0d 0a  his value will..
89b0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 61 74 65          /// late
89c0: 72 20 62 65 20 70 72 6f 76 69 64 65 64 20 74 6f  r be provided to
89d0: 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
89e0: 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f  ISQLiteManagedMo
89f0: 64 75 6c 65 2e 46 69 6c 74 65 72 22 20 2f 3e 0d  dule.Filter" />.
8a00: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74  .        /// met
8a10: 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
8a20: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
8a30: 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
8a40: 20 49 6e 64 65 78 4e 75 6d 62 65 72 0d 0a 20 20   IndexNumber..  
8a50: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
8a60: 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
8a70: 6e 20 69 6e 64 65 78 4e 75 6d 62 65 72 3b 20 7d  n indexNumber; }
8a80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65  ..            se
8a90: 74 20 7b 20 69 6e 64 65 78 4e 75 6d 62 65 72 20  t { indexNumber 
8aa0: 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20  = value; }..    
8ab0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
8ac0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
8ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b00: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
8b10: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 72 69      private stri
8b20: 6e 67 20 69 6e 64 65 78 53 74 72 69 6e 67 3b 0d  ng indexString;.
8b30: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
8b40: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
8b50: 2f 2f 2f 20 53 74 72 69 6e 67 20 75 73 65 64 20  /// String used 
8b60: 74 6f 20 68 65 6c 70 20 69 64 65 6e 74 69 66 79  to help identify
8b70: 20 74 68 65 20 73 65 6c 65 63 74 65 64 20 69 6e   the selected in
8b80: 64 65 78 2e 20 20 54 68 69 73 20 76 61 6c 75 65  dex.  This value
8b90: 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f   will..        /
8ba0: 2f 2f 20 6c 61 74 65 72 20 62 65 20 70 72 6f 76  // later be prov
8bb0: 69 64 65 64 20 74 6f 20 74 68 65 20 3c 73 65 65  ided to the <see
8bc0: 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61   cref="ISQLiteMa
8bd0: 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 46 69 6c 74  nagedModule.Filt
8be0: 65 72 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20  er" />..        
8bf0: 2f 2f 2f 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20  /// method...   
8c00: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
8c10: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ry>..        pub
8c20: 6c 69 63 20 73 74 72 69 6e 67 20 49 6e 64 65 78  lic string Index
8c30: 53 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 20  String..        
8c40: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67  {..            g
8c50: 65 74 20 7b 20 72 65 74 75 72 6e 20 69 6e 64 65  et { return inde
8c60: 78 53 74 72 69 6e 67 3b 20 7d 0d 0a 20 20 20 20  xString; }..    
8c70: 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 69 6e          set { in
8c80: 64 65 78 53 74 72 69 6e 67 20 3d 20 76 61 6c 75  dexString = valu
8c90: 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d  e; }..        }.
8ca0: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
8cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8cf0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
8d00: 69 76 61 74 65 20 69 6e 74 20 6e 65 65 64 54 6f  ivate int needTo
8d10: 46 72 65 65 49 6e 64 65 78 53 74 72 69 6e 67 3b  FreeIndexString;
8d20: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
8d30: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
8d40: 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66   /// Non-zero if
8d50: 20 74 68 65 20 69 6e 64 65 78 20 73 74 72 69 6e   the index strin
8d60: 67 20 6d 75 73 74 20 62 65 20 66 72 65 65 64 20  g must be freed 
8d70: 62 79 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  by the SQLite co
8d80: 72 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  re..        /// 
8d90: 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20  library...      
8da0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
8db0: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
8dc0: 20 69 6e 74 20 4e 65 65 64 54 6f 46 72 65 65 49   int NeedToFreeI
8dd0: 6e 64 65 78 53 74 72 69 6e 67 0d 0a 20 20 20 20  ndexString..    
8de0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
8df0: 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
8e00: 6e 65 65 64 54 6f 46 72 65 65 49 6e 64 65 78 53  needToFreeIndexS
8e10: 74 72 69 6e 67 3b 20 7d 0d 0a 20 20 20 20 20 20  tring; }..      
8e20: 20 20 20 20 20 20 73 65 74 20 7b 20 6e 65 65 64        set { need
8e30: 54 6f 46 72 65 65 49 6e 64 65 78 53 74 72 69 6e  ToFreeIndexStrin
8e40: 67 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20  g = value; }..  
8e50: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
8e60: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
8e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
8eb0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 69 6e        private in
8ec0: 74 20 6f 72 64 65 72 42 79 43 6f 6e 73 75 6d 65  t orderByConsume
8ed0: 64 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d;..        /// 
8ee0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
8ef0: 20 20 20 2f 2f 2f 20 54 72 75 65 20 69 66 20 6f     /// True if o
8f00: 75 74 70 75 74 20 69 73 20 61 6c 72 65 61 64 79  utput is already
8f10: 20 6f 72 64 65 72 65 64 2e 0d 0a 20 20 20 20 20   ordered...     
8f20: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
8f30: 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
8f40: 63 20 69 6e 74 20 4f 72 64 65 72 42 79 43 6f 6e  c int OrderByCon
8f50: 73 75 6d 65 64 0d 0a 20 20 20 20 20 20 20 20 7b  sumed..        {
8f60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
8f70: 74 20 7b 20 72 65 74 75 72 6e 20 6f 72 64 65 72  t { return order
8f80: 42 79 43 6f 6e 73 75 6d 65 64 3b 20 7d 0d 0a 20  ByConsumed; }.. 
8f90: 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b             set {
8fa0: 20 6f 72 64 65 72 42 79 43 6f 6e 73 75 6d 65 64   orderByConsumed
8fb0: 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20   = value; }..   
8fc0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
8fd0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
8fe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8ff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
9020: 20 20 20 20 20 70 72 69 76 61 74 65 20 64 6f 75       private dou
9030: 62 6c 65 3f 20 65 73 74 69 6d 61 74 65 64 43 6f  ble? estimatedCo
9040: 73 74 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  st;..        ///
9050: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
9060: 20 20 20 20 2f 2f 2f 20 45 73 74 69 6d 61 74 65      /// Estimate
9070: 64 20 63 6f 73 74 20 6f 66 20 75 73 69 6e 67 20  d cost of using 
9080: 74 68 69 73 20 69 6e 64 65 78 2e 20 20 55 73 69  this index.  Usi
9090: 6e 67 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 20  ng a null value 
90a0: 68 65 72 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  here..        //
90b0: 2f 20 69 6e 64 69 63 61 74 65 73 20 74 68 61 74  / indicates that
90c0: 20 61 20 64 65 66 61 75 6c 74 20 65 73 74 69 6d   a default estim
90d0: 61 74 65 64 20 63 6f 73 74 20 76 61 6c 75 65 20  ated cost value 
90e0: 73 68 6f 75 6c 64 20 62 65 20 75 73 65 64 2e 0d  should be used..
90f0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
9100: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
9110: 20 70 75 62 6c 69 63 20 64 6f 75 62 6c 65 3f 20   public double? 
9120: 45 73 74 69 6d 61 74 65 64 43 6f 73 74 0d 0a 20  EstimatedCost.. 
9130: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
9140: 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75        get { retu
9150: 72 6e 20 65 73 74 69 6d 61 74 65 64 43 6f 73 74  rn estimatedCost
9160: 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
9170: 20 73 65 74 20 7b 20 65 73 74 69 6d 61 74 65 64   set { estimated
9180: 43 6f 73 74 20 3d 20 76 61 6c 75 65 3b 20 7d 0d  Cost = value; }.
9190: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
91a0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
91b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
91c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
91d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
91e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
91f0: 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
9200: 20 6c 6f 6e 67 3f 20 65 73 74 69 6d 61 74 65 64   long? estimated
9210: 52 6f 77 73 3b 0d 0a 20 20 20 20 20 20 20 20 2f  Rows;..        /
9220: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
9230: 20 20 20 20 20 20 2f 2f 2f 20 45 73 74 69 6d 61        /// Estima
9240: 74 65 64 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f  ted number of ro
9250: 77 73 20 72 65 74 75 72 6e 65 64 2e 20 20 55 73  ws returned.  Us
9260: 69 6e 67 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65  ing a null value
9270: 20 68 65 72 65 0d 0a 20 20 20 20 20 20 20 20 2f   here..        /
9280: 2f 2f 20 69 6e 64 69 63 61 74 65 73 20 74 68 61  // indicates tha
9290: 74 20 61 20 64 65 66 61 75 6c 74 20 65 73 74 69  t a default esti
92a0: 6d 61 74 65 64 20 72 6f 77 73 20 76 61 6c 75 65  mated rows value
92b0: 20 73 68 6f 75 6c 64 20 62 65 20 75 73 65 64 2e   should be used.
92c0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
92d0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
92e0: 20 20 70 75 62 6c 69 63 20 6c 6f 6e 67 3f 20 45    public long? E
92f0: 73 74 69 6d 61 74 65 64 52 6f 77 73 0d 0a 20 20  stimatedRows..  
9300: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
9310: 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
9320: 6e 20 65 73 74 69 6d 61 74 65 64 52 6f 77 73 3b  n estimatedRows;
9330: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
9340: 73 65 74 20 7b 20 65 73 74 69 6d 61 74 65 64 52  set { estimatedR
9350: 6f 77 73 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a  ows = value; }..
9360: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
9370: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20     #endregion.. 
9380: 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65     }..    #endre
9390: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  gion....    ////
93a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
93b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
93c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
93d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
93e0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23  ///////....    #
93f0: 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 49 6e 64  region SQLiteInd
9400: 65 78 20 48 65 6c 70 65 72 20 43 6c 61 73 73 0d  ex Helper Class.
9410: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
9420: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73  y>..    /// This
9430: 20 63 6c 61 73 73 20 72 65 70 72 65 73 65 6e 74   class represent
9440: 73 20 74 68 65 20 76 61 72 69 6f 75 73 20 69 6e  s the various in
9450: 70 75 74 73 20 61 6e 64 20 6f 75 74 70 75 74 73  puts and outputs
9460: 20 75 73 65 64 20 77 69 74 68 20 74 68 65 0d 0a   used with the..
9470: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
9480: 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65  f="ISQLiteManage
9490: 64 4d 6f 64 75 6c 65 2e 42 65 73 74 49 6e 64 65  dModule.BestInde
94a0: 78 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  x" /> method... 
94b0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
94c0: 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73 65  >..    public se
94d0: 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74  aled class SQLit
94e0: 65 49 6e 64 65 78 0d 0a 20 20 20 20 7b 0d 0a 20  eIndex..    {.. 
94f0: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49         #region I
9500: 6e 74 65 72 6e 61 6c 20 43 6f 6e 73 74 72 75 63  nternal Construc
9510: 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tors..        //
9520: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
9530: 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75       /// Constru
9540: 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20  cts an instance 
9550: 6f 66 20 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a  of this class...
9560: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
9570: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
9580: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
9590: 22 6e 43 6f 6e 73 74 72 61 69 6e 74 22 3e 0d 0a  "nConstraint">..
95a0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
95b0: 6e 75 6d 62 65 72 20 6f 66 20 3c 73 65 65 20 63  number of <see c
95c0: 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78  ref="SQLiteIndex
95d0: 43 6f 6e 73 74 72 61 69 6e 74 22 20 2f 3e 20 28  Constraint" /> (
95e0: 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  and..        ///
95f0: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
9600: 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
9610: 74 55 73 61 67 65 22 20 2f 3e 29 20 69 6e 73 74  tUsage" />) inst
9620: 61 6e 63 65 73 20 74 6f 0d 0a 20 20 20 20 20 20  ances to..      
9630: 20 20 2f 2f 2f 20 70 72 65 2d 61 6c 6c 6f 63 61    /// pre-alloca
9640: 74 65 20 73 70 61 63 65 20 66 6f 72 2e 0d 0a 20  te space for... 
9650: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
9660: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
9670: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 4f   <param name="nO
9680: 72 64 65 72 42 79 22 3e 0d 0a 20 20 20 20 20 20  rderBy">..      
9690: 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72    /// The number
96a0: 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53   of <see cref="S
96b0: 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65 72 42  QLiteIndexOrderB
96c0: 79 22 20 2f 3e 20 69 6e 73 74 61 6e 63 65 73 20  y" /> instances 
96d0: 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  to..        /// 
96e0: 70 72 65 2d 61 6c 6c 6f 63 61 74 65 20 73 70 61  pre-allocate spa
96f0: 63 65 20 66 6f 72 2e 0d 0a 20 20 20 20 20 20 20  ce for...       
9700: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
9710: 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20         internal 
9720: 53 51 4c 69 74 65 49 6e 64 65 78 28 0d 0a 20 20  SQLiteIndex(..  
9730: 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6e 43            int nC
9740: 6f 6e 73 74 72 61 69 6e 74 2c 0d 0a 20 20 20 20  onstraint,..    
9750: 20 20 20 20 20 20 20 20 69 6e 74 20 6e 4f 72 64          int nOrd
9760: 65 72 42 79 0d 0a 20 20 20 20 20 20 20 20 20 20  erBy..          
9770: 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
9780: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 70 75              inpu
9790: 74 73 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 49  ts = new SQLiteI
97a0: 6e 64 65 78 49 6e 70 75 74 73 28 6e 43 6f 6e 73  ndexInputs(nCons
97b0: 74 72 61 69 6e 74 2c 20 6e 4f 72 64 65 72 42 79  traint, nOrderBy
97c0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
97d0: 6f 75 74 70 75 74 73 20 3d 20 6e 65 77 20 53 51  outputs = new SQ
97e0: 4c 69 74 65 49 6e 64 65 78 4f 75 74 70 75 74 73  LiteIndexOutputs
97f0: 28 6e 43 6f 6e 73 74 72 61 69 6e 74 29 3b 0d 0a  (nConstraint);..
9800: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
9810: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
9820: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
9830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9870: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
9880: 69 6f 6e 20 49 6e 74 65 72 6e 61 6c 20 4d 61 72  ion Internal Mar
9890: 73 68 61 6c 20 48 65 6c 70 65 72 20 4d 65 74 68  shal Helper Meth
98a0: 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ods..        ///
98b0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
98c0: 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73      /// Converts
98d0: 20 61 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65   a native pointe
98e0: 72 20 74 6f 20 61 20 6e 61 74 69 76 65 20 73 71  r to a native sq
98f0: 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f  lite3_index_info
9900: 20 73 74 72 75 63 74 75 72 65 0d 0a 20 20 20 20   structure..    
9910: 20 20 20 20 2f 2f 2f 20 69 6e 74 6f 20 61 20 6e      /// into a n
9920: 65 77 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  ew <see cref="SQ
9930: 4c 69 74 65 49 6e 64 65 78 22 20 2f 3e 20 6f 62  LiteIndex" /> ob
9940: 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a  ject instance...
9950: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
9960: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
9970: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
9980: 22 70 49 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20  "pIndex">..     
9990: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
99a0: 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
99b0: 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f   native sqlite3_
99c0: 69 6e 64 65 78 5f 69 6e 66 6f 20 73 74 72 75 63  index_info struc
99d0: 74 75 72 65 20 74 6f 0d 0a 20 20 20 20 20 20 20  ture to..       
99e0: 20 2f 2f 2f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20   /// convert... 
99f0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
9a00: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
9a10: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e   <param name="in
9a20: 64 65 78 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  dex">..        /
9a30: 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c  // Upon success,
9a40: 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20   this parameter 
9a50: 77 69 6c 6c 20 62 65 20 6d 6f 64 69 66 69 65 64  will be modified
9a60: 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65 20   to contain the 
9a70: 6e 65 77 6c 79 0d 0a 20 20 20 20 20 20 20 20 2f  newly..        /
9a80: 2f 2f 20 63 72 65 61 74 65 64 20 3c 73 65 65 20  // created <see 
9a90: 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65  cref="SQLiteInde
9aa0: 78 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  x" /> object ins
9ab0: 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20  tance...        
9ac0: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
9ad0: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73        internal s
9ae0: 74 61 74 69 63 20 76 6f 69 64 20 46 72 6f 6d 49  tatic void FromI
9af0: 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20  ntPtr(..        
9b00: 20 20 20 20 49 6e 74 50 74 72 20 70 49 6e 64 65      IntPtr pInde
9b10: 78 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  x,..            
9b20: 72 65 66 20 53 51 4c 69 74 65 49 6e 64 65 78 20  ref SQLiteIndex 
9b30: 69 6e 64 65 78 0d 0a 20 20 20 20 20 20 20 20 20  index..         
9b40: 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
9b50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
9b60: 28 70 49 6e 64 65 78 20 3d 3d 20 49 6e 74 50 74  (pIndex == IntPt
9b70: 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
9b80: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b           return;
9b90: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
9ba0: 69 6e 74 20 6f 66 66 73 65 74 20 3d 20 30 3b 0d  int offset = 0;.
9bb0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
9bc0: 6e 74 20 6e 43 6f 6e 73 74 72 61 69 6e 74 20 3d  nt nConstraint =
9bd0: 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52   SQLiteMarshal.R
9be0: 65 61 64 49 6e 74 33 32 28 70 49 6e 64 65 78 2c  eadInt32(pIndex,
9bf0: 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20   offset);....   
9c00: 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20           offset 
9c10: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
9c20: 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 6f 66 66  NextOffsetOf(off
9c30: 73 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29  set, sizeof(int)
9c40: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
9c50: 20 20 20 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b     IntPtr.Size);
9c60: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
9c70: 49 6e 74 50 74 72 20 70 43 6f 6e 73 74 72 61 69  IntPtr pConstrai
9c80: 6e 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  nt = SQLiteMarsh
9c90: 61 6c 2e 52 65 61 64 49 6e 74 50 74 72 28 70 49  al.ReadIntPtr(pI
9ca0: 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a  ndex, offset);..
9cb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 66  ..            of
9cc0: 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72  fset = SQLiteMar
9cd0: 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f  shal.NextOffsetO
9ce0: 66 28 6f 66 66 73 65 74 2c 20 49 6e 74 50 74 72  f(offset, IntPtr
9cf0: 2e 53 69 7a 65 2c 0d 0a 20 20 20 20 20 20 20 20  .Size,..        
9d00: 20 20 20 20 20 20 20 20 73 69 7a 65 6f 66 28 69          sizeof(i
9d10: 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  nt));....       
9d20: 20 20 20 20 20 69 6e 74 20 6e 4f 72 64 65 72 42       int nOrderB
9d30: 79 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61  y = SQLiteMarsha
9d40: 6c 2e 52 65 61 64 49 6e 74 33 32 28 70 49 6e 64  l.ReadInt32(pInd
9d50: 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a  ex, offset);....
9d60: 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
9d70: 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  et = SQLiteMarsh
9d80: 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28  al.NextOffsetOf(
9d90: 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28 69  offset, sizeof(i
9da0: 6e 74 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  nt),..          
9db0: 20 20 20 20 20 20 49 6e 74 50 74 72 2e 53 69 7a        IntPtr.Siz
9dc0: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
9dd0: 20 20 20 49 6e 74 50 74 72 20 70 4f 72 64 65 72     IntPtr pOrder
9de0: 42 79 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  By = SQLiteMarsh
9df0: 61 6c 2e 52 65 61 64 49 6e 74 50 74 72 28 70 49  al.ReadIntPtr(pI
9e00: 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a  ndex, offset);..
9e10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
9e20: 64 65 78 20 3d 20 6e 65 77 20 53 51 4c 69 74 65  dex = new SQLite
9e30: 49 6e 64 65 78 28 6e 43 6f 6e 73 74 72 61 69 6e  Index(nConstrain
9e40: 74 2c 20 6e 4f 72 64 65 72 42 79 29 3b 0d 0a 0d  t, nOrderBy);...
9e50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 54 79 70  .            Typ
9e60: 65 20 69 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  e indexConstrain
9e70: 74 54 79 70 65 20 3d 20 74 79 70 65 6f 66 28 0d  tType = typeof(.
9e80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9e90: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
9ea0: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64  hods.sqlite3_ind
9eb0: 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 29 3b 0d  ex_constraint);.
9ec0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
9ed0: 6e 74 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61  nt sizeOfConstra
9ee0: 69 6e 74 54 79 70 65 20 3d 20 4d 61 72 73 68 61  intType = Marsha
9ef0: 6c 2e 53 69 7a 65 4f 66 28 69 6e 64 65 78 43 6f  l.SizeOf(indexCo
9f00: 6e 73 74 72 61 69 6e 74 54 79 70 65 29 3b 0d 0a  nstraintType);..
9f10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f  ..            fo
9f20: 72 20 28 69 6e 74 20 69 43 6f 6e 73 74 72 61 69  r (int iConstrai
9f30: 6e 74 20 3d 20 30 3b 20 69 43 6f 6e 73 74 72 61  nt = 0; iConstra
9f40: 69 6e 74 20 3c 20 6e 43 6f 6e 73 74 72 61 69 6e  int < nConstrain
9f50: 74 3b 20 69 43 6f 6e 73 74 72 61 69 6e 74 2b 2b  t; iConstraint++
9f60: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
9f70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9f80: 20 20 49 6e 74 50 74 72 20 70 4f 66 66 73 65 74    IntPtr pOffset
9f90: 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c   = SQLiteMarshal
9fa0: 2e 49 6e 74 50 74 72 46 6f 72 4f 66 66 73 65 74  .IntPtrForOffset
9fb0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
9fc0: 20 20 20 20 20 20 20 70 43 6f 6e 73 74 72 61 69         pConstrai
9fd0: 6e 74 2c 20 69 43 6f 6e 73 74 72 61 69 6e 74 20  nt, iConstraint 
9fe0: 2a 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69  * sizeOfConstrai
9ff0: 6e 74 54 79 70 65 29 3b 0d 0a 0d 0a 20 20 20 20  ntType);....    
a000: 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
a010: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
a020: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
a030: 6e 73 74 72 61 69 6e 74 20 63 6f 6e 73 74 72 61  nstraint constra
a040: 69 6e 74 20 3d 0d 0a 20 20 20 20 20 20 20 20 20  int =..         
a050: 20 20 20 20 20 20 20 20 20 20 20 28 55 6e 73 61             (Unsa
a060: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
a070: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
a080: 6e 73 74 72 61 69 6e 74 29 0d 0a 20 20 20 20 20  nstraint)..     
a090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a0a0: 20 20 20 4d 61 72 73 68 61 6c 2e 50 74 72 54 6f     Marshal.PtrTo
a0b0: 53 74 72 75 63 74 75 72 65 28 70 4f 66 66 73 65  Structure(pOffse
a0c0: 74 2c 20 69 6e 64 65 78 43 6f 6e 73 74 72 61 69  t, indexConstrai
a0d0: 6e 74 54 79 70 65 29 3b 0d 0a 0d 0a 20 20 20 20  ntType);....    
a0e0: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 65              inde
a0f0: 78 2e 49 6e 70 75 74 73 2e 43 6f 6e 73 74 72 61  x.Inputs.Constra
a100: 69 6e 74 73 5b 69 43 6f 6e 73 74 72 61 69 6e 74  ints[iConstraint
a110: 5d 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ] =..           
a120: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
a130: 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69  iteIndexConstrai
a140: 6e 74 28 63 6f 6e 73 74 72 61 69 6e 74 29 3b 0d  nt(constraint);.
a150: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
a160: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 54 79  ..            Ty
a170: 70 65 20 69 6e 64 65 78 4f 72 64 65 72 42 79 54  pe indexOrderByT
a180: 79 70 65 20 3d 20 74 79 70 65 6f 66 28 0d 0a 20  ype = typeof(.. 
a190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55                 U
a1a0: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
a1b0: 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ds.sqlite3_index
a1c0: 5f 6f 72 64 65 72 62 79 29 3b 0d 0a 0d 0a 20 20  _orderby);....  
a1d0: 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 73 69            int si
a1e0: 7a 65 4f 66 4f 72 64 65 72 42 79 54 79 70 65 20  zeOfOrderByType 
a1f0: 3d 20 4d 61 72 73 68 61 6c 2e 53 69 7a 65 4f 66  = Marshal.SizeOf
a200: 28 69 6e 64 65 78 4f 72 64 65 72 42 79 54 79 70  (indexOrderByTyp
a210: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
a220: 20 20 20 66 6f 72 20 28 69 6e 74 20 69 4f 72 64     for (int iOrd
a230: 65 72 42 79 20 3d 20 30 3b 20 69 4f 72 64 65 72  erBy = 0; iOrder
a240: 42 79 20 3c 20 6e 4f 72 64 65 72 42 79 3b 20 69  By < nOrderBy; i
a250: 4f 72 64 65 72 42 79 2b 2b 29 0d 0a 20 20 20 20  OrderBy++)..    
a260: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
a270: 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
a280: 72 20 70 4f 66 66 73 65 74 20 3d 20 53 51 4c 69  r pOffset = SQLi
a290: 74 65 4d 61 72 73 68 61 6c 2e 49 6e 74 50 74 72  teMarshal.IntPtr
a2a0: 46 6f 72 4f 66 66 73 65 74 28 0d 0a 20 20 20 20  ForOffset(..    
a2b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a2c0: 70 4f 72 64 65 72 42 79 2c 20 69 4f 72 64 65 72  pOrderBy, iOrder
a2d0: 42 79 20 2a 20 73 69 7a 65 4f 66 4f 72 64 65 72  By * sizeOfOrder
a2e0: 42 79 54 79 70 65 29 3b 0d 0a 0d 0a 20 20 20 20  ByType);....    
a2f0: 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
a300: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
a310: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72  sqlite3_index_or
a320: 64 65 72 62 79 20 6f 72 64 65 72 42 79 20 3d 0d  derby orderBy =.
a330: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a340: 20 20 20 20 20 28 55 6e 73 61 66 65 4e 61 74 69       (UnsafeNati
a350: 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
a360: 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 29  3_index_orderby)
a370: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a380: 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61            Marsha
a390: 6c 2e 50 74 72 54 6f 53 74 72 75 63 74 75 72 65  l.PtrToStructure
a3a0: 28 70 4f 66 66 73 65 74 2c 20 69 6e 64 65 78 4f  (pOffset, indexO
a3b0: 72 64 65 72 42 79 54 79 70 65 29 3b 0d 0a 0d 0a  rderByType);....
a3c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a3d0: 69 6e 64 65 78 2e 49 6e 70 75 74 73 2e 4f 72 64  index.Inputs.Ord
a3e0: 65 72 42 79 73 5b 69 4f 72 64 65 72 42 79 5d 20  erBys[iOrderBy] 
a3f0: 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  =..             
a400: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
a410: 65 49 6e 64 65 78 4f 72 64 65 72 42 79 28 6f 72  eIndexOrderBy(or
a420: 64 65 72 42 79 29 3b 0d 0a 20 20 20 20 20 20 20  derBy);..       
a430: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
a440: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
a450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a490: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
a4a0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
a4b0: 20 20 20 20 20 20 20 2f 2f 2f 20 50 6f 70 75 6c         /// Popul
a4c0: 61 74 65 73 20 74 68 65 20 6f 75 74 70 75 74 73  ates the outputs
a4d0: 20 6f 66 20 61 20 70 72 65 2d 61 6c 6c 6f 63 61   of a pre-alloca
a4e0: 74 65 64 20 6e 61 74 69 76 65 20 73 71 6c 69 74  ted native sqlit
a4f0: 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 0d 0a 20  e3_index_info.. 
a500: 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63         /// struc
a510: 74 75 72 65 20 75 73 69 6e 67 20 61 6e 20 65 78  ture using an ex
a520: 69 73 74 69 6e 67 20 3c 73 65 65 20 63 72 65 66  isting <see cref
a530: 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 22 20 2f  ="SQLiteIndex" /
a540: 3e 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20 20  > object..      
a550: 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 2e 0d    /// instance..
a560: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
a570: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
a580: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
a590: 3d 22 69 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20  ="index">..     
a5a0: 20 20 20 2f 2f 2f 20 54 68 65 20 65 78 69 73 74     /// The exist
a5b0: 69 6e 67 20 3c 73 65 65 20 63 72 65 66 3d 22 53  ing <see cref="S
a5c0: 51 4c 69 74 65 49 6e 64 65 78 22 20 2f 3e 20 6f  QLiteIndex" /> o
a5d0: 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 63  bject instance c
a5e0: 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20 20 20 20  ontaining..     
a5f0: 20 20 20 2f 2f 2f 20 74 68 65 20 6f 75 74 70 75     /// the outpu
a600: 74 20 64 61 74 61 20 74 6f 20 75 73 65 2e 0d 0a  t data to use...
a610: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
a620: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
a630: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
a640: 49 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20 20 20  Index">..       
a650: 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
a660: 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 70  pointer to the p
a670: 72 65 2d 61 6c 6c 6f 63 61 74 65 64 20 6e 61 74  re-allocated nat
a680: 69 76 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65  ive sqlite3_inde
a690: 78 5f 69 6e 66 6f 0d 0a 20 20 20 20 20 20 20 20  x_info..        
a6a0: 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  /// structure...
a6b0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
a6c0: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e  ram>..        in
a6d0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 76 6f  ternal static vo
a6e0: 69 64 20 54 6f 49 6e 74 50 74 72 28 0d 0a 20 20  id ToIntPtr(..  
a6f0: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
a700: 49 6e 64 65 78 20 69 6e 64 65 78 2c 0d 0a 20 20  Index index,..  
a710: 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
a720: 20 70 49 6e 64 65 78 0d 0a 20 20 20 20 20 20 20   pIndex..       
a730: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
a740: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
a750: 66 20 28 28 69 6e 64 65 78 20 3d 3d 20 6e 75 6c  f ((index == nul
a760: 6c 29 20 7c 7c 20 28 69 6e 64 65 78 2e 49 6e 70  l) || (index.Inp
a770: 75 74 73 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 0d  uts == null) ||.
a780: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a790: 20 28 69 6e 64 65 78 2e 49 6e 70 75 74 73 2e 43   (index.Inputs.C
a7a0: 6f 6e 73 74 72 61 69 6e 74 73 20 3d 3d 20 6e 75  onstraints == nu
a7b0: 6c 6c 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20  ll) ||..        
a7c0: 20 20 20 20 20 20 20 20 28 69 6e 64 65 78 2e 4f          (index.O
a7d0: 75 74 70 75 74 73 20 3d 3d 20 6e 75 6c 6c 29 20  utputs == null) 
a7e0: 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ||..            
a7f0: 20 20 20 20 28 69 6e 64 65 78 2e 4f 75 74 70 75      (index.Outpu
a800: 74 73 2e 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  ts.ConstraintUsa
a810: 67 65 73 20 3d 3d 20 6e 75 6c 6c 29 29 0d 0a 20  ges == null)).. 
a820: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
a830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
a840: 74 75 72 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20  turn;..         
a850: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
a860: 20 20 20 20 69 66 20 28 70 49 6e 64 65 78 20 3d      if (pIndex =
a870: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
a880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a890: 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20  return;....     
a8a0: 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66 73 65         int offse
a8b0: 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20  t = 0;....      
a8c0: 20 20 20 20 20 20 69 6e 74 20 6e 43 6f 6e 73 74        int nConst
a8d0: 72 61 69 6e 74 20 3d 20 53 51 4c 69 74 65 4d 61  raint = SQLiteMa
a8e0: 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 33 32 28  rshal.ReadInt32(
a8f0: 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b  pIndex, offset);
a900: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
a910: 69 66 20 28 6e 43 6f 6e 73 74 72 61 69 6e 74 20  if (nConstraint 
a920: 21 3d 20 69 6e 64 65 78 2e 49 6e 70 75 74 73 2e  != index.Inputs.
a930: 43 6f 6e 73 74 72 61 69 6e 74 73 2e 4c 65 6e 67  Constraints.Leng
a940: 74 68 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  th)..           
a950: 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a       return;....
a960: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
a970: 6e 43 6f 6e 73 74 72 61 69 6e 74 20 21 3d 20 69  nConstraint != i
a980: 6e 64 65 78 2e 4f 75 74 70 75 74 73 2e 43 6f 6e  ndex.Outputs.Con
a990: 73 74 72 61 69 6e 74 55 73 61 67 65 73 2e 4c 65  straintUsages.Le
a9a0: 6e 67 74 68 29 0d 0a 20 20 20 20 20 20 20 20 20  ngth)..         
a9b0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a         return;..
a9c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 66  ..            of
a9d0: 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72  fset = SQLiteMar
a9e0: 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f  shal.NextOffsetO
a9f0: 66 28 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66  f(offset, sizeof
aa00: 28 69 6e 74 29 2c 0d 0a 20 20 20 20 20 20 20 20  (int),..        
aa10: 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 2e 53          IntPtr.S
aa20: 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ize);....       
aa30: 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51       offset = SQ
aa40: 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74  LiteMarshal.Next
aa50: 4f 66 66 73 65 74 4f 66 28 6f 66 66 73 65 74 2c  OffsetOf(offset,
aa60: 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c 0d 0a 20   IntPtr.Size,.. 
aa70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
aa80: 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a  izeof(int));....
aa90: 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
aaa0: 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  et = SQLiteMarsh
aab0: 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28  al.NextOffsetOf(
aac0: 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28 69  offset, sizeof(i
aad0: 6e 74 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  nt),..          
aae0: 20 20 20 20 20 20 49 6e 74 50 74 72 2e 53 69 7a        IntPtr.Siz
aaf0: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
ab00: 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69     offset = SQLi
ab10: 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66  teMarshal.NextOf
ab20: 66 73 65 74 4f 66 28 6f 66 66 73 65 74 2c 20 49  fsetOf(offset, I
ab30: 6e 74 50 74 72 2e 53 69 7a 65 2c 0d 0a 20 20 20  ntPtr.Size,..   
ab40: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 69 7a               siz
ab50: 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20  eof(int));....  
ab60: 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
ab70: 20 70 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67   pConstraintUsag
ab80: 65 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61  e = SQLiteMarsha
ab90: 6c 2e 52 65 61 64 49 6e 74 50 74 72 28 70 49 6e  l.ReadIntPtr(pIn
aba0: 64 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d  dex, offset);...
abb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
abc0: 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e   sizeOfConstrain
abd0: 74 55 73 61 67 65 54 79 70 65 20 3d 20 4d 61 72  tUsageType = Mar
abe0: 73 68 61 6c 2e 53 69 7a 65 4f 66 28 74 79 70 65  shal.SizeOf(type
abf0: 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  of(..           
ac00: 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
ac10: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
ac20: 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e  _index_constrain
ac30: 74 5f 75 73 61 67 65 29 29 3b 0d 0a 0d 0a 20 20  t_usage));....  
ac40: 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 69            for (i
ac50: 6e 74 20 69 43 6f 6e 73 74 72 61 69 6e 74 20 3d  nt iConstraint =
ac60: 20 30 3b 20 69 43 6f 6e 73 74 72 61 69 6e 74 20   0; iConstraint 
ac70: 3c 20 6e 43 6f 6e 73 74 72 61 69 6e 74 3b 20 69  < nConstraint; i
ac80: 43 6f 6e 73 74 72 61 69 6e 74 2b 2b 29 0d 0a 20  Constraint++).. 
ac90: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
aca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e                Un
acb0: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
acc0: 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  s.sqlite3_index_
acd0: 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65  constraint_usage
ace0: 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65   constraintUsage
acf0: 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   =..            
ad00: 20 20 20 20 20 20 20 20 6e 65 77 20 55 6e 73 61          new Unsa
ad10: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
ad20: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
ad30: 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65 28 0d  nstraint_usage(.
ad40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ad50: 20 20 20 20 20 20 20 20 20 69 6e 64 65 78 2e 4f           index.O
ad60: 75 74 70 75 74 73 2e 43 6f 6e 73 74 72 61 69 6e  utputs.Constrain
ad70: 74 55 73 61 67 65 73 5b 69 43 6f 6e 73 74 72 61  tUsages[iConstra
ad80: 69 6e 74 5d 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  int]);....      
ad90: 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61            Marsha
ada0: 6c 2e 53 74 72 75 63 74 75 72 65 54 6f 50 74 72  l.StructureToPtr
adb0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
adc0: 20 20 20 20 20 20 20 63 6f 6e 73 74 72 61 69 6e         constrain
add0: 74 55 73 61 67 65 2c 20 53 51 4c 69 74 65 4d 61  tUsage, SQLiteMa
ade0: 72 73 68 61 6c 2e 49 6e 74 50 74 72 46 6f 72 4f  rshal.IntPtrForO
adf0: 66 66 73 65 74 28 0d 0a 20 20 20 20 20 20 20 20  ffset(..        
ae00: 20 20 20 20 20 20 20 20 20 20 20 20 70 43 6f 6e              pCon
ae10: 73 74 72 61 69 6e 74 55 73 61 67 65 2c 20 69 43  straintUsage, iC
ae20: 6f 6e 73 74 72 61 69 6e 74 20 2a 20 73 69 7a 65  onstraint * size
ae30: 4f 66 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  OfConstraintUsag
ae40: 65 54 79 70 65 29 2c 0d 0a 20 20 20 20 20 20 20  eType),..       
ae50: 20 20 20 20 20 20 20 20 20 20 20 20 20 66 61 6c               fal
ae60: 73 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  se);..          
ae70: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
ae80: 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69     offset = SQLi
ae90: 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66  teMarshal.NextOf
aea0: 66 73 65 74 4f 66 28 6f 66 66 73 65 74 2c 20 49  fsetOf(offset, I
aeb0: 6e 74 50 74 72 2e 53 69 7a 65 2c 0d 0a 20 20 20  ntPtr.Size,..   
aec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 69 7a               siz
aed0: 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20  eof(int));....  
aee0: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
aef0: 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74  Marshal.WriteInt
af00: 33 32 28 70 49 6e 64 65 78 2c 20 6f 66 66 73 65  32(pIndex, offse
af10: 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
af20: 20 20 20 20 69 6e 64 65 78 2e 4f 75 74 70 75 74      index.Output
af30: 73 2e 49 6e 64 65 78 4e 75 6d 62 65 72 29 3b 0d  s.IndexNumber);.
af40: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f  ...            o
af50: 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61  ffset = SQLiteMa
af60: 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74  rshal.NextOffset
af70: 4f 66 28 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f  Of(offset, sizeo
af80: 66 28 69 6e 74 29 2c 0d 0a 20 20 20 20 20 20 20  f(int),..       
af90: 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 2e           IntPtr.
afa0: 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Size);....      
afb0: 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73        SQLiteMars
afc0: 68 61 6c 2e 57 72 69 74 65 49 6e 74 50 74 72 28  hal.WriteIntPtr(
afd0: 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 2c 0d  pIndex, offset,.
afe0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
aff0: 20 53 51 4c 69 74 65 53 74 72 69 6e 67 2e 55 74   SQLiteString.Ut
b000: 66 38 49 6e 74 50 74 72 46 72 6f 6d 53 74 72 69  f8IntPtrFromStri
b010: 6e 67 28 69 6e 64 65 78 2e 4f 75 74 70 75 74 73  ng(index.Outputs
b020: 2e 49 6e 64 65 78 53 74 72 69 6e 67 29 29 3b 0d  .IndexString));.
b030: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f  ...            o
b040: 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61  ffset = SQLiteMa
b050: 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74  rshal.NextOffset
b060: 4f 66 28 6f 66 66 73 65 74 2c 20 49 6e 74 50 74  Of(offset, IntPt
b070: 72 2e 53 69 7a 65 2c 0d 0a 20 20 20 20 20 20 20  r.Size,..       
b080: 20 20 20 20 20 20 20 20 20 73 69 7a 65 6f 66 28           sizeof(
b090: 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  int));....      
b0a0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
b0b0: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57        // NOTE: W
b0c0: 65 20 6a 75 73 74 20 61 6c 6c 6f 63 61 74 65 64  e just allocated
b0d0: 20 74 68 65 20 49 6e 64 65 78 53 74 72 69 6e 67   the IndexString
b0e0: 20 66 69 65 6c 64 3b 20 74 68 65 72 65 66 6f 72   field; therefor
b0f0: 65 2c 20 77 65 0d 0a 20 20 20 20 20 20 20 20 20  e, we..         
b100: 20 20 20 2f 2f 20 20 20 20 20 20 20 6e 65 65 64     //       need
b110: 20 74 6f 20 73 65 74 20 74 68 65 20 4e 65 65 64   to set the Need
b120: 54 6f 46 72 65 65 49 6e 64 65 78 53 74 72 69 6e  ToFreeIndexStrin
b130: 67 20 66 69 65 6c 64 20 74 6f 20 6e 6f 6e 2d 7a  g field to non-z
b140: 65 72 6f 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ero...          
b150: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
b160: 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e    SQLiteMarshal.
b170: 57 72 69 74 65 49 6e 74 33 32 28 70 49 6e 64 65  WriteInt32(pInde
b180: 78 2c 20 6f 66 66 73 65 74 2c 20 31 29 3b 0d 0a  x, offset, 1);..
b190: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 66  ..            of
b1a0: 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72  fset = SQLiteMar
b1b0: 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f  shal.NextOffsetO
b1c0: 66 28 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66  f(offset, sizeof
b1d0: 28 69 6e 74 29 2c 0d 0a 20 20 20 20 20 20 20 20  (int),..        
b1e0: 20 20 20 20 20 20 20 20 73 69 7a 65 6f 66 28 69          sizeof(i
b1f0: 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  nt));....       
b200: 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68       SQLiteMarsh
b210: 61 6c 2e 57 72 69 74 65 49 6e 74 33 32 28 70 49  al.WriteInt32(pI
b220: 6e 64 65 78 2c 20 6f 66 66 73 65 74 2c 0d 0a 20  ndex, offset,.. 
b230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
b240: 6e 64 65 78 2e 4f 75 74 70 75 74 73 2e 4f 72 64  ndex.Outputs.Ord
b250: 65 72 42 79 43 6f 6e 73 75 6d 65 64 29 3b 0d 0a  erByConsumed);..
b260: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 66  ..            of
b270: 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72  fset = SQLiteMar
b280: 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f  shal.NextOffsetO
b290: 66 28 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66  f(offset, sizeof
b2a0: 28 69 6e 74 29 2c 0d 0a 20 20 20 20 20 20 20 20  (int),..        
b2b0: 20 20 20 20 20 20 20 20 73 69 7a 65 6f 66 28 64          sizeof(d
b2c0: 6f 75 62 6c 65 29 29 3b 0d 0a 0d 0a 20 20 20 20  ouble));....    
b2d0: 20 20 20 20 20 20 20 20 69 66 20 28 69 6e 64 65          if (inde
b2e0: 78 2e 4f 75 74 70 75 74 73 2e 45 73 74 69 6d 61  x.Outputs.Estima
b2f0: 74 65 64 43 6f 73 74 2e 48 61 73 56 61 6c 75 65  tedCost.HasValue
b300: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
b310: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b320: 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e    SQLiteMarshal.
b330: 57 72 69 74 65 44 6f 75 62 6c 65 28 70 49 6e 64  WriteDouble(pInd
b340: 65 78 2c 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20  ex, offset,..   
b350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b360: 20 69 6e 64 65 78 2e 4f 75 74 70 75 74 73 2e 45   index.Outputs.E
b370: 73 74 69 6d 61 74 65 64 43 6f 73 74 2e 47 65 74  stimatedCost.Get
b380: 56 61 6c 75 65 4f 72 44 65 66 61 75 6c 74 28 29  ValueOrDefault()
b390: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
b3a0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
b3b0: 20 69 66 20 28 69 6e 64 65 78 2e 4f 75 74 70 75   if (index.Outpu
b3c0: 74 73 2e 43 61 6e 55 73 65 45 73 74 69 6d 61 74  ts.CanUseEstimat
b3d0: 65 64 52 6f 77 73 28 29 20 26 26 0d 0a 20 20 20  edRows() &&..   
b3e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 64               ind
b3f0: 65 78 2e 4f 75 74 70 75 74 73 2e 45 73 74 69 6d  ex.Outputs.Estim
b400: 61 74 65 64 52 6f 77 73 2e 48 61 73 56 61 6c 75  atedRows.HasValu
b410: 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e)..            
b420: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
b430: 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c     SQLiteMarshal
b440: 2e 57 72 69 74 65 49 6e 74 36 34 28 70 49 6e 64  .WriteInt64(pInd
b450: 65 78 2c 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20  ex, offset,..   
b460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b470: 20 69 6e 64 65 78 2e 4f 75 74 70 75 74 73 2e 45   index.Outputs.E
b480: 73 74 69 6d 61 74 65 64 52 6f 77 73 2e 47 65 74  stimatedRows.Get
b490: 56 61 6c 75 65 4f 72 44 65 66 61 75 6c 74 28 29  ValueOrDefault()
b4a0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
b4b0: 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  }..        }..  
b4c0: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
b4d0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
b4e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b4f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b520: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
b530: 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 50 72  region Public Pr
b540: 6f 70 65 72 74 69 65 73 0d 0a 20 20 20 20 20 20  operties..      
b550: 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65    private SQLite
b560: 49 6e 64 65 78 49 6e 70 75 74 73 20 69 6e 70 75  IndexInputs inpu
b570: 74 73 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ts;..        ///
b580: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
b590: 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
b5a0: 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64   cref="SQLiteInd
b5b0: 65 78 49 6e 70 75 74 73 22 20 2f 3e 20 6f 62 6a  exInputs" /> obj
b5c0: 65 63 74 20 69 6e 73 74 61 6e 63 65 20 63 6f 6e  ect instance con
b5d0: 74 61 69 6e 69 6e 67 0d 0a 20 20 20 20 20 20 20  taining..       
b5e0: 20 2f 2f 2f 20 74 68 65 20 69 6e 70 75 74 73 20   /// the inputs 
b5f0: 74 6f 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  to the <see cref
b600: 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64  ="ISQLiteManaged
b610: 4d 6f 64 75 6c 65 2e 42 65 73 74 49 6e 64 65 78  Module.BestIndex
b620: 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  " />..        //
b630: 2f 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  / method...     
b640: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
b650: 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
b660: 63 20 53 51 4c 69 74 65 49 6e 64 65 78 49 6e 70  c SQLiteIndexInp
b670: 75 74 73 20 49 6e 70 75 74 73 0d 0a 20 20 20 20  uts Inputs..    
b680: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
b690: 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
b6a0: 69 6e 70 75 74 73 3b 20 7d 0d 0a 20 20 20 20 20  inputs; }..     
b6b0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
b6c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b6d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b6e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b6f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b700: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
b710: 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74     private SQLit
b720: 65 49 6e 64 65 78 4f 75 74 70 75 74 73 20 6f 75  eIndexOutputs ou
b730: 74 70 75 74 73 3b 0d 0a 20 20 20 20 20 20 20 20  tputs;..        
b740: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
b750: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
b760: 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
b770: 49 6e 64 65 78 4f 75 74 70 75 74 73 22 20 2f 3e  IndexOutputs" />
b780: 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
b790: 20 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20 20   containing..   
b7a0: 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 6f 75 74       /// the out
b7b0: 70 75 74 73 20 66 72 6f 6d 20 74 68 65 20 3c 73  puts from the <s
b7c0: 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
b7d0: 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 42 65  ManagedModule.Be
b7e0: 73 74 49 6e 64 65 78 22 20 2f 3e 0d 0a 20 20 20  stIndex" />..   
b7f0: 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 2e       /// method.
b800: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
b810: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
b820: 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 49    public SQLiteI
b830: 6e 64 65 78 4f 75 74 70 75 74 73 20 4f 75 74 70  ndexOutputs Outp
b840: 75 74 73 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  uts..        {..
b850: 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
b860: 7b 20 72 65 74 75 72 6e 20 6f 75 74 70 75 74 73  { return outputs
b870: 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ; }..        }..
b880: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
b890: 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23  on..    }..    #
b8a0: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
b8b0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
b8c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b8d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b8e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b8f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
b900: 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69      #region SQLi
b910: 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 42  teVirtualTable B
b920: 61 73 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f  ase Class..    /
b930: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
b940: 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73    /// This class
b950: 20 72 65 70 72 65 73 65 6e 74 73 20 61 20 6d 61   represents a ma
b960: 6e 61 67 65 64 20 76 69 72 74 75 61 6c 20 74 61  naged virtual ta
b970: 62 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  ble implementati
b980: 6f 6e 2e 20 20 49 74 20 69 73 0d 0a 20 20 20 20  on.  It is..    
b990: 2f 2f 2f 20 6e 6f 74 20 73 65 61 6c 65 64 20 61  /// not sealed a
b9a0: 6e 64 20 73 68 6f 75 6c 64 20 62 65 20 75 73 65  nd should be use
b9b0: 64 20 61 73 20 74 68 65 20 62 61 73 65 20 63 6c  d as the base cl
b9c0: 61 73 73 20 66 6f 72 20 61 6e 79 20 75 73 65 72  ass for any user
b9d0: 2d 64 65 66 69 6e 65 64 0d 0a 20 20 20 20 2f 2f  -defined..    //
b9e0: 2f 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  / virtual table 
b9f0: 63 6c 61 73 73 65 73 20 69 6d 70 6c 65 6d 65 6e  classes implemen
ba00: 74 65 64 20 69 6e 20 6d 61 6e 61 67 65 64 20 63  ted in managed c
ba10: 6f 64 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ode...    /// </
ba20: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75  summary>..    pu
ba30: 62 6c 69 63 20 63 6c 61 73 73 20 53 51 4c 69 74  blic class SQLit
ba40: 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 3a 0d  eVirtualTable :.
ba50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 53 51  .            ISQ
ba60: 4c 69 74 65 4e 61 74 69 76 65 48 61 6e 64 6c 65  LiteNativeHandle
ba70: 2c 20 49 44 69 73 70 6f 73 61 62 6c 65 20 2f 2a  , IDisposable /*
ba80: 20 4e 4f 54 20 53 45 41 4c 45 44 20 2a 2f 0d 0a   NOT SEALED */..
ba90: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23      {..        #
baa0: 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43  region Private C
bab0: 6f 6e 73 74 61 6e 74 73 0d 0a 20 20 20 20 20 20  onstants..      
bac0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
bad0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
bae0: 20 69 6e 64 65 78 20 77 69 74 68 69 6e 20 74 68   index within th
baf0: 65 20 61 72 72 61 79 20 6f 66 20 73 74 72 69 6e  e array of strin
bb00: 67 73 20 70 72 6f 76 69 64 65 64 20 74 6f 20 74  gs provided to t
bb10: 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
bb20: 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
bb30: 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e  teManagedModule.
bb40: 43 72 65 61 74 65 22 20 2f 3e 20 61 6e 64 0d 0a  Create" /> and..
bb50: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
bb60: 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61   cref="ISQLiteMa
bb70: 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43 6f 6e 6e  nagedModule.Conn
bb80: 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 73 20  ect" /> methods 
bb90: 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 0d 0a  containing the..
bba0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 61 6d 65          /// name
bbb0: 20 6f 66 20 74 68 65 20 6d 6f 64 75 6c 65 20 69   of the module i
bbc0: 6d 70 6c 65 6d 65 6e 74 69 6e 67 20 74 68 69 73  mplementing this
bbd0: 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d   virtual table..
bbe0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
bbf0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
bc00: 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 69   private const i
bc10: 6e 74 20 4d 6f 64 75 6c 65 4e 61 6d 65 49 6e 64  nt ModuleNameInd
bc20: 65 78 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20  ex = 0;....     
bc30: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
bc40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bc50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bc60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bc70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
bc80: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
bc90: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
bca0: 20 54 68 65 20 69 6e 64 65 78 20 77 69 74 68 69   The index withi
bcb0: 6e 20 74 68 65 20 61 72 72 61 79 20 6f 66 20 73  n the array of s
bcc0: 74 72 69 6e 67 73 20 70 72 6f 76 69 64 65 64 20  trings provided 
bcd0: 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
bce0: 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
bcf0: 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64  SQLiteManagedMod
bd00: 75 6c 65 2e 43 72 65 61 74 65 22 20 2f 3e 20 61  ule.Create" /> a
bd10: 6e 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  nd..        /// 
bd20: 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
bd30: 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e  teManagedModule.
bd40: 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68  Connect" /> meth
bd50: 6f 64 73 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74  ods containing t
bd60: 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
bd70: 6e 61 6d 65 20 6f 66 20 74 68 65 20 64 61 74 61  name of the data
bd80: 62 61 73 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20  base containing 
bd90: 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62  this virtual tab
bda0: 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le...        ///
bdb0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
bdc0: 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e       private con
bdd0: 73 74 20 69 6e 74 20 44 61 74 61 62 61 73 65 4e  st int DatabaseN
bde0: 61 6d 65 49 6e 64 65 78 20 3d 20 31 3b 0d 0a 0d  ameIndex = 1;...
bdf0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
be00: 2f 2f 2f 2f 2f 2f 2f 2f 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: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
be50: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
be60: 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 64 65 78     /// The index
be70: 20 77 69 74 68 69 6e 20 74 68 65 20 61 72 72 61   within the arra
be80: 79 20 6f 66 20 73 74 72 69 6e 67 73 20 70 72 6f  y of strings pro
be90: 76 69 64 65 64 20 74 6f 20 74 68 65 0d 0a 20 20  vided to the..  
bea0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
beb0: 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61  ref="ISQLiteMana
bec0: 67 65 64 4d 6f 64 75 6c 65 2e 43 72 65 61 74 65  gedModule.Create
bed0: 22 20 2f 3e 20 61 6e 64 0d 0a 20 20 20 20 20 20  " /> and..      
bee0: 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
bef0: 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d  "ISQLiteManagedM
bf00: 6f 64 75 6c 65 2e 43 6f 6e 6e 65 63 74 22 20 2f  odule.Connect" /
bf10: 3e 20 6d 65 74 68 6f 64 73 20 63 6f 6e 74 61 69  > methods contai
bf20: 6e 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20  ning the..      
bf30: 20 20 2f 2f 2f 20 6e 61 6d 65 20 6f 66 20 74 68    /// name of th
bf40: 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e  e virtual table.
bf50: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
bf60: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
bf70: 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20    private const 
bf80: 69 6e 74 20 54 61 62 6c 65 4e 61 6d 65 49 6e 64  int TableNameInd
bf90: 65 78 20 3d 20 32 3b 0d 0a 20 20 20 20 20 20 20  ex = 2;..       
bfa0: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
bfb0: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
bfc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bfd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bfe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
c000: 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
c010: 6e 20 50 75 62 6c 69 63 20 43 6f 6e 73 74 72 75  n Public Constru
c020: 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 2f  ctors..        /
c030: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
c040: 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72        /// Constr
c050: 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63 65  ucts an instance
c060: 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73 2e 0d   of this class..
c070: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
c080: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
c090: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
c0a0: 3d 22 61 72 67 75 6d 65 6e 74 73 22 3e 0d 0a 20  ="arguments">.. 
c0b0: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f         /// The o
c0c0: 72 69 67 69 6e 61 6c 20 61 72 72 61 79 20 6f 66  riginal array of
c0d0: 20 73 74 72 69 6e 67 73 20 70 72 6f 76 69 64 65   strings provide
c0e0: 64 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  d to the..      
c0f0: 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
c100: 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d  "ISQLiteManagedM
c110: 6f 64 75 6c 65 2e 43 72 65 61 74 65 22 20 2f 3e  odule.Create" />
c120: 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f   and..        //
c130: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  / <see cref="ISQ
c140: 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c  LiteManagedModul
c150: 65 2e 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65  e.Connect" /> me
c160: 74 68 6f 64 73 2e 0d 0a 20 20 20 20 20 20 20 20  thods...        
c170: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
c180: 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c        public SQL
c190: 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 28  iteVirtualTable(
c1a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74  ..            st
c1b0: 72 69 6e 67 5b 5d 20 61 72 67 75 6d 65 6e 74 73  ring[] arguments
c1c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
c1d0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
c1e0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 61 72 67          this.arg
c1f0: 75 6d 65 6e 74 73 20 3d 20 61 72 67 75 6d 65 6e  uments = argumen
c200: 74 73 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ts;..        }..
c210: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
c220: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
c230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c270: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
c280: 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
c290: 50 72 6f 70 65 72 74 69 65 73 0d 0a 20 20 20 20  Properties..    
c2a0: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 72 69      private stri
c2b0: 6e 67 5b 5d 20 61 72 67 75 6d 65 6e 74 73 3b 0d  ng[] arguments;.
c2c0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
c2d0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
c2e0: 2f 2f 2f 20 54 68 65 20 6f 72 69 67 69 6e 61 6c  /// The original
c2f0: 20 61 72 72 61 79 20 6f 66 20 73 74 72 69 6e 67   array of string
c300: 73 20 70 72 6f 76 69 64 65 64 20 74 6f 20 74 68  s provided to th
c310: 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
c320: 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
c330: 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43  eManagedModule.C
c340: 72 65 61 74 65 22 20 2f 3e 20 61 6e 64 0d 0a 20  reate" /> and.. 
c350: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
c360: 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e  cref="ISQLiteMan
c370: 61 67 65 64 4d 6f 64 75 6c 65 2e 43 6f 6e 6e 65  agedModule.Conne
c380: 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 73 2e 0d  ct" /> methods..
c390: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
c3a0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
c3b0: 20 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20   public virtual 
c3c0: 73 74 72 69 6e 67 5b 5d 20 41 72 67 75 6d 65 6e  string[] Argumen
c3d0: 74 73 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ts..        {.. 
c3e0: 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
c3f0: 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
c400: 3b 20 72 65 74 75 72 6e 20 61 72 67 75 6d 65 6e  ; return argumen
c410: 74 73 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d  ts; }..        }
c420: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
c430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c470: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
c480: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
c490: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
c4a0: 6d 65 20 6f 66 20 74 68 65 20 6d 6f 64 75 6c 65  me of the module
c4b0: 20 69 6d 70 6c 65 6d 65 6e 74 69 6e 67 20 74 68   implementing th
c4c0: 69 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  is virtual table
c4d0: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
c4e0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
c4f0: 20 20 20 70 75 62 6c 69 63 20 76 69 72 74 75 61     public virtua
c500: 6c 20 73 74 72 69 6e 67 20 4d 6f 64 75 6c 65 4e  l string ModuleN
c510: 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ame..        {..
c520: 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d              get.
c530: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
c540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c550: 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
c560: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
c570: 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 61 72 67      string[] arg
c580: 75 6d 65 6e 74 73 20 3d 20 41 72 67 75 6d 65 6e  uments = Argumen
c590: 74 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ts;....         
c5a0: 20 20 20 20 20 20 20 69 66 20 28 28 61 72 67 75         if ((argu
c5b0: 6d 65 6e 74 73 20 21 3d 20 6e 75 6c 6c 29 20 26  ments != null) &
c5c0: 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  &..             
c5d0: 20 20 20 20 20 20 20 28 61 72 67 75 6d 65 6e 74         (argument
c5e0: 73 2e 4c 65 6e 67 74 68 20 3e 20 4d 6f 64 75 6c  s.Length > Modul
c5f0: 65 4e 61 6d 65 49 6e 64 65 78 29 29 0d 0a 20 20  eNameIndex))..  
c600: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
c610: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c620: 20 20 20 20 20 72 65 74 75 72 6e 20 61 72 67 75       return argu
c630: 6d 65 6e 74 73 5b 4d 6f 64 75 6c 65 4e 61 6d 65  ments[ModuleName
c640: 49 6e 64 65 78 5d 3b 0d 0a 20 20 20 20 20 20 20  Index];..       
c650: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
c660: 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
c670: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c680: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
c690: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
c6a0: 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20  null;..         
c6b0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
c6c0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
c6d0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
c6e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c6f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c720: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
c730: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
c740: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
c750: 6e 61 6d 65 20 6f 66 20 74 68 65 20 64 61 74 61  name of the data
c760: 62 61 73 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20  base containing 
c770: 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62  this virtual tab
c780: 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le...        ///
c790: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
c7a0: 20 20 20 20 20 70 75 62 6c 69 63 20 76 69 72 74       public virt
c7b0: 75 61 6c 20 73 74 72 69 6e 67 20 44 61 74 61 62  ual string Datab
c7c0: 61 73 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20  aseName..       
c7d0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
c7e0: 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  get..           
c7f0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
c800: 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65      CheckDispose
c810: 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  d();....        
c820: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d          string[]
c830: 20 61 72 67 75 6d 65 6e 74 73 20 3d 20 41 72 67   arguments = Arg
c840: 75 6d 65 6e 74 73 3b 0d 0a 0d 0a 20 20 20 20 20  uments;....     
c850: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28             if ((
c860: 61 72 67 75 6d 65 6e 74 73 20 21 3d 20 6e 75 6c  arguments != nul
c870: 6c 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20  l) &&..         
c880: 20 20 20 20 20 20 20 20 20 20 20 28 61 72 67 75             (argu
c890: 6d 65 6e 74 73 2e 4c 65 6e 67 74 68 20 3e 20 44  ments.Length > D
c8a0: 61 74 61 62 61 73 65 4e 61 6d 65 49 6e 64 65 78  atabaseNameIndex
c8b0: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
c8c0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
c8d0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
c8e0: 6e 20 61 72 67 75 6d 65 6e 74 73 5b 44 61 74 61  n arguments[Data
c8f0: 62 61 73 65 4e 61 6d 65 49 6e 64 65 78 5d 3b 0d  baseNameIndex];.
c900: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c910: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
c920: 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20      else..      
c930: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
c940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c950: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20   return null;.. 
c960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
c970: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
c980: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
c990: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
c9a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c9b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c9c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c9d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
c9e0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
c9f0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
ca00: 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20  /// The name of 
ca10: 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c  the virtual tabl
ca20: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
ca30: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
ca40: 20 20 20 20 70 75 62 6c 69 63 20 76 69 72 74 75      public virtu
ca50: 61 6c 20 73 74 72 69 6e 67 20 54 61 62 6c 65 4e  al string TableN
ca60: 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ame..        {..
ca70: 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d              get.
ca80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
ca90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
caa0: 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
cab0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
cac0: 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 61 72 67      string[] arg
cad0: 75 6d 65 6e 74 73 20 3d 20 41 72 67 75 6d 65 6e  uments = Argumen
cae0: 74 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ts;....         
caf0: 20 20 20 20 20 20 20 69 66 20 28 28 61 72 67 75         if ((argu
cb00: 6d 65 6e 74 73 20 21 3d 20 6e 75 6c 6c 29 20 26  ments != null) &
cb10: 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  &..             
cb20: 20 20 20 20 20 20 20 28 61 72 67 75 6d 65 6e 74         (argument
cb30: 73 2e 4c 65 6e 67 74 68 20 3e 20 54 61 62 6c 65  s.Length > Table
cb40: 4e 61 6d 65 49 6e 64 65 78 29 29 0d 0a 20 20 20  NameIndex))..   
cb50: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
cb60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cb70: 20 20 20 20 72 65 74 75 72 6e 20 61 72 67 75 6d      return argum
cb80: 65 6e 74 73 5b 54 61 62 6c 65 4e 61 6d 65 49 6e  ents[TableNameIn
cb90: 64 65 78 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20  dex];..         
cba0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
cbb0: 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a            else..
cbc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cbd0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
cbe0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
cbf0: 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll;..           
cc00: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
cc10: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
cc20: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
cc30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cc40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cc50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cc60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cc70: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
cc80: 72 69 76 61 74 65 20 53 51 4c 69 74 65 49 6e 64  rivate SQLiteInd
cc90: 65 78 20 69 6e 64 65 78 3b 0d 0a 20 20 20 20 20  ex index;..     
cca0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
ccb0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
ccc0: 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
ccd0: 69 74 65 49 6e 64 65 78 22 20 2f 3e 20 6f 62 6a  iteIndex" /> obj
cce0: 65 63 74 20 69 6e 73 74 61 6e 63 65 20 63 6f 6e  ect instance con
ccf0: 74 61 69 6e 69 6e 67 20 61 6c 6c 20 74 68 65 0d  taining all the.
cd00: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 61 74  .        /// dat
cd10: 61 20 66 6f 72 20 74 68 65 20 69 6e 70 75 74 73  a for the inputs
cd20: 20 61 6e 64 20 6f 75 74 70 75 74 73 20 72 65 6c   and outputs rel
cd30: 61 74 69 6e 67 20 74 6f 20 74 68 65 20 6d 6f 73  ating to the mos
cd40: 74 20 72 65 63 65 6e 74 20 69 6e 64 65 78 0d 0a  t recent index..
cd50: 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 65 6c 65          /// sele
cd60: 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ction...        
cd70: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
cd80: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76          public v
cd90: 69 72 74 75 61 6c 20 53 51 4c 69 74 65 49 6e 64  irtual SQLiteInd
cda0: 65 78 20 49 6e 64 65 78 0d 0a 20 20 20 20 20 20  ex Index..      
cdb0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
cdc0: 20 67 65 74 20 7b 20 43 68 65 63 6b 44 69 73 70   get { CheckDisp
cdd0: 6f 73 65 64 28 29 3b 20 72 65 74 75 72 6e 20 69  osed(); return i
cde0: 6e 64 65 78 3b 20 7d 0d 0a 20 20 20 20 20 20 20  ndex; }..       
cdf0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
ce00: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
ce10: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
ce20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ce30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ce40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ce50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
ce60: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62       #region Pub
ce70: 6c 69 63 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20  lic Methods..   
ce80: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
ce90: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
cea0: 54 68 69 73 20 6d 65 74 68 6f 64 20 73 68 6f 75  This method shou
ceb0: 6c 64 20 6e 6f 72 6d 61 6c 6c 79 20 62 65 20 75  ld normally be u
cec0: 73 65 64 20 62 79 20 74 68 65 0d 0a 20 20 20 20  sed by the..    
ced0: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
cee0: 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65  f="ISQLiteManage
cef0: 64 4d 6f 64 75 6c 65 2e 42 65 73 74 49 6e 64 65  dModule.BestInde
cf00: 78 22 20 2f 3e 20 6d 65 74 68 6f 64 20 69 6e 20  x" /> method in 
cf10: 6f 72 64 65 72 20 74 6f 0d 0a 20 20 20 20 20 20  order to..      
cf20: 20 20 2f 2f 2f 20 70 65 72 66 6f 72 6d 20 69 6e    /// perform in
cf30: 64 65 78 20 73 65 6c 65 63 74 69 6f 6e 20 62 61  dex selection ba
cf40: 73 65 64 20 6f 6e 20 74 68 65 20 63 6f 6e 73 74  sed on the const
cf50: 72 61 69 6e 74 73 20 70 72 6f 76 69 64 65 64 20  raints provided 
cf60: 62 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  by the..        
cf70: 2f 2f 2f 20 53 51 4c 69 74 65 20 63 6f 72 65 20  /// SQLite core 
cf80: 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20  library...      
cf90: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
cfa0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
cfb0: 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78  aram name="index
cfc0: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
cfd0: 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
cfe0: 51 4c 69 74 65 49 6e 64 65 78 22 20 2f 3e 20 6f  QLiteIndex" /> o
cff0: 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 63  bject instance c
d000: 6f 6e 74 61 69 6e 69 6e 67 20 61 6c 6c 20 74 68  ontaining all th
d010: 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64  e..        /// d
d020: 61 74 61 20 66 6f 72 20 74 68 65 20 69 6e 70 75  ata for the inpu
d030: 74 73 20 61 6e 64 20 6f 75 74 70 75 74 73 20 72  ts and outputs r
d040: 65 6c 61 74 69 6e 67 20 74 6f 20 69 6e 64 65 78  elating to index
d050: 20 73 65 6c 65 63 74 69 6f 6e 2e 0d 0a 20 20 20   selection...   
d060: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
d070: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
d080: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
d090: 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 75    /// Non-zero u
d0a0: 70 6f 6e 20 73 75 63 63 65 73 73 2e 0d 0a 20 20  pon success...  
d0b0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
d0c0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  rns>..        pu
d0d0: 62 6c 69 63 20 76 69 72 74 75 61 6c 20 62 6f 6f  blic virtual boo
d0e0: 6c 20 42 65 73 74 49 6e 64 65 78 28 0d 0a 20 20  l BestIndex(..  
d0f0: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
d100: 49 6e 64 65 78 20 69 6e 64 65 78 0d 0a 20 20 20  Index index..   
d110: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
d120: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
d130: 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64     CheckDisposed
d140: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
d150: 20 20 20 74 68 69 73 2e 69 6e 64 65 78 20 3d 20     this.index = 
d160: 69 6e 64 65 78 3b 0d 0a 0d 0a 20 20 20 20 20 20  index;....      
d170: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
d180: 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  e;..        }...
d190: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
d1a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d1b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d1c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d1d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d1e0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
d1f0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
d200: 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20     /// Attempts 
d210: 74 6f 20 72 65 63 6f 72 64 20 74 68 65 20 72 65  to record the re
d220: 6e 61 6d 69 6e 67 20 6f 66 20 74 68 65 20 76 69  naming of the vi
d230: 72 74 75 61 6c 20 74 61 62 6c 65 20 61 73 73 6f  rtual table asso
d240: 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20  ciated..        
d250: 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20 6f 62  /// with this ob
d260: 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a  ject instance...
d270: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
d280: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
d290: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
d2a0: 22 6e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 20  "name">..       
d2b0: 20 2f 2f 2f 20 54 68 65 20 6e 65 77 20 6e 61 6d   /// The new nam
d2c0: 65 20 66 6f 72 20 74 68 65 20 76 69 72 74 75 61  e for the virtua
d2d0: 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  l table...      
d2e0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
d2f0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
d300: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
d310: 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 75 70 6f 6e  // Non-zero upon
d320: 20 73 75 63 63 65 73 73 2e 0d 0a 20 20 20 20 20   success...     
d330: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
d340: 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
d350: 63 20 76 69 72 74 75 61 6c 20 62 6f 6f 6c 20 52  c virtual bool R
d360: 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20  ename(..        
d370: 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 0d      string name.
d380: 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
d390: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
d3a0: 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70         CheckDisp
d3b0: 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  osed();....     
d3c0: 20 20 20 20 20 20 20 69 66 20 28 28 61 72 67 75         if ((argu
d3d0: 6d 65 6e 74 73 20 21 3d 20 6e 75 6c 6c 29 20 26  ments != null) &
d3e0: 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  &..             
d3f0: 20 20 20 28 61 72 67 75 6d 65 6e 74 73 2e 4c 65     (arguments.Le
d400: 6e 67 74 68 20 3e 20 54 61 62 6c 65 4e 61 6d 65  ngth > TableName
d410: 49 6e 64 65 78 29 29 0d 0a 20 20 20 20 20 20 20  Index))..       
d420: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
d430: 20 20 20 20 20 20 20 20 61 72 67 75 6d 65 6e 74          argument
d440: 73 5b 54 61 62 6c 65 4e 61 6d 65 49 6e 64 65 78  s[TableNameIndex
d450: 5d 20 3d 20 6e 61 6d 65 3b 0d 0a 20 20 20 20 20  ] = name;..     
d460: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
d470: 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  n true;..       
d480: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
d490: 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
d4a0: 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  se;..        }..
d4b0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
d4c0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
d4d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d4e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d4f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d510: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
d520: 20 23 72 65 67 69 6f 6e 20 49 53 51 4c 69 74 65   #region ISQLite
d530: 4e 61 74 69 76 65 48 61 6e 64 6c 65 20 4d 65 6d  NativeHandle Mem
d540: 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 70 72  bers..        pr
d550: 69 76 61 74 65 20 49 6e 74 50 74 72 20 6e 61 74  ivate IntPtr nat
d560: 69 76 65 48 61 6e 64 6c 65 3b 0d 0a 20 20 20 20  iveHandle;..    
d570: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
d580: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52  >..        /// R
d590: 65 74 75 72 6e 73 20 74 68 65 20 75 6e 64 65 72  eturns the under
d5a0: 6c 79 69 6e 67 20 53 51 4c 69 74 65 20 6e 61 74  lying SQLite nat
d5b0: 69 76 65 20 68 61 6e 64 6c 65 20 61 73 73 6f 63  ive handle assoc
d5c0: 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73 0d  iated with this.
d5d0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 62 6a  .        /// obj
d5e0: 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20  ect instance... 
d5f0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
d600: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
d610: 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 49 6e  ublic virtual In
d620: 74 50 74 72 20 4e 61 74 69 76 65 48 61 6e 64 6c  tPtr NativeHandl
d630: 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  e..        {..  
d640: 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20            get { 
d650: 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
d660: 20 72 65 74 75 72 6e 20 6e 61 74 69 76 65 48 61   return nativeHa
d670: 6e 64 6c 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20  ndle; }..       
d680: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65       internal se
d690: 74 20 7b 20 6e 61 74 69 76 65 48 61 6e 64 6c 65  t { nativeHandle
d6a0: 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20   = value; }..   
d6b0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
d6c0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
d6d0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
d6e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d6f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
d720: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
d730: 20 49 44 69 73 70 6f 73 61 62 6c 65 20 4d 65 6d   IDisposable Mem
d740: 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  bers..        //
d750: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
d760: 20 20 20 20 20 2f 2f 2f 20 44 69 73 70 6f 73 65       /// Dispose
d770: 73 20 6f 66 20 74 68 69 73 20 6f 62 6a 65 63 74  s of this object
d780: 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20   instance...    
d790: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
d7a0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
d7b0: 69 63 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28  ic void Dispose(
d7c0: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
d7d0: 20 20 20 20 20 20 20 20 20 20 44 69 73 70 6f 73            Dispos
d7e0: 65 28 74 72 75 65 29 3b 0d 0a 20 20 20 20 20 20  e(true);..      
d7f0: 20 20 20 20 20 20 47 43 2e 53 75 70 70 72 65 73        GC.Suppres
d800: 73 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b  sFinalize(this);
d810: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
d820: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
d830: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
d840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d880: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
d890: 65 67 69 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c  egion IDisposabl
d8a0: 65 20 22 50 61 74 74 65 72 6e 22 20 4d 65 6d 62  e "Pattern" Memb
d8b0: 65 72 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ers..        pri
d8c0: 76 61 74 65 20 62 6f 6f 6c 20 64 69 73 70 6f 73  vate bool dispos
d8d0: 65 64 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed;..        ///
d8e0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
d8f0: 20 20 20 20 2f 2f 2f 20 54 68 72 6f 77 73 20 61      /// Throws a
d900: 6e 20 3c 73 65 65 20 63 72 65 66 3d 22 4f 62 6a  n <see cref="Obj
d910: 65 63 74 44 69 73 70 6f 73 65 64 45 78 63 65 70  ectDisposedExcep
d920: 74 69 6f 6e 22 20 2f 3e 20 69 66 20 74 68 69 73  tion" /> if this
d930: 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 20   object..       
d940: 20 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 20 68 61   /// instance ha
d950: 73 20 62 65 65 6e 20 64 69 73 70 6f 73 65 64 2e  s been disposed.
d960: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
d970: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
d980: 20 20 70 72 69 76 61 74 65 20 76 6f 69 64 20 43    private void C
d990: 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 20 2f  heckDisposed() /
d9a0: 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
d9b0: 20 20 20 20 7b 0d 0a 23 69 66 20 54 48 52 4f 57      {..#if THROW
d9c0: 5f 4f 4e 5f 44 49 53 50 4f 53 45 44 0d 0a 20 20  _ON_DISPOSED..  
d9d0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64 69            if (di
d9e0: 73 70 6f 73 65 64 29 0d 0a 20 20 20 20 20 20 20  sposed)..       
d9f0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
da00: 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65          throw ne
da10: 77 20 4f 62 6a 65 63 74 44 69 73 70 6f 73 65 64  w ObjectDisposed
da20: 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20 20 20  Exception(..    
da30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
da40: 74 79 70 65 6f 66 28 53 51 4c 69 74 65 56 69 72  typeof(SQLiteVir
da50: 74 75 61 6c 54 61 62 6c 65 29 2e 4e 61 6d 65 29  tualTable).Name)
da60: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
da70: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
da80: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f  ////////////////
dac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dad0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
dae0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
daf0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 69 73  .        /// Dis
db00: 70 6f 73 65 73 20 6f 66 20 74 68 69 73 20 6f 62  poses of this ob
db10: 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a  ject instance...
db20: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
db30: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
db40: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
db50: 22 64 69 73 70 6f 73 69 6e 67 22 3e 0d 0a 20 20  "disposing">..  
db60: 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65        /// Non-ze
db70: 72 6f 20 69 66 20 74 68 69 73 20 6d 65 74 68 6f  ro if this metho
db80: 64 20 69 73 20 62 65 69 6e 67 20 63 61 6c 6c 65  d is being calle
db90: 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20  d from the..    
dba0: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
dbb0: 66 3d 22 44 69 73 70 6f 73 65 28 29 22 20 2f 3e  f="Dispose()" />
dbc0: 20 6d 65 74 68 6f 64 2e 20 20 5a 65 72 6f 20 69   method.  Zero i
dbd0: 66 20 74 68 69 73 20 6d 65 74 68 6f 64 20 69 73  f this method is
dbe0: 20 62 65 69 6e 67 20 63 61 6c 6c 65 64 0d 0a 20   being called.. 
dbf0: 20 20 20 20 20 20 20 2f 2f 2f 20 66 72 6f 6d 20         /// from 
dc00: 74 68 65 20 66 69 6e 61 6c 69 7a 65 72 2e 0d 0a  the finalizer...
dc10: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
dc20: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  ram>..        pr
dc30: 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20  otected virtual 
dc40: 76 6f 69 64 20 44 69 73 70 6f 73 65 28 62 6f 6f  void Dispose(boo
dc50: 6c 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20  l disposing)..  
dc60: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
dc70: 20 20 20 20 20 69 66 20 28 21 64 69 73 70 6f 73       if (!dispos
dc80: 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ed)..           
dc90: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
dca0: 20 20 20 20 2f 2f 69 66 20 28 64 69 73 70 6f 73      //if (dispos
dcb0: 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ing)..          
dcc0: 20 20 20 20 20 20 2f 2f 7b 0d 0a 20 20 20 20 20        //{..     
dcd0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
dce0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
dcf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dd00: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20  /////..         
dd10: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 20         //    // 
dd20: 64 69 73 70 6f 73 65 20 6d 61 6e 61 67 65 64 20  dispose managed 
dd30: 72 65 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e  resources here..
dd40: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
dd50: 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f     //    ///////
dd60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dd70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
dd80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
dd90: 2f 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  /}....          
dda0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
ddb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ddc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
ddd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
dde0: 20 72 65 6c 65 61 73 65 20 75 6e 6d 61 6e 61 67   release unmanag
ddf0: 65 64 20 72 65 73 6f 75 72 63 65 73 20 68 65 72  ed resources her
de00: 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  e.....          
de10: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
de20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
de30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
de40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
de50: 64 69 73 70 6f 73 65 64 20 3d 20 74 72 75 65 3b  disposed = true;
de60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
de70: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
de80: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
de90: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
dea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
deb0: 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
def0: 67 69 6f 6e 20 44 65 73 74 72 75 63 74 6f 72 0d  gion Destructor.
df00: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
df10: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
df20: 2f 2f 2f 20 46 69 6e 61 6c 69 7a 65 73 20 74 68  /// Finalizes th
df30: 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  is object instan
df40: 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ce...        ///
df50: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
df60: 20 20 20 20 20 7e 53 51 4c 69 74 65 56 69 72 74       ~SQLiteVirt
df70: 75 61 6c 54 61 62 6c 65 28 29 0d 0a 20 20 20 20  ualTable()..    
df80: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
df90: 20 20 20 44 69 73 70 6f 73 65 28 66 61 6c 73 65     Dispose(false
dfa0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  );..        }.. 
dfb0: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
dfc0: 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65  n..    }..    #e
dfd0: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
dfe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
e030: 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74     #region SQLit
e040: 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72  eVirtualTableCur
e050: 73 6f 72 20 42 61 73 65 20 43 6c 61 73 73 0d 0a  sor Base Class..
e060: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
e070: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  >..    /// This 
e080: 63 6c 61 73 73 20 72 65 70 72 65 73 65 6e 74 73  class represents
e090: 20 61 20 6d 61 6e 61 67 65 64 20 76 69 72 74 75   a managed virtu
e0a0: 61 6c 20 74 61 62 6c 65 20 63 75 72 73 6f 72 20  al table cursor 
e0b0: 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d  implementation..
e0c0: 0a 20 20 20 20 2f 2f 2f 20 49 74 20 69 73 20 6e  .    /// It is n
e0d0: 6f 74 20 73 65 61 6c 65 64 20 61 6e 64 20 73 68  ot sealed and sh
e0e0: 6f 75 6c 64 20 62 65 20 75 73 65 64 20 61 73 20  ould be used as 
e0f0: 74 68 65 20 62 61 73 65 20 63 6c 61 73 73 20 66  the base class f
e100: 6f 72 20 61 6e 79 0d 0a 20 20 20 20 2f 2f 2f 20  or any..    /// 
e110: 75 73 65 72 2d 64 65 66 69 6e 65 64 20 76 69 72  user-defined vir
e120: 74 75 61 6c 20 74 61 62 6c 65 20 63 75 72 73 6f  tual table curso
e130: 72 20 63 6c 61 73 73 65 73 20 69 6d 70 6c 65 6d  r classes implem
e140: 65 6e 74 65 64 20 69 6e 20 6d 61 6e 61 67 65 64  ented in managed
e150: 20 63 6f 64 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20   code...    /// 
e160: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
e170: 70 75 62 6c 69 63 20 63 6c 61 73 73 20 53 51 4c  public class SQL
e180: 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43  iteVirtualTableC
e190: 75 72 73 6f 72 20 3a 0d 0a 20 20 20 20 20 20 20  ursor :..       
e1a0: 20 20 20 20 20 49 53 51 4c 69 74 65 4e 61 74 69       ISQLiteNati
e1b0: 76 65 48 61 6e 64 6c 65 2c 20 49 44 69 73 70 6f  veHandle, IDispo
e1c0: 73 61 62 6c 65 20 2f 2a 20 4e 4f 54 20 53 45 41  sable /* NOT SEA
e1d0: 4c 45 44 20 2a 2f 0d 0a 20 20 20 20 7b 0d 0a 20  LED */..    {.. 
e1e0: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
e1f0: 72 6f 74 65 63 74 65 64 20 43 6f 6e 73 74 61 6e  rotected Constan
e200: 74 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ts..        /// 
e210: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
e220: 20 20 20 2f 2f 2f 20 54 68 69 73 20 76 61 6c 75     /// This valu
e230: 65 20 72 65 70 72 65 73 65 6e 74 73 20 61 6e 20  e represents an 
e240: 69 6e 76 61 6c 69 64 20 69 6e 74 65 67 65 72 20  invalid integer 
e250: 72 6f 77 20 73 65 71 75 65 6e 63 65 20 6e 75 6d  row sequence num
e260: 62 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ber...        //
e270: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
e280: 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20        protected 
e290: 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20  static readonly 
e2a0: 69 6e 74 20 49 6e 76 61 6c 69 64 52 6f 77 49 6e  int InvalidRowIn
e2b0: 64 65 78 20 3d 20 30 3b 0d 0a 20 20 20 20 20 20  dex = 0;..      
e2c0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
e2d0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
e2e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e2f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
e320: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
e330: 6f 6e 20 50 72 69 76 61 74 65 20 44 61 74 61 0d  on Private Data.
e340: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
e350: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
e360: 2f 2f 2f 20 54 68 65 20 66 69 65 6c 64 20 68 6f  /// The field ho
e370: 6c 64 73 20 74 68 65 20 69 6e 74 65 67 65 72 20  lds the integer 
e380: 72 6f 77 20 73 65 71 75 65 6e 63 65 20 6e 75 6d  row sequence num
e390: 62 65 72 20 66 6f 72 20 74 68 65 20 63 75 72 72  ber for the curr
e3a0: 65 6e 74 20 72 6f 77 0d 0a 20 20 20 20 20 20 20  ent row..       
e3b0: 20 2f 2f 2f 20 70 6f 69 6e 74 65 64 20 74 6f 20   /// pointed to 
e3c0: 62 79 20 74 68 69 73 20 63 75 72 73 6f 72 20 6f  by this cursor o
e3d0: 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d  bject instance..
e3e0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
e3f0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
e400: 20 70 72 69 76 61 74 65 20 69 6e 74 20 72 6f 77   private int row
e410: 49 6e 64 65 78 3b 0d 0a 20 20 20 20 20 20 20 20  Index;..        
e420: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
e430: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
e440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
e480: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
e490: 20 50 75 62 6c 69 63 20 43 6f 6e 73 74 72 75 63   Public Construc
e4a0: 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tors..        //
e4b0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
e4c0: 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75       /// Constru
e4d0: 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20  cts an instance 
e4e0: 6f 66 20 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a  of this class...
e4f0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
e500: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
e510: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
e520: 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20  "table">..      
e530: 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
e540: 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75  ref="SQLiteVirtu
e550: 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65  alTable" /> obje
e560: 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f  ct instance asso
e570: 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20  ciated..        
e580: 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20 6f 62  /// with this ob
e590: 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a  ject instance...
e5a0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
e5b0: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ram>..        pu
e5c0: 62 6c 69 63 20 53 51 4c 69 74 65 56 69 72 74 75  blic SQLiteVirtu
e5d0: 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 28 0d 0a  alTableCursor(..
e5e0: 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
e5f0: 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74  teVirtualTable t
e600: 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 20  able..          
e610: 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
e620: 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20   : this()..     
e630: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
e640: 20 20 74 68 69 73 2e 74 61 62 6c 65 20 3d 20 74    this.table = t
e650: 61 62 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d  able;..        }
e660: 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
e670: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
e680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e6a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e6b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e6c0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
e6d0: 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
e6e0: 74 65 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d  te Constructors.
e6f0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
e700: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
e710: 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61  /// Constructs a
e720: 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68  n instance of th
e730: 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20  is class...     
e740: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
e750: 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
e760: 74 65 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c  te SQLiteVirtual
e770: 54 61 62 6c 65 43 75 72 73 6f 72 28 29 0d 0a 20  TableCursor().. 
e780: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
e790: 20 20 20 20 20 20 72 6f 77 49 6e 64 65 78 20 3d        rowIndex =
e7a0: 20 49 6e 76 61 6c 69 64 52 6f 77 49 6e 64 65 78   InvalidRowIndex
e7b0: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
e7c0: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
e7d0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
e7e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e7f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e820: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
e830: 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 50 72  region Public Pr
e840: 6f 70 65 72 74 69 65 73 0d 0a 20 20 20 20 20 20  operties..      
e850: 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65    private SQLite
e860: 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62  VirtualTable tab
e870: 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le;..        ///
e880: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
e890: 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
e8a0: 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72   cref="SQLiteVir
e8b0: 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62  tualTable" /> ob
e8c0: 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73  ject instance as
e8d0: 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20  sociated..      
e8e0: 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20    /// with this 
e8f0: 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e  object instance.
e900: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
e910: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
e920: 20 20 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c    public virtual
e930: 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
e940: 62 6c 65 20 54 61 62 6c 65 0d 0a 20 20 20 20 20  ble Table..     
e950: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
e960: 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44 69 73    get { CheckDis
e970: 70 6f 73 65 64 28 29 3b 20 72 65 74 75 72 6e 20  posed(); return 
e980: 74 61 62 6c 65 3b 20 7d 0d 0a 20 20 20 20 20 20  table; }..      
e990: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
e9a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e9b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e9c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e9d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e9e0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
e9f0: 20 20 70 72 69 76 61 74 65 20 69 6e 74 20 69 6e    private int in
ea00: 64 65 78 4e 75 6d 62 65 72 3b 0d 0a 20 20 20 20  dexNumber;..    
ea10: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
ea20: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
ea30: 75 6d 62 65 72 20 75 73 65 64 20 74 6f 20 68 65  umber used to he
ea40: 6c 70 20 69 64 65 6e 74 69 66 79 20 74 68 65 20  lp identify the 
ea50: 73 65 6c 65 63 74 65 64 20 69 6e 64 65 78 2e 20  selected index. 
ea60: 20 54 68 69 73 20 76 61 6c 75 65 20 77 69 6c 6c   This value will
ea70: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 62 65  ..        /// be
ea80: 20 73 65 74 20 76 69 61 20 74 68 65 20 3c 73 65   set via the <se
ea90: 65 20 63 72 65 66 3d 22 46 69 6c 74 65 72 22 20  e cref="Filter" 
eaa0: 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
eab0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
eac0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
ead0: 69 63 20 76 69 72 74 75 61 6c 20 69 6e 74 20 49  ic virtual int I
eae0: 6e 64 65 78 4e 75 6d 62 65 72 0d 0a 20 20 20 20  ndexNumber..    
eaf0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
eb00: 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44 69     get { CheckDi
eb10: 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75 72 6e  sposed(); return
eb20: 20 69 6e 64 65 78 4e 75 6d 62 65 72 3b 20 7d 0d   indexNumber; }.
eb30: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
eb40: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
eb50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eb60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eb70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eb80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
eb90: 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
eba0: 20 73 74 72 69 6e 67 20 69 6e 64 65 78 53 74 72   string indexStr
ebb0: 69 6e 67 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ing;..        //
ebc0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
ebd0: 20 20 20 20 20 2f 2f 2f 20 53 74 72 69 6e 67 20       /// String 
ebe0: 75 73 65 64 20 74 6f 20 68 65 6c 70 20 69 64 65  used to help ide
ebf0: 6e 74 69 66 79 20 74 68 65 20 73 65 6c 65 63 74  ntify the select
ec00: 65 64 20 69 6e 64 65 78 2e 20 20 54 68 69 73 20  ed index.  This 
ec10: 76 61 6c 75 65 20 77 69 6c 6c 0d 0a 20 20 20 20  value will..    
ec20: 20 20 20 20 2f 2f 2f 20 62 65 20 73 65 74 20 76      /// be set v
ec30: 69 61 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ia the <see cref
ec40: 3d 22 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74  ="Filter" /> met
ec50: 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
ec60: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
ec70: 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 69 72        public vir
ec80: 74 75 61 6c 20 73 74 72 69 6e 67 20 49 6e 64 65  tual string Inde
ec90: 78 53 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 20  xString..       
eca0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
ecb0: 67 65 74 20 7b 20 43 68 65 63 6b 44 69 73 70 6f  get { CheckDispo
ecc0: 73 65 64 28 29 3b 20 72 65 74 75 72 6e 20 69 6e  sed(); return in
ecd0: 64 65 78 53 74 72 69 6e 67 3b 20 7d 0d 0a 20 20  dexString; }..  
ece0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
ecf0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
ed00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ed10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ed20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ed30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
ed40: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51        private SQ
ed50: 4c 69 74 65 56 61 6c 75 65 5b 5d 20 76 61 6c 75  LiteValue[] valu
ed60: 65 73 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  es;..        ///
ed70: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
ed80: 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75      /// The valu
ed90: 65 73 20 75 73 65 64 20 74 6f 20 66 69 6c 74 65  es used to filte
eda0: 72 20 74 68 65 20 72 6f 77 73 20 72 65 74 75 72  r the rows retur
edb0: 6e 65 64 20 76 69 61 20 74 68 69 73 20 63 75 72  ned via this cur
edc0: 73 6f 72 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20  sor object..    
edd0: 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63 65      /// instance
ede0: 2e 20 20 54 68 69 73 20 76 61 6c 75 65 20 77 69  .  This value wi
edf0: 6c 6c 20 62 65 20 73 65 74 20 76 69 61 20 74 68  ll be set via th
ee00: 65 20 3c 73 65 65 20 63 72 65 66 3d 22 46 69 6c  e <see cref="Fil
ee10: 74 65 72 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20  ter" />..       
ee20: 20 2f 2f 2f 20 6d 65 74 68 6f 64 2e 0d 0a 20 20   /// method...  
ee30: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
ee40: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
ee50: 62 6c 69 63 20 76 69 72 74 75 61 6c 20 53 51 4c  blic virtual SQL
ee60: 69 74 65 56 61 6c 75 65 5b 5d 20 56 61 6c 75 65  iteValue[] Value
ee70: 73 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  s..        {..  
ee80: 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20            get { 
ee90: 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
eea0: 20 72 65 74 75 72 6e 20 76 61 6c 75 65 73 3b 20   return values; 
eeb0: 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  }..        }..  
eec0: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
eed0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
eee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ef00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ef10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ef20: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
ef30: 72 65 67 69 6f 6e 20 50 72 6f 74 65 63 74 65 64  region Protected
ef40: 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
ef50: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
ef60: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 74 74  .        /// Att
ef70: 65 6d 70 74 73 20 74 6f 20 70 65 72 73 69 73 74  empts to persist
ef80: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 3c   the specified <
ef90: 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
efa0: 56 61 6c 75 65 22 20 2f 3e 20 6f 62 6a 65 63 74  Value" /> object
efb0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e  ..        /// in
efc0: 73 74 61 6e 63 65 73 20 69 6e 20 6f 72 64 65 72  stances in order
efd0: 20 74 6f 20 6d 61 6b 65 20 74 68 65 6d 20 61 76   to make them av
efe0: 61 69 6c 61 62 6c 65 20 61 66 74 65 72 20 74 68  ailable after th
eff0: 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
f000: 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
f010: 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 46  eManagedModule.F
f020: 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64  ilter" /> method
f030: 20 72 65 74 75 72 6e 73 2e 0d 0a 20 20 20 20 20   returns...     
f040: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
f050: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
f060: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75  param name="valu
f070: 65 73 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  es">..        //
f080: 2f 20 54 68 65 20 61 72 72 61 79 20 6f 66 20 3c  / The array of <
f090: 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
f0a0: 56 61 6c 75 65 22 20 2f 3e 20 6f 62 6a 65 63 74  Value" /> object
f0b0: 20 69 6e 73 74 61 6e 63 65 73 20 74 6f 20 62 65   instances to be
f0c0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 65  ..        /// pe
f0d0: 72 73 69 73 74 65 64 2e 0d 0a 20 20 20 20 20 20  rsisted...      
f0e0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
f0f0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
f100: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
f110: 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66  // The number of
f120: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
f130: 74 65 56 61 6c 75 65 22 20 2f 3e 20 6f 62 6a 65  teValue" /> obje
f140: 63 74 20 69 6e 73 74 61 6e 63 65 73 20 74 68 61  ct instances tha
f150: 74 20 77 65 72 65 0d 0a 20 20 20 20 20 20 20 20  t were..        
f160: 2f 2f 2f 20 73 75 63 63 65 73 73 66 75 6c 6c 79  /// successfully
f170: 20 70 65 72 73 69 73 74 65 64 2e 0d 0a 20 20 20   persisted...   
f180: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
f190: 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f  ns>..        pro
f1a0: 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 69  tected virtual i
f1b0: 6e 74 20 54 72 79 50 65 72 73 69 73 74 56 61 6c  nt TryPersistVal
f1c0: 75 65 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ues(..          
f1d0: 20 20 53 51 4c 69 74 65 56 61 6c 75 65 5b 5d 20    SQLiteValue[] 
f1e0: 76 61 6c 75 65 73 0d 0a 20 20 20 20 20 20 20 20  values..        
f1f0: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
f200: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
f210: 74 20 72 65 73 75 6c 74 20 3d 20 30 3b 0d 0a 0d  t result = 0;...
f220: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
f230: 28 76 61 6c 75 65 73 20 21 3d 20 6e 75 6c 6c 29  (values != null)
f240: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
f250: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f260: 20 66 6f 72 65 61 63 68 20 28 53 51 4c 69 74 65   foreach (SQLite
f270: 56 61 6c 75 65 20 76 61 6c 75 65 20 69 6e 20 76  Value value in v
f280: 61 6c 75 65 73 29 0d 0a 20 20 20 20 20 20 20 20  alues)..        
f290: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
f2a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
f2b0: 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c  f (value == null
f2c0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
f2d0: 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69             conti
f2e0: 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  nue;....        
f2f0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
f300: 76 61 6c 75 65 2e 50 65 72 73 69 73 74 28 29 29  value.Persist())
f310: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f320: 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74            result
f330: 2b 2b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ++;..           
f340: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
f350: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
f360: 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75       return resu
f370: 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  lt;..        }..
f380: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
f390: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
f3a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f3b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f3c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f3d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f3e0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
f3f0: 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
f400: 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20  Methods..       
f410: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
f420: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
f430: 20 6d 65 74 68 6f 64 20 73 68 6f 75 6c 64 20 6e   method should n
f440: 6f 72 6d 61 6c 6c 79 20 62 65 20 75 73 65 64 20  ormally be used 
f450: 62 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  by the..        
f460: 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
f470: 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64  SQLiteManagedMod
f480: 75 6c 65 2e 46 69 6c 74 65 72 22 20 2f 3e 20 6d  ule.Filter" /> m
f490: 65 74 68 6f 64 20 69 6e 20 6f 72 64 65 72 20 74  ethod in order t
f4a0: 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70  o..        /// p
f4b0: 65 72 66 6f 72 6d 20 66 69 6c 74 65 72 69 6e 67  erform filtering
f4c0: 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20 72   of the result r
f4d0: 6f 77 73 20 61 6e 64 2f 6f 72 20 74 6f 20 72 65  ows and/or to re
f4e0: 63 6f 72 64 20 74 68 65 20 66 69 6c 74 65 72 69  cord the filteri
f4f0: 6e 67 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ng..        /// 
f500: 63 72 69 74 65 72 69 61 20 70 72 6f 76 69 64 65  criteria provide
f510: 64 20 62 79 20 74 68 65 20 53 51 4c 69 74 65 20  d by the SQLite 
f520: 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20  core library... 
f530: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
f540: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
f550: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
f560: 69 6e 64 65 78 4e 75 6d 62 65 72 22 3e 0d 0a 20  indexNumber">.. 
f570: 20 20 20 20 20 20 20 2f 2f 2f 20 4e 75 6d 62 65         /// Numbe
f580: 72 20 75 73 65 64 20 74 6f 20 68 65 6c 70 20 69  r used to help i
f590: 64 65 6e 74 69 66 79 20 74 68 65 20 73 65 6c 65  dentify the sele
f5a0: 63 74 65 64 20 69 6e 64 65 78 2e 0d 0a 20 20 20  cted index...   
f5b0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
f5c0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
f5d0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65  param name="inde
f5e0: 78 53 74 72 69 6e 67 22 3e 0d 0a 20 20 20 20 20  xString">..     
f5f0: 20 20 20 2f 2f 2f 20 53 74 72 69 6e 67 20 75 73     /// String us
f600: 65 64 20 74 6f 20 68 65 6c 70 20 69 64 65 6e 74  ed to help ident
f610: 69 66 79 20 74 68 65 20 73 65 6c 65 63 74 65 64  ify the selected
f620: 20 69 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20 20   index...       
f630: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
f640: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
f650: 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 73 22 3e  m name="values">
f660: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
f670: 65 20 76 61 6c 75 65 73 20 63 6f 72 72 65 73 70  e values corresp
f680: 6f 6e 64 69 6e 67 20 74 6f 20 65 61 63 68 20 63  onding to each c
f690: 6f 6c 75 6d 6e 20 69 6e 20 74 68 65 20 73 65 6c  olumn in the sel
f6a0: 65 63 74 65 64 20 69 6e 64 65 78 2e 0d 0a 20 20  ected index...  
f6b0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
f6c0: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  m>..        publ
f6d0: 69 63 20 76 69 72 74 75 61 6c 20 76 6f 69 64 20  ic virtual void 
f6e0: 46 69 6c 74 65 72 28 0d 0a 20 20 20 20 20 20 20  Filter(..       
f6f0: 20 20 20 20 20 69 6e 74 20 69 6e 64 65 78 4e 75       int indexNu
f700: 6d 62 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20  mber,..         
f710: 20 20 20 73 74 72 69 6e 67 20 69 6e 64 65 78 53     string indexS
f720: 74 72 69 6e 67 2c 0d 0a 20 20 20 20 20 20 20 20  tring,..        
f730: 20 20 20 20 53 51 4c 69 74 65 56 61 6c 75 65 5b      SQLiteValue[
f740: 5d 20 76 61 6c 75 65 73 0d 0a 20 20 20 20 20 20  ] values..      
f750: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
f760: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
f770: 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
f780: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
f790: 69 66 20 28 28 76 61 6c 75 65 73 20 21 3d 20 6e  if ((values != n
f7a0: 75 6c 6c 29 20 26 26 0d 0a 20 20 20 20 20 20 20  ull) &&..       
f7b0: 20 20 20 20 20 20 20 20 20 28 54 72 79 50 65 72           (TryPer
f7c0: 73 69 73 74 56 61 6c 75 65 73 28 76 61 6c 75 65  sistValues(value
f7d0: 73 29 20 21 3d 20 76 61 6c 75 65 73 2e 4c 65 6e  s) != values.Len
f7e0: 67 74 68 29 29 0d 0a 20 20 20 20 20 20 20 20 20  gth))..         
f7f0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
f800: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
f810: 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 28  SQLiteException(
f820: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f830: 20 20 20 20 20 20 22 66 61 69 6c 65 64 20 74 6f        "failed to
f840: 20 70 65 72 73 69 73 74 20 6f 6e 65 20 6f 72 20   persist one or 
f850: 6d 6f 72 65 20 76 61 6c 75 65 73 22 29 3b 0d 0a  more values");..
f860: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
f870: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
f880: 73 2e 69 6e 64 65 78 4e 75 6d 62 65 72 20 3d 20  s.indexNumber = 
f890: 69 6e 64 65 78 4e 75 6d 62 65 72 3b 0d 0a 20 20  indexNumber;..  
f8a0: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 69            this.i
f8b0: 6e 64 65 78 53 74 72 69 6e 67 20 3d 20 69 6e 64  ndexString = ind
f8c0: 65 78 53 74 72 69 6e 67 3b 0d 0a 20 20 20 20 20  exString;..     
f8d0: 20 20 20 20 20 20 20 74 68 69 73 2e 76 61 6c 75         this.valu
f8e0: 65 73 20 3d 20 76 61 6c 75 65 73 3b 0d 0a 20 20  es = values;..  
f8f0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
f900: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
f910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
f950: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
f960: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
f970: 20 44 65 74 65 72 6d 69 6e 65 73 20 74 68 65 20   Determines the 
f980: 69 6e 74 65 67 65 72 20 72 6f 77 20 73 65 71 75  integer row sequ
f990: 65 6e 63 65 20 6e 75 6d 62 65 72 20 66 6f 72 20  ence number for 
f9a0: 74 68 65 20 63 75 72 72 65 6e 74 20 72 6f 77 2e  the current row.
f9b0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
f9c0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
f9d0: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
f9e0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
f9f0: 20 69 6e 74 65 67 65 72 20 72 6f 77 20 73 65 71   integer row seq
fa00: 75 65 6e 63 65 20 6e 75 6d 62 65 72 20 66 6f 72  uence number for
fa10: 20 74 68 65 20 63 75 72 72 65 6e 74 20 72 6f 77   the current row
fa20: 20 2d 4f 52 2d 20 7a 65 72 6f 20 69 66 0d 0a 20   -OR- zero if.. 
fa30: 20 20 20 20 20 20 20 2f 2f 2f 20 69 74 20 63 61         /// it ca
fa40: 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e  nnot be determin
fa50: 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
fa60: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
fa70: 20 20 20 20 20 70 75 62 6c 69 63 20 76 69 72 74       public virt
fa80: 75 61 6c 20 69 6e 74 20 47 65 74 52 6f 77 49 6e  ual int GetRowIn
fa90: 64 65 78 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  dex()..        {
faa0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
fab0: 74 75 72 6e 20 72 6f 77 49 6e 64 65 78 3b 0d 0a  turn rowIndex;..
fac0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
fad0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
fae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
faf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
fb20: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
fb30: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
fb40: 2f 2f 20 41 64 6a 75 73 74 73 20 74 68 65 20 69  // Adjusts the i
fb50: 6e 74 65 67 65 72 20 72 6f 77 20 73 65 71 75 65  nteger row seque
fb60: 6e 63 65 20 6e 75 6d 62 65 72 20 73 6f 20 74 68  nce number so th
fb70: 61 74 20 69 74 20 72 65 66 65 72 73 20 74 6f 20  at it refers to 
fb80: 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
fb90: 20 6e 65 78 74 20 72 6f 77 2e 0d 0a 20 20 20 20   next row...    
fba0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
fbb0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
fbc0: 69 63 20 76 69 72 74 75 61 6c 20 76 6f 69 64 20  ic virtual void 
fbd0: 4e 65 78 74 52 6f 77 49 6e 64 65 78 28 29 0d 0a  NextRowIndex()..
fbe0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
fbf0: 20 20 20 20 20 20 20 72 6f 77 49 6e 64 65 78 2b         rowIndex+
fc00: 2b 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  +;..        }.. 
fc10: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
fc20: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
fc30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fc40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fc50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fc60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fc70: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
fc80: 23 72 65 67 69 6f 6e 20 49 53 51 4c 69 74 65 4e  #region ISQLiteN
fc90: 61 74 69 76 65 48 61 6e 64 6c 65 20 4d 65 6d 62  ativeHandle Memb
fca0: 65 72 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ers..        pri
fcb0: 76 61 74 65 20 49 6e 74 50 74 72 20 6e 61 74 69  vate IntPtr nati
fcc0: 76 65 48 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20  veHandle;..     
fcd0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
fce0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65  ..        /// Re
fcf0: 74 75 72 6e 73 20 74 68 65 20 75 6e 64 65 72 6c  turns the underl
fd00: 79 69 6e 67 20 53 51 4c 69 74 65 20 6e 61 74 69  ying SQLite nati
fd10: 76 65 20 68 61 6e 64 6c 65 20 61 73 73 6f 63 69  ve handle associ
fd20: 61 74 65 64 20 77 69 74 68 20 74 68 69 73 0d 0a  ated with this..
fd30: 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 62 6a 65          /// obje
fd40: 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20  ct instance...  
fd50: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
fd60: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
fd70: 62 6c 69 63 20 76 69 72 74 75 61 6c 20 49 6e 74  blic virtual Int
fd80: 50 74 72 20 4e 61 74 69 76 65 48 61 6e 64 6c 65  Ptr NativeHandle
fd90: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
fda0: 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 43           get { C
fdb0: 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20  heckDisposed(); 
fdc0: 72 65 74 75 72 6e 20 6e 61 74 69 76 65 48 61 6e  return nativeHan
fdd0: 64 6c 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  dle; }..        
fde0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 74      internal set
fdf0: 20 7b 20 6e 61 74 69 76 65 48 61 6e 64 6c 65 20   { nativeHandle 
fe00: 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20  = value; }..    
fe10: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
fe20: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
fe30: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
fe40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fe50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fe60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fe70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
fe80: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
fe90: 49 44 69 73 70 6f 73 61 62 6c 65 20 4d 65 6d 62  IDisposable Memb
fea0: 65 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ers..        ///
feb0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
fec0: 20 20 20 20 2f 2f 2f 20 44 69 73 70 6f 73 65 73      /// Disposes
fed0: 20 6f 66 20 74 68 69 73 20 6f 62 6a 65 63 74 20   of this object 
fee0: 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20  instance...     
fef0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
ff00: 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
ff10: 63 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 29  c void Dispose()
ff20: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
ff30: 20 20 20 20 20 20 20 20 20 44 69 73 70 6f 73 65           Dispose
ff40: 28 74 72 75 65 29 3b 0d 0a 20 20 20 20 20 20 20  (true);..       
ff50: 20 20 20 20 20 47 43 2e 53 75 70 70 72 65 73 73       GC.Suppress
ff60: 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d  Finalize(this);.
ff70: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
ff80: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
ff90: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
ffa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ffb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ffc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ffd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ffe0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
fff0: 67 69 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c 65  gion IDisposable
10000 20 22 50 61 74 74 65 72 6e 22 20 4d 65 6d 62 65   "Pattern" Membe
10010 72 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  rs..        priv
10020 61 74 65 20 62 6f 6f 6c 20 64 69 73 70 6f 73 65  ate bool dispose
10030 64 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d;..        /// 
10040 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
10050 20 20 20 2f 2f 2f 20 54 68 72 6f 77 73 20 61 6e     /// Throws an
10060 20 3c 73 65 65 20 63 72 65 66 3d 22 4f 62 6a 65   <see cref="Obje
10070 63 74 44 69 73 70 6f 73 65 64 45 78 63 65 70 74  ctDisposedExcept
10080 69 6f 6e 22 20 2f 3e 20 69 66 20 74 68 69 73 20  ion" /> if this 
10090 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20  object..        
100a0 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 20 68 61 73  /// instance has
100b0 20 62 65 65 6e 20 64 69 73 70 6f 73 65 64 2e 0d   been disposed..
100c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
100d0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
100e0 20 70 72 69 76 61 74 65 20 76 6f 69 64 20 43 68   private void Ch
100f0 65 63 6b 44 69 73 70 6f 73 65 64 28 29 20 2f 2a  eckDisposed() /*
10100 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
10110 20 20 20 7b 0d 0a 23 69 66 20 54 48 52 4f 57 5f     {..#if THROW_
10120 4f 4e 5f 44 49 53 50 4f 53 45 44 0d 0a 20 20 20  ON_DISPOSED..   
10130 20 20 20 20 20 20 20 20 20 69 66 20 28 64 69 73           if (dis
10140 70 6f 73 65 64 29 0d 0a 20 20 20 20 20 20 20 20  posed)..        
10150 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
10160 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
10170 20 4f 62 6a 65 63 74 44 69 73 70 6f 73 65 64 45   ObjectDisposedE
10180 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20 20 20 20  xception(..     
10190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
101a0 79 70 65 6f 66 28 53 51 4c 69 74 65 56 69 72 74  ypeof(SQLiteVirt
101b0 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 29 2e  ualTableCursor).
101c0 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  Name);..        
101d0 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
101e0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
101f0 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
10240 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
10250 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
10260 2f 20 44 69 73 70 6f 73 65 73 20 6f 66 20 74 68  / Disposes of th
10270 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  is object instan
10280 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ce...        ///
10290 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
102a0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
102b0 6e 61 6d 65 3d 22 64 69 73 70 6f 73 69 6e 67 22  name="disposing"
102c0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
102d0 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 69 73 20  on-zero if this 
102e0 6d 65 74 68 6f 64 20 69 73 20 62 65 69 6e 67 20  method is being 
102f0 63 61 6c 6c 65 64 20 66 72 6f 6d 20 74 68 65 0d  called from the.
10300 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
10310 65 20 63 72 65 66 3d 22 44 69 73 70 6f 73 65 28  e cref="Dispose(
10320 29 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 20 20 5a  )" /> method.  Z
10330 65 72 6f 20 69 66 20 74 68 69 73 20 6d 65 74 68  ero if this meth
10340 6f 64 20 69 73 20 62 65 69 6e 67 20 63 61 6c 6c  od is being call
10350 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
10360 66 72 6f 6d 20 74 68 65 20 66 69 6e 61 6c 69 7a  from the finaliz
10370 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  er...        ///
10380 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
10390 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 69 72     protected vir
103a0 74 75 61 6c 20 76 6f 69 64 20 44 69 73 70 6f 73  tual void Dispos
103b0 65 28 62 6f 6f 6c 20 64 69 73 70 6f 73 69 6e 67  e(bool disposing
103c0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
103d0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 64            if (!d
103e0 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20 20 20  isposed)..      
103f0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
10400 20 20 20 20 20 20 20 20 20 2f 2f 69 66 20 28 64           //if (d
10410 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20  isposing)..     
10420 20 20 20 20 20 20 20 20 20 20 20 2f 2f 7b 0d 0a             //{..
10430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10440 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  //    //////////
10450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
10470 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
10480 20 20 2f 2f 20 64 69 73 70 6f 73 65 20 6d 61 6e    // dispose man
10490 61 67 65 64 20 72 65 73 6f 75 72 63 65 73 20 68  aged resources h
104a0 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20  ere.....        
104b0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f          //    //
104c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
104d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
104e0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
104f0 20 20 20 20 2f 2f 7d 0d 0a 0d 0a 20 20 20 20 20      //}....     
10500 20 20 20 20 20 20 20 20 20 20 20 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 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
10540 20 20 20 2f 2f 20 72 65 6c 65 61 73 65 20 75 6e     // release un
10550 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72 63 65  managed resource
10560 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20  s here.....     
10570 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
10580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
105a0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
105b0 20 20 20 20 20 64 69 73 70 6f 73 65 64 20 3d 20       disposed = 
105c0 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  true;..         
105d0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
105e0 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
105f0 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
10600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10640 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
10650 20 20 23 72 65 67 69 6f 6e 20 44 65 73 74 72 75    #region Destru
10660 63 74 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ctor..        //
10670 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
10680 20 20 20 20 20 2f 2f 2f 20 46 69 6e 61 6c 69 7a       /// Finaliz
10690 65 73 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69  es this object i
106a0 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20  nstance...      
106b0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
106c0 0d 0a 20 20 20 20 20 20 20 20 7e 53 51 4c 69 74  ..        ~SQLit
106d0 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72  eVirtualTableCur
106e0 73 6f 72 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  sor()..        {
106f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 44 69  ..            Di
10700 73 70 6f 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20  spose(false);.. 
10710 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
10720 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20    #endregion..  
10730 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67    }..    #endreg
10740 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
10750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10790 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
107a0 65 67 69 6f 6e 20 49 53 51 4c 69 74 65 4e 61 74  egion ISQLiteNat
107b0 69 76 65 48 61 6e 64 6c 65 20 49 6e 74 65 72 66  iveHandle Interf
107c0 61 63 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  ace..    /// <su
107d0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
107e0 54 68 69 73 20 69 6e 74 65 72 66 61 63 65 20 72  This interface r
107f0 65 70 72 65 73 65 6e 74 73 20 61 20 6e 61 74 69  epresents a nati
10800 76 65 20 68 61 6e 64 6c 65 20 70 72 6f 76 69 64  ve handle provid
10810 65 64 20 62 79 20 74 68 65 20 53 51 4c 69 74 65  ed by the SQLite
10820 20 63 6f 72 65 0d 0a 20 20 20 20 2f 2f 2f 20 6c   core..    /// l
10830 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f  ibrary...    ///
10840 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
10850 20 70 75 62 6c 69 63 20 69 6e 74 65 72 66 61 63   public interfac
10860 65 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65 48  e ISQLiteNativeH
10870 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 20 20  andle..    {..  
10880 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
10890 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
108a0 20 54 68 65 20 6e 61 74 69 76 65 20 68 61 6e 64   The native hand
108b0 6c 65 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20  le value...     
108c0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
108d0 3e 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74  >..        IntPt
108e0 72 20 4e 61 74 69 76 65 48 61 6e 64 6c 65 20 7b  r NativeHandle {
108f0 20 67 65 74 3b 20 7d 0d 0a 20 20 20 20 7d 0d 0a   get; }..    }..
10900 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
10910 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
10920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10960 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
10970 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f   ISQLiteNativeMo
10980 64 75 6c 65 20 49 6e 74 65 72 66 61 63 65 0d 0a  dule Interface..
10990 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
109a0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  >..    /// This 
109b0 69 6e 74 65 72 66 61 63 65 20 72 65 70 72 65 73  interface repres
109c0 65 6e 74 73 20 61 20 76 69 72 74 75 61 6c 20 74  ents a virtual t
109d0 61 62 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74  able implementat
109e0 69 6f 6e 20 77 72 69 74 74 65 6e 20 69 6e 0d 0a  ion written in..
109f0 20 20 20 20 2f 2f 2f 20 6e 61 74 69 76 65 20 63      /// native c
10a00 6f 64 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ode...    /// </
10a10 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75  summary>..    pu
10a20 62 6c 69 63 20 69 6e 74 65 72 66 61 63 65 20 49  blic interface I
10a30 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
10a40 6c 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  le..    {..     
10a50 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
10a60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
10a70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
10a80 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73  / This method is
10a90 20 63 61 6c 6c 65 64 20 74 6f 20 63 72 65 61 74   called to creat
10aa0 65 20 61 20 6e 65 77 20 69 6e 73 74 61 6e 63 65  e a new instance
10ab0 20 6f 66 20 61 20 76 69 72 74 75 61 6c 20 74 61   of a virtual ta
10ac0 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ble..        ///
10ad0 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20   in response to 
10ae0 61 20 43 52 45 41 54 45 20 56 49 52 54 55 41 4c  a CREATE VIRTUAL
10af0 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74   TABLE statement
10b00 2e 20 54 68 65 20 64 62 20 70 61 72 61 6d 65 74  . The db paramet
10b10 65 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  er..        /// 
10b20 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20  is a pointer to 
10b30 74 68 65 20 53 51 4c 69 74 65 20 64 61 74 61 62  the SQLite datab
10b40 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74  ase connection t
10b50 68 61 74 20 69 73 20 65 78 65 63 75 74 69 6e 67  hat is executing
10b60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68  ..        /// th
10b70 65 20 43 52 45 41 54 45 20 56 49 52 54 55 41 4c  e CREATE VIRTUAL
10b80 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74   TABLE statement
10b90 2e 20 54 68 65 20 70 41 75 78 20 61 72 67 75 6d  . The pAux argum
10ba0 65 6e 74 20 69 73 20 74 68 65 20 63 6f 70 79 0d  ent is the copy.
10bb0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 66 20  .        /// of 
10bc0 74 68 65 20 63 6c 69 65 6e 74 20 64 61 74 61 20  the client data 
10bd0 70 6f 69 6e 74 65 72 20 74 68 61 74 20 77 61 73  pointer that was
10be0 20 74 68 65 20 66 6f 75 72 74 68 20 61 72 67 75   the fourth argu
10bf0 6d 65 6e 74 20 74 6f 20 74 68 65 0d 0a 20 20 20  ment to the..   
10c00 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33       /// sqlite3
10c10 5f 63 72 65 61 74 65 5f 6d 6f 64 75 6c 65 28 29  _create_module()
10c20 20 6f 72 20 73 71 6c 69 74 65 33 5f 63 72 65 61   or sqlite3_crea
10c30 74 65 5f 6d 6f 64 75 6c 65 5f 76 32 28 29 20 63  te_module_v2() c
10c40 61 6c 6c 20 74 68 61 74 0d 0a 20 20 20 20 20 20  all that..      
10c50 20 20 2f 2f 2f 20 72 65 67 69 73 74 65 72 65 64    /// registered
10c60 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
10c70 6c 65 20 6d 6f 64 75 6c 65 2e 20 54 68 65 20 61  le module. The a
10c80 72 67 76 20 70 61 72 61 6d 65 74 65 72 20 69 73  rgv parameter is
10c90 20 61 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   an..        ///
10ca0 20 61 72 72 61 79 20 6f 66 20 61 72 67 63 20 70   array of argc p
10cb0 6f 69 6e 74 65 72 73 20 74 6f 20 6e 75 6c 6c 20  ointers to null 
10cc0 74 65 72 6d 69 6e 61 74 65 64 20 73 74 72 69 6e  terminated strin
10cd0 67 73 2e 20 54 68 65 20 66 69 72 73 74 0d 0a 20  gs. The first.. 
10ce0 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 69 6e         /// strin
10cf0 67 2c 20 61 72 67 76 5b 30 5d 2c 20 69 73 20 74  g, argv[0], is t
10d00 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6d  he name of the m
10d10 6f 64 75 6c 65 20 62 65 69 6e 67 20 69 6e 76 6f  odule being invo
10d20 6b 65 64 2e 20 54 68 65 0d 0a 20 20 20 20 20 20  ked. The..      
10d30 20 20 2f 2f 2f 20 6d 6f 64 75 6c 65 20 6e 61 6d    /// module nam
10d40 65 20 69 73 20 74 68 65 20 6e 61 6d 65 20 70 72  e is the name pr
10d50 6f 76 69 64 65 64 20 61 73 20 74 68 65 20 73 65  ovided as the se
10d60 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74 20 74 6f  cond argument to
10d70 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71  ..        /// sq
10d80 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 6d 6f 64  lite3_create_mod
10d90 75 6c 65 28 29 20 61 6e 64 20 61 73 20 74 68 65  ule() and as the
10da0 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 74 68 65   argument to the
10db0 20 55 53 49 4e 47 20 63 6c 61 75 73 65 20 6f 66   USING clause of
10dc0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68  ..        /// th
10dd0 65 20 43 52 45 41 54 45 20 56 49 52 54 55 41 4c  e CREATE VIRTUAL
10de0 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74   TABLE statement
10df0 20 74 68 61 74 20 69 73 20 72 75 6e 6e 69 6e 67   that is running
10e00 2e 20 54 68 65 20 73 65 63 6f 6e 64 2c 0d 0a 20  . The second,.. 
10e10 20 20 20 20 20 20 20 2f 2f 2f 20 61 72 67 76 5b         /// argv[
10e20 31 5d 2c 20 69 73 20 74 68 65 20 6e 61 6d 65 20  1], is the name 
10e30 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20  of the database 
10e40 69 6e 20 77 68 69 63 68 20 74 68 65 20 6e 65 77  in which the new
10e50 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 0d 0a   virtual table..
10e60 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 73 20 62          /// is b
10e70 65 69 6e 67 20 63 72 65 61 74 65 64 2e 20 54 68  eing created. Th
10e80 65 20 64 61 74 61 62 61 73 65 20 6e 61 6d 65 20  e database name 
10e90 69 73 20 22 6d 61 69 6e 22 20 66 6f 72 20 74 68  is "main" for th
10ea0 65 20 70 72 69 6d 61 72 79 0d 0a 20 20 20 20 20  e primary..     
10eb0 20 20 20 2f 2f 2f 20 64 61 74 61 62 61 73 65 2c     /// database,
10ec0 20 6f 72 20 22 74 65 6d 70 22 20 66 6f 72 20 54   or "temp" for T
10ed0 45 4d 50 20 64 61 74 61 62 61 73 65 2c 20 6f 72  EMP database, or
10ee0 20 74 68 65 20 6e 61 6d 65 20 67 69 76 65 6e 20   the name given 
10ef0 61 74 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  at the..        
10f00 2f 2f 2f 20 65 6e 64 20 6f 66 20 74 68 65 20 41  /// end of the A
10f10 54 54 41 43 48 20 73 74 61 74 65 6d 65 6e 74 20  TTACH statement 
10f20 66 6f 72 20 61 74 74 61 63 68 65 64 20 64 61 74  for attached dat
10f30 61 62 61 73 65 73 2e 20 54 68 65 20 74 68 69 72  abases. The thir
10f40 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 65  d..        /// e
10f50 6c 65 6d 65 6e 74 20 6f 66 20 74 68 65 20 61 72  lement of the ar
10f60 72 61 79 2c 20 61 72 67 76 5b 32 5d 2c 20 69 73  ray, argv[2], is
10f70 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   the name of the
10f80 20 6e 65 77 20 76 69 72 74 75 61 6c 0d 0a 20 20   new virtual..  
10f90 20 20 20 20 20 20 2f 2f 2f 20 74 61 62 6c 65 2c        /// table,
10fa0 20 61 73 20 73 70 65 63 69 66 69 65 64 20 66 6f   as specified fo
10fb0 6c 6c 6f 77 69 6e 67 20 74 68 65 20 54 41 42 4c  llowing the TABL
10fc0 45 20 6b 65 79 77 6f 72 64 20 69 6e 20 74 68 65  E keyword in the
10fd0 20 43 52 45 41 54 45 0d 0a 20 20 20 20 20 20 20   CREATE..       
10fe0 20 2f 2f 2f 20 56 49 52 54 55 41 4c 20 54 41 42   /// VIRTUAL TAB
10ff0 4c 45 20 73 74 61 74 65 6d 65 6e 74 2e 20 49 66  LE statement. If
11000 20 70 72 65 73 65 6e 74 2c 20 74 68 65 20 66 6f   present, the fo
11010 75 72 74 68 20 61 6e 64 20 73 75 62 73 65 71 75  urth and subsequ
11020 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ent..        ///
11030 20 73 74 72 69 6e 67 73 20 69 6e 20 74 68 65 20   strings in the 
11040 61 72 67 76 5b 5d 20 61 72 72 61 79 20 72 65 70  argv[] array rep
11050 6f 72 74 20 74 68 65 20 61 72 67 75 6d 65 6e 74  ort the argument
11060 73 20 74 6f 20 74 68 65 20 6d 6f 64 75 6c 65 20  s to the module 
11070 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  name..        //
11080 2f 20 69 6e 20 74 68 65 20 43 52 45 41 54 45 20  / in the CREATE 
11090 56 49 52 54 55 41 4c 20 54 41 42 4c 45 20 73 74  VIRTUAL TABLE st
110a0 61 74 65 6d 65 6e 74 2e 0d 0a 20 20 20 20 20 20  atement...      
110b0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
110c0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
110d0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
110e0 68 65 20 6a 6f 62 20 6f 66 20 74 68 69 73 20 6d  he job of this m
110f0 65 74 68 6f 64 20 69 73 20 74 6f 20 63 6f 6e 73  ethod is to cons
11100 74 72 75 63 74 20 74 68 65 20 6e 65 77 20 76 69  truct the new vi
11110 72 74 75 61 6c 20 74 61 62 6c 65 20 6f 62 6a 65  rtual table obje
11120 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ct..        /// 
11130 28 61 6e 20 73 71 6c 69 74 65 33 5f 76 74 61 62  (an sqlite3_vtab
11140 20 6f 62 6a 65 63 74 29 20 61 6e 64 20 72 65 74   object) and ret
11150 75 72 6e 20 61 20 70 6f 69 6e 74 65 72 20 74 6f  urn a pointer to
11160 20 69 74 20 69 6e 20 2a 70 70 56 54 61 62 2e 0d   it in *ppVTab..
11170 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
11180 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
11190 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
111a0 20 20 2f 2f 2f 20 41 73 20 70 61 72 74 20 6f 66    /// As part of
111b0 20 74 68 65 20 74 61 73 6b 20 6f 66 20 63 72 65   the task of cre
111c0 61 74 69 6e 67 20 61 20 6e 65 77 20 73 71 6c 69  ating a new sqli
111d0 74 65 33 5f 76 74 61 62 20 73 74 72 75 63 74 75  te3_vtab structu
111e0 72 65 2c 20 74 68 69 73 0d 0a 20 20 20 20 20 20  re, this..      
111f0 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 20 6d 75 73    /// method mus
11200 74 20 69 6e 76 6f 6b 65 20 73 71 6c 69 74 65 33  t invoke sqlite3
11210 5f 64 65 63 6c 61 72 65 5f 76 74 61 62 28 29 20  _declare_vtab() 
11220 74 6f 20 74 65 6c 6c 20 74 68 65 20 53 51 4c 69  to tell the SQLi
11230 74 65 20 63 6f 72 65 0d 0a 20 20 20 20 20 20 20  te core..       
11240 20 2f 2f 2f 20 61 62 6f 75 74 20 74 68 65 20 63   /// about the c
11250 6f 6c 75 6d 6e 73 20 61 6e 64 20 64 61 74 61 74  olumns and datat
11260 79 70 65 73 20 69 6e 20 74 68 65 20 76 69 72 74  ypes in the virt
11270 75 61 6c 20 74 61 62 6c 65 2e 20 54 68 65 0d 0a  ual table. The..
11280 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69          /// sqli
11290 74 65 33 5f 64 65 63 6c 61 72 65 5f 76 74 61 62  te3_declare_vtab
112a0 28 29 20 41 50 49 20 68 61 73 20 74 68 65 20 66  () API has the f
112b0 6f 6c 6c 6f 77 69 6e 67 20 70 72 6f 74 6f 74 79  ollowing prototy
112c0 70 65 3a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  pe:..        ///
112d0 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20   </para>..      
112e0 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20    /// <para>..  
112f0 20 20 20 20 20 20 2f 2f 2f 20 3c 63 6f 64 65 3e        /// <code>
11300 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e  ..        /// in
11310 74 20 73 71 6c 69 74 65 33 5f 64 65 63 6c 61 72  t sqlite3_declar
11320 65 5f 76 74 61 62 28 73 71 6c 69 74 65 33 20 2a  e_vtab(sqlite3 *
11330 64 62 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a  db, const char *
11340 7a 43 72 65 61 74 65 54 61 62 6c 65 29 0d 0a 20  zCreateTable).. 
11350 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 63 6f 64         /// </cod
11360 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e>..        /// 
11370 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
11380 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
11390 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 69 72       /// The fir
113a0 73 74 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 73  st argument to s
113b0 71 6c 69 74 65 33 5f 64 65 63 6c 61 72 65 5f 76  qlite3_declare_v
113c0 74 61 62 28 29 20 6d 75 73 74 20 62 65 20 74 68  tab() must be th
113d0 65 20 73 61 6d 65 0d 0a 20 20 20 20 20 20 20 20  e same..        
113e0 2f 2f 2f 20 64 61 74 61 62 61 73 65 20 63 6f 6e  /// database con
113f0 6e 65 63 74 69 6f 6e 20 70 6f 69 6e 74 65 72 20  nection pointer 
11400 61 73 20 74 68 65 20 66 69 72 73 74 20 70 61 72  as the first par
11410 61 6d 65 74 65 72 20 74 6f 20 74 68 69 73 20 6d  ameter to this m
11420 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
11430 2f 2f 2f 20 54 68 65 20 73 65 63 6f 6e 64 20 61  /// The second a
11440 72 67 75 6d 65 6e 74 20 74 6f 20 73 71 6c 69 74  rgument to sqlit
11450 65 33 5f 64 65 63 6c 61 72 65 5f 76 74 61 62 28  e3_declare_vtab(
11460 29 20 6d 75 73 74 20 61 0d 0a 20 20 20 20 20 20  ) must a..      
11470 20 20 2f 2f 2f 20 7a 65 72 6f 2d 74 65 72 6d 69    /// zero-termi
11480 6e 61 74 65 64 20 55 54 46 2d 38 20 73 74 72 69  nated UTF-8 stri
11490 6e 67 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 73  ng that contains
114a0 20 61 20 77 65 6c 6c 2d 66 6f 72 6d 65 64 20 43   a well-formed C
114b0 52 45 41 54 45 0d 0a 20 20 20 20 20 20 20 20 2f  REATE..        /
114c0 2f 2f 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65  // TABLE stateme
114d0 6e 74 20 74 68 61 74 20 64 65 66 69 6e 65 73 20  nt that defines 
114e0 74 68 65 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74  the columns in t
114f0 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
11500 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f   and..        //
11510 2f 20 74 68 65 69 72 20 64 61 74 61 20 74 79 70  / their data typ
11520 65 73 2e 20 54 68 65 20 6e 61 6d 65 20 6f 66 20  es. The name of 
11530 74 68 65 20 74 61 62 6c 65 20 69 6e 20 74 68 69  the table in thi
11540 73 20 43 52 45 41 54 45 20 54 41 42 4c 45 0d 0a  s CREATE TABLE..
11550 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 61 74          /// stat
11560 65 6d 65 6e 74 20 69 73 20 69 67 6e 6f 72 65 64  ement is ignored
11570 2c 20 61 73 20 61 72 65 20 61 6c 6c 20 63 6f 6e  , as are all con
11580 73 74 72 61 69 6e 74 73 2e 20 4f 6e 6c 79 20 74  straints. Only t
11590 68 65 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 73 0d  he column names.
115a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 6e 64  .        /// and
115b0 20 64 61 74 61 74 79 70 65 73 20 6d 61 74 74 65   datatypes matte
115c0 72 2e 20 54 68 65 20 43 52 45 41 54 45 20 54 41  r. The CREATE TA
115d0 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 20 73 74  BLE statement st
115e0 72 69 6e 67 20 6e 65 65 64 20 6e 6f 74 20 74 6f  ring need not to
115f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 62 65  ..        /// be
11600 20 68 65 6c 64 20 69 6e 20 70 65 72 73 69 73 74   held in persist
11610 65 6e 74 20 6d 65 6d 6f 72 79 2e 20 54 68 65 20  ent memory. The 
11620 73 74 72 69 6e 67 20 63 61 6e 20 62 65 20 64 65  string can be de
11630 61 6c 6c 6f 63 61 74 65 64 20 61 6e 64 2f 6f 72  allocated and/or
11640 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 72 65  ..        /// re
11650 75 73 65 64 20 61 73 20 73 6f 6f 6e 20 61 73 20  used as soon as 
11660 74 68 65 20 73 71 6c 69 74 65 33 5f 64 65 63 6c  the sqlite3_decl
11670 61 72 65 5f 76 74 61 62 28 29 20 72 6f 75 74 69  are_vtab() routi
11680 6e 65 20 72 65 74 75 72 6e 73 2e 0d 0a 20 20 20  ne returns...   
11690 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
116a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
116b0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
116c0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
116d0 65 3d 22 70 44 62 22 3e 0d 0a 20 20 20 20 20 20  e="pDb">..      
116e0 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
116f0 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
11700 74 69 6f 6e 20 68 61 6e 64 6c 65 2e 0d 0a 20 20  tion handle...  
11710 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
11720 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
11730 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 41 75  <param name="pAu
11740 78 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  x">..        ///
11750 20 54 68 65 20 6f 72 69 67 69 6e 61 6c 20 6e 61   The original na
11760 74 69 76 65 20 70 6f 69 6e 74 65 72 20 76 61 6c  tive pointer val
11770 75 65 20 74 68 61 74 20 77 61 73 20 70 72 6f 76  ue that was prov
11780 69 64 65 64 20 74 6f 20 74 68 65 0d 0a 20 20 20  ided to the..   
11790 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33       /// sqlite3
117a0 5f 63 72 65 61 74 65 5f 6d 6f 64 75 6c 65 28 29  _create_module()
117b0 2c 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65  , sqlite3_create
117c0 5f 6d 6f 64 75 6c 65 5f 76 32 28 29 20 6f 72 0d  _module_v2() or.
117d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c  .        /// sql
117e0 69 74 65 33 5f 63 72 65 61 74 65 5f 64 69 73 70  ite3_create_disp
117f0 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65 28 29 20  osable_module() 
11800 66 75 6e 63 74 69 6f 6e 73 2e 0d 0a 20 20 20 20  functions...    
11810 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
11820 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
11830 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 63 22  aram name="argc"
11840 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
11850 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 61 72 67  he number of arg
11860 75 6d 65 6e 74 73 20 66 72 6f 6d 20 74 68 65 20  uments from the 
11870 43 52 45 41 54 45 20 56 49 52 54 55 41 4c 20 54  CREATE VIRTUAL T
11880 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 2e 0d  ABLE statement..
11890 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
118a0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
118b0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
118c0 61 72 67 76 22 3e 0d 0a 20 20 20 20 20 20 20 20  argv">..        
118d0 2f 2f 2f 20 54 68 65 20 61 72 72 61 79 20 6f 66  /// The array of
118e0 20 73 74 72 69 6e 67 20 61 72 67 75 6d 65 6e 74   string argument
118f0 73 20 66 72 6f 6d 20 74 68 65 20 43 52 45 41 54  s from the CREAT
11900 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45 0d  E VIRTUAL TABLE.
11910 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 61  .        /// sta
11920 74 65 6d 65 6e 74 2e 0d 0a 20 20 20 20 20 20 20  tement...       
11930 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
11940 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
11950 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d  m name="pVtab">.
11960 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f  .        /// Upo
11970 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69 73 20  n success, this 
11980 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62  parameter must b
11990 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 70 6f  e modified to po
119a0 69 6e 74 20 74 6f 20 74 68 65 20 6e 65 77 6c 79  int to the newly
119b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 72  ..        /// cr
119c0 65 61 74 65 64 20 6e 61 74 69 76 65 20 73 71 6c  eated native sql
119d0 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65  ite3_vtab derive
119e0 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20  d structure...  
119f0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
11a00 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
11a10 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 45 72  <param name="pEr
11a20 72 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ror">..        /
11a30 2f 2f 20 55 70 6f 6e 20 66 61 69 6c 75 72 65 2c  // Upon failure,
11a40 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20   this parameter 
11a50 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64  must be modified
11a60 20 74 6f 20 70 6f 69 6e 74 20 74 6f 20 74 68 65   to point to the
11a70 20 65 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20   error..        
11a80 2f 2f 2f 20 6d 65 73 73 61 67 65 2c 20 77 69 74  /// message, wit
11a90 68 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67  h the underlying
11aa0 20 6d 65 6d 6f 72 79 20 68 61 76 69 6e 67 20 62   memory having b
11ab0 65 65 6e 20 6f 62 74 61 69 6e 65 64 20 66 72 6f  een obtained fro
11ac0 6d 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  m the..        /
11ad0 2f 2f 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f  // sqlite3_mallo
11ae0 63 28 29 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20  c() function... 
11af0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
11b00 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
11b10 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
11b20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61      /// A standa
11b30 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e  rd SQLite return
11b40 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
11b50 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
11b60 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72          SQLiteEr
11b70 72 6f 72 43 6f 64 65 20 78 43 72 65 61 74 65 28  rorCode xCreate(
11b80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
11b90 74 50 74 72 20 70 44 62 2c 0d 0a 20 20 20 20 20  tPtr pDb,..     
11ba0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 41         IntPtr pA
11bb0 75 78 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ux,..           
11bc0 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20   int argc,..    
11bd0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 61          IntPtr a
11be0 72 67 76 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  rgv,..          
11bf0 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 56 74    ref IntPtr pVt
11c00 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ab,..           
11c10 20 72 65 66 20 49 6e 74 50 74 72 20 70 45 72 72   ref IntPtr pErr
11c20 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  or..            
11c30 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  );....        //
11c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c80 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
11c90 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
11ca0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
11cb0 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
11cc0 54 68 65 20 78 43 6f 6e 6e 65 63 74 20 6d 65 74  The xConnect met
11cd0 68 6f 64 20 69 73 20 76 65 72 79 20 73 69 6d 69  hod is very simi
11ce0 6c 61 72 20 74 6f 20 78 43 72 65 61 74 65 2e 20  lar to xCreate. 
11cf0 49 74 20 68 61 73 20 74 68 65 20 73 61 6d 65 0d  It has the same.
11d00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 61 72  .        /// par
11d10 61 6d 65 74 65 72 73 20 61 6e 64 20 63 6f 6e 73  ameters and cons
11d20 74 72 75 63 74 73 20 61 20 6e 65 77 20 73 71 6c  tructs a new sql
11d30 69 74 65 33 5f 76 74 61 62 20 73 74 72 75 63 74  ite3_vtab struct
11d40 75 72 65 20 6a 75 73 74 20 6c 69 6b 65 0d 0a 20  ure just like.. 
11d50 20 20 20 20 20 20 20 2f 2f 2f 20 78 43 72 65 61         /// xCrea
11d60 74 65 2e 20 41 6e 64 20 69 74 20 6d 75 73 74 20  te. And it must 
11d70 61 6c 73 6f 20 63 61 6c 6c 20 73 71 6c 69 74 65  also call sqlite
11d80 33 5f 64 65 63 6c 61 72 65 5f 76 74 61 62 28 29  3_declare_vtab()
11d90 20 6c 69 6b 65 20 78 43 72 65 61 74 65 2e 0d 0a   like xCreate...
11da0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
11db0 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
11dc0 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
11dd0 20 2f 2f 2f 20 54 68 65 20 64 69 66 66 65 72 65   /// The differe
11de0 6e 63 65 20 69 73 20 74 68 61 74 20 78 43 6f 6e  nce is that xCon
11df0 6e 65 63 74 20 69 73 20 63 61 6c 6c 65 64 20 74  nect is called t
11e00 6f 20 65 73 74 61 62 6c 69 73 68 20 61 20 6e 65  o establish a ne
11e10 77 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  w..        /// c
11e20 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20 61 6e 20  onnection to an 
11e30 65 78 69 73 74 69 6e 67 20 76 69 72 74 75 61 6c  existing virtual
11e40 20 74 61 62 6c 65 20 77 68 65 72 65 61 73 20 78   table whereas x
11e50 43 72 65 61 74 65 20 69 73 20 63 61 6c 6c 65 64  Create is called
11e60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 6f  ..        /// to
11e70 20 63 72 65 61 74 65 20 61 20 6e 65 77 20 76 69   create a new vi
11e80 72 74 75 61 6c 20 74 61 62 6c 65 20 66 72 6f 6d  rtual table from
11e90 20 73 63 72 61 74 63 68 2e 0d 0a 20 20 20 20 20   scratch...     
11ea0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a     /// </para>..
11eb0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
11ec0 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
11ed0 54 68 65 20 78 43 72 65 61 74 65 20 61 6e 64 20  The xCreate and 
11ee0 78 43 6f 6e 6e 65 63 74 20 6d 65 74 68 6f 64 73  xConnect methods
11ef0 20 61 72 65 20 6f 6e 6c 79 20 64 69 66 66 65 72   are only differ
11f00 65 6e 74 20 77 68 65 6e 20 74 68 65 0d 0a 20 20  ent when the..  
11f10 20 20 20 20 20 20 2f 2f 2f 20 76 69 72 74 75 61        /// virtua
11f20 6c 20 74 61 62 6c 65 20 68 61 73 20 73 6f 6d 65  l table has some
11f30 20 6b 69 6e 64 20 6f 66 20 62 61 63 6b 69 6e 67   kind of backing
11f40 20 73 74 6f 72 65 20 74 68 61 74 20 6d 75 73 74   store that must
11f50 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   be..        ///
11f60 20 69 6e 69 74 69 61 6c 69 7a 65 64 20 74 68 65   initialized the
11f70 20 66 69 72 73 74 20 74 69 6d 65 20 74 68 65 20   first time the 
11f80 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 69 73  virtual table is
11f90 20 63 72 65 61 74 65 64 2e 20 54 68 65 0d 0a 20   created. The.. 
11fa0 20 20 20 20 20 20 20 2f 2f 2f 20 78 43 72 65 61         /// xCrea
11fb0 74 65 20 6d 65 74 68 6f 64 20 63 72 65 61 74 65  te method create
11fc0 73 20 61 6e 64 20 69 6e 69 74 69 61 6c 69 7a 65  s and initialize
11fd0 73 20 74 68 65 20 62 61 63 6b 69 6e 67 20 73 74  s the backing st
11fe0 6f 72 65 2e 20 54 68 65 0d 0a 20 20 20 20 20 20  ore. The..      
11ff0 20 20 2f 2f 2f 20 78 43 6f 6e 6e 65 63 74 20 6d    /// xConnect m
12000 65 74 68 6f 64 20 6a 75 73 74 20 63 6f 6e 6e 65  ethod just conne
12010 63 74 73 20 74 6f 20 61 6e 20 65 78 69 73 74 69  cts to an existi
12020 6e 67 20 62 61 63 6b 69 6e 67 20 73 74 6f 72 65  ng backing store
12030 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
12040 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
12050 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
12060 20 20 20 20 2f 2f 2f 20 41 73 20 61 6e 20 65 78      /// As an ex
12070 61 6d 70 6c 65 2c 20 63 6f 6e 73 69 64 65 72 20  ample, consider 
12080 61 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  a virtual table 
12090 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 74  implementation t
120a0 68 61 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  hat..        ///
120b0 20 70 72 6f 76 69 64 65 73 20 72 65 61 64 2d 6f   provides read-o
120c0 6e 6c 79 20 61 63 63 65 73 73 20 74 6f 20 65 78  nly access to ex
120d0 69 73 74 69 6e 67 20 63 6f 6d 6d 61 2d 73 65 70  isting comma-sep
120e0 61 72 61 74 65 64 2d 76 61 6c 75 65 20 28 43 53  arated-value (CS
120f0 56 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  V)..        /// 
12100 66 69 6c 65 73 20 6f 6e 20 64 69 73 6b 2e 20 54  files on disk. T
12110 68 65 72 65 20 69 73 20 6e 6f 20 62 61 63 6b 69  here is no backi
12120 6e 67 20 73 74 6f 72 65 20 74 68 61 74 20 6e 65  ng store that ne
12130 65 64 73 20 74 6f 20 62 65 20 63 72 65 61 74 65  eds to be create
12140 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f  d..        /// o
12150 72 20 69 6e 69 74 69 61 6c 69 7a 65 64 20 66 6f  r initialized fo
12160 72 20 73 75 63 68 20 61 20 76 69 72 74 75 61 6c  r such a virtual
12170 20 74 61 62 6c 65 20 28 73 69 6e 63 65 20 74 68   table (since th
12180 65 20 43 53 56 20 66 69 6c 65 73 0d 0a 20 20 20  e CSV files..   
12190 20 20 20 20 20 2f 2f 2f 20 61 6c 72 65 61 64 79       /// already
121a0 20 65 78 69 73 74 20 6f 6e 20 64 69 73 6b 29 20   exist on disk) 
121b0 73 6f 20 74 68 65 20 78 43 72 65 61 74 65 20 61  so the xCreate a
121c0 6e 64 20 78 43 6f 6e 6e 65 63 74 20 6d 65 74 68  nd xConnect meth
121d0 6f 64 73 20 77 69 6c 6c 20 62 65 0d 0a 20 20 20  ods will be..   
121e0 20 20 20 20 20 2f 2f 2f 20 69 64 65 6e 74 69 63       /// identic
121f0 61 6c 20 66 6f 72 20 74 68 61 74 20 6d 6f 64 75  al for that modu
12200 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le...        ///
12210 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20   </para>..      
12220 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20    /// <para>..  
12230 20 20 20 20 20 20 2f 2f 2f 20 41 6e 6f 74 68 65        /// Anothe
12240 72 20 65 78 61 6d 70 6c 65 20 69 73 20 61 20 76  r example is a v
12250 69 72 74 75 61 6c 20 74 61 62 6c 65 20 74 68 61  irtual table tha
12260 74 20 69 6d 70 6c 65 6d 65 6e 74 73 20 61 20 66  t implements a f
12270 75 6c 6c 2d 74 65 78 74 0d 0a 20 20 20 20 20 20  ull-text..      
12280 20 20 2f 2f 2f 20 69 6e 64 65 78 2e 20 54 68 65    /// index. The
12290 20 78 43 72 65 61 74 65 20 6d 65 74 68 6f 64 20   xCreate method 
122a0 6d 75 73 74 20 63 72 65 61 74 65 20 61 6e 64 20  must create and 
122b0 69 6e 69 74 69 61 6c 69 7a 65 20 64 61 74 61 0d  initialize data.
122c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72  .        /// str
122d0 75 63 74 75 72 65 73 20 74 6f 20 68 6f 6c 64 20  uctures to hold 
122e0 74 68 65 20 64 69 63 74 69 6f 6e 61 72 79 20 61  the dictionary a
122f0 6e 64 20 70 6f 73 74 69 6e 67 20 6c 69 73 74 73  nd posting lists
12300 20 66 6f 72 20 74 68 61 74 20 69 6e 64 65 78 2e   for that index.
12310 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
12320 65 20 78 43 6f 6e 6e 65 63 74 20 6d 65 74 68 6f  e xConnect metho
12330 64 2c 20 6f 6e 20 74 68 65 20 6f 74 68 65 72 20  d, on the other 
12340 68 61 6e 64 2c 20 6f 6e 6c 79 20 68 61 73 20 74  hand, only has t
12350 6f 20 6c 6f 63 61 74 65 20 61 6e 64 20 75 73 65  o locate and use
12360 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 6e  ..        /// an
12370 20 65 78 69 73 74 69 6e 67 20 64 69 63 74 69 6f   existing dictio
12380 6e 61 72 79 20 61 6e 64 20 70 6f 73 74 69 6e 67  nary and posting
12390 20 6c 69 73 74 73 20 74 68 61 74 20 77 65 72 65   lists that were
123a0 20 63 72 65 61 74 65 64 20 62 79 20 61 0d 0a 20   created by a.. 
123b0 20 20 20 20 20 20 20 2f 2f 2f 20 70 72 69 6f 72         /// prior
123c0 20 78 43 72 65 61 74 65 20 63 61 6c 6c 2e 0d 0a   xCreate call...
123d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
123e0 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
123f0 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
12400 20 2f 2f 2f 20 54 68 65 20 78 43 6f 6e 6e 65 63   /// The xConnec
12410 74 20 6d 65 74 68 6f 64 20 6d 75 73 74 20 72 65  t method must re
12420 74 75 72 6e 20 53 51 4c 49 54 45 5f 4f 4b 20 69  turn SQLITE_OK i
12430 66 20 69 74 20 69 73 20 73 75 63 63 65 73 73 66  f it is successf
12440 75 6c 20 69 6e 0d 0a 20 20 20 20 20 20 20 20 2f  ul in..        /
12450 2f 2f 20 63 72 65 61 74 69 6e 67 20 74 68 65 20  // creating the 
12460 6e 65 77 20 76 69 72 74 75 61 6c 20 74 61 62 6c  new virtual tabl
12470 65 2c 20 6f 72 20 53 51 4c 49 54 45 5f 45 52 52  e, or SQLITE_ERR
12480 4f 52 20 69 66 20 69 74 20 69 73 20 6e 6f 74 0d  OR if it is not.
12490 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 75 63  .        /// suc
124a0 63 65 73 73 66 75 6c 2e 20 49 66 20 6e 6f 74 20  cessful. If not 
124b0 73 75 63 63 65 73 73 66 75 6c 2c 20 74 68 65 20  successful, the 
124c0 73 71 6c 69 74 65 33 5f 76 74 61 62 20 73 74 72  sqlite3_vtab str
124d0 75 63 74 75 72 65 20 6d 75 73 74 20 6e 6f 74 0d  ucture must not.
124e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 62 65 20  .        /// be 
124f0 61 6c 6c 6f 63 61 74 65 64 2e 20 41 6e 20 65 72  allocated. An er
12500 72 6f 72 20 6d 65 73 73 61 67 65 20 6d 61 79 20  ror message may 
12510 6f 70 74 69 6f 6e 61 6c 6c 79 20 62 65 20 72 65  optionally be re
12520 74 75 72 6e 65 64 20 69 6e 20 2a 70 7a 45 72 72  turned in *pzErr
12530 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 66  ..        /// if
12540 20 75 6e 73 75 63 63 65 73 73 66 75 6c 2e 20 53   unsuccessful. S
12550 70 61 63 65 20 74 6f 20 68 6f 6c 64 20 74 68 65  pace to hold the
12560 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 73   error message s
12570 74 72 69 6e 67 20 6d 75 73 74 20 62 65 0d 0a 20  tring must be.. 
12580 20 20 20 20 20 20 20 2f 2f 2f 20 61 6c 6c 6f 63         /// alloc
12590 61 74 65 64 20 75 73 69 6e 67 20 61 6e 20 53 51  ated using an SQ
125a0 4c 69 74 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  Lite memory allo
125b0 63 61 74 69 6f 6e 20 66 75 6e 63 74 69 6f 6e 20  cation function 
125c0 6c 69 6b 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  like..        //
125d0 2f 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63  / sqlite3_malloc
125e0 28 29 20 6f 72 20 73 71 6c 69 74 65 33 5f 6d 70  () or sqlite3_mp
125f0 72 69 6e 74 66 28 29 20 61 73 20 74 68 65 20 53  rintf() as the S
12600 51 4c 69 74 65 20 63 6f 72 65 20 77 69 6c 6c 0d  QLite core will.
12610 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 74 74  .        /// att
12620 65 6d 70 74 20 74 6f 20 66 72 65 65 20 74 68 65  empt to free the
12630 20 73 70 61 63 65 20 75 73 69 6e 67 20 73 71 6c   space using sql
12640 69 74 65 33 5f 66 72 65 65 28 29 20 61 66 74 65  ite3_free() afte
12650 72 20 74 68 65 20 65 72 72 6f 72 20 68 61 73 0d  r the error has.
12660 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 62 65 65  .        /// bee
12670 6e 20 72 65 70 6f 72 74 65 64 20 75 70 20 74 6f  n reported up to
12680 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e   the application
12690 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
126a0 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
126b0 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
126c0 20 20 20 20 2f 2f 2f 20 54 68 65 20 78 43 6f 6e      /// The xCon
126d0 6e 65 63 74 20 6d 65 74 68 6f 64 20 69 73 20 72  nect method is r
126e0 65 71 75 69 72 65 64 20 66 6f 72 20 65 76 65 72  equired for ever
126f0 79 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 0d  y virtual table.
12700 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6d 70  .        /// imp
12710 6c 65 6d 65 6e 74 61 74 69 6f 6e 2c 20 74 68 6f  lementation, tho
12720 75 67 68 20 74 68 65 20 78 43 72 65 61 74 65 20  ugh the xCreate 
12730 61 6e 64 20 78 43 6f 6e 6e 65 63 74 20 70 6f 69  and xConnect poi
12740 6e 74 65 72 73 20 6f 66 20 74 68 65 0d 0a 20 20  nters of the..  
12750 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65        /// sqlite
12760 33 5f 6d 6f 64 75 6c 65 20 6f 62 6a 65 63 74 20  3_module object 
12770 6d 61 79 20 70 6f 69 6e 74 20 74 6f 20 74 68 65  may point to the
12780 20 73 61 6d 65 20 66 75 6e 63 74 69 6f 6e 20 74   same function t
12790 68 65 20 76 69 72 74 75 61 6c 0d 0a 20 20 20 20  he virtual..    
127a0 20 20 20 20 2f 2f 2f 20 74 61 62 6c 65 20 64 6f      /// table do
127b0 65 73 20 6e 6f 74 20 6e 65 65 64 20 74 6f 20 69  es not need to i
127c0 6e 69 74 69 61 6c 69 7a 65 20 62 61 63 6b 69 6e  nitialize backin
127d0 67 20 73 74 6f 72 65 2e 0d 0a 20 20 20 20 20 20  g store...      
127e0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
127f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
12800 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
12810 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
12820 70 44 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  pDb">..        /
12830 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 64 61  // The native da
12840 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
12850 6e 20 68 61 6e 64 6c 65 2e 0d 0a 20 20 20 20 20  n handle...     
12860 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
12870 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
12880 72 61 6d 20 6e 61 6d 65 3d 22 70 41 75 78 22 3e  ram name="pAux">
12890 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
128a0 65 20 6f 72 69 67 69 6e 61 6c 20 6e 61 74 69 76  e original nativ
128b0 65 20 70 6f 69 6e 74 65 72 20 76 61 6c 75 65 20  e pointer value 
128c0 74 68 61 74 20 77 61 73 20 70 72 6f 76 69 64 65  that was provide
128d0 64 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  d to the..      
128e0 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 63 72    /// sqlite3_cr
128f0 65 61 74 65 5f 6d 6f 64 75 6c 65 28 29 2c 20 73  eate_module(), s
12900 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 6d 6f  qlite3_create_mo
12910 64 75 6c 65 5f 76 32 28 29 20 6f 72 0d 0a 20 20  dule_v2() or..  
12920 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65        /// sqlite
12930 33 5f 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61  3_create_disposa
12940 62 6c 65 5f 6d 6f 64 75 6c 65 28 29 20 66 75 6e  ble_module() fun
12950 63 74 69 6f 6e 73 2e 0d 0a 20 20 20 20 20 20 20  ctions...       
12960 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
12970 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
12980 6d 20 6e 61 6d 65 3d 22 61 72 67 63 22 3e 0d 0a  m name="argc">..
12990 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
129a0 6e 75 6d 62 65 72 20 6f 66 20 61 72 67 75 6d 65  number of argume
129b0 6e 74 73 20 66 72 6f 6d 20 74 68 65 20 43 52 45  nts from the CRE
129c0 41 54 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c  ATE VIRTUAL TABL
129d0 45 20 73 74 61 74 65 6d 65 6e 74 2e 0d 0a 20 20  E statement...  
129e0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
129f0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
12a00 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67  <param name="arg
12a10 76 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  v">..        ///
12a20 20 54 68 65 20 61 72 72 61 79 20 6f 66 20 73 74   The array of st
12a30 72 69 6e 67 20 61 72 67 75 6d 65 6e 74 73 20 66  ring arguments f
12a40 72 6f 6d 20 74 68 65 20 43 52 45 41 54 45 20 56  rom the CREATE V
12a50 49 52 54 55 41 4c 20 54 41 42 4c 45 0d 0a 20 20  IRTUAL TABLE..  
12a60 20 20 20 20 20 20 2f 2f 2f 20 73 74 61 74 65 6d        /// statem
12a70 65 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ent...        //
12a80 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
12a90 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
12aa0 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20  ame="pVtab">..  
12ab0 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73        /// Upon s
12ac0 75 63 63 65 73 73 2c 20 74 68 69 73 20 70 61 72  uccess, this par
12ad0 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d  ameter must be m
12ae0 6f 64 69 66 69 65 64 20 74 6f 20 70 6f 69 6e 74  odified to point
12af0 20 74 6f 20 74 68 65 20 6e 65 77 6c 79 0d 0a 20   to the newly.. 
12b00 20 20 20 20 20 20 20 2f 2f 2f 20 63 72 65 61 74         /// creat
12b10 65 64 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65  ed native sqlite
12b20 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73  3_vtab derived s
12b30 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20  tructure...     
12b40 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
12b50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
12b60 72 61 6d 20 6e 61 6d 65 3d 22 70 45 72 72 6f 72  ram name="pError
12b70 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
12b80 55 70 6f 6e 20 66 61 69 6c 75 72 65 2c 20 74 68  Upon failure, th
12b90 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73  is parameter mus
12ba0 74 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f  t be modified to
12bb0 20 70 6f 69 6e 74 20 74 6f 20 74 68 65 20 65 72   point to the er
12bc0 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ror..        ///
12bd0 20 6d 65 73 73 61 67 65 2c 20 77 69 74 68 20 74   message, with t
12be0 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 6d 65  he underlying me
12bf0 6d 6f 72 79 20 68 61 76 69 6e 67 20 62 65 65 6e  mory having been
12c00 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 74   obtained from t
12c10 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
12c20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29  sqlite3_malloc()
12c30 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20 20   function...    
12c40 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
12c50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
12c60 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
12c70 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20   /// A standard 
12c80 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f  SQLite return co
12c90 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de...        ///
12ca0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
12cb0 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72       SQLiteError
12cc0 43 6f 64 65 20 78 43 6f 6e 6e 65 63 74 28 0d 0a  Code xConnect(..
12cd0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
12ce0 74 72 20 70 44 62 2c 0d 0a 20 20 20 20 20 20 20  tr pDb,..       
12cf0 20 20 20 20 20 49 6e 74 50 74 72 20 70 41 75 78       IntPtr pAux
12d00 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ,..            i
12d10 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20  nt argc,..      
12d20 20 20 20 20 20 20 49 6e 74 50 74 72 20 61 72 67        IntPtr arg
12d30 76 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  v,..            
12d40 72 65 66 20 49 6e 74 50 74 72 20 70 56 74 61 62  ref IntPtr pVtab
12d50 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ,..            r
12d60 65 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72  ef IntPtr pError
12d70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b  ..            );
12d80 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
12d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12dd0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
12de0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
12df0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
12e00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 51  ..        /// SQ
12e10 4c 69 74 65 20 75 73 65 73 20 74 68 65 20 78 42  Lite uses the xB
12e20 65 73 74 49 6e 64 65 78 20 6d 65 74 68 6f 64 20  estIndex method 
12e30 6f 66 20 61 20 76 69 72 74 75 61 6c 20 74 61 62  of a virtual tab
12e40 6c 65 20 6d 6f 64 75 6c 65 20 74 6f 0d 0a 20 20  le module to..  
12e50 20 20 20 20 20 20 2f 2f 2f 20 64 65 74 65 72 6d        /// determ
12e60 69 6e 65 20 74 68 65 20 62 65 73 74 20 77 61 79  ine the best way
12e70 20 74 6f 20 61 63 63 65 73 73 20 74 68 65 20 76   to access the v
12e80 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 20 54 68  irtual table. Th
12e90 65 20 78 42 65 73 74 49 6e 64 65 78 0d 0a 20 20  e xBestIndex..  
12ea0 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64        /// method
12eb0 20 68 61 73 20 61 20 70 72 6f 74 6f 74 79 70 65   has a prototype
12ec0 20 6c 69 6b 65 20 74 68 69 73 3a 0d 0a 20 20 20   like this:..   
12ed0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
12ee0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 63  ..        /// <c
12ef0 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode>..        //
12f00 2f 20 69 6e 74 20 28 2a 78 42 65 73 74 49 6e 64  / int (*xBestInd
12f10 65 78 29 28 73 71 6c 69 74 65 33 5f 76 74 61 62  ex)(sqlite3_vtab
12f20 20 2a 70 56 54 61 62 2c 20 73 71 6c 69 74 65 33   *pVTab, sqlite3
12f30 5f 69 6e 64 65 78 5f 69 6e 66 6f 2a 29 3b 0d 0a  _index_info*);..
12f40 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 63 6f          /// </co
12f50 64 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de>..        ///
12f60 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
12f70 20 2f 2f 2f 20 54 68 65 20 53 51 4c 69 74 65 20   /// The SQLite 
12f80 63 6f 72 65 20 63 6f 6d 6d 75 6e 69 63 61 74 65  core communicate
12f90 73 20 77 69 74 68 20 74 68 65 20 78 42 65 73 74  s with the xBest
12fa0 49 6e 64 65 78 20 6d 65 74 68 6f 64 20 62 79 20  Index method by 
12fb0 66 69 6c 6c 69 6e 67 0d 0a 20 20 20 20 20 20 20  filling..       
12fc0 20 2f 2f 2f 20 69 6e 20 63 65 72 74 61 69 6e 20   /// in certain 
12fd0 66 69 65 6c 64 73 20 6f 66 20 74 68 65 20 73 71  fields of the sq
12fe0 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f  lite3_index_info
12ff0 20 73 74 72 75 63 74 75 72 65 20 61 6e 64 20 70   structure and p
13000 61 73 73 69 6e 67 20 61 0d 0a 20 20 20 20 20 20  assing a..      
13010 20 20 2f 2f 2f 20 70 6f 69 6e 74 65 72 20 74 6f    /// pointer to
13020 20 74 68 61 74 20 73 74 72 75 63 74 75 72 65 20   that structure 
13030 69 6e 74 6f 20 78 42 65 73 74 49 6e 64 65 78 20  into xBestIndex 
13040 61 73 20 74 68 65 20 73 65 63 6f 6e 64 20 70 61  as the second pa
13050 72 61 6d 65 74 65 72 2e 0d 0a 20 20 20 20 20 20  rameter...      
13060 20 20 2f 2f 2f 20 54 68 65 20 78 42 65 73 74 49    /// The xBestI
13070 6e 64 65 78 20 6d 65 74 68 6f 64 20 66 69 6c 6c  ndex method fill
13080 73 20 6f 75 74 20 6f 74 68 65 72 20 66 69 65 6c  s out other fiel
13090 64 73 20 6f 66 20 74 68 69 73 20 73 74 72 75 63  ds of this struc
130a0 74 75 72 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ture..        //
130b0 2f 20 77 68 69 63 68 20 66 6f 72 6d 73 20 74 68  / which forms th
130c0 65 20 72 65 70 6c 79 2e 20 54 68 65 20 73 71 6c  e reply. The sql
130d0 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 20  ite3_index_info 
130e0 73 74 72 75 63 74 75 72 65 20 6c 6f 6f 6b 73 20  structure looks 
130f0 6c 69 6b 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  like..        //
13100 2f 20 74 68 69 73 3a 0d 0a 20 20 20 20 20 20 20  / this:..       
13110 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
13120 20 20 20 20 20 20 2f 2f 2f 20 3c 63 6f 64 65 3e        /// <code>
13130 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 73  ..        ///  s
13140 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6e  truct sqlite3_in
13150 64 65 78 5f 69 6e 66 6f 20 7b 0d 0a 20 20 20 20  dex_info {..    
13160 20 20 20 20 2f 2f 2f 20 20 20 20 2f 2a 20 49 6e      ///    /* In
13170 70 75 74 73 20 2a 2f 0d 0a 20 20 20 20 20 20 20  puts */..       
13180 20 2f 2f 2f 20 20 20 20 63 6f 6e 73 74 20 69 6e   ///    const in
13190 74 20 6e 43 6f 6e 73 74 72 61 69 6e 74 3b 20 20  t nConstraint;  
131a0 20 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20 65 6e   /* Number of en
131b0 74 72 69 65 73 20 69 6e 20 61 43 6f 6e 73 74 72  tries in aConstr
131c0 61 69 6e 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20  aint */..       
131d0 20 2f 2f 2f 20 20 20 20 63 6f 6e 73 74 20 73 74   ///    const st
131e0 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6e 64  ruct sqlite3_ind
131f0 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 20 7b 0d  ex_constraint {.
13200 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20  .        ///    
13210 20 20 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b 20     int iColumn; 
13220 20 20 20 20 20 20 20 20 20 2f 2a 20 43 6f 6c 75           /* Colu
13230 6d 6e 20 6f 6e 20 6c 65 66 74 2d 68 61 6e 64 20  mn on left-hand 
13240 73 69 64 65 20 6f 66 0d 0a 20 20 20 20 20 20 20  side of..       
13250 20 2f 2f 2f 20 20 20 20 20 20 20 20 20 20 20 20   ///            
13260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13270 20 20 2a 20 63 6f 6e 73 74 72 61 69 6e 74 20 2a    * constraint *
13280 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20  /..        ///  
13290 20 20 20 20 20 75 6e 73 69 67 6e 65 64 20 63 68       unsigned ch
132a0 61 72 20 6f 70 3b 20 20 20 20 20 2f 2a 20 43 6f  ar op;     /* Co
132b0 6e 73 74 72 61 69 6e 74 20 6f 70 65 72 61 74 6f  nstraint operato
132c0 72 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f  r */..        //
132d0 2f 20 20 20 20 20 20 20 75 6e 73 69 67 6e 65 64  /       unsigned
132e0 20 63 68 61 72 20 75 73 61 62 6c 65 3b 20 2f 2a   char usable; /*
132f0 20 54 72 75 65 20 69 66 20 74 68 69 73 20 63 6f   True if this co
13300 6e 73 74 72 61 69 6e 74 20 69 73 20 75 73 61 62  nstraint is usab
13310 6c 65 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f  le */..        /
13320 2f 2f 20 20 20 20 20 20 20 69 6e 74 20 69 54 65  //       int iTe
13330 72 6d 4f 66 66 73 65 74 3b 20 20 20 20 20 20 2f  rmOffset;      /
13340 2a 20 55 73 65 64 20 69 6e 74 65 72 6e 61 6c 6c  * Used internall
13350 79 20 2d 20 78 42 65 73 74 49 6e 64 65 78 20 73  y - xBestIndex s
13360 68 6f 75 6c 64 0d 0a 20 20 20 20 20 20 20 20 2f  hould..        /
13370 2f 2f 20 20 20 20 20 20 20 20 20 20 20 20 20 20  //              
13380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13390 2a 20 69 67 6e 6f 72 65 20 2a 2f 0d 0a 20 20 20  * ignore */..   
133a0 20 20 20 20 20 2f 2f 2f 20 20 20 20 7d 20 2a 63       ///    } *c
133b0 6f 6e 73 74 20 61 43 6f 6e 73 74 72 61 69 6e 74  onst aConstraint
133c0 3b 20 20 20 20 2f 2a 20 54 61 62 6c 65 20 6f 66  ;    /* Table of
133d0 20 57 48 45 52 45 20 63 6c 61 75 73 65 20 63 6f   WHERE clause co
133e0 6e 73 74 72 61 69 6e 74 73 20 2a 2f 0d 0a 20 20  nstraints */..  
133f0 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 63 6f 6e        ///    con
13400 73 74 20 69 6e 74 20 6e 4f 72 64 65 72 42 79 3b  st int nOrderBy;
13410 20 20 20 20 20 20 2f 2a 20 4e 75 6d 62 65 72 20        /* Number 
13420 6f 66 20 74 65 72 6d 73 20 69 6e 20 74 68 65 20  of terms in the 
13430 4f 52 44 45 52 20 42 59 0d 0a 20 20 20 20 20 20  ORDER BY..      
13440 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20 20 20    ///           
13450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13460 20 20 20 2a 20 63 6c 61 75 73 65 20 2a 2f 0d 0a     * clause */..
13470 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 63          ///    c
13480 6f 6e 73 74 20 73 74 72 75 63 74 20 73 71 6c 69  onst struct sqli
13490 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62  te3_index_orderb
134a0 79 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  y {..        ///
134b0 20 20 20 20 20 20 20 69 6e 74 20 69 43 6f 6c 75         int iColu
134c0 6d 6e 3b 20 20 20 20 20 20 20 20 20 20 2f 2a 20  mn;          /* 
134d0 43 6f 6c 75 6d 6e 20 6e 75 6d 62 65 72 20 2a 2f  Column number */
134e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20  ..        ///   
134f0 20 20 20 20 75 6e 73 69 67 6e 65 64 20 63 68 61      unsigned cha
13500 72 20 64 65 73 63 3b 20 20 20 2f 2a 20 54 72 75  r desc;   /* Tru
13510 65 20 66 6f 72 20 44 45 53 43 2e 20 20 46 61 6c  e for DESC.  Fal
13520 73 65 20 66 6f 72 20 41 53 43 2e 20 2a 2f 0d 0a  se for ASC. */..
13530 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 7d          ///    }
13540 20 2a 63 6f 6e 73 74 20 61 4f 72 64 65 72 42 79   *const aOrderBy
13550 3b 20 20 20 20 20 20 20 2f 2a 20 54 68 65 20 4f  ;       /* The O
13560 52 44 45 52 20 42 59 20 63 6c 61 75 73 65 20 2a  RDER BY clause *
13570 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20  /..        ///  
13580 20 20 2f 2a 20 4f 75 74 70 75 74 73 20 2a 2f 0d    /* Outputs */.
13590 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20  .        ///    
135a0 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69  struct sqlite3_i
135b0 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f  ndex_constraint_
135c0 75 73 61 67 65 20 7b 0d 0a 20 20 20 20 20 20 20  usage {..       
135d0 20 2f 2f 2f 20 20 20 20 20 20 69 6e 74 20 61 72   ///      int ar
135e0 67 76 49 6e 64 65 78 3b 20 20 20 20 20 20 20 20  gvIndex;        
135f0 20 2f 2a 20 69 66 20 67 72 65 61 74 65 72 20 74   /* if greater t
13600 68 61 6e 20 7a 65 72 6f 2c 20 63 6f 6e 73 74 72  han zero, constr
13610 61 69 6e 74 20 69 73 0d 0a 20 20 20 20 20 20 20  aint is..       
13620 20 2f 2f 2f 20 20 20 20 20 20 20 20 20 20 20 20   ///            
13630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13640 20 20 2a 20 70 61 72 74 20 6f 66 20 61 72 67 76    * part of argv
13650 20 74 6f 20 78 46 69 6c 74 65 72 20 2a 2f 0d 0a   to xFilter */..
13660 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20          ///     
13670 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 6f   unsigned char o
13680 6d 69 74 3b 20 20 20 20 2f 2a 20 44 6f 20 6e 6f  mit;    /* Do no
13690 74 20 63 6f 64 65 20 61 20 74 65 73 74 20 66 6f  t code a test fo
136a0 72 20 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20  r this..        
136b0 2f 2f 2f 20 20 20 20 20 20 20 20 20 20 20 20 20  ///             
136c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
136d0 20 2a 20 63 6f 6e 73 74 72 61 69 6e 74 20 2a 2f   * constraint */
136e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20  ..        ///   
136f0 20 7d 20 2a 63 6f 6e 73 74 20 61 43 6f 6e 73 74   } *const aConst
13700 72 61 69 6e 74 55 73 61 67 65 3b 0d 0a 20 20 20  raintUsage;..   
13710 20 20 20 20 20 2f 2f 2f 20 20 20 20 69 6e 74 20       ///    int 
13720 69 64 78 4e 75 6d 3b 20 20 20 20 20 20 20 20 20  idxNum;         
13730 20 20 20 20 20 2f 2a 20 4e 75 6d 62 65 72 20 75       /* Number u
13740 73 65 64 20 74 6f 20 69 64 65 6e 74 69 66 79 20  sed to identify 
13750 74 68 65 20 69 6e 64 65 78 20 2a 2f 0d 0a 20 20  the index */..  
13760 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 63 68 61        ///    cha
13770 72 20 2a 69 64 78 53 74 72 3b 20 20 20 20 20 20  r *idxStr;      
13780 20 20 20 20 20 20 2f 2a 20 53 74 72 69 6e 67 2c        /* String,
13790 20 70 6f 73 73 69 62 6c 79 20 6f 62 74 61 69 6e   possibly obtain
137a0 65 64 20 66 72 6f 6d 0d 0a 20 20 20 20 20 20 20  ed from..       
137b0 20 2f 2f 2f 20 20 20 20 20 20 20 20 20 20 20 20   ///            
137c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
137d0 20 20 2a 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c    * sqlite3_mall
137e0 6f 63 28 29 20 2a 2f 0d 0a 20 20 20 20 20 20 20  oc() */..       
137f0 20 2f 2f 2f 20 20 20 20 69 6e 74 20 6e 65 65 64   ///    int need
13800 54 6f 46 72 65 65 49 64 78 53 74 72 3b 20 20 20  ToFreeIdxStr;   
13810 20 2f 2a 20 46 72 65 65 20 69 64 78 53 74 72 20   /* Free idxStr 
13820 75 73 69 6e 67 20 73 71 6c 69 74 65 33 5f 66 72  using sqlite3_fr
13830 65 65 28 29 20 69 66 0d 0a 20 20 20 20 20 20 20  ee() if..       
13840 20 2f 2f 2f 20 20 20 20 20 20 20 20 20 20 20 20   ///            
13850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13860 20 20 2a 20 74 72 75 65 20 2a 2f 0d 0a 20 20 20    * true */..   
13870 20 20 20 20 20 2f 2f 2f 20 20 20 20 69 6e 74 20       ///    int 
13880 6f 72 64 65 72 42 79 43 6f 6e 73 75 6d 65 64 3b  orderByConsumed;
13890 20 20 20 20 20 2f 2a 20 54 72 75 65 20 69 66 20       /* True if 
138a0 6f 75 74 70 75 74 20 69 73 20 61 6c 72 65 61 64  output is alread
138b0 79 20 6f 72 64 65 72 65 64 20 2a 2f 0d 0a 20 20  y ordered */..  
138c0 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 64 6f 75        ///    dou
138d0 62 6c 65 20 65 73 74 69 6d 61 74 65 64 43 6f 73  ble estimatedCos
138e0 74 3b 20 20 20 20 2f 2a 20 45 73 74 69 6d 61 74  t;    /* Estimat
138f0 65 64 20 63 6f 73 74 20 6f 66 20 75 73 69 6e 67  ed cost of using
13900 20 74 68 69 73 20 69 6e 64 65 78 20 2a 2f 0d 0a   this index */..
13910 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 7d 3b 0d          ///  };.
13920 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 63  .        /// </c
13930 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode>..        //
13940 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
13950 20 20 2f 2f 2f 20 49 6e 20 61 64 64 69 74 69 6f    /// In additio
13960 6e 2c 20 74 68 65 72 65 20 61 72 65 20 73 6f 6d  n, there are som
13970 65 20 64 65 66 69 6e 65 64 20 63 6f 6e 73 74 61  e defined consta
13980 6e 74 73 3a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nts:..        //
13990 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20  / </para>..     
139a0 20 20 20 2f 2f 2f 20 3c 63 6f 64 65 3e 0d 0a 20     /// <code>.. 
139b0 20 20 20 20 20 20 20 2f 2f 2f 20 20 23 64 65 66         ///  #def
139c0 69 6e 65 20 53 51 4c 49 54 45 5f 49 4e 44 45 58  ine SQLITE_INDEX
139d0 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 45 51 20 20  _CONSTRAINT_EQ  
139e0 20 20 32 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f    2..        ///
139f0 20 20 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45    #define SQLITE
13a00 5f 49 4e 44 45 58 5f 43 4f 4e 53 54 52 41 49 4e  _INDEX_CONSTRAIN
13a10 54 5f 47 54 20 20 20 20 34 0d 0a 20 20 20 20 20  T_GT    4..     
13a20 20 20 20 2f 2f 2f 20 20 23 64 65 66 69 6e 65 20     ///  #define 
13a30 53 51 4c 49 54 45 5f 49 4e 44 45 58 5f 43 4f 4e  SQLITE_INDEX_CON
13a40 53 54 52 41 49 4e 54 5f 4c 45 20 20 20 20 38 0d  STRAINT_LE    8.
13a50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 23 64  .        ///  #d
13a60 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4e 44  efine SQLITE_IND
13a70 45 58 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 4c 54  EX_CONSTRAINT_LT
13a80 20 20 20 20 31 36 0d 0a 20 20 20 20 20 20 20 20      16..        
13a90 2f 2f 2f 20 20 23 64 65 66 69 6e 65 20 53 51 4c  ///  #define SQL
13aa0 49 54 45 5f 49 4e 44 45 58 5f 43 4f 4e 53 54 52  ITE_INDEX_CONSTR
13ab0 41 49 4e 54 5f 47 45 20 20 20 20 33 32 0d 0a 20  AINT_GE    32.. 
13ac0 20 20 20 20 20 20 20 2f 2f 2f 20 20 23 64 65 66         ///  #def
13ad0 69 6e 65 20 53 51 4c 49 54 45 5f 49 4e 44 45 58  ine SQLITE_INDEX
13ae0 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 4d 41 54 43  _CONSTRAINT_MATC
13af0 48 20 36 34 0d 0a 20 20 20 20 20 20 20 20 2f 2f  H 64..        //
13b00 2f 20 3c 2f 63 6f 64 65 3e 0d 0a 20 20 20 20 20  / </code>..     
13b10 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20     /// <para>.. 
13b20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 53         /// The S
13b30 51 4c 69 74 65 20 63 6f 72 65 20 63 61 6c 6c 73  QLite core calls
13b40 20 74 68 65 20 78 42 65 73 74 49 6e 64 65 78 20   the xBestIndex 
13b50 6d 65 74 68 6f 64 20 77 68 65 6e 20 69 74 20 69  method when it i
13b60 73 20 63 6f 6d 70 69 6c 69 6e 67 20 61 0d 0a 20  s compiling a.. 
13b70 20 20 20 20 20 20 20 2f 2f 2f 20 71 75 65 72 79         /// query
13b80 20 74 68 61 74 20 69 6e 76 6f 6c 76 65 73 20 61   that involves a
13b90 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 20   virtual table. 
13ba0 49 6e 20 6f 74 68 65 72 20 77 6f 72 64 73 2c 20  In other words, 
13bb0 53 51 4c 69 74 65 20 63 61 6c 6c 73 0d 0a 20 20  SQLite calls..  
13bc0 20 20 20 20 20 20 2f 2f 2f 20 74 68 69 73 20 6d        /// this m
13bd0 65 74 68 6f 64 20 77 68 65 6e 20 69 74 20 69 73  ethod when it is
13be0 20 72 75 6e 6e 69 6e 67 20 73 71 6c 69 74 65 33   running sqlite3
13bf0 5f 70 72 65 70 61 72 65 28 29 20 6f 72 20 74 68  _prepare() or th
13c00 65 20 65 71 75 69 76 61 6c 65 6e 74 2e 0d 0a 20  e equivalent... 
13c10 20 20 20 20 20 20 20 2f 2f 2f 20 42 79 20 63 61         /// By ca
13c20 6c 6c 69 6e 67 20 74 68 69 73 20 6d 65 74 68 6f  lling this metho
13c30 64 2c 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  d, the SQLite co
13c40 72 65 20 69 73 20 73 61 79 69 6e 67 20 74 6f 20  re is saying to 
13c50 74 68 65 20 76 69 72 74 75 61 6c 0d 0a 20 20 20  the virtual..   
13c60 20 20 20 20 20 2f 2f 2f 20 74 61 62 6c 65 20 74       /// table t
13c70 68 61 74 20 69 74 20 6e 65 65 64 73 20 74 6f 20  hat it needs to 
13c80 61 63 63 65 73 73 20 73 6f 6d 65 20 73 75 62 73  access some subs
13c90 65 74 20 6f 66 20 74 68 65 20 72 6f 77 73 20 69  et of the rows i
13ca0 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  n the..        /
13cb0 2f 2f 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  // virtual table
13cc0 20 61 6e 64 20 69 74 20 77 61 6e 74 73 20 74 6f   and it wants to
13cd0 20 6b 6e 6f 77 20 74 68 65 20 6d 6f 73 74 20 65   know the most e
13ce0 66 66 69 63 69 65 6e 74 20 77 61 79 20 74 6f 20  fficient way to 
13cf0 64 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  do..        /// 
13d00 74 68 61 74 20 61 63 63 65 73 73 2e 20 54 68 65  that access. The
13d10 20 78 42 65 73 74 49 6e 64 65 78 20 6d 65 74 68   xBestIndex meth
13d20 6f 64 20 72 65 70 6c 69 65 73 20 77 69 74 68 20  od replies with 
13d30 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 74 68 61 74  information that
13d40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68  ..        /// th
13d50 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 63 61  e SQLite core ca
13d60 6e 20 74 68 65 6e 20 75 73 65 20 74 6f 20 63 6f  n then use to co
13d70 6e 64 75 63 74 20 61 6e 20 65 66 66 69 63 69 65  nduct an efficie
13d80 6e 74 20 73 65 61 72 63 68 20 6f 66 20 74 68 65  nt search of the
13d90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 69  ..        /// vi
13da0 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20  rtual table...  
13db0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
13dc0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
13dd0 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
13de0 2f 2f 20 57 68 69 6c 65 20 63 6f 6d 70 69 6c 69  // While compili
13df0 6e 67 20 61 20 73 69 6e 67 6c 65 20 53 51 4c 20  ng a single SQL 
13e00 71 75 65 72 79 2c 20 74 68 65 20 53 51 4c 69 74  query, the SQLit
13e10 65 20 63 6f 72 65 20 6d 69 67 68 74 20 63 61 6c  e core might cal
13e20 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 78  l..        /// x
13e30 42 65 73 74 49 6e 64 65 78 20 6d 75 6c 74 69 70  BestIndex multip
13e40 6c 65 20 74 69 6d 65 73 20 77 69 74 68 20 64 69  le times with di
13e50 66 66 65 72 65 6e 74 20 73 65 74 74 69 6e 67 73  fferent settings
13e60 20 69 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   in..        ///
13e70 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69   sqlite3_index_i
13e80 6e 66 6f 2e 20 54 68 65 20 53 51 4c 69 74 65 20  nfo. The SQLite 
13e90 63 6f 72 65 20 77 69 6c 6c 20 74 68 65 6e 20 73  core will then s
13ea0 65 6c 65 63 74 20 74 68 65 0d 0a 20 20 20 20 20  elect the..     
13eb0 20 20 20 2f 2f 2f 20 63 6f 6d 62 69 6e 61 74 69     /// combinati
13ec0 6f 6e 20 74 68 61 74 20 61 70 70 65 61 72 73 20  on that appears 
13ed0 74 6f 20 67 69 76 65 20 74 68 65 20 62 65 73 74  to give the best
13ee0 20 70 65 72 66 6f 72 6d 61 6e 63 65 2e 0d 0a 20   performance... 
13ef0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
13f00 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
13f10 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
13f20 2f 2f 2f 20 42 65 66 6f 72 65 20 63 61 6c 6c 69  /// Before calli
13f30 6e 67 20 74 68 69 73 20 6d 65 74 68 6f 64 2c 20  ng this method, 
13f40 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
13f50 69 6e 69 74 69 61 6c 69 7a 65 73 20 61 6e 20 69  initializes an i
13f60 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20 20 20 20  nstance..       
13f70 20 2f 2f 2f 20 6f 66 20 74 68 65 20 73 71 6c 69   /// of the sqli
13f80 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 20 73  te3_index_info s
13f90 74 72 75 63 74 75 72 65 20 77 69 74 68 20 69 6e  tructure with in
13fa0 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20  formation about 
13fb0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
13fc0 20 71 75 65 72 79 20 74 68 61 74 20 69 74 20 69   query that it i
13fd0 73 20 63 75 72 72 65 6e 74 6c 79 20 74 72 79 69  s currently tryi
13fe0 6e 67 20 74 6f 20 70 72 6f 63 65 73 73 2e 20 54  ng to process. T
13ff0 68 69 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 0d  his information.
14000 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 65 72  .        /// der
14010 69 76 65 73 20 6d 61 69 6e 6c 79 20 66 72 6f 6d  ives mainly from
14020 20 74 68 65 20 57 48 45 52 45 20 63 6c 61 75 73   the WHERE claus
14030 65 20 61 6e 64 20 4f 52 44 45 52 20 42 59 20 6f  e and ORDER BY o
14040 72 20 47 52 4f 55 50 20 42 59 0d 0a 20 20 20 20  r GROUP BY..    
14050 20 20 20 20 2f 2f 2f 20 63 6c 61 75 73 65 73 20      /// clauses 
14060 6f 66 20 74 68 65 20 71 75 65 72 79 2c 20 62 75  of the query, bu
14070 74 20 61 6c 73 6f 20 66 72 6f 6d 20 61 6e 79 20  t also from any 
14080 4f 4e 20 6f 72 20 55 53 49 4e 47 20 63 6c 61 75  ON or USING clau
14090 73 65 73 20 69 66 20 74 68 65 0d 0a 20 20 20 20  ses if the..    
140a0 20 20 20 20 2f 2f 2f 20 71 75 65 72 79 20 69 73      /// query is
140b0 20 61 20 6a 6f 69 6e 2e 20 54 68 65 20 69 6e 66   a join. The inf
140c0 6f 72 6d 61 74 69 6f 6e 20 74 68 61 74 20 74 68  ormation that th
140d0 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 70 72  e SQLite core pr
140e0 6f 76 69 64 65 73 20 74 6f 0d 0a 20 20 20 20 20  ovides to..     
140f0 20 20 20 2f 2f 2f 20 74 68 65 20 78 42 65 73 74     /// the xBest
14100 49 6e 64 65 78 20 6d 65 74 68 6f 64 20 69 73 20  Index method is 
14110 68 65 6c 64 20 69 6e 20 74 68 65 20 70 61 72 74  held in the part
14120 20 6f 66 20 74 68 65 20 73 74 72 75 63 74 75 72   of the structur
14130 65 20 74 68 61 74 20 69 73 0d 0a 20 20 20 20 20  e that is..     
14140 20 20 20 2f 2f 2f 20 6d 61 72 6b 65 64 20 61 73     /// marked as
14150 20 22 49 6e 70 75 74 73 22 2e 20 54 68 65 20 22   "Inputs". The "
14160 4f 75 74 70 75 74 73 22 20 73 65 63 74 69 6f 6e  Outputs" section
14170 20 69 73 20 69 6e 69 74 69 61 6c 69 7a 65 64 20   is initialized 
14180 74 6f 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20  to zero...      
14190 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
141a0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
141b0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
141c0 68 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69  he information i
141d0 6e 20 74 68 65 20 73 71 6c 69 74 65 33 5f 69 6e  n the sqlite3_in
141e0 64 65 78 5f 69 6e 66 6f 20 73 74 72 75 63 74 75  dex_info structu
141f0 72 65 20 69 73 20 65 70 68 65 6d 65 72 61 6c 0d  re is ephemeral.
14200 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 6e 64  .        /// and
14210 20 6d 61 79 20 62 65 20 6f 76 65 72 77 72 69 74   may be overwrit
14220 74 65 6e 20 6f 72 20 64 65 61 6c 6c 6f 63 61 74  ten or deallocat
14230 65 64 20 61 73 20 73 6f 6f 6e 20 61 73 20 74 68  ed as soon as th
14240 65 20 78 42 65 73 74 49 6e 64 65 78 0d 0a 20 20  e xBestIndex..  
14250 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64        /// method
14260 20 72 65 74 75 72 6e 73 2e 20 49 66 20 74 68 65   returns. If the
14270 20 78 42 65 73 74 49 6e 64 65 78 20 6d 65 74 68   xBestIndex meth
14280 6f 64 20 6e 65 65 64 73 20 74 6f 20 72 65 6d 65  od needs to reme
14290 6d 62 65 72 20 61 6e 79 20 70 61 72 74 0d 0a 20  mber any part.. 
142a0 20 20 20 20 20 20 20 2f 2f 2f 20 6f 66 20 74 68         /// of th
142b0 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  e sqlite3_index_
142c0 69 6e 66 6f 20 73 74 72 75 63 74 75 72 65 2c 20  info structure, 
142d0 69 74 20 73 68 6f 75 6c 64 20 6d 61 6b 65 20 61  it should make a
142e0 20 63 6f 70 79 2e 20 43 61 72 65 0d 0a 20 20 20   copy. Care..   
142f0 20 20 20 20 20 2f 2f 2f 20 6d 75 73 74 20 62 65       /// must be
14300 20 74 61 6b 65 20 74 6f 20 73 74 6f 72 65 20 74   take to store t
14310 68 65 20 63 6f 70 79 20 69 6e 20 61 20 70 6c 61  he copy in a pla
14320 63 65 20 77 68 65 72 65 20 69 74 20 77 69 6c 6c  ce where it will
14330 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   be..        ///
14340 20 64 65 61 6c 6c 6f 63 61 74 65 64 2c 20 73 75   deallocated, su
14350 63 68 20 61 73 20 69 6e 20 74 68 65 20 69 64 78  ch as in the idx
14360 53 74 72 20 66 69 65 6c 64 20 77 69 74 68 20 6e  Str field with n
14370 65 65 64 54 6f 46 72 65 65 49 64 78 53 74 72 20  eedToFreeIdxStr 
14380 73 65 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  set..        ///
14390 20 74 6f 20 31 2e 0d 0a 20 20 20 20 20 20 20 20   to 1...        
143a0 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20  /// </para>..   
143b0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
143c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 74  .        /// Not
143d0 65 20 74 68 61 74 20 78 42 65 73 74 49 6e 64 65  e that xBestInde
143e0 78 20 77 69 6c 6c 20 61 6c 77 61 79 73 20 62 65  x will always be
143f0 20 63 61 6c 6c 65 64 20 62 65 66 6f 72 65 20 78   called before x
14400 46 69 6c 74 65 72 2c 20 73 69 6e 63 65 0d 0a 20  Filter, since.. 
14410 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 69         /// the i
14420 64 78 4e 75 6d 20 61 6e 64 20 69 64 78 53 74 72  dxNum and idxStr
14430 20 6f 75 74 70 75 74 73 20 66 72 6f 6d 20 78 42   outputs from xB
14440 65 73 74 49 6e 64 65 78 20 61 72 65 20 72 65 71  estIndex are req
14450 75 69 72 65 64 20 69 6e 70 75 74 73 0d 0a 20 20  uired inputs..  
14460 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20 78 46 69        /// to xFi
14470 6c 74 65 72 2e 20 48 6f 77 65 76 65 72 2c 20 74  lter. However, t
14480 68 65 72 65 20 69 73 20 6e 6f 20 67 75 61 72 61  here is no guara
14490 6e 74 65 65 20 74 68 61 74 20 78 46 69 6c 74 65  ntee that xFilte
144a0 72 20 77 69 6c 6c 20 62 65 0d 0a 20 20 20 20 20  r will be..     
144b0 20 20 20 2f 2f 2f 20 63 61 6c 6c 65 64 20 66 6f     /// called fo
144c0 6c 6c 6f 77 69 6e 67 20 61 20 73 75 63 63 65 73  llowing a succes
144d0 73 66 75 6c 20 78 42 65 73 74 49 6e 64 65 78 2e  sful xBestIndex.
144e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
144f0 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
14500 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20  // <para>..     
14510 20 20 20 2f 2f 2f 20 54 68 65 20 78 42 65 73 74     /// The xBest
14520 49 6e 64 65 78 20 6d 65 74 68 6f 64 20 69 73 20  Index method is 
14530 72 65 71 75 69 72 65 64 20 66 6f 72 20 65 76 65  required for eve
14540 72 79 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  ry virtual table
14550 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6d  ..        /// im
14560 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d 0a 20  plementation... 
14570 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
14580 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
14590 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
145a0 2f 2f 2f 20 32 2e 33 2e 31 20 49 6e 70 75 74 73  /// 2.3.1 Inputs
145b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
145c0 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
145d0 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20  // <para>..     
145e0 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61 69 6e 20     /// The main 
145f0 74 68 69 6e 67 20 74 68 61 74 20 74 68 65 20 53  thing that the S
14600 51 4c 69 74 65 20 63 6f 72 65 20 69 73 20 74 72  QLite core is tr
14610 79 69 6e 67 20 74 6f 20 63 6f 6d 6d 75 6e 69 63  ying to communic
14620 61 74 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20  ate to the..    
14630 20 20 20 20 2f 2f 2f 20 76 69 72 74 75 61 6c 20      /// virtual 
14640 74 61 62 6c 65 20 69 73 20 74 68 65 20 63 6f 6e  table is the con
14650 73 74 72 61 69 6e 74 73 20 74 68 61 74 20 61 72  straints that ar
14660 65 20 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 6c  e available to l
14670 69 6d 69 74 20 74 68 65 0d 0a 20 20 20 20 20 20  imit the..      
14680 20 20 2f 2f 2f 20 6e 75 6d 62 65 72 20 6f 66 20    /// number of 
14690 72 6f 77 73 20 74 68 61 74 20 6e 65 65 64 20 74  rows that need t
146a0 6f 20 62 65 20 73 65 61 72 63 68 65 64 2e 20 54  o be searched. T
146b0 68 65 20 61 43 6f 6e 73 74 72 61 69 6e 74 5b 5d  he aConstraint[]
146c0 20 61 72 72 61 79 0d 0a 20 20 20 20 20 20 20 20   array..        
146d0 2f 2f 2f 20 63 6f 6e 74 61 69 6e 73 20 6f 6e 65  /// contains one
146e0 20 65 6e 74 72 79 20 66 6f 72 20 65 61 63 68 20   entry for each 
146f0 63 6f 6e 73 74 72 61 69 6e 74 2e 20 54 68 65 72  constraint. Ther
14700 65 20 77 69 6c 6c 20 62 65 20 65 78 61 63 74 6c  e will be exactl
14710 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e  y..        /// n
14720 43 6f 6e 73 74 72 61 69 6e 74 20 65 6e 74 72 69  Constraint entri
14730 65 73 20 69 6e 20 74 68 61 74 20 61 72 72 61 79  es in that array
14740 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
14750 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
14760 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
14770 20 20 20 20 2f 2f 2f 20 45 61 63 68 20 63 6f 6e      /// Each con
14780 73 74 72 61 69 6e 74 20 77 69 6c 6c 20 63 6f 72  straint will cor
14790 72 65 73 70 6f 6e 64 20 74 6f 20 61 20 74 65 72  respond to a ter
147a0 6d 20 69 6e 20 74 68 65 20 57 48 45 52 45 20 63  m in the WHERE c
147b0 6c 61 75 73 65 20 6f 72 20 69 6e 0d 0a 20 20 20  lause or in..   
147c0 20 20 20 20 20 2f 2f 2f 20 61 20 55 53 49 4e 47       /// a USING
147d0 20 6f 72 20 4f 4e 20 63 6c 61 75 73 65 20 74 68   or ON clause th
147e0 61 74 20 69 73 20 6f 66 20 74 68 65 20 66 6f 72  at is of the for
147f0 6d 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  m..        /// <
14800 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
14810 2f 2f 2f 20 3c 63 6f 64 65 3e 0d 0a 20 20 20 20  /// <code>..    
14820 20 20 20 20 2f 2f 2f 20 20 20 20 20 63 6f 6c 75      ///     colu
14830 6d 6e 20 4f 50 20 45 58 50 52 0d 0a 20 20 20 20  mn OP EXPR..    
14840 20 20 20 20 2f 2f 2f 20 3c 2f 63 6f 64 65 3e 0d      /// </code>.
14850 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
14860 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
14870 20 57 68 65 72 65 20 22 63 6f 6c 75 6d 6e 22 20   Where "column" 
14880 69 73 20 61 20 63 6f 6c 75 6d 6e 20 69 6e 20 74  is a column in t
14890 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
148a0 2c 20 4f 50 20 69 73 20 61 6e 20 6f 70 65 72 61  , OP is an opera
148b0 74 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  tor..        ///
148c0 20 6c 69 6b 65 20 22 3d 22 20 6f 72 20 22 26 6c   like "=" or "&l
148d0 74 3b 22 2c 20 61 6e 64 20 45 58 50 52 20 69 73  t;", and EXPR is
148e0 20 61 6e 20 61 72 62 69 74 72 61 72 79 20 65 78   an arbitrary ex
148f0 70 72 65 73 73 69 6f 6e 2e 20 53 6f 2c 20 66 6f  pression. So, fo
14900 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 65  r..        /// e
14910 78 61 6d 70 6c 65 2c 20 69 66 20 74 68 65 20 57  xample, if the W
14920 48 45 52 45 20 63 6c 61 75 73 65 20 63 6f 6e 74  HERE clause cont
14930 61 69 6e 65 64 20 61 20 74 65 72 6d 20 6c 69 6b  ained a term lik
14940 65 20 74 68 69 73 3a 0d 0a 20 20 20 20 20 20 20  e this:..       
14950 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
14960 20 20 20 20 20 20 2f 2f 2f 20 3c 63 6f 64 65 3e        /// <code>
14970 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20  ..        ///   
14980 20 20 20 20 20 20 20 61 20 3d 20 35 0d 0a 20 20         a = 5..  
14990 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 63 6f 64 65        /// </code
149a0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
149b0 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
149c0 2f 2f 20 54 68 65 6e 20 6f 6e 65 20 6f 66 20 74  // Then one of t
149d0 68 65 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 77  he constraints w
149e0 6f 75 6c 64 20 62 65 20 6f 6e 20 74 68 65 20 22  ould be on the "
149f0 61 22 20 63 6f 6c 75 6d 6e 20 77 69 74 68 0d 0a  a" column with..
14a00 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 70 65 72          /// oper
14a10 61 74 6f 72 20 22 3d 22 20 61 6e 64 20 61 6e 20  ator "=" and an 
14a20 65 78 70 72 65 73 73 69 6f 6e 20 6f 66 20 22 35  expression of "5
14a30 22 2e 20 43 6f 6e 73 74 72 61 69 6e 74 73 20 6e  ". Constraints n
14a40 65 65 64 20 6e 6f 74 20 68 61 76 65 20 61 0d 0a  eed not have a..
14a50 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 69 74 65          /// lite
14a60 72 61 6c 20 72 65 70 72 65 73 65 6e 74 61 74 69  ral representati
14a70 6f 6e 20 6f 66 20 74 68 65 20 57 48 45 52 45 20  on of the WHERE 
14a80 63 6c 61 75 73 65 2e 20 54 68 65 20 71 75 65 72  clause. The quer
14a90 79 20 6f 70 74 69 6d 69 7a 65 72 0d 0a 20 20 20  y optimizer..   
14aa0 20 20 20 20 20 2f 2f 2f 20 6d 69 67 68 74 20 6d       /// might m
14ab0 61 6b 65 20 74 72 61 6e 73 66 6f 72 6d 61 74 69  ake transformati
14ac0 6f 6e 73 20 74 6f 20 74 68 65 20 57 48 45 52 45  ons to the WHERE
14ad0 20 63 6c 61 75 73 65 20 69 6e 20 6f 72 64 65 72   clause in order
14ae0 20 74 6f 20 65 78 74 72 61 63 74 0d 0a 20 20 20   to extract..   
14af0 20 20 20 20 20 2f 2f 2f 20 61 73 20 6d 61 6e 79       /// as many
14b00 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 61 73 20   constraints as 
14b10 69 74 20 63 61 6e 2e 20 53 6f 2c 20 66 6f 72 20  it can. So, for 
14b20 65 78 61 6d 70 6c 65 2c 20 69 66 20 74 68 65 20  example, if the 
14b30 57 48 45 52 45 20 63 6c 61 75 73 65 0d 0a 20 20  WHERE clause..  
14b40 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 74 61 69        /// contai
14b50 6e 65 64 20 73 6f 6d 65 74 68 69 6e 67 20 6c 69  ned something li
14b60 6b 65 20 74 68 69 73 3a 0d 0a 20 20 20 20 20 20  ke this:..      
14b70 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
14b80 20 20 20 20 20 20 20 2f 2f 2f 20 3c 63 6f 64 65         /// <code
14b90 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20  >..        ///  
14ba0 20 20 20 20 20 20 20 20 78 20 42 45 54 57 45 45          x BETWEE
14bb0 4e 20 31 30 20 41 4e 44 20 31 30 30 20 41 4e 44  N 10 AND 100 AND
14bc0 20 39 39 39 26 67 74 3b 79 0d 0a 20 20 20 20 20   999&gt;y..     
14bd0 20 20 20 2f 2f 2f 20 3c 2f 63 6f 64 65 3e 0d 0a     /// </code>..
14be0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
14bf0 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
14c00 54 68 65 20 71 75 65 72 79 20 6f 70 74 69 6d 69  The query optimi
14c10 7a 65 72 20 6d 69 67 68 74 20 74 72 61 6e 73 6c  zer might transl
14c20 61 74 65 20 74 68 69 73 20 69 6e 74 6f 20 74 68  ate this into th
14c30 72 65 65 20 73 65 70 61 72 61 74 65 0d 0a 20 20  ree separate..  
14c40 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 73 74 72        /// constr
14c50 61 69 6e 74 73 3a 0d 0a 20 20 20 20 20 20 20 20  aints:..        
14c60 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20  /// </para>..   
14c70 20 20 20 20 20 2f 2f 2f 20 3c 63 6f 64 65 3e 0d       /// <code>.
14c80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20  .        ///    
14c90 20 20 20 20 20 20 78 20 26 67 74 3b 3d 20 31 30        x &gt;= 10
14ca0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20  ..        ///   
14cb0 20 20 20 20 20 20 20 78 20 26 6c 74 3b 3d 20 31         x &lt;= 1
14cc0 30 30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  00..        /// 
14cd0 20 20 20 20 20 20 20 20 20 79 20 26 6c 74 3b 20           y &lt; 
14ce0 39 39 39 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  999..        ///
14cf0 20 3c 2f 63 6f 64 65 3e 0d 0a 20 20 20 20 20 20   </code>..      
14d00 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20    /// <para>..  
14d10 20 20 20 20 20 20 2f 2f 2f 20 46 6f 72 20 65 61        /// For ea
14d20 63 68 20 63 6f 6e 73 74 72 61 69 6e 74 2c 20 74  ch constraint, t
14d30 68 65 20 61 43 6f 6e 73 74 72 61 69 6e 74 5b 5d  he aConstraint[]
14d40 2e 69 43 6f 6c 75 6d 6e 20 66 69 65 6c 64 20 69  .iColumn field i
14d50 6e 64 69 63 61 74 65 73 0d 0a 20 20 20 20 20 20  ndicates..      
14d60 20 20 2f 2f 2f 20 77 68 69 63 68 20 63 6f 6c 75    /// which colu
14d70 6d 6e 20 61 70 70 65 61 72 73 20 6f 6e 20 74 68  mn appears on th
14d80 65 20 6c 65 66 74 2d 68 61 6e 64 20 73 69 64 65  e left-hand side
14d90 20 6f 66 20 74 68 65 20 63 6f 6e 73 74 72 61 69   of the constrai
14da0 6e 74 2e 20 54 68 65 0d 0a 20 20 20 20 20 20 20  nt. The..       
14db0 20 2f 2f 2f 20 66 69 72 73 74 20 63 6f 6c 75 6d   /// first colum
14dc0 6e 20 6f 66 20 74 68 65 20 76 69 72 74 75 61 6c  n of the virtual
14dd0 20 74 61 62 6c 65 20 69 73 20 63 6f 6c 75 6d 6e   table is column
14de0 20 30 2e 20 54 68 65 20 72 6f 77 69 64 20 6f 66   0. The rowid of
14df0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
14e00 2f 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  / virtual table 
14e10 69 73 20 63 6f 6c 75 6d 6e 20 2d 31 2e 20 54 68  is column -1. Th
14e20 65 20 61 43 6f 6e 73 74 72 61 69 6e 74 5b 5d 2e  e aConstraint[].
14e30 6f 70 20 66 69 65 6c 64 20 69 6e 64 69 63 61 74  op field indicat
14e40 65 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  es..        /// 
14e50 77 68 69 63 68 20 6f 70 65 72 61 74 6f 72 20 69  which operator i
14e60 73 20 75 73 65 64 2e 20 54 68 65 20 53 51 4c 49  s used. The SQLI
14e70 54 45 5f 49 4e 44 45 58 5f 43 4f 4e 53 54 52 41  TE_INDEX_CONSTRA
14e80 49 4e 54 5f 2a 20 63 6f 6e 73 74 61 6e 74 73 20  INT_* constants 
14e90 6d 61 70 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  map..        ///
14ea0 20 69 6e 74 65 67 65 72 20 63 6f 6e 73 74 61 6e   integer constan
14eb0 74 73 20 69 6e 74 6f 20 6f 70 65 72 61 74 6f 72  ts into operator
14ec0 20 76 61 6c 75 65 73 2e 20 43 6f 6c 75 6d 6e 73   values. Columns
14ed0 20 6f 63 63 75 72 20 69 6e 20 74 68 65 20 6f 72   occur in the or
14ee0 64 65 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  der..        ///
14ef0 20 74 68 65 79 20 77 65 72 65 20 64 65 66 69 6e   they were defin
14f00 65 64 20 62 79 20 74 68 65 20 63 61 6c 6c 20 74  ed by the call t
14f10 6f 20 73 71 6c 69 74 65 33 5f 64 65 63 6c 61 72  o sqlite3_declar
14f20 65 5f 76 74 61 62 28 29 20 69 6e 20 74 68 65 0d  e_vtab() in the.
14f30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 78 43 72  .        /// xCr
14f40 65 61 74 65 20 6f 72 20 78 43 6f 6e 6e 65 63 74  eate or xConnect
14f50 20 6d 65 74 68 6f 64 2e 20 48 69 64 64 65 6e 20   method. Hidden 
14f60 63 6f 6c 75 6d 6e 73 20 61 72 65 20 63 6f 75 6e  columns are coun
14f70 74 65 64 20 77 68 65 6e 0d 0a 20 20 20 20 20 20  ted when..      
14f80 20 20 2f 2f 2f 20 64 65 74 65 72 6d 69 6e 69 6e    /// determinin
14f90 67 20 74 68 65 20 63 6f 6c 75 6d 6e 20 69 6e 64  g the column ind
14fa0 65 78 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ex...        ///
14fb0 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20   </para>..      
14fc0 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20    /// <para>..  
14fd0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 43        /// The aC
14fe0 6f 6e 73 74 72 61 69 6e 74 5b 5d 20 61 72 72 61  onstraint[] arra
14ff0 79 20 63 6f 6e 74 61 69 6e 73 20 69 6e 66 6f 72  y contains infor
15000 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 61 6c 6c  mation about all
15010 20 63 6f 6e 73 74 72 61 69 6e 74 73 0d 0a 20 20   constraints..  
15020 20 20 20 20 20 20 2f 2f 2f 20 74 68 61 74 20 61        /// that a
15030 70 70 6c 79 20 74 6f 20 74 68 65 20 76 69 72 74  pply to the virt
15040 75 61 6c 20 74 61 62 6c 65 2e 20 42 75 74 20 73  ual table. But s
15050 6f 6d 65 20 6f 66 20 74 68 65 20 63 6f 6e 73 74  ome of the const
15060 72 61 69 6e 74 73 20 6d 69 67 68 74 0d 0a 20 20  raints might..  
15070 20 20 20 20 20 20 2f 2f 2f 20 6e 6f 74 20 62 65        /// not be
15080 20 75 73 61 62 6c 65 20 62 65 63 61 75 73 65 20   usable because 
15090 6f 66 20 74 68 65 20 77 61 79 20 74 61 62 6c 65  of the way table
150a0 73 20 61 72 65 20 6f 72 64 65 72 65 64 20 69 6e  s are ordered in
150b0 20 61 20 6a 6f 69 6e 2e 20 54 68 65 0d 0a 20 20   a join. The..  
150c0 20 20 20 20 20 20 2f 2f 2f 20 78 42 65 73 74 49        /// xBestI
150d0 6e 64 65 78 20 6d 65 74 68 6f 64 20 6d 75 73 74  ndex method must
150e0 20 74 68 65 72 65 66 6f 72 65 20 6f 6e 6c 79 20   therefore only 
150f0 63 6f 6e 73 69 64 65 72 20 63 6f 6e 73 74 72 61  consider constra
15100 69 6e 74 73 20 74 68 61 74 0d 0a 20 20 20 20 20  ints that..     
15110 20 20 20 2f 2f 2f 20 68 61 76 65 20 61 6e 20 61     /// have an a
15120 43 6f 6e 73 74 72 61 69 6e 74 5b 5d 2e 75 73 61  Constraint[].usa
15130 62 6c 65 20 66 6c 61 67 20 77 68 69 63 68 20 69  ble flag which i
15140 73 20 74 72 75 65 2e 0d 0a 20 20 20 20 20 20 20  s true...       
15150 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
15160 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
15170 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 49 6e  ..        /// In
15180 20 61 64 64 69 74 69 6f 6e 20 74 6f 20 57 48 45   addition to WHE
15190 52 45 20 63 6c 61 75 73 65 20 63 6f 6e 73 74 72  RE clause constr
151a0 61 69 6e 74 73 2c 20 74 68 65 20 53 51 4c 69 74  aints, the SQLit
151b0 65 20 63 6f 72 65 20 61 6c 73 6f 20 74 65 6c 6c  e core also tell
151c0 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  s..        /// t
151d0 68 65 20 78 42 65 73 74 49 6e 64 65 78 20 6d 65  he xBestIndex me
151e0 74 68 6f 64 20 61 62 6f 75 74 20 74 68 65 20 4f  thod about the O
151f0 52 44 45 52 20 42 59 20 63 6c 61 75 73 65 2e 20  RDER BY clause. 
15200 28 49 6e 20 61 6e 20 61 67 67 72 65 67 61 74 65  (In an aggregate
15210 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 71 75  ..        /// qu
15220 65 72 79 2c 20 74 68 65 20 53 51 4c 69 74 65 20  ery, the SQLite 
15230 63 6f 72 65 20 6d 69 67 68 74 20 70 75 74 20 69  core might put i
15240 6e 20 47 52 4f 55 50 20 42 59 20 63 6c 61 75 73  n GROUP BY claus
15250 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 6e  e information in
15260 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 6c  ..        /// pl
15270 61 63 65 20 6f 66 20 74 68 65 20 4f 52 44 45 52  ace of the ORDER
15280 20 42 59 20 63 6c 61 75 73 65 20 69 6e 66 6f 72   BY clause infor
15290 6d 61 74 69 6f 6e 2c 20 62 75 74 20 74 68 69 73  mation, but this
152a0 20 66 61 63 74 20 73 68 6f 75 6c 64 20 6e 6f 74   fact should not
152b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 61  ..        /// ma
152c0 6b 65 20 61 6e 79 20 64 69 66 66 65 72 65 6e 63  ke any differenc
152d0 65 20 74 6f 20 74 68 65 20 78 42 65 73 74 49 6e  e to the xBestIn
152e0 64 65 78 20 6d 65 74 68 6f 64 2e 29 20 49 66 20  dex method.) If 
152f0 61 6c 6c 20 74 65 72 6d 73 20 6f 66 20 74 68 65  all terms of the
15300 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4f 52  ..        /// OR
15310 44 45 52 20 42 59 20 63 6c 61 75 73 65 20 61 72  DER BY clause ar
15320 65 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65  e columns in the
15330 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2c 20   virtual table, 
15340 74 68 65 6e 20 6e 4f 72 64 65 72 42 79 0d 0a 20  then nOrderBy.. 
15350 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 6c 6c 20         /// will 
15360 62 65 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  be the number of
15370 20 74 65 72 6d 73 20 69 6e 20 74 68 65 20 4f 52   terms in the OR
15380 44 45 52 20 42 59 20 63 6c 61 75 73 65 20 61 6e  DER BY clause an
15390 64 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  d the..        /
153a0 2f 2f 20 61 4f 72 64 65 72 42 79 5b 5d 20 61 72  // aOrderBy[] ar
153b0 72 61 79 20 77 69 6c 6c 20 69 64 65 6e 74 69 66  ray will identif
153c0 79 20 74 68 65 20 63 6f 6c 75 6d 6e 20 66 6f 72  y the column for
153d0 20 65 61 63 68 20 74 65 72 6d 20 69 6e 20 74 68   each term in th
153e0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f  e..        /// o
153f0 72 64 65 72 20 62 79 20 63 6c 61 75 73 65 20 61  rder by clause a
15400 6e 64 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f  nd whether or no
15410 74 20 74 68 61 74 20 63 6f 6c 75 6d 6e 20 69 73  t that column is
15420 20 41 53 43 20 6f 72 20 44 45 53 43 2e 0d 0a 20   ASC or DESC... 
15430 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
15440 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
15450 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
15460 2f 2f 2f 20 32 2e 33 2e 32 20 4f 75 74 70 75 74  /// 2.3.2 Output
15470 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
15480 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
15490 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
154a0 20 20 20 20 2f 2f 2f 20 47 69 76 65 6e 20 61 6c      /// Given al
154b0 6c 20 6f 66 20 74 68 65 20 69 6e 66 6f 72 6d 61  l of the informa
154c0 74 69 6f 6e 20 61 62 6f 76 65 2c 20 74 68 65 20  tion above, the 
154d0 6a 6f 62 20 6f 66 20 74 68 65 20 78 42 65 73 74  job of the xBest
154e0 49 6e 64 65 78 0d 0a 20 20 20 20 20 20 20 20 2f  Index..        /
154f0 2f 2f 20 6d 65 74 68 6f 64 20 69 74 20 74 6f 20  // method it to 
15500 66 69 67 75 72 65 20 6f 75 74 20 74 68 65 20 62  figure out the b
15510 65 73 74 20 77 61 79 20 74 6f 20 73 65 61 72 63  est way to searc
15520 68 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  h the virtual ta
15530 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
15540 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20  / </para>..     
15550 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20     /// <para>.. 
15560 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 78         /// The x
15570 42 65 73 74 49 6e 64 65 78 20 6d 65 74 68 6f 64  BestIndex method
15580 20 66 69 6c 6c 73 20 74 68 65 20 69 64 78 4e 75   fills the idxNu
15590 6d 20 61 6e 64 20 69 64 78 53 74 72 20 66 69 65  m and idxStr fie
155a0 6c 64 73 20 77 69 74 68 0d 0a 20 20 20 20 20 20  lds with..      
155b0 20 20 2f 2f 2f 20 69 6e 66 6f 72 6d 61 74 69 6f    /// informatio
155c0 6e 20 74 68 61 74 20 63 6f 6d 6d 75 6e 69 63 61  n that communica
155d0 74 65 73 20 61 6e 20 69 6e 64 65 78 69 6e 67 20  tes an indexing 
155e0 73 74 72 61 74 65 67 79 20 74 6f 20 74 68 65 20  strategy to the 
155f0 78 46 69 6c 74 65 72 0d 0a 20 20 20 20 20 20 20  xFilter..       
15600 20 2f 2f 2f 20 6d 65 74 68 6f 64 2e 20 54 68 65   /// method. The
15610 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 6e 20   information in 
15620 69 64 78 4e 75 6d 20 61 6e 64 20 69 64 78 53 74  idxNum and idxSt
15630 72 20 69 73 20 61 72 62 69 74 72 61 72 79 20 61  r is arbitrary a
15640 73 20 66 61 72 20 61 73 0d 0a 20 20 20 20 20 20  s far as..      
15650 20 20 2f 2f 2f 20 74 68 65 20 53 51 4c 69 74 65    /// the SQLite
15660 20 63 6f 72 65 20 69 73 20 63 6f 6e 63 65 72 6e   core is concern
15670 65 64 2e 20 54 68 65 20 53 51 4c 69 74 65 20 63  ed. The SQLite c
15680 6f 72 65 20 6a 75 73 74 20 63 6f 70 69 65 73 20  ore just copies 
15690 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
156a0 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 74 68 72   information thr
156b0 6f 75 67 68 20 74 6f 20 74 68 65 20 78 46 69 6c  ough to the xFil
156c0 74 65 72 20 6d 65 74 68 6f 64 2e 20 41 6e 79 20  ter method. Any 
156d0 64 65 73 69 72 65 64 20 6d 65 61 6e 69 6e 67 20  desired meaning 
156e0 63 61 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  can..        ///
156f0 20 62 65 20 61 73 73 69 67 6e 65 64 20 74 6f 20   be assigned to 
15700 69 64 78 4e 75 6d 20 61 6e 64 20 69 64 78 53 74  idxNum and idxSt
15710 72 20 61 73 20 6c 6f 6e 67 20 61 73 20 78 42 65  r as long as xBe
15720 73 74 49 6e 64 65 78 20 61 6e 64 20 78 46 69 6c  stIndex and xFil
15730 74 65 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ter..        ///
15740 20 61 67 72 65 65 20 6f 6e 20 77 68 61 74 20 74   agree on what t
15750 68 61 74 20 6d 65 61 6e 69 6e 67 20 69 73 2e 0d  hat meaning is..
15760 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
15770 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
15780 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
15790 20 20 2f 2f 2f 20 54 68 65 20 69 64 78 53 74 72    /// The idxStr
157a0 20 76 61 6c 75 65 20 6d 61 79 20 62 65 20 61 20   value may be a 
157b0 73 74 72 69 6e 67 20 6f 62 74 61 69 6e 65 64 20  string obtained 
157c0 66 72 6f 6d 20 61 6e 20 53 51 4c 69 74 65 20 6d  from an SQLite m
157d0 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 2f  emory..        /
157e0 2f 2f 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 66 75  // allocation fu
157f0 6e 63 74 69 6f 6e 20 73 75 63 68 20 61 73 20 73  nction such as s
15800 71 6c 69 74 65 33 5f 6d 70 72 69 6e 74 66 28 29  qlite3_mprintf()
15810 2e 20 49 66 20 74 68 69 73 20 69 73 20 74 68 65  . If this is the
15820 20 63 61 73 65 2c 0d 0a 20 20 20 20 20 20 20 20   case,..        
15830 2f 2f 2f 20 74 68 65 6e 20 74 68 65 20 6e 65 65  /// then the nee
15840 64 54 6f 46 72 65 65 49 64 78 53 74 72 20 66 6c  dToFreeIdxStr fl
15850 61 67 20 6d 75 73 74 20 62 65 20 73 65 74 20 74  ag must be set t
15860 6f 20 74 72 75 65 20 73 6f 20 74 68 61 74 20 74  o true so that t
15870 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
15880 53 51 4c 69 74 65 20 63 6f 72 65 20 77 69 6c 6c  SQLite core will
15890 20 6b 6e 6f 77 20 74 6f 20 63 61 6c 6c 20 73 71   know to call sq
158a0 6c 69 74 65 33 5f 66 72 65 65 28 29 20 6f 6e 20  lite3_free() on 
158b0 74 68 61 74 20 73 74 72 69 6e 67 20 77 68 65 6e  that string when
158c0 20 69 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   it..        ///
158d0 20 68 61 73 20 66 69 6e 69 73 68 65 64 20 77 69   has finished wi
158e0 74 68 20 69 74 2c 20 61 6e 64 20 74 68 75 73 20  th it, and thus 
158f0 61 76 6f 69 64 20 61 20 6d 65 6d 6f 72 79 20 6c  avoid a memory l
15900 65 61 6b 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  eak...        //
15910 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20  / </para>..     
15920 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20     /// <para>.. 
15930 20 20 20 20 20 20 20 2f 2f 2f 20 49 66 20 74 68         /// If th
15940 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  e virtual table 
15950 77 69 6c 6c 20 6f 75 74 70 75 74 20 72 6f 77 73  will output rows
15960 20 69 6e 20 74 68 65 20 6f 72 64 65 72 20 73 70   in the order sp
15970 65 63 69 66 69 65 64 20 62 79 20 74 68 65 0d 0a  ecified by the..
15980 20 20 20 20 20 20 20 20 2f 2f 2f 20 4f 52 44 45          /// ORDE
15990 52 20 42 59 20 63 6c 61 75 73 65 2c 20 74 68 65  R BY clause, the
159a0 6e 20 74 68 65 20 6f 72 64 65 72 42 79 43 6f 6e  n the orderByCon
159b0 73 75 6d 65 64 20 66 6c 61 67 20 6d 61 79 20 62  sumed flag may b
159c0 65 20 73 65 74 20 74 6f 20 74 72 75 65 2e 0d 0a  e set to true...
159d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 49 66 20 74          /// If t
159e0 68 65 20 6f 75 74 70 75 74 20 69 73 20 6e 6f 74  he output is not
159f0 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 69   automatically i
15a00 6e 20 74 68 65 20 63 6f 72 72 65 63 74 20 6f 72  n the correct or
15a10 64 65 72 20 74 68 65 6e 0d 0a 20 20 20 20 20 20  der then..      
15a20 20 20 2f 2f 2f 20 6f 72 64 65 72 42 79 43 6f 6e    /// orderByCon
15a30 73 75 6d 65 64 20 6d 75 73 74 20 62 65 20 6c 65  sumed must be le
15a40 66 74 20 69 6e 20 69 74 73 20 64 65 66 61 75 6c  ft in its defaul
15a50 74 20 66 61 6c 73 65 20 73 65 74 74 69 6e 67 2e  t false setting.
15a60 20 54 68 69 73 0d 0a 20 20 20 20 20 20 20 20 2f   This..        /
15a70 2f 2f 20 77 69 6c 6c 20 69 6e 64 69 63 61 74 65  // will indicate
15a80 20 74 6f 20 74 68 65 20 53 51 4c 69 74 65 20 63   to the SQLite c
15a90 6f 72 65 20 74 68 61 74 20 69 74 20 77 69 6c 6c  ore that it will
15aa0 20 6e 65 65 64 20 74 6f 20 64 6f 20 61 20 73 65   need to do a se
15ab0 70 61 72 61 74 65 0d 0a 20 20 20 20 20 20 20 20  parate..        
15ac0 2f 2f 2f 20 73 6f 72 74 69 6e 67 20 70 61 73 73  /// sorting pass
15ad0 20 6f 76 65 72 20 74 68 65 20 64 61 74 61 20 61   over the data a
15ae0 66 74 65 72 20 69 74 20 63 6f 6d 65 73 20 6f 75  fter it comes ou
15af0 74 20 6f 66 20 74 68 65 20 76 69 72 74 75 61 6c  t of the virtual
15b00 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20   table...       
15b10 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
15b20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
15b30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
15b40 65 20 65 73 74 69 6d 61 74 65 64 43 6f 73 74 20  e estimatedCost 
15b50 66 69 65 6c 64 20 73 68 6f 75 6c 64 20 62 65 20  field should be 
15b60 73 65 74 20 74 6f 20 74 68 65 20 65 73 74 69 6d  set to the estim
15b70 61 74 65 64 20 6e 75 6d 62 65 72 20 6f 66 0d 0a  ated number of..
15b80 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 69 73 6b          /// disk
15b90 20 61 63 63 65 73 73 20 6f 70 65 72 61 74 69 6f   access operatio
15ba0 6e 73 20 72 65 71 75 69 72 65 64 20 74 6f 20 65  ns required to e
15bb0 78 65 63 75 74 65 20 74 68 69 73 20 71 75 65 72  xecute this quer
15bc0 79 20 61 67 61 69 6e 73 74 20 74 68 65 0d 0a 20  y against the.. 
15bd0 20 20 20 20 20 20 20 2f 2f 2f 20 76 69 72 74 75         /// virtu
15be0 61 6c 20 74 61 62 6c 65 2e 20 54 68 65 20 53 51  al table. The SQ
15bf0 4c 69 74 65 20 63 6f 72 65 20 77 69 6c 6c 20 6f  Lite core will o
15c00 66 74 65 6e 20 63 61 6c 6c 20 78 42 65 73 74 49  ften call xBestI
15c10 6e 64 65 78 20 6d 75 6c 74 69 70 6c 65 0d 0a 20  ndex multiple.. 
15c20 20 20 20 20 20 20 20 2f 2f 2f 20 74 69 6d 65 73         /// times
15c30 20 77 69 74 68 20 64 69 66 66 65 72 65 6e 74 20   with different 
15c40 63 6f 6e 73 74 72 61 69 6e 74 73 2c 20 6f 62 74  constraints, obt
15c50 61 69 6e 20 6d 75 6c 74 69 70 6c 65 20 63 6f 73  ain multiple cos
15c60 74 20 65 73 74 69 6d 61 74 65 73 2c 0d 0a 20 20  t estimates,..  
15c70 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 6e 20 63        /// then c
15c80 68 6f 6f 73 65 20 74 68 65 20 71 75 65 72 79 20  hoose the query 
15c90 70 6c 61 6e 20 74 68 61 74 20 67 69 76 65 73 20  plan that gives 
15ca0 74 68 65 20 6c 6f 77 65 73 74 20 65 73 74 69 6d  the lowest estim
15cb0 61 74 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ate...        //
15cc0 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20  / </para>..     
15cd0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20     /// <para>.. 
15ce0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61         /// The a
15cf0 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 5b  ConstraintUsage[
15d00 5d 20 61 72 72 61 79 20 63 6f 6e 74 61 69 6e 73  ] array contains
15d10 20 6f 6e 65 20 65 6c 65 6d 65 6e 74 20 66 6f 72   one element for
15d20 20 65 61 63 68 20 6f 66 20 74 68 65 0d 0a 20 20   each of the..  
15d30 20 20 20 20 20 20 2f 2f 2f 20 6e 43 6f 6e 73 74        /// nConst
15d40 72 61 69 6e 74 20 63 6f 6e 73 74 72 61 69 6e 74  raint constraint
15d50 73 20 69 6e 20 74 68 65 20 69 6e 70 75 74 73 20  s in the inputs 
15d60 73 65 63 74 69 6f 6e 20 6f 66 20 74 68 65 0d 0a  section of the..
15d70 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69          /// sqli
15d80 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 20 73  te3_index_info s
15d90 74 72 75 63 74 75 72 65 2e 20 54 68 65 20 61 43  tructure. The aC
15da0 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 5b 5d  onstraintUsage[]
15db0 20 61 72 72 61 79 20 69 73 20 75 73 65 64 0d 0a   array is used..
15dc0 20 20 20 20 20 20 20 20 2f 2f 2f 20 62 79 20 78          /// by x
15dd0 42 65 73 74 49 6e 64 65 78 20 74 6f 20 74 65 6c  BestIndex to tel
15de0 6c 20 74 68 65 20 63 6f 72 65 20 68 6f 77 20 69  l the core how i
15df0 74 20 69 73 20 75 73 69 6e 67 20 74 68 65 20 63  t is using the c
15e00 6f 6e 73 74 72 61 69 6e 74 73 2e 0d 0a 20 20 20  onstraints...   
15e10 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
15e20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
15e30 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
15e40 2f 20 54 68 65 20 78 42 65 73 74 49 6e 64 65 78  / The xBestIndex
15e50 20 6d 65 74 68 6f 64 20 6d 61 79 20 73 65 74 20   method may set 
15e60 61 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  aConstraintUsage
15e70 5b 5d 2e 61 72 67 76 49 6e 64 65 78 20 65 6e 74  [].argvIndex ent
15e80 72 69 65 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ries..        //
15e90 2f 20 74 6f 20 76 61 6c 75 65 73 20 67 72 65 61  / to values grea
15ea0 74 65 72 20 74 68 61 6e 20 6f 6e 65 2e 20 45 78  ter than one. Ex
15eb0 61 63 74 6c 79 20 6f 6e 65 20 65 6e 74 72 79 20  actly one entry 
15ec0 73 68 6f 75 6c 64 20 62 65 20 73 65 74 20 74 6f  should be set to
15ed0 20 31 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   1,..        ///
15ee0 20 61 6e 6f 74 68 65 72 20 74 6f 20 32 2c 20 61   another to 2, a
15ef0 6e 6f 74 68 65 72 20 74 6f 20 33 2c 20 61 6e 64  nother to 3, and
15f00 20 73 6f 20 66 6f 72 74 68 20 75 70 20 74 6f 20   so forth up to 
15f10 61 73 20 6d 61 6e 79 20 6f 72 20 61 73 20 66 65  as many or as fe
15f20 77 20 61 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  w as..        //
15f30 2f 20 74 68 65 20 78 42 65 73 74 49 6e 64 65 78  / the xBestIndex
15f40 20 6d 65 74 68 6f 64 20 77 61 6e 74 73 2e 20 54   method wants. T
15f50 68 65 20 45 58 50 52 20 6f 66 20 74 68 65 20 63  he EXPR of the c
15f60 6f 72 72 65 73 70 6f 6e 64 69 6e 67 0d 0a 20 20  orresponding..  
15f70 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 73 74 72        /// constr
15f80 61 69 6e 74 73 20 77 69 6c 6c 20 74 68 65 6e 20  aints will then 
15f90 62 65 20 70 61 73 73 65 64 20 69 6e 20 61 73 20  be passed in as 
15fa0 74 68 65 20 61 72 67 76 5b 5d 20 70 61 72 61 6d  the argv[] param
15fb0 65 74 65 72 73 20 74 6f 0d 0a 20 20 20 20 20 20  eters to..      
15fc0 20 20 2f 2f 2f 20 78 46 69 6c 74 65 72 2e 0d 0a    /// xFilter...
15fd0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
15fe0 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
15ff0 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
16000 20 2f 2f 2f 20 46 6f 72 20 65 78 61 6d 70 6c 65   /// For example
16010 2c 20 69 66 20 74 68 65 20 61 43 6f 6e 73 74 72  , if the aConstr
16020 61 69 6e 74 5b 33 5d 2e 61 72 67 76 49 6e 64 65  aint[3].argvInde
16030 78 20 69 73 20 73 65 74 20 74 6f 20 31 2c 20 74  x is set to 1, t
16040 68 65 6e 20 77 68 65 6e 0d 0a 20 20 20 20 20 20  hen when..      
16050 20 20 2f 2f 2f 20 78 46 69 6c 74 65 72 20 69 73    /// xFilter is
16060 20 63 61 6c 6c 65 64 2c 20 74 68 65 20 61 72 67   called, the arg
16070 76 5b 30 5d 20 70 61 73 73 65 64 20 74 6f 20 78  v[0] passed to x
16080 46 69 6c 74 65 72 20 77 69 6c 6c 20 68 61 76 65  Filter will have
16090 20 74 68 65 20 45 58 50 52 0d 0a 20 20 20 20 20   the EXPR..     
160a0 20 20 20 2f 2f 2f 20 76 61 6c 75 65 20 6f 66 20     /// value of 
160b0 74 68 65 20 61 43 6f 6e 73 74 72 61 69 6e 74 5b  the aConstraint[
160c0 33 5d 20 63 6f 6e 73 74 72 61 69 6e 74 2e 0d 0a  3] constraint...
160d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
160e0 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
160f0 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
16100 20 2f 2f 2f 20 42 79 20 64 65 66 61 75 6c 74 2c   /// By default,
16110 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
16120 20 64 6f 75 62 6c 65 20 63 68 65 63 6b 73 20 61   double checks a
16130 6c 6c 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 6f  ll constraints o
16140 6e 20 65 61 63 68 0d 0a 20 20 20 20 20 20 20 20  n each..        
16150 2f 2f 2f 20 72 6f 77 20 6f 66 20 74 68 65 20 76  /// row of the v
16160 69 72 74 75 61 6c 20 74 61 62 6c 65 20 74 68 61  irtual table tha
16170 74 20 69 74 20 72 65 63 65 69 76 65 73 2e 20 49  t it receives. I
16180 66 20 73 75 63 68 20 61 20 63 68 65 63 6b 20 69  f such a check i
16190 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 72  s..        /// r
161a0 65 64 75 6e 64 61 6e 74 2c 20 74 68 65 20 78 42  edundant, the xB
161b0 65 73 74 46 69 6c 74 65 72 20 6d 65 74 68 6f 64  estFilter method
161c0 20 63 61 6e 20 73 75 70 70 72 65 73 73 20 74 68   can suppress th
161d0 61 74 20 64 6f 75 62 6c 65 2d 63 68 65 63 6b 20  at double-check 
161e0 62 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  by..        /// 
161f0 73 65 74 74 69 6e 67 20 61 43 6f 6e 73 74 72 61  setting aConstra
16200 69 6e 74 55 73 61 67 65 5b 5d 2e 6f 6d 69 74 2e  intUsage[].omit.
16210 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
16220 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
16230 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
16240 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
16250 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d  m name="pVtab">.
16260 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
16270 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
16280 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76  to the sqlite3_v
16290 74 61 62 20 64 65 72 69 76 65 64 20 73 74 72 75  tab derived stru
162a0 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  cture...        
162b0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
162c0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
162d0 20 6e 61 6d 65 3d 22 70 49 6e 64 65 78 22 3e 0d   name="pIndex">.
162e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
162f0 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
16300 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 69  to the sqlite3_i
16310 6e 64 65 78 5f 69 6e 66 6f 20 73 74 72 75 63 74  ndex_info struct
16320 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
16330 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
16340 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
16350 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
16360 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
16370 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
16380 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
16390 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53  urns>..        S
163a0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
163b0 42 65 73 74 49 6e 64 65 78 28 0d 0a 20 20 20 20  BestIndex(..    
163c0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
163d0 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20  Vtab,..         
163e0 20 20 20 49 6e 74 50 74 72 20 70 49 6e 64 65 78     IntPtr pIndex
163f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b  ..            );
16400 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
16410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16450 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
16460 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
16470 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
16480 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
16490 69 73 20 6d 65 74 68 6f 64 20 72 65 6c 65 61 73  is method releas
164a0 65 73 20 61 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  es a connection 
164b0 74 6f 20 61 20 76 69 72 74 75 61 6c 20 74 61 62  to a virtual tab
164c0 6c 65 2e 20 4f 6e 6c 79 20 74 68 65 0d 0a 20 20  le. Only the..  
164d0 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65        /// sqlite
164e0 33 5f 76 74 61 62 20 6f 62 6a 65 63 74 20 69 73  3_vtab object is
164f0 20 64 65 73 74 72 6f 79 65 64 2e 20 54 68 65 20   destroyed. The 
16500 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 69 73  virtual table is
16510 20 6e 6f 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f   not..        //
16520 2f 20 64 65 73 74 72 6f 79 65 64 20 61 6e 64 20  / destroyed and 
16530 61 6e 79 20 62 61 63 6b 69 6e 67 20 73 74 6f 72  any backing stor
16540 65 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  e associated wit
16550 68 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  h the virtual ta
16560 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ble..        ///
16570 20 70 65 72 73 69 73 74 73 2e 20 54 68 69 73 20   persists. This 
16580 6d 65 74 68 6f 64 20 75 6e 64 6f 65 73 20 74 68  method undoes th
16590 65 20 77 6f 72 6b 20 6f 66 20 78 43 6f 6e 6e 65  e work of xConne
165a0 63 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ct...        ///
165b0 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20   </para>..      
165c0 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20    /// <para>..  
165d0 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d        /// This m
165e0 65 74 68 6f 64 20 69 73 20 61 20 64 65 73 74 72  ethod is a destr
165f0 75 63 74 6f 72 20 66 6f 72 20 61 20 63 6f 6e 6e  uctor for a conn
16600 65 63 74 69 6f 6e 20 74 6f 20 74 68 65 20 76 69  ection to the vi
16610 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20  rtual table...  
16620 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 74 72 61        /// Contra
16630 73 74 20 74 68 69 73 20 6d 65 74 68 6f 64 20 77  st this method w
16640 69 74 68 20 78 44 65 73 74 72 6f 79 2e 20 54 68  ith xDestroy. Th
16650 65 20 78 44 65 73 74 72 6f 79 20 69 73 20 61 20  e xDestroy is a 
16660 64 65 73 74 72 75 63 74 6f 72 0d 0a 20 20 20 20  destructor..    
16670 20 20 20 20 2f 2f 2f 20 66 6f 72 20 74 68 65 20      /// for the 
16680 65 6e 74 69 72 65 20 76 69 72 74 75 61 6c 20 74  entire virtual t
16690 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  able...        /
166a0 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20  // </para>..    
166b0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a      /// <para>..
166c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
166d0 78 44 69 73 63 6f 6e 6e 65 63 74 20 6d 65 74 68  xDisconnect meth
166e0 6f 64 20 69 73 20 72 65 71 75 69 72 65 64 20 66  od is required f
166f0 6f 72 20 65 76 65 72 79 20 76 69 72 74 75 61 6c  or every virtual
16700 20 74 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20   table..        
16710 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  /// implementati
16720 6f 6e 2c 20 74 68 6f 75 67 68 20 69 74 20 69 73  on, though it is
16730 20 61 63 63 65 70 74 61 62 6c 65 20 66 6f 72 20   acceptable for 
16740 74 68 65 20 78 44 69 73 63 6f 6e 6e 65 63 74 20  the xDisconnect 
16750 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  and..        ///
16760 20 78 44 65 73 74 72 6f 79 20 6d 65 74 68 6f 64   xDestroy method
16770 73 20 74 6f 20 62 65 20 74 68 65 20 73 61 6d 65  s to be the same
16780 20 66 75 6e 63 74 69 6f 6e 20 69 66 20 74 68 61   function if tha
16790 74 20 6d 61 6b 65 73 20 73 65 6e 73 65 20 66 6f  t makes sense fo
167a0 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  r..        /// t
167b0 68 65 20 70 61 72 74 69 63 75 6c 61 72 20 76 69  he particular vi
167c0 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20  rtual table...  
167d0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
167e0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
167f0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
16800 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
16810 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20  me="pVtab">..   
16820 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
16830 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  ive pointer to t
16840 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20  he sqlite3_vtab 
16850 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72  derived structur
16860 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
16870 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
16880 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
16890 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73  .        /// A s
168a0 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72  tandard SQLite r
168b0 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20  eturn code...   
168c0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
168d0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c  ns>..        SQL
168e0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 44 69  iteErrorCode xDi
168f0 73 63 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20  sconnect(..     
16900 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
16910 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tab..           
16920 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   );....        /
16930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16970 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
16980 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
16990 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
169a0 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
169b0 20 54 68 69 73 20 6d 65 74 68 6f 64 20 72 65 6c   This method rel
169c0 65 61 73 65 73 20 61 20 63 6f 6e 6e 65 63 74 69  eases a connecti
169d0 6f 6e 20 74 6f 20 61 20 76 69 72 74 75 61 6c 20  on to a virtual 
169e0 74 61 62 6c 65 2c 20 6a 75 73 74 20 6c 69 6b 65  table, just like
169f0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
16a00 2f 20 78 44 69 73 63 6f 6e 6e 65 63 74 20 6d 65  / xDisconnect me
16a10 74 68 6f 64 2c 20 61 6e 64 20 69 74 20 61 6c 73  thod, and it als
16a20 6f 20 64 65 73 74 72 6f 79 73 20 74 68 65 20 75  o destroys the u
16a30 6e 64 65 72 6c 79 69 6e 67 20 74 61 62 6c 65 0d  nderlying table.
16a40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6d 70  .        /// imp
16a50 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 20 54 68 69  lementation. Thi
16a60 73 20 6d 65 74 68 6f 64 20 75 6e 64 6f 65 73 20  s method undoes 
16a70 74 68 65 20 77 6f 72 6b 20 6f 66 20 78 43 72 65  the work of xCre
16a80 61 74 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ate...        //
16a90 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20  / </para>..     
16aa0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20     /// <para>.. 
16ab0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 78         /// The x
16ac0 44 69 73 63 6f 6e 6e 65 63 74 20 6d 65 74 68 6f  Disconnect metho
16ad0 64 20 69 73 20 63 61 6c 6c 65 64 20 77 68 65 6e  d is called when
16ae0 65 76 65 72 20 61 20 64 61 74 61 62 61 73 65 20  ever a database 
16af0 63 6f 6e 6e 65 63 74 69 6f 6e 0d 0a 20 20 20 20  connection..    
16b00 20 20 20 20 2f 2f 2f 20 74 68 61 74 20 75 73 65      /// that use
16b10 73 20 61 20 76 69 72 74 75 61 6c 20 74 61 62 6c  s a virtual tabl
16b20 65 20 69 73 20 63 6c 6f 73 65 64 2e 20 54 68 65  e is closed. The
16b30 20 78 44 65 73 74 72 6f 79 20 6d 65 74 68 6f 64   xDestroy method
16b40 20 69 73 20 6f 6e 6c 79 0d 0a 20 20 20 20 20 20   is only..      
16b50 20 20 2f 2f 2f 20 63 61 6c 6c 65 64 20 77 68 65    /// called whe
16b60 6e 20 61 20 44 52 4f 50 20 54 41 42 4c 45 20 73  n a DROP TABLE s
16b70 74 61 74 65 6d 65 6e 74 20 69 73 20 65 78 65 63  tatement is exec
16b80 75 74 65 64 20 61 67 61 69 6e 73 74 20 74 68 65  uted against the
16b90 20 76 69 72 74 75 61 6c 0d 0a 20 20 20 20 20 20   virtual..      
16ba0 20 20 2f 2f 2f 20 74 61 62 6c 65 2e 0d 0a 20 20    /// table...  
16bb0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
16bc0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
16bd0 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
16be0 2f 2f 20 54 68 65 20 78 44 65 73 74 72 6f 79 20  // The xDestroy 
16bf0 6d 65 74 68 6f 64 20 69 73 20 72 65 71 75 69 72  method is requir
16c00 65 64 20 66 6f 72 20 65 76 65 72 79 20 76 69 72  ed for every vir
16c10 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20  tual table..    
16c20 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e      /// implemen
16c30 74 61 74 69 6f 6e 2c 20 74 68 6f 75 67 68 20 69  tation, though i
16c40 74 20 69 73 20 61 63 63 65 70 74 61 62 6c 65 20  t is acceptable 
16c50 66 6f 72 20 74 68 65 20 78 44 69 73 63 6f 6e 6e  for the xDisconn
16c60 65 63 74 20 61 6e 64 0d 0a 20 20 20 20 20 20 20  ect and..       
16c70 20 2f 2f 2f 20 78 44 65 73 74 72 6f 79 20 6d 65   /// xDestroy me
16c80 74 68 6f 64 73 20 74 6f 20 62 65 20 74 68 65 20  thods to be the 
16c90 73 61 6d 65 20 66 75 6e 63 74 69 6f 6e 20 69 66  same function if
16ca0 20 74 68 61 74 20 6d 61 6b 65 73 20 73 65 6e 73   that makes sens
16cb0 65 20 66 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f  e for..        /
16cc0 2f 2f 20 74 68 65 20 70 61 72 74 69 63 75 6c 61  // the particula
16cd0 72 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e  r virtual table.
16ce0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
16cf0 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
16d00 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
16d10 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
16d20 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d  m name="pVtab">.
16d30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
16d40 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
16d50 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76  to the sqlite3_v
16d60 74 61 62 20 64 65 72 69 76 65 64 20 73 74 72 75  tab derived stru
16d70 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  cture...        
16d80 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
16d90 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
16da0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
16db0 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69   A standard SQLi
16dc0 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d  te return code..
16dd0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
16de0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
16df0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
16e00 20 78 44 65 73 74 72 6f 79 28 0d 0a 20 20 20 20   xDestroy(..    
16e10 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
16e20 56 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20  Vtab..          
16e30 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    );....        
16e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16e80 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
16e90 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
16ea0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
16eb0 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
16ec0 2f 20 54 68 65 20 78 4f 70 65 6e 20 6d 65 74 68  / The xOpen meth
16ed0 6f 64 20 63 72 65 61 74 65 73 20 61 20 6e 65 77  od creates a new
16ee0 20 63 75 72 73 6f 72 20 75 73 65 64 20 66 6f 72   cursor used for
16ef0 20 61 63 63 65 73 73 69 6e 67 20 28 72 65 61 64   accessing (read
16f00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 6e  ..        /// an
16f10 64 2f 6f 72 20 77 72 69 74 69 6e 67 29 20 61 20  d/or writing) a 
16f20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 20 41  virtual table. A
16f30 20 73 75 63 63 65 73 73 66 75 6c 20 69 6e 76 6f   successful invo
16f40 63 61 74 69 6f 6e 20 6f 66 20 74 68 69 73 0d 0a  cation of this..
16f50 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68          /// meth
16f60 6f 64 20 77 69 6c 6c 20 61 6c 6c 6f 63 61 74 65  od will allocate
16f70 20 74 68 65 20 6d 65 6d 6f 72 79 20 66 6f 72 20   the memory for 
16f80 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62  the sqlite3_vtab
16f90 5f 63 75 72 73 6f 72 20 28 6f 72 20 61 0d 0a 20  _cursor (or a.. 
16fa0 20 20 20 20 20 20 20 2f 2f 2f 20 73 75 62 63 6c         /// subcl
16fb0 61 73 73 29 2c 20 69 6e 69 74 69 61 6c 69 7a 65  ass), initialize
16fc0 20 74 68 65 20 6e 65 77 20 6f 62 6a 65 63 74 2c   the new object,
16fd0 20 61 6e 64 20 6d 61 6b 65 20 2a 70 70 43 75 72   and make *ppCur
16fe0 73 6f 72 20 70 6f 69 6e 74 20 74 6f 0d 0a 20 20  sor point to..  
16ff0 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 6e 65        /// the ne
17000 77 20 6f 62 6a 65 63 74 2e 20 54 68 65 20 73 75  w object. The su
17010 63 63 65 73 73 66 75 6c 20 63 61 6c 6c 20 74 68  ccessful call th
17020 65 6e 20 72 65 74 75 72 6e 73 20 53 51 4c 49 54  en returns SQLIT
17030 45 5f 4f 4b 2e 0d 0a 20 20 20 20 20 20 20 20 2f  E_OK...        /
17040 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20  // </para>..    
17050 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a      /// <para>..
17060 20 20 20 20 20 20 20 20 2f 2f 2f 20 46 6f 72 20          /// For 
17070 65 76 65 72 79 20 73 75 63 63 65 73 73 66 75 6c  every successful
17080 20 63 61 6c 6c 20 74 6f 20 74 68 69 73 20 6d 65   call to this me
17090 74 68 6f 64 2c 20 74 68 65 20 53 51 4c 69 74 65  thod, the SQLite
170a0 20 63 6f 72 65 20 77 69 6c 6c 0d 0a 20 20 20 20   core will..    
170b0 20 20 20 20 2f 2f 2f 20 6c 61 74 65 72 20 69 6e      /// later in
170c0 76 6f 6b 65 20 74 68 65 20 78 43 6c 6f 73 65 20  voke the xClose 
170d0 6d 65 74 68 6f 64 20 74 6f 20 64 65 73 74 72 6f  method to destro
170e0 79 20 74 68 65 20 61 6c 6c 6f 63 61 74 65 64 20  y the allocated 
170f0 63 75 72 73 6f 72 2e 0d 0a 20 20 20 20 20 20 20  cursor...       
17100 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
17110 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
17120 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
17130 65 20 78 4f 70 65 6e 20 6d 65 74 68 6f 64 20 6e  e xOpen method n
17140 65 65 64 20 6e 6f 74 20 69 6e 69 74 69 61 6c 69  eed not initiali
17150 7a 65 20 74 68 65 20 70 56 74 61 62 20 66 69 65  ze the pVtab fie
17160 6c 64 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20  ld of the..     
17170 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 76     /// sqlite3_v
17180 74 61 62 5f 63 75 72 73 6f 72 20 73 74 72 75 63  tab_cursor struc
17190 74 75 72 65 2e 20 54 68 65 20 53 51 4c 69 74 65  ture. The SQLite
171a0 20 63 6f 72 65 20 77 69 6c 6c 20 74 61 6b 65 20   core will take 
171b0 63 61 72 65 20 6f 66 0d 0a 20 20 20 20 20 20 20  care of..       
171c0 20 2f 2f 2f 20 74 68 61 74 20 63 68 6f 72 65 20   /// that chore 
171d0 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 0d 0a  automatically...
171e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
171f0 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
17200 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
17210 20 2f 2f 2f 20 41 20 76 69 72 74 75 61 6c 20 74   /// A virtual t
17220 61 62 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74  able implementat
17230 69 6f 6e 20 6d 75 73 74 20 62 65 20 61 62 6c 65  ion must be able
17240 20 74 6f 20 73 75 70 70 6f 72 74 20 61 6e 20 61   to support an a
17250 72 62 69 74 72 61 72 79 0d 0a 20 20 20 20 20 20  rbitrary..      
17260 20 20 2f 2f 2f 20 6e 75 6d 62 65 72 20 6f 66 20    /// number of 
17270 73 69 6d 75 6c 74 61 6e 65 6f 75 73 6c 79 20 6f  simultaneously o
17280 70 65 6e 20 63 75 72 73 6f 72 73 2e 0d 0a 20 20  pen cursors...  
17290 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
172a0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
172b0 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
172c0 2f 2f 20 57 68 65 6e 20 69 6e 69 74 69 61 6c 6c  // When initiall
172d0 79 20 6f 70 65 6e 65 64 2c 20 74 68 65 20 63 75  y opened, the cu
172e0 72 73 6f 72 20 69 73 20 69 6e 20 61 6e 20 75 6e  rsor is in an un
172f0 64 65 66 69 6e 65 64 20 73 74 61 74 65 2e 20 54  defined state. T
17300 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
17310 53 51 4c 69 74 65 20 63 6f 72 65 20 77 69 6c 6c  SQLite core will
17320 20 69 6e 76 6f 6b 65 20 74 68 65 20 78 46 69 6c   invoke the xFil
17330 74 65 72 20 6d 65 74 68 6f 64 20 6f 6e 20 74 68  ter method on th
17340 65 20 63 75 72 73 6f 72 20 70 72 69 6f 72 20 74  e cursor prior t
17350 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61  o..        /// a
17360 6e 79 20 61 74 74 65 6d 70 74 20 74 6f 20 70 6f  ny attempt to po
17370 73 69 74 69 6f 6e 20 6f 72 20 72 65 61 64 20 66  sition or read f
17380 72 6f 6d 20 74 68 65 20 63 75 72 73 6f 72 2e 0d  rom the cursor..
17390 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
173a0 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
173b0 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
173c0 20 20 2f 2f 2f 20 54 68 65 20 78 4f 70 65 6e 20    /// The xOpen 
173d0 6d 65 74 68 6f 64 20 69 73 20 72 65 71 75 69 72  method is requir
173e0 65 64 20 66 6f 72 20 65 76 65 72 79 20 76 69 72  ed for every vir
173f0 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20  tual table..    
17400 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e      /// implemen
17410 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  tation...       
17420 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
17430 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
17440 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
17450 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
17460 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
17470 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70  /// The native p
17480 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71  ointer to the sq
17490 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76  lite3_vtab deriv
174a0 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  ed structure... 
174b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
174c0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
174d0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43   <param name="pC
174e0 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20  ursor">..       
174f0 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73   /// Upon succes
17500 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65  s, this paramete
17510 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69  r must be modifi
17520 65 64 20 74 6f 20 70 6f 69 6e 74 20 74 6f 20 74  ed to point to t
17530 68 65 20 6e 65 77 6c 79 0d 0a 20 20 20 20 20 20  he newly..      
17540 20 20 2f 2f 2f 20 63 72 65 61 74 65 64 20 6e 61    /// created na
17550 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76 74 61  tive sqlite3_vta
17560 62 5f 63 75 72 73 6f 72 20 64 65 72 69 76 65 64  b_cursor derived
17570 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
17580 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
17590 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
175a0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
175b0 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64    /// A standard
175c0 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63   SQLite return c
175d0 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode...        //
175e0 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
175f0 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f        SQLiteErro
17600 72 43 6f 64 65 20 78 4f 70 65 6e 28 0d 0a 20 20  rCode xOpen(..  
17610 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
17620 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20   pVtab,..       
17630 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20       ref IntPtr 
17640 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20  pCursor..       
17650 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20       );....     
17660 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
17670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
176a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
176b0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
176c0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
176d0 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
176e0 20 2f 2f 2f 20 54 68 65 20 78 43 6c 6f 73 65 20   /// The xClose 
176f0 6d 65 74 68 6f 64 20 63 6c 6f 73 65 73 20 61 20  method closes a 
17700 63 75 72 73 6f 72 20 70 72 65 76 69 6f 75 73 6c  cursor previousl
17710 79 20 6f 70 65 6e 65 64 20 62 79 20 78 4f 70 65  y opened by xOpe
17720 6e 2e 20 54 68 65 0d 0a 20 20 20 20 20 20 20 20  n. The..        
17730 2f 2f 2f 20 53 51 4c 69 74 65 20 63 6f 72 65 20  /// SQLite core 
17740 77 69 6c 6c 20 61 6c 77 61 79 73 20 63 61 6c 6c  will always call
17750 20 78 43 6c 6f 73 65 20 6f 6e 63 65 20 66 6f 72   xClose once for
17760 20 65 61 63 68 20 63 75 72 73 6f 72 20 6f 70 65   each cursor ope
17770 6e 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ned..        ///
17780 20 75 73 69 6e 67 20 78 4f 70 65 6e 2e 0d 0a 20   using xOpen... 
17790 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
177a0 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
177b0 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
177c0 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20  /// This method 
177d0 6d 75 73 74 20 72 65 6c 65 61 73 65 20 61 6c 6c  must release all
177e0 20 72 65 73 6f 75 72 63 65 73 20 61 6c 6c 6f 63   resources alloc
177f0 61 74 65 64 20 62 79 20 74 68 65 0d 0a 20 20 20  ated by the..   
17800 20 20 20 20 20 2f 2f 2f 20 63 6f 72 72 65 73 70       /// corresp
17810 6f 6e 64 69 6e 67 20 78 4f 70 65 6e 20 63 61 6c  onding xOpen cal
17820 6c 2e 20 54 68 65 20 72 6f 75 74 69 6e 65 20 77  l. The routine w
17830 69 6c 6c 20 6e 6f 74 20 62 65 20 63 61 6c 6c 65  ill not be calle
17840 64 20 61 67 61 69 6e 20 65 76 65 6e 0d 0a 20 20  d again even..  
17850 20 20 20 20 20 20 2f 2f 2f 20 69 66 20 69 74 20        /// if it 
17860 72 65 74 75 72 6e 73 20 61 6e 20 65 72 72 6f 72  returns an error
17870 2e 20 54 68 65 20 53 51 4c 69 74 65 20 63 6f 72  . The SQLite cor
17880 65 20 77 69 6c 6c 20 6e 6f 74 20 75 73 65 20 74  e will not use t
17890 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
178a0 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72  sqlite3_vtab_cur
178b0 73 6f 72 20 61 67 61 69 6e 20 61 66 74 65 72 20  sor again after 
178c0 69 74 20 68 61 73 20 62 65 65 6e 20 63 6c 6f 73  it has been clos
178d0 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
178e0 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20   </para>..      
178f0 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20    /// <para>..  
17900 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 78 43        /// The xC
17910 6c 6f 73 65 20 6d 65 74 68 6f 64 20 69 73 20 72  lose method is r
17920 65 71 75 69 72 65 64 20 66 6f 72 20 65 76 65 72  equired for ever
17930 79 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 0d  y virtual table.
17940 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6d 70  .        /// imp
17950 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20  lementation...  
17960 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
17970 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
17980 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
17990 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
179a0 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20  me="pCursor">.. 
179b0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
179c0 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
179d0 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61   the sqlite3_vta
179e0 62 5f 63 75 72 73 6f 72 20 64 65 72 69 76 65 64  b_cursor derived
179f0 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
17a00 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
17a10 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
17a20 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
17a30 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64    /// A standard
17a40 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63   SQLite return c
17a50 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode...        //
17a60 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
17a70 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f        SQLiteErro
17a80 72 43 6f 64 65 20 78 43 6c 6f 73 65 28 0d 0a 20  rCode xClose(.. 
17a90 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
17aa0 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 20  r pCursor..     
17ab0 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20         );....   
17ac0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
17ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
17b10 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
17b20 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
17b30 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20  // <para>..     
17b40 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68     /// This meth
17b50 6f 64 20 62 65 67 69 6e 73 20 61 20 73 65 61 72  od begins a sear
17b60 63 68 20 6f 66 20 61 20 76 69 72 74 75 61 6c 20  ch of a virtual 
17b70 74 61 62 6c 65 2e 20 54 68 65 20 66 69 72 73 74  table. The first
17b80 20 61 72 67 75 6d 65 6e 74 0d 0a 20 20 20 20 20   argument..     
17b90 20 20 20 2f 2f 2f 20 69 73 20 61 20 63 75 72 73     /// is a curs
17ba0 6f 72 20 6f 70 65 6e 65 64 20 62 79 20 78 4f 70  or opened by xOp
17bb0 65 6e 2e 20 54 68 65 20 6e 65 78 74 20 74 77 6f  en. The next two
17bc0 20 61 72 67 75 6d 65 6e 74 20 64 65 66 69 6e 65   argument define
17bd0 20 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20   a..        /// 
17be0 70 61 72 74 69 63 75 6c 61 72 20 73 65 61 72 63  particular searc
17bf0 68 20 69 6e 64 65 78 20 70 72 65 76 69 6f 75 73  h index previous
17c00 6c 79 20 63 68 6f 73 65 6e 20 62 79 20 78 42 65  ly chosen by xBe
17c10 73 74 49 6e 64 65 78 2e 20 54 68 65 0d 0a 20 20  stIndex. The..  
17c20 20 20 20 20 20 20 2f 2f 2f 20 73 70 65 63 69 66        /// specif
17c30 69 63 20 6d 65 61 6e 69 6e 67 73 20 6f 66 20 69  ic meanings of i
17c40 64 78 4e 75 6d 20 61 6e 64 20 69 64 78 53 74 72  dxNum and idxStr
17c50 20 61 72 65 20 75 6e 69 6d 70 6f 72 74 61 6e 74   are unimportant
17c60 20 61 73 20 6c 6f 6e 67 20 61 73 0d 0a 20 20 20   as long as..   
17c70 20 20 20 20 20 2f 2f 2f 20 78 46 69 6c 74 65 72       /// xFilter
17c80 20 61 6e 64 20 78 42 65 73 74 49 6e 64 65 78 20   and xBestIndex 
17c90 61 67 72 65 65 20 6f 6e 20 77 68 61 74 20 74 68  agree on what th
17ca0 61 74 20 6d 65 61 6e 69 6e 67 20 69 73 2e 0d 0a  at meaning is...
17cb0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
17cc0 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
17cd0 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
17ce0 20 2f 2f 2f 20 54 68 65 20 78 42 65 73 74 49 6e   /// The xBestIn
17cf0 64 65 78 20 66 75 6e 63 74 69 6f 6e 20 6d 61 79  dex function may
17d00 20 68 61 76 65 20 72 65 71 75 65 73 74 65 64 20   have requested 
17d10 74 68 65 20 76 61 6c 75 65 73 20 6f 66 20 63 65  the values of ce
17d20 72 74 61 69 6e 0d 0a 20 20 20 20 20 20 20 20 2f  rtain..        /
17d30 2f 2f 20 65 78 70 72 65 73 73 69 6f 6e 73 20 75  // expressions u
17d40 73 69 6e 67 20 74 68 65 20 61 43 6f 6e 73 74 72  sing the aConstr
17d50 61 69 6e 74 55 73 61 67 65 5b 5d 2e 61 72 67 76  aintUsage[].argv
17d60 49 6e 64 65 78 20 76 61 6c 75 65 73 20 6f 66 20  Index values of 
17d70 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
17d80 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69   sqlite3_index_i
17d90 6e 66 6f 20 73 74 72 75 63 74 75 72 65 2e 20 54  nfo structure. T
17da0 68 6f 73 65 20 76 61 6c 75 65 73 20 61 72 65 20  hose values are 
17db0 70 61 73 73 65 64 20 74 6f 20 78 46 69 6c 74 65  passed to xFilte
17dc0 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 75  r..        /// u
17dd0 73 69 6e 67 20 74 68 65 20 61 72 67 63 20 61 6e  sing the argc an
17de0 64 20 61 72 67 76 20 70 61 72 61 6d 65 74 65 72  d argv parameter
17df0 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s...        /// 
17e00 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
17e10 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
17e20 20 20 20 20 20 2f 2f 2f 20 49 66 20 74 68 65 20       /// If the 
17e30 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 63 6f  virtual table co
17e40 6e 74 61 69 6e 73 20 6f 6e 65 20 6f 72 20 6d 6f  ntains one or mo
17e50 72 65 20 72 6f 77 73 20 74 68 61 74 20 6d 61 74  re rows that mat
17e60 63 68 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  ch the..        
17e70 2f 2f 2f 20 73 65 61 72 63 68 20 63 72 69 74 65  /// search crite
17e80 72 69 61 2c 20 74 68 65 6e 20 74 68 65 20 63 75  ria, then the cu
17e90 72 73 6f 72 20 6d 75 73 74 20 62 65 20 6c 65 66  rsor must be lef
17ea0 74 20 70 6f 69 6e 74 20 61 74 20 74 68 65 20 66  t point at the f
17eb0 69 72 73 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f  irst..        //
17ec0 2f 20 72 6f 77 2e 20 53 75 62 73 65 71 75 65 6e  / row. Subsequen
17ed0 74 20 63 61 6c 6c 73 20 74 6f 20 78 45 6f 66 20  t calls to xEof 
17ee0 6d 75 73 74 20 72 65 74 75 72 6e 20 66 61 6c 73  must return fals
17ef0 65 20 28 7a 65 72 6f 29 2e 20 49 66 20 74 68 65  e (zero). If the
17f00 72 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  re..        /// 
17f10 61 72 65 20 6e 6f 20 72 6f 77 73 20 6d 61 74 63  are no rows matc
17f20 68 2c 20 74 68 65 6e 20 74 68 65 20 63 75 72 73  h, then the curs
17f30 6f 72 20 6d 75 73 74 20 62 65 20 6c 65 66 74 20  or must be left 
17f40 69 6e 20 61 20 73 74 61 74 65 20 74 68 61 74 0d  in a state that.
17f50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 6c  .        /// wil
17f60 6c 20 63 61 75 73 65 20 74 68 65 20 78 45 6f 66  l cause the xEof
17f70 20 74 6f 20 72 65 74 75 72 6e 20 74 72 75 65 20   to return true 
17f80 28 6e 6f 6e 2d 7a 65 72 6f 29 2e 20 54 68 65 20  (non-zero). The 
17f90 53 51 4c 69 74 65 20 65 6e 67 69 6e 65 0d 0a 20  SQLite engine.. 
17fa0 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 6c 6c 20         /// will 
17fb0 75 73 65 20 74 68 65 20 78 43 6f 6c 75 6d 6e 20  use the xColumn 
17fc0 61 6e 64 20 78 52 6f 77 69 64 20 6d 65 74 68 6f  and xRowid metho
17fd0 64 73 20 74 6f 20 61 63 63 65 73 73 20 74 68 61  ds to access tha
17fe0 74 20 72 6f 77 20 63 6f 6e 74 65 6e 74 2e 0d 0a  t row content...
17ff0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
18000 78 4e 65 78 74 20 6d 65 74 68 6f 64 20 77 69 6c  xNext method wil
18010 6c 20 62 65 20 75 73 65 64 20 74 6f 20 61 64 76  l be used to adv
18020 61 6e 63 65 20 74 6f 20 74 68 65 20 6e 65 78 74  ance to the next
18030 20 72 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 2f   row...        /
18040 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20  // </para>..    
18050 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a      /// <para>..
18060 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
18070 20 6d 65 74 68 6f 64 20 6d 75 73 74 20 72 65 74   method must ret
18080 75 72 6e 20 53 51 4c 49 54 45 5f 4f 4b 20 69 66  urn SQLITE_OK if
18090 20 73 75 63 63 65 73 73 66 75 6c 2c 20 6f 72 20   successful, or 
180a0 61 6e 20 73 71 6c 69 74 65 20 65 72 72 6f 72 0d  an sqlite error.
180b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 64  .        /// cod
180c0 65 20 69 66 20 61 6e 20 65 72 72 6f 72 20 6f 63  e if an error oc
180d0 63 75 72 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  curs...        /
180e0 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20  // </para>..    
180f0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a      /// <para>..
18100 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
18110 78 46 69 6c 74 65 72 20 6d 65 74 68 6f 64 20 69  xFilter method i
18120 73 20 72 65 71 75 69 72 65 64 20 66 6f 72 20 65  s required for e
18130 76 65 72 79 20 76 69 72 74 75 61 6c 20 74 61 62  very virtual tab
18140 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  le..        /// 
18150 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d  implementation..
18160 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
18170 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
18180 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
18190 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
181a0 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e   name="pCursor">
181b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
181c0 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
181d0 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
181e0 76 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69  vtab_cursor deri
181f0 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  ved structure...
18200 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
18210 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
18220 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69  / <param name="i
18230 64 78 4e 75 6d 22 3e 0d 0a 20 20 20 20 20 20 20  dxNum">..       
18240 20 2f 2f 2f 20 4e 75 6d 62 65 72 20 75 73 65 64   /// Number used
18250 20 74 6f 20 68 65 6c 70 20 69 64 65 6e 74 69 66   to help identif
18260 79 20 74 68 65 20 73 65 6c 65 63 74 65 64 20 69  y the selected i
18270 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ndex...        /
18280 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
18290 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
182a0 6e 61 6d 65 3d 22 69 64 78 53 74 72 22 3e 0d 0a  name="idxStr">..
182b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
182c0 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
182d0 6f 20 74 68 65 20 55 54 46 2d 38 20 65 6e 63 6f  o the UTF-8 enco
182e0 64 65 64 20 73 74 72 69 6e 67 20 63 6f 6e 74 61  ded string conta
182f0 69 6e 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20  ining the..     
18300 20 20 20 2f 2f 2f 20 73 74 72 69 6e 67 20 75 73     /// string us
18310 65 64 20 74 6f 20 68 65 6c 70 20 69 64 65 6e 74  ed to help ident
18320 69 66 79 20 74 68 65 20 73 65 6c 65 63 74 65 64  ify the selected
18330 20 69 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20 20   index...       
18340 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
18350 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
18360 6d 20 6e 61 6d 65 3d 22 61 72 67 63 22 3e 0d 0a  m name="argc">..
18370 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
18380 6e 75 6d 62 65 72 20 6f 66 20 6e 61 74 69 76 65  number of native
18390 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 73 71 6c   pointers to sql
183a0 69 74 65 33 5f 76 61 6c 75 65 20 73 74 72 75 63  ite3_value struc
183b0 74 75 72 65 73 20 73 70 65 63 69 66 69 65 64 0d  tures specified.
183c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 20  .        /// in 
183d0 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22  <paramref name="
183e0 61 72 67 76 22 20 2f 3e 2e 0d 0a 20 20 20 20 20  argv" />...     
183f0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
18400 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
18410 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 76 22 3e  ram name="argv">
18420 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 6e  ..        /// An
18430 20 61 72 72 61 79 20 6f 66 20 6e 61 74 69 76 65   array of native
18440 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 73 71 6c   pointers to sql
18450 69 74 65 33 5f 76 61 6c 75 65 20 73 74 72 75 63  ite3_value struc
18460 74 75 72 65 73 20 63 6f 6e 74 61 69 6e 69 6e 67  tures containing
18470 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 66 69  ..        /// fi
18480 6c 74 65 72 69 6e 67 20 63 72 69 74 65 72 69 61  ltering criteria
18490 20 66 6f 72 20 74 68 65 20 73 65 6c 65 63 74 65   for the selecte
184a0 64 20 69 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20  d index...      
184b0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
184c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
184d0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
184e0 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51  // A standard SQ
184f0 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65  Lite return code
18500 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
18510 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
18520 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f     SQLiteErrorCo
18530 64 65 20 78 46 69 6c 74 65 72 28 0d 0a 20 20 20  de xFilter(..   
18540 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
18550 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20  pCursor,..      
18560 20 20 20 20 20 20 69 6e 74 20 69 64 78 4e 75 6d        int idxNum
18570 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  ,..            I
18580 6e 74 50 74 72 20 69 64 78 53 74 72 2c 0d 0a 20  ntPtr idxStr,.. 
18590 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 61             int a
185a0 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  rgc,..          
185b0 20 20 49 6e 74 50 74 72 20 61 72 67 76 0d 0a 20    IntPtr argv.. 
185c0 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d             );...
185d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
185e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
185f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18620 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
18630 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
18640 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20     /// <para>.. 
18650 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 78         /// The x
18660 4e 65 78 74 20 6d 65 74 68 6f 64 20 61 64 76 61  Next method adva
18670 6e 63 65 73 20 61 20 76 69 72 74 75 61 6c 20 74  nces a virtual t
18680 61 62 6c 65 20 63 75 72 73 6f 72 20 74 6f 20 74  able cursor to t
18690 68 65 20 6e 65 78 74 20 72 6f 77 20 6f 66 0d 0a  he next row of..
186a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 20 72 65          /// a re
186b0 73 75 6c 74 20 73 65 74 20 69 6e 69 74 69 61 74  sult set initiat
186c0 65 64 20 62 79 20 78 46 69 6c 74 65 72 2e 20 49  ed by xFilter. I
186d0 66 20 74 68 65 20 63 75 72 73 6f 72 20 69 73 20  f the cursor is 
186e0 61 6c 72 65 61 64 79 0d 0a 20 20 20 20 20 20 20  already..       
186f0 20 2f 2f 2f 20 70 6f 69 6e 74 69 6e 67 20 61 74   /// pointing at
18700 20 74 68 65 20 6c 61 73 74 20 72 6f 77 20 77 68   the last row wh
18710 65 6e 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20  en this routine 
18720 69 73 20 63 61 6c 6c 65 64 2c 20 74 68 65 6e 20  is called, then 
18730 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
18740 20 63 75 72 73 6f 72 20 6e 6f 20 6c 6f 6e 67 65   cursor no longe
18750 72 20 70 6f 69 6e 74 73 20 74 6f 20 76 61 6c 69  r points to vali
18760 64 20 64 61 74 61 20 61 6e 64 20 61 20 73 75 62  d data and a sub
18770 73 65 71 75 65 6e 74 20 63 61 6c 6c 20 74 6f 20  sequent call to 
18780 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
18790 20 78 45 6f 66 20 6d 65 74 68 6f 64 20 6d 75 73   xEof method mus
187a0 74 20 72 65 74 75 72 6e 20 74 72 75 65 20 28 6e  t return true (n
187b0 6f 6e 2d 7a 65 72 6f 29 2e 20 49 66 20 74 68 65  on-zero). If the
187c0 20 63 75 72 73 6f 72 20 69 73 0d 0a 20 20 20 20   cursor is..    
187d0 20 20 20 20 2f 2f 2f 20 73 75 63 63 65 73 73 66      /// successf
187e0 75 6c 6c 79 20 61 64 76 61 6e 63 65 64 20 74 6f  ully advanced to
187f0 20 61 6e 6f 74 68 65 72 20 72 6f 77 20 6f 66 20   another row of 
18800 63 6f 6e 74 65 6e 74 2c 20 74 68 65 6e 20 73 75  content, then su
18810 62 73 65 71 75 65 6e 74 0d 0a 20 20 20 20 20 20  bsequent..      
18820 20 20 2f 2f 2f 20 63 61 6c 6c 73 20 74 6f 20 78    /// calls to x
18830 45 6f 66 20 6d 75 73 74 20 72 65 74 75 72 6e 20  Eof must return 
18840 66 61 6c 73 65 20 28 7a 65 72 6f 29 2e 0d 0a 20  false (zero)... 
18850 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
18860 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
18870 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
18880 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20  /// This method 
18890 6d 75 73 74 20 72 65 74 75 72 6e 20 53 51 4c 49  must return SQLI
188a0 54 45 5f 4f 4b 20 69 66 20 73 75 63 63 65 73 73  TE_OK if success
188b0 66 75 6c 2c 20 6f 72 20 61 6e 20 73 71 6c 69 74  ful, or an sqlit
188c0 65 20 65 72 72 6f 72 0d 0a 20 20 20 20 20 20 20  e error..       
188d0 20 2f 2f 2f 20 63 6f 64 65 20 69 66 20 61 6e 20   /// code if an 
188e0 65 72 72 6f 72 20 6f 63 63 75 72 73 2e 0d 0a 20  error occurs... 
188f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
18900 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
18910 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  <para>..        
18920 2f 2f 2f 20 54 68 65 20 78 4e 65 78 74 20 6d 65  /// The xNext me
18930 74 68 6f 64 20 69 73 20 72 65 71 75 69 72 65 64  thod is required
18940 20 66 6f 72 20 65 76 65 72 79 20 76 69 72 74 75   for every virtu
18950 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20 20 20  al table..      
18960 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74 61    /// implementa
18970 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  tion...        /
18980 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20  // </para>..    
18990 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
189a0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
189b0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75  <param name="pCu
189c0 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20  rsor">..        
189d0 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70  /// The native p
189e0 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71  ointer to the sq
189f0 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f  lite3_vtab_curso
18a00 72 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74  r derived struct
18a10 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
18a20 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
18a30 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
18a40 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
18a50 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
18a60 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
18a70 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
18a80 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53  urns>..        S
18a90 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
18aa0 4e 65 78 74 28 0d 0a 20 20 20 20 20 20 20 20 20  Next(..         
18ab0 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f     IntPtr pCurso
18ac0 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  r..            )
18ad0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
18ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b20 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
18b30 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
18b40 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
18b50 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
18b60 68 65 20 78 45 6f 66 20 6d 65 74 68 6f 64 20 6d  he xEof method m
18b70 75 73 74 20 72 65 74 75 72 6e 20 66 61 6c 73 65  ust return false
18b80 20 28 7a 65 72 6f 29 20 69 66 20 74 68 65 20 73   (zero) if the s
18b90 70 65 63 69 66 69 65 64 20 63 75 72 73 6f 72 0d  pecified cursor.
18ba0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 75 72  .        /// cur
18bb0 72 65 6e 74 6c 79 20 70 6f 69 6e 74 73 20 74 6f  rently points to
18bc0 20 61 20 76 61 6c 69 64 20 72 6f 77 20 6f 66 20   a valid row of 
18bd0 64 61 74 61 2c 20 6f 72 20 74 72 75 65 20 28 6e  data, or true (n
18be0 6f 6e 2d 7a 65 72 6f 29 0d 0a 20 20 20 20 20 20  on-zero)..      
18bf0 20 20 2f 2f 2f 20 6f 74 68 65 72 77 69 73 65 2e    /// otherwise.
18c00 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20   This method is 
18c10 63 61 6c 6c 65 64 20 62 79 20 74 68 65 20 53 51  called by the SQ
18c20 4c 20 65 6e 67 69 6e 65 20 69 6d 6d 65 64 69 61  L engine immedia
18c30 74 65 6c 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tely..        //
18c40 2f 20 61 66 74 65 72 20 65 61 63 68 20 78 46 69  / after each xFi
18c50 6c 74 65 72 20 61 6e 64 20 78 4e 65 78 74 20 69  lter and xNext i
18c60 6e 76 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20  nvocation...    
18c70 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d      /// </para>.
18c80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
18c90 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
18ca0 20 54 68 65 20 78 45 6f 66 20 6d 65 74 68 6f 64   The xEof method
18cb0 20 69 73 20 72 65 71 75 69 72 65 64 20 66 6f 72   is required for
18cc0 20 65 76 65 72 79 20 76 69 72 74 75 61 6c 20 74   every virtual t
18cd0 61 62 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74  able implementat
18ce0 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ion...        //
18cf0 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20  / </para>..     
18d00 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
18d10 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
18d20 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72  param name="pCur
18d30 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  sor">..        /
18d40 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f  // The native po
18d50 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c  inter to the sql
18d60 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72  ite3_vtab_cursor
18d70 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75   derived structu
18d80 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
18d90 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
18da0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
18db0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  ..        /// No
18dc0 6e 2d 7a 65 72 6f 20 69 66 20 6e 6f 20 6d 6f 72  n-zero if no mor
18dd0 65 20 72 6f 77 73 20 61 72 65 20 61 76 61 69 6c  e rows are avail
18de0 61 62 6c 65 3b 20 7a 65 72 6f 20 6f 74 68 65 72  able; zero other
18df0 77 69 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  wise...        /
18e00 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
18e10 20 20 20 20 20 20 20 69 6e 74 20 78 45 6f 66 28         int xEof(
18e20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
18e30 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20  tPtr pCursor..  
18e40 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a            );....
18e50 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
18e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
18ea0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
18eb0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
18ec0 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20    /// <para>..  
18ed0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 53 51        /// The SQ
18ee0 4c 69 74 65 20 63 6f 72 65 20 69 6e 76 6f 6b 65  Lite core invoke
18ef0 73 20 74 68 69 73 20 6d 65 74 68 6f 64 20 69 6e  s this method in
18f00 20 6f 72 64 65 72 20 74 6f 20 66 69 6e 64 20 74   order to find t
18f10 68 65 20 76 61 6c 75 65 20 66 6f 72 0d 0a 20 20  he value for..  
18f20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 4e 2d        /// the N-
18f30 74 68 20 63 6f 6c 75 6d 6e 20 6f 66 20 74 68 65  th column of the
18f40 20 63 75 72 72 65 6e 74 20 72 6f 77 2e 20 4e 20   current row. N 
18f50 69 73 20 7a 65 72 6f 2d 62 61 73 65 64 20 73 6f  is zero-based so
18f60 20 74 68 65 20 66 69 72 73 74 0d 0a 20 20 20 20   the first..    
18f70 20 20 20 20 2f 2f 2f 20 63 6f 6c 75 6d 6e 20 69      /// column i
18f80 73 20 6e 75 6d 62 65 72 65 64 20 30 2e 20 54 68  s numbered 0. Th
18f90 65 20 78 43 6f 6c 75 6d 6e 20 6d 65 74 68 6f 64  e xColumn method
18fa0 20 6d 61 79 20 72 65 74 75 72 6e 20 69 74 73 20   may return its 
18fb0 72 65 73 75 6c 74 20 62 61 63 6b 0d 0a 20 20 20  result back..   
18fc0 20 20 20 20 20 2f 2f 2f 20 74 6f 20 53 51 4c 69       /// to SQLi
18fd0 74 65 20 75 73 69 6e 67 20 6f 6e 65 20 6f 66 20  te using one of 
18fe0 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 69 6e  the following in
18ff0 74 65 72 66 61 63 65 3a 0d 0a 20 20 20 20 20 20  terface:..      
19000 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
19010 20 20 20 20 20 20 20 2f 2f 2f 20 3c 63 6f 64 65         /// <code
19020 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20  >..        ///  
19030 20 20 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c     sqlite3_resul
19040 74 5f 62 6c 6f 62 28 29 0d 0a 20 20 20 20 20 20  t_blob()..      
19050 20 20 2f 2f 2f 20 20 20 20 20 73 71 6c 69 74 65    ///     sqlite
19060 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62 6c 65 28  3_result_double(
19070 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20  )..        ///  
19080 20 20 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c     sqlite3_resul
19090 74 5f 69 6e 74 28 29 0d 0a 20 20 20 20 20 20 20  t_int()..       
190a0 20 2f 2f 2f 20 20 20 20 20 73 71 6c 69 74 65 33   ///     sqlite3
190b0 5f 72 65 73 75 6c 74 5f 69 6e 74 36 34 28 29 0d  _result_int64().
190c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20  .        ///    
190d0 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
190e0 6e 75 6c 6c 28 29 0d 0a 20 20 20 20 20 20 20 20  null()..        
190f0 2f 2f 2f 20 20 20 20 20 73 71 6c 69 74 65 33 5f  ///     sqlite3_
19100 72 65 73 75 6c 74 5f 74 65 78 74 28 29 0d 0a 20  result_text().. 
19110 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 73         ///     s
19120 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 74 65  qlite3_result_te
19130 78 74 31 36 28 29 0d 0a 20 20 20 20 20 20 20 20  xt16()..        
19140 2f 2f 2f 20 20 20 20 20 73 71 6c 69 74 65 33 5f  ///     sqlite3_
19150 72 65 73 75 6c 74 5f 74 65 78 74 31 36 6c 65 28  result_text16le(
19160 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20  )..        ///  
19170 20 20 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c     sqlite3_resul
19180 74 5f 74 65 78 74 31 36 62 65 28 29 0d 0a 20 20  t_text16be()..  
19190 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 73 71        ///     sq
191a0 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 7a 65 72  lite3_result_zer
191b0 6f 62 6c 6f 62 28 29 0d 0a 20 20 20 20 20 20 20  oblob()..       
191c0 20 2f 2f 2f 20 3c 2f 63 6f 64 65 3e 0d 0a 20 20   /// </code>..  
191d0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
191e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 49 66  ..        /// If
191f0 20 74 68 65 20 78 43 6f 6c 75 6d 6e 20 6d 65 74   the xColumn met
19200 68 6f 64 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  hod implementati
19210 6f 6e 20 63 61 6c 6c 73 20 6e 6f 6e 65 20 6f 66  on calls none of
19220 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 73 0d 0a   the functions..
19230 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 62 6f 76          /// abov
19240 65 2c 20 74 68 65 6e 20 74 68 65 20 76 61 6c 75  e, then the valu
19250 65 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e 20  e of the column 
19260 64 65 66 61 75 6c 74 73 20 74 6f 20 61 6e 20 53  defaults to an S
19270 51 4c 20 4e 55 4c 4c 2e 0d 0a 20 20 20 20 20 20  QL NULL...      
19280 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
19290 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
192a0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
192b0 6f 20 72 61 69 73 65 20 61 6e 20 65 72 72 6f 72  o raise an error
192c0 2c 20 74 68 65 20 78 43 6f 6c 75 6d 6e 20 6d 65  , the xColumn me
192d0 74 68 6f 64 20 73 68 6f 75 6c 64 20 75 73 65 20  thod should use 
192e0 6f 6e 65 20 6f 66 20 74 68 65 0d 0a 20 20 20 20  one of the..    
192f0 20 20 20 20 2f 2f 2f 20 72 65 73 75 6c 74 5f 74      /// result_t
19300 65 78 74 28 29 20 6d 65 74 68 6f 64 73 20 74 6f  ext() methods to
19310 20 73 65 74 20 74 68 65 20 65 72 72 6f 72 20 6d   set the error m
19320 65 73 73 61 67 65 20 74 65 78 74 2c 20 74 68 65  essage text, the
19330 6e 20 72 65 74 75 72 6e 20 61 6e 0d 0a 20 20 20  n return an..   
19340 20 20 20 20 20 2f 2f 2f 20 61 70 70 72 6f 70 72       /// appropr
19350 69 61 74 65 20 65 72 72 6f 72 20 63 6f 64 65 2e  iate error code.
19360 20 54 68 65 20 78 43 6f 6c 75 6d 6e 20 6d 65 74   The xColumn met
19370 68 6f 64 20 6d 75 73 74 20 72 65 74 75 72 6e 20  hod must return 
19380 53 51 4c 49 54 45 5f 4f 4b 20 6f 6e 0d 0a 20 20  SQLITE_OK on..  
19390 20 20 20 20 20 20 2f 2f 2f 20 73 75 63 63 65 73        /// succes
193a0 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s...        /// 
193b0 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
193c0 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
193d0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 78 43 6f       /// The xCo
193e0 6c 75 6d 6e 20 6d 65 74 68 6f 64 20 69 73 20 72  lumn method is r
193f0 65 71 75 69 72 65 64 20 66 6f 72 20 65 76 65 72  equired for ever
19400 79 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 0d  y virtual table.
19410 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6d 70  .        /// imp
19420 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20  lementation...  
19430 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
19440 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
19450 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
19460 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
19470 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20  me="pCursor">.. 
19480 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
19490 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
194a0 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61   the sqlite3_vta
194b0 62 5f 63 75 72 73 6f 72 20 64 65 72 69 76 65 64  b_cursor derived
194c0 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
194d0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
194e0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
194f0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 6f 6e  param name="pCon
19500 74 65 78 74 22 3e 0d 0a 20 20 20 20 20 20 20 20  text">..        
19510 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70  /// The native p
19520 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71  ointer to the sq
19530 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 20 73 74  lite3_context st
19540 72 75 63 74 75 72 65 20 74 6f 20 62 65 20 75 73  ructure to be us
19550 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
19560 66 6f 72 20 72 65 74 75 72 6e 69 6e 67 20 74 68  for returning th
19570 65 20 73 70 65 63 69 66 69 65 64 20 63 6f 6c 75  e specified colu
19580 6d 6e 20 76 61 6c 75 65 20 74 6f 20 74 68 65 20  mn value to the 
19590 53 51 4c 69 74 65 20 63 6f 72 65 0d 0a 20 20 20  SQLite core..   
195a0 20 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79       /// library
195b0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
195c0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
195d0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
195e0 3d 22 69 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20  ="index">..     
195f0 20 20 20 2f 2f 2f 20 54 68 65 20 7a 65 72 6f 2d     /// The zero-
19600 62 61 73 65 64 20 69 6e 64 65 78 20 63 6f 72 72  based index corr
19610 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 74 68 65  esponding to the
19620 20 63 6f 6c 75 6d 6e 20 63 6f 6e 74 61 69 6e 69   column containi
19630 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  ng the..        
19640 2f 2f 2f 20 76 61 6c 75 65 20 74 6f 20 62 65 20  /// value to be 
19650 72 65 74 75 72 6e 65 64 2e 0d 0a 20 20 20 20 20  returned...     
19660 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
19670 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
19680 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
19690 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53  /// A standard S
196a0 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64  QLite return cod
196b0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
196c0 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
196d0 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43      SQLiteErrorC
196e0 6f 64 65 20 78 43 6f 6c 75 6d 6e 28 0d 0a 20 20  ode xColumn(..  
196f0 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
19700 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20   pCursor,..     
19710 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
19720 6f 6e 74 65 78 74 2c 0d 0a 20 20 20 20 20 20 20  ontext,..       
19730 20 20 20 20 20 69 6e 74 20 69 6e 64 65 78 0d 0a       int index..
19740 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a              );..
19750 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
19760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
197a0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
197b0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
197c0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a      /// <para>..
197d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 75          /// A su
197e0 63 63 65 73 73 66 75 6c 20 69 6e 76 6f 63 61 74  ccessful invocat
197f0 69 6f 6e 20 6f 66 20 74 68 69 73 20 6d 65 74 68  ion of this meth
19800 6f 64 20 77 69 6c 6c 20 63 61 75 73 65 20 2a 70  od will cause *p
19810 52 6f 77 69 64 20 74 6f 20 62 65 0d 0a 20 20 20  Rowid to be..   
19820 20 20 20 20 20 2f 2f 2f 20 66 69 6c 6c 65 64 20       /// filled 
19830 77 69 74 68 20 74 68 65 20 72 6f 77 69 64 20 6f  with the rowid o
19840 66 20 72 6f 77 20 74 68 61 74 20 74 68 65 20 76  f row that the v
19850 69 72 74 75 61 6c 20 74 61 62 6c 65 20 63 75 72  irtual table cur
19860 73 6f 72 20 70 43 75 72 20 69 73 0d 0a 20 20 20  sor pCur is..   
19870 20 20 20 20 20 2f 2f 2f 20 63 75 72 72 65 6e 74       /// current
19880 6c 79 20 70 6f 69 6e 74 69 6e 67 20 61 74 2e 20  ly pointing at. 
19890 54 68 69 73 20 6d 65 74 68 6f 64 20 72 65 74 75  This method retu
198a0 72 6e 73 20 53 51 4c 49 54 45 5f 4f 4b 20 6f 6e  rns SQLITE_OK on
198b0 20 73 75 63 63 65 73 73 2e 20 49 74 0d 0a 20 20   success. It..  
198c0 20 20 20 20 20 20 2f 2f 2f 20 72 65 74 75 72 6e        /// return
198d0 73 20 61 6e 20 61 70 70 72 6f 70 72 69 61 74 65  s an appropriate
198e0 20 65 72 72 6f 72 20 63 6f 64 65 20 6f 6e 20 66   error code on f
198f0 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ailure...       
19900 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
19910 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
19920 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
19930 65 20 78 52 6f 77 69 64 20 6d 65 74 68 6f 64 20  e xRowid method 
19940 69 73 20 72 65 71 75 69 72 65 64 20 66 6f 72 20  is required for 
19950 65 76 65 72 79 20 76 69 72 74 75 61 6c 20 74 61  every virtual ta
19960 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ble..        ///
19970 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e   implementation.
19980 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
19990 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
199a0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
199b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
199c0 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22  m name="pCursor"
199d0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
199e0 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
199f0 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33  r to the sqlite3
19a00 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72  _vtab_cursor der
19a10 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d  ived structure..
19a20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
19a30 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
19a40 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
19a50 72 6f 77 49 64 22 3e 0d 0a 20 20 20 20 20 20 20  rowId">..       
19a60 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73   /// Upon succes
19a70 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65  s, this paramete
19a80 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69  r must be modifi
19a90 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68  ed to contain th
19aa0 65 20 75 6e 69 71 75 65 0d 0a 20 20 20 20 20 20  e unique..      
19ab0 20 20 2f 2f 2f 20 69 6e 74 65 67 65 72 20 72 6f    /// integer ro
19ac0 77 20 69 64 65 6e 74 69 66 69 65 72 20 66 6f 72  w identifier for
19ad0 20 74 68 65 20 63 75 72 72 65 6e 74 20 72 6f 77   the current row
19ae0 20 66 6f 72 20 74 68 65 20 73 70 65 63 69 66 69   for the specifi
19af0 65 64 20 63 75 72 73 6f 72 2e 0d 0a 20 20 20 20  ed cursor...    
19b00 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
19b10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
19b20 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
19b30 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20   /// A standard 
19b40 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f  SQLite return co
19b50 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de...        ///
19b60 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
19b70 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72       SQLiteError
19b80 43 6f 64 65 20 78 52 6f 77 49 64 28 0d 0a 20 20  Code xRowId(..  
19b90 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
19ba0 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20   pCursor,..     
19bb0 20 20 20 20 20 20 20 72 65 66 20 6c 6f 6e 67 20         ref long 
19bc0 72 6f 77 49 64 0d 0a 20 20 20 20 20 20 20 20 20  rowId..         
19bd0 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20     );....       
19be0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
19bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c20 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
19c30 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
19c40 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
19c50 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
19c60 2f 2f 20 41 6c 6c 20 63 68 61 6e 67 65 73 20 74  // All changes t
19c70 6f 20 61 20 76 69 72 74 75 61 6c 20 74 61 62 6c  o a virtual tabl
19c80 65 20 61 72 65 20 6d 61 64 65 20 75 73 69 6e 67  e are made using
19c90 20 74 68 65 20 78 55 70 64 61 74 65 20 6d 65 74   the xUpdate met
19ca0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
19cb0 2f 20 54 68 69 73 20 6f 6e 65 20 6d 65 74 68 6f  / This one metho
19cc0 64 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f  d can be used to
19cd0 20 69 6e 73 65 72 74 2c 20 64 65 6c 65 74 65 2c   insert, delete,
19ce0 20 6f 72 20 75 70 64 61 74 65 2e 0d 0a 20 20 20   or update...   
19cf0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
19d00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
19d10 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
19d20 2f 20 54 68 65 20 61 72 67 63 20 70 61 72 61 6d  / The argc param
19d30 65 74 65 72 20 73 70 65 63 69 66 69 65 73 20 74  eter specifies t
19d40 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 65 6e 74  he number of ent
19d50 72 69 65 73 20 69 6e 20 74 68 65 20 61 72 67 76  ries in the argv
19d60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 72  ..        /// ar
19d70 72 61 79 2e 20 54 68 65 20 76 61 6c 75 65 20 6f  ray. The value o
19d80 66 20 61 72 67 63 20 77 69 6c 6c 20 62 65 20 31  f argc will be 1
19d90 20 66 6f 72 20 61 20 70 75 72 65 20 64 65 6c 65   for a pure dele
19da0 74 65 20 6f 70 65 72 61 74 69 6f 6e 20 6f 72 0d  te operation or.
19db0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 2b 32  .        /// N+2
19dc0 20 66 6f 72 20 61 6e 20 69 6e 73 65 72 74 20 6f   for an insert o
19dd0 72 20 72 65 70 6c 61 63 65 20 6f 72 20 75 70 64  r replace or upd
19de0 61 74 65 20 77 68 65 72 65 20 4e 20 69 73 20 74  ate where N is t
19df0 68 65 20 6e 75 6d 62 65 72 20 6f 66 0d 0a 20 20  he number of..  
19e00 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6c 75 6d 6e        /// column
19e10 73 20 69 6e 20 74 68 65 20 74 61 62 6c 65 2e 20  s in the table. 
19e20 49 6e 20 74 68 65 20 70 72 65 76 69 6f 75 73 20  In the previous 
19e30 73 65 6e 74 65 6e 63 65 2c 20 4e 20 69 6e 63 6c  sentence, N incl
19e40 75 64 65 73 20 61 6e 79 0d 0a 20 20 20 20 20 20  udes any..      
19e50 20 20 2f 2f 2f 20 68 69 64 64 65 6e 20 63 6f 6c    /// hidden col
19e60 75 6d 6e 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  umns...        /
19e70 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20  // </para>..    
19e80 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a      /// <para>..
19e90 20 20 20 20 20 20 20 20 2f 2f 2f 20 45 76 65 72          /// Ever
19ea0 79 20 61 72 67 76 20 65 6e 74 72 79 20 77 69 6c  y argv entry wil
19eb0 6c 20 68 61 76 65 20 61 20 6e 6f 6e 2d 4e 55 4c  l have a non-NUL
19ec0 4c 20 76 61 6c 75 65 20 69 6e 20 43 20 62 75 74  L value in C but
19ed0 20 6d 61 79 20 63 6f 6e 74 61 69 6e 0d 0a 20 20   may contain..  
19ee0 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 53 51        /// the SQ
19ef0 4c 20 76 61 6c 75 65 20 4e 55 4c 4c 2e 20 49 6e  L value NULL. In
19f00 20 6f 74 68 65 72 20 77 6f 72 64 73 2c 20 69 74   other words, it
19f10 20 69 73 20 61 6c 77 61 79 73 20 74 72 75 65 20   is always true 
19f20 74 68 61 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f  that..        //
19f30 2f 20 61 72 67 76 5b 69 5d 21 3d 30 20 66 6f 72  / argv[i]!=0 for
19f40 20 69 20 62 65 74 77 65 65 6e 20 30 20 61 6e 64   i between 0 and
19f50 20 61 72 67 63 2d 31 2e 20 48 6f 77 65 76 65 72   argc-1. However
19f60 2c 20 69 74 20 6d 69 67 68 74 20 62 65 20 74 68  , it might be th
19f70 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  e..        /// c
19f80 61 73 65 20 74 68 61 74 20 73 71 6c 69 74 65 33  ase that sqlite3
19f90 5f 76 61 6c 75 65 5f 74 79 70 65 28 61 72 67 76  _value_type(argv
19fa0 5b 69 5d 29 3d 3d 53 51 4c 49 54 45 5f 4e 55 4c  [i])==SQLITE_NUL
19fb0 4c 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  L...        /// 
19fc0 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20  </para>..       
19fd0 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
19fe0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 72 67       /// The arg
19ff0 76 5b 30 5d 20 70 61 72 61 6d 65 74 65 72 20 69  v[0] parameter i
1a000 73 20 74 68 65 20 72 6f 77 69 64 20 6f 66 20 61  s the rowid of a
1a010 20 72 6f 77 20 69 6e 20 74 68 65 20 76 69 72 74   row in the virt
1a020 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20 20  ual table..     
1a030 20 20 20 2f 2f 2f 20 74 6f 20 62 65 20 64 65 6c     /// to be del
1a040 65 74 65 64 2e 20 49 66 20 61 72 67 76 5b 30 5d  eted. If argv[0]
1a050 20 69 73 20 61 6e 20 53 51 4c 20 4e 55 4c 4c 2c   is an SQL NULL,
1a060 20 74 68 65 6e 20 6e 6f 20 64 65 6c 65 74 69 6f   then no deletio
1a070 6e 20 6f 63 63 75 72 73 2e 0d 0a 20 20 20 20 20  n occurs...     
1a080 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a     /// </para>..
1a090 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1a0a0 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
1a0b0 54 68 65 20 61 72 67 76 5b 31 5d 20 70 61 72 61  The argv[1] para
1a0c0 6d 65 74 65 72 20 69 73 20 74 68 65 20 72 6f 77  meter is the row
1a0d0 69 64 20 6f 66 20 61 20 6e 65 77 20 72 6f 77 20  id of a new row 
1a0e0 74 6f 20 62 65 20 69 6e 73 65 72 74 65 64 20 69  to be inserted i
1a0f0 6e 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  nto..        ///
1a100 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
1a110 6c 65 2e 20 49 66 20 61 72 67 76 5b 31 5d 20 69  le. If argv[1] i
1a120 73 20 61 6e 20 53 51 4c 20 4e 55 4c 4c 2c 20 74  s an SQL NULL, t
1a130 68 65 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20  hen the..       
1a140 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74 61 74   /// implementat
1a150 69 6f 6e 20 6d 75 73 74 20 63 68 6f 6f 73 65 20  ion must choose 
1a160 61 20 72 6f 77 69 64 20 66 6f 72 20 74 68 65 20  a rowid for the 
1a170 6e 65 77 6c 79 20 69 6e 73 65 72 74 65 64 20 72  newly inserted r
1a180 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ow...        ///
1a190 20 53 75 62 73 65 71 75 65 6e 74 20 61 72 67 76   Subsequent argv
1a1a0 5b 5d 20 65 6e 74 72 69 65 73 20 63 6f 6e 74 61  [] entries conta
1a1b0 69 6e 20 76 61 6c 75 65 73 20 6f 66 20 74 68 65  in values of the
1a1c0 20 63 6f 6c 75 6d 6e 73 20 6f 66 20 74 68 65 0d   columns of the.
1a1d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 69 72  .        /// vir
1a1e0 74 75 61 6c 20 74 61 62 6c 65 2c 20 69 6e 20 74  tual table, in t
1a1f0 68 65 20 6f 72 64 65 72 20 74 68 61 74 20 74 68  he order that th
1a200 65 20 63 6f 6c 75 6d 6e 73 20 77 65 72 65 20 64  e columns were d
1a210 65 63 6c 61 72 65 64 2e 20 54 68 65 0d 0a 20 20  eclared. The..  
1a220 20 20 20 20 20 20 2f 2f 2f 20 6e 75 6d 62 65 72        /// number
1a230 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 77 69 6c 6c   of columns will
1a240 20 6d 61 74 63 68 20 74 68 65 20 74 61 62 6c 65   match the table
1a250 20 64 65 63 6c 61 72 61 74 69 6f 6e 20 74 68 61   declaration tha
1a260 74 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  t the..        /
1a270 2f 2f 20 78 43 6f 6e 6e 65 63 74 20 6f 72 20 78  // xConnect or x
1a280 43 72 65 61 74 65 20 6d 65 74 68 6f 64 20 6d 61  Create method ma
1a290 64 65 20 75 73 69 6e 67 20 74 68 65 20 73 71 6c  de using the sql
1a2a0 69 74 65 33 5f 64 65 63 6c 61 72 65 5f 76 74 61  ite3_declare_vta
1a2b0 62 28 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  b()..        ///
1a2c0 20 63 61 6c 6c 2e 20 41 6c 6c 20 68 69 64 64 65   call. All hidde
1a2d0 6e 20 63 6f 6c 75 6d 6e 73 20 61 72 65 20 69 6e  n columns are in
1a2e0 63 6c 75 64 65 64 2e 0d 0a 20 20 20 20 20 20 20  cluded...       
1a2f0 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
1a300 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
1a310 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 57 68  ..        /// Wh
1a320 65 6e 20 64 6f 69 6e 67 20 61 6e 20 69 6e 73 65  en doing an inse
1a330 72 74 20 77 69 74 68 6f 75 74 20 61 20 72 6f 77  rt without a row
1a340 69 64 20 28 61 72 67 63 3e 31 2c 20 61 72 67 76  id (argc>1, argv
1a350 5b 31 5d 20 69 73 20 61 6e 20 53 51 4c 0d 0a 20  [1] is an SQL.. 
1a360 20 20 20 20 20 20 20 2f 2f 2f 20 4e 55 4c 4c 29         /// NULL)
1a370 2c 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61  , the implementa
1a380 74 69 6f 6e 20 6d 75 73 74 20 73 65 74 20 2a 70  tion must set *p
1a390 52 6f 77 69 64 20 74 6f 20 74 68 65 20 72 6f 77  Rowid to the row
1a3a0 69 64 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20  id of the..     
1a3b0 20 20 20 2f 2f 2f 20 6e 65 77 6c 79 20 69 6e 73     /// newly ins
1a3c0 65 72 74 65 64 20 72 6f 77 3b 20 74 68 69 73 20  erted row; this 
1a3d0 77 69 6c 6c 20 62 65 63 6f 6d 65 20 74 68 65 20  will become the 
1a3e0 76 61 6c 75 65 20 72 65 74 75 72 6e 65 64 20 62  value returned b
1a3f0 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  y the..        /
1a400 2f 2f 20 73 71 6c 69 74 65 33 5f 6c 61 73 74 5f  // sqlite3_last_
1a410 69 6e 73 65 72 74 5f 72 6f 77 69 64 28 29 20 66  insert_rowid() f
1a420 75 6e 63 74 69 6f 6e 2e 20 53 65 74 74 69 6e 67  unction. Setting
1a430 20 74 68 69 73 20 76 61 6c 75 65 20 69 6e 20 61   this value in a
1a440 6c 6c 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  ll the..        
1a450 2f 2f 2f 20 6f 74 68 65 72 20 63 61 73 65 73 20  /// other cases 
1a460 69 73 20 61 20 68 61 72 6d 6c 65 73 73 20 6e 6f  is a harmless no
1a470 2d 6f 70 3b 20 74 68 65 20 53 51 4c 69 74 65 20  -op; the SQLite 
1a480 65 6e 67 69 6e 65 20 69 67 6e 6f 72 65 73 20 74  engine ignores t
1a490 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
1a4a0 2a 70 52 6f 77 69 64 20 72 65 74 75 72 6e 20 76  *pRowid return v
1a4b0 61 6c 75 65 20 69 66 20 61 72 67 63 3d 3d 31 20  alue if argc==1 
1a4c0 6f 72 20 61 72 67 76 5b 31 5d 20 69 73 20 6e 6f  or argv[1] is no
1a4d0 74 20 61 6e 20 53 51 4c 20 4e 55 4c 4c 2e 0d 0a  t an SQL NULL...
1a4e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1a4f0 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
1a500 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
1a510 20 2f 2f 2f 20 45 61 63 68 20 63 61 6c 6c 20 74   /// Each call t
1a520 6f 20 78 55 70 64 61 74 65 20 77 69 6c 6c 20 66  o xUpdate will f
1a530 61 6c 6c 20 69 6e 74 6f 20 6f 6e 65 20 6f 66 20  all into one of 
1a540 63 61 73 65 73 20 73 68 6f 77 6e 20 62 65 6c 6f  cases shown belo
1a550 77 2e 20 4e 6f 74 65 0d 0a 20 20 20 20 20 20 20  w. Note..       
1a560 20 2f 2f 2f 20 74 68 61 74 20 72 65 66 65 72 65   /// that refere
1a570 6e 63 65 73 20 74 6f 20 61 72 67 76 5b 69 5d 20  nces to argv[i] 
1a580 6d 65 61 6e 20 74 68 65 20 53 51 4c 20 76 61 6c  mean the SQL val
1a590 75 65 20 68 65 6c 64 20 77 69 74 68 69 6e 20 74  ue held within t
1a5a0 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
1a5b0 61 72 67 76 5b 69 5d 20 6f 62 6a 65 63 74 2c 20  argv[i] object, 
1a5c0 6e 6f 74 20 74 68 65 20 61 72 67 76 5b 69 5d 20  not the argv[i] 
1a5d0 6f 62 6a 65 63 74 20 69 74 73 65 6c 66 2e 0d 0a  object itself...
1a5e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1a5f0 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
1a600 20 3c 63 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20   <code>..       
1a610 20 2f 2f 2f 20 20 20 20 20 61 72 67 63 20 3d 20   ///     argc = 
1a620 31 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  1..        /// <
1a630 2f 63 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20 20  /code>..        
1a640 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
1a650 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20      ///         
1a660 54 68 65 20 73 69 6e 67 6c 65 20 72 6f 77 20 77  The single row w
1a670 69 74 68 20 72 6f 77 69 64 20 65 71 75 61 6c 20  ith rowid equal 
1a680 74 6f 20 61 72 67 76 5b 30 5d 20 69 73 20 64 65  to argv[0] is de
1a690 6c 65 74 65 64 2e 20 4e 6f 0d 0a 20 20 20 20 20  leted. No..     
1a6a0 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20 69     ///         i
1a6b0 6e 73 65 72 74 20 6f 63 63 75 72 73 2e 0d 0a 20  nsert occurs... 
1a6c0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1a6d0 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
1a6e0 3c 63 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20 20  <code>..        
1a6f0 2f 2f 2f 20 20 20 20 20 61 72 67 63 20 3e 20 31  ///     argc > 1
1a700 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20  ..        ///   
1a710 20 20 61 72 67 76 5b 30 5d 20 3d 20 4e 55 4c 4c    argv[0] = NULL
1a720 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1a730 63 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f  code>..        /
1a740 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20  // <para>..     
1a750 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20 41     ///         A
1a760 20 6e 65 77 20 72 6f 77 20 69 73 20 69 6e 73 65   new row is inse
1a770 72 74 65 64 20 77 69 74 68 20 61 20 72 6f 77 69  rted with a rowi
1a780 64 20 61 72 67 76 5b 31 5d 20 61 6e 64 20 63 6f  d argv[1] and co
1a790 6c 75 6d 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  lumn..        //
1a7a0 2f 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 73  /         values
1a7b0 20 69 6e 20 61 72 67 76 5b 32 5d 20 61 6e 64 20   in argv[2] and 
1a7c0 66 6f 6c 6c 6f 77 69 6e 67 2e 20 49 66 20 61 72  following. If ar
1a7d0 67 76 5b 31 5d 20 69 73 20 61 6e 20 53 51 4c 20  gv[1] is an SQL 
1a7e0 4e 55 4c 4c 2c 0d 0a 20 20 20 20 20 20 20 20 2f  NULL,..        /
1a7f0 2f 2f 20 20 20 20 20 20 20 20 20 74 68 65 20 61  //         the a
1a800 20 6e 65 77 20 75 6e 69 71 75 65 20 72 6f 77 69   new unique rowi
1a810 64 20 69 73 20 67 65 6e 65 72 61 74 65 64 20 61  d is generated a
1a820 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 0d 0a 20  utomatically... 
1a830 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1a840 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
1a850 3c 63 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20 20  <code>..        
1a860 2f 2f 2f 20 20 20 20 20 61 72 67 63 20 3e 20 31  ///     argc > 1
1a870 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20  ..        ///   
1a880 20 20 61 72 67 76 5b 30 5d 20 3f 20 4e 55 4c 4c    argv[0] ? NULL
1a890 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20  ..        ///   
1a8a0 20 20 61 72 67 76 5b 30 5d 20 3d 20 61 72 67 76    argv[0] = argv
1a8b0 5b 31 5d 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  [1]..        ///
1a8c0 20 3c 2f 63 6f 64 65 3e 0d 0a 20 20 20 20 20 20   </code>..      
1a8d0 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20    /// <para>..  
1a8e0 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20        ///       
1a8f0 20 20 54 68 65 20 72 6f 77 20 77 69 74 68 20 72    The row with r
1a900 6f 77 69 64 20 61 72 67 76 5b 30 5d 20 69 73 20  owid argv[0] is 
1a910 75 70 64 61 74 65 64 20 77 69 74 68 20 6e 65 77  updated with new
1a920 20 76 61 6c 75 65 73 20 69 6e 0d 0a 20 20 20 20   values in..    
1a930 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20      ///         
1a940 61 72 67 76 5b 32 5d 20 61 6e 64 20 66 6f 6c 6c  argv[2] and foll
1a950 6f 77 69 6e 67 20 70 61 72 61 6d 65 74 65 72 73  owing parameters
1a960 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1a970 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
1a980 2f 2f 2f 20 3c 63 6f 64 65 3e 0d 0a 20 20 20 20  /// <code>..    
1a990 20 20 20 20 2f 2f 2f 20 20 20 20 20 61 72 67 63      ///     argc
1a9a0 20 3e 20 31 0d 0a 20 20 20 20 20 20 20 20 2f 2f   > 1..        //
1a9b0 2f 20 20 20 20 20 61 72 67 76 5b 30 5d 20 3f 20  /     argv[0] ? 
1a9c0 4e 55 4c 4c 0d 0a 20 20 20 20 20 20 20 20 2f 2f  NULL..        //
1a9d0 2f 20 20 20 20 20 61 72 67 76 5b 30 5d 20 3f 20  /     argv[0] ? 
1a9e0 61 72 67 76 5b 31 5d 0d 0a 20 20 20 20 20 20 20  argv[1]..       
1a9f0 20 2f 2f 2f 20 3c 2f 63 6f 64 65 3e 0d 0a 20 20   /// </code>..  
1aa00 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
1aa10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20  ..        ///   
1aa20 20 20 20 20 20 20 54 68 65 20 72 6f 77 20 77 69        The row wi
1aa30 74 68 20 72 6f 77 69 64 20 61 72 67 76 5b 30 5d  th rowid argv[0]
1aa40 20 69 73 20 75 70 64 61 74 65 64 20 77 69 74 68   is updated with
1aa50 20 72 6f 77 69 64 20 61 72 67 76 5b 31 5d 0d 0a   rowid argv[1]..
1aa60 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20          ///     
1aa70 20 20 20 20 61 6e 64 20 6e 65 77 20 76 61 6c 75      and new valu
1aa80 65 73 20 69 6e 20 61 72 67 76 5b 32 5d 20 61 6e  es in argv[2] an
1aa90 64 20 66 6f 6c 6c 6f 77 69 6e 67 20 70 61 72 61  d following para
1aaa0 6d 65 74 65 72 73 2e 20 54 68 69 73 0d 0a 20 20  meters. This..  
1aab0 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20        ///       
1aac0 20 20 77 69 6c 6c 20 6f 63 63 75 72 20 77 68 65    will occur whe
1aad0 6e 20 61 6e 20 53 51 4c 20 73 74 61 74 65 6d 65  n an SQL stateme
1aae0 6e 74 20 75 70 64 61 74 65 73 20 61 20 72 6f 77  nt updates a row
1aaf0 69 64 2c 20 61 73 20 69 6e 0d 0a 20 20 20 20 20  id, as in..     
1ab00 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20 74     ///         t
1ab10 68 65 20 73 74 61 74 65 6d 65 6e 74 3a 0d 0a 20  he statement:.. 
1ab20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1ab30 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
1ab40 3c 63 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20 20  <code>..        
1ab50 2f 2f 2f 20 20 20 20 20 20 20 20 20 20 20 20 20  ///             
1ab60 55 50 44 41 54 45 20 74 61 62 6c 65 20 53 45 54  UPDATE table SET
1ab70 20 72 6f 77 69 64 3d 72 6f 77 69 64 2b 31 20 57   rowid=rowid+1 W
1ab80 48 45 52 45 20 2e 2e 2e 3b 0d 0a 20 20 20 20 20  HERE ...;..     
1ab90 20 20 20 2f 2f 2f 20 3c 2f 63 6f 64 65 3e 0d 0a     /// </code>..
1aba0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1abb0 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
1abc0 54 68 65 20 78 55 70 64 61 74 65 20 6d 65 74 68  The xUpdate meth
1abd0 6f 64 20 6d 75 73 74 20 72 65 74 75 72 6e 20 53  od must return S
1abe0 51 4c 49 54 45 5f 4f 4b 20 69 66 20 61 6e 64 20  QLITE_OK if and 
1abf0 6f 6e 6c 79 20 69 66 20 69 74 20 69 73 0d 0a 20  only if it is.. 
1ac00 20 20 20 20 20 20 20 2f 2f 2f 20 73 75 63 63 65         /// succe
1ac10 73 73 66 75 6c 2e 20 49 66 20 61 20 66 61 69 6c  ssful. If a fail
1ac20 75 72 65 20 6f 63 63 75 72 73 2c 20 74 68 65 20  ure occurs, the 
1ac30 78 55 70 64 61 74 65 20 6d 75 73 74 20 72 65 74  xUpdate must ret
1ac40 75 72 6e 20 61 6e 0d 0a 20 20 20 20 20 20 20 20  urn an..        
1ac50 2f 2f 2f 20 61 70 70 72 6f 70 72 69 61 74 65 20  /// appropriate 
1ac60 65 72 72 6f 72 20 63 6f 64 65 2e 20 4f 6e 20 61  error code. On a
1ac70 20 66 61 69 6c 75 72 65 2c 20 74 68 65 20 70 56   failure, the pV
1ac80 54 61 62 2d 3e 7a 45 72 72 4d 73 67 20 65 6c 65  Tab->zErrMsg ele
1ac90 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ment..        //
1aca0 2f 20 6d 61 79 20 6f 70 74 69 6f 6e 61 6c 6c 79  / may optionally
1acb0 20 62 65 20 72 65 70 6c 61 63 65 64 20 77 69 74   be replaced wit
1acc0 68 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20  h error message 
1acd0 74 65 78 74 20 73 74 6f 72 65 64 20 69 6e 20 6d  text stored in m
1ace0 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 2f  emory..        /
1acf0 2f 2f 20 61 6c 6c 6f 63 61 74 65 64 20 66 72 6f  // allocated fro
1ad00 6d 20 53 51 4c 69 74 65 20 75 73 69 6e 67 20 66  m SQLite using f
1ad10 75 6e 63 74 69 6f 6e 73 20 73 75 63 68 20 61 73  unctions such as
1ad20 20 73 71 6c 69 74 65 33 5f 6d 70 72 69 6e 74 66   sqlite3_mprintf
1ad30 28 29 20 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f  () or..        /
1ad40 2f 2f 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f  // sqlite3_mallo
1ad50 63 28 29 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  c()...        //
1ad60 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20  / </para>..     
1ad70 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20     /// <para>.. 
1ad80 20 20 20 20 20 20 20 2f 2f 2f 20 49 66 20 74 68         /// If th
1ad90 65 20 78 55 70 64 61 74 65 20 6d 65 74 68 6f 64  e xUpdate method
1ada0 20 76 69 6f 6c 61 74 65 73 20 73 6f 6d 65 20 63   violates some c
1adb0 6f 6e 73 74 72 61 69 6e 74 20 6f 66 20 74 68 65  onstraint of the
1adc0 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 0d 0a   virtual table..
1add0 20 20 20 20 20 20 20 20 2f 2f 2f 20 28 69 6e 63          /// (inc
1ade0 6c 75 64 69 6e 67 2c 20 62 75 74 20 6e 6f 74 20  luding, but not 
1adf0 6c 69 6d 69 74 65 64 20 74 6f 2c 20 61 74 74 65  limited to, atte
1ae00 6d 70 74 69 6e 67 20 74 6f 20 73 74 6f 72 65 20  mpting to store 
1ae10 61 20 76 61 6c 75 65 20 6f 66 20 74 68 65 0d 0a  a value of the..
1ae20 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 72 6f 6e          /// wron
1ae30 67 20 64 61 74 61 74 79 70 65 2c 20 61 74 74 65  g datatype, atte
1ae40 6d 70 74 69 6e 67 20 74 6f 20 73 74 6f 72 65 20  mpting to store 
1ae50 61 20 76 61 6c 75 65 20 74 68 61 74 20 69 73 20  a value that is 
1ae60 74 6f 6f 20 6c 61 72 67 65 20 6f 72 0d 0a 20 20  too large or..  
1ae70 20 20 20 20 20 20 2f 2f 2f 20 74 6f 6f 20 73 6d        /// too sm
1ae80 61 6c 6c 2c 20 6f 72 20 61 74 74 65 6d 70 74 69  all, or attempti
1ae90 6e 67 20 74 6f 20 63 68 61 6e 67 65 20 61 20 72  ng to change a r
1aea0 65 61 64 2d 6f 6e 6c 79 20 76 61 6c 75 65 29 20  ead-only value) 
1aeb0 74 68 65 6e 20 74 68 65 0d 0a 20 20 20 20 20 20  then the..      
1aec0 20 20 2f 2f 2f 20 78 55 70 64 61 74 65 20 6d 75    /// xUpdate mu
1aed0 73 74 20 66 61 69 6c 20 77 69 74 68 20 61 6e 20  st fail with an 
1aee0 61 70 70 72 6f 70 72 69 61 74 65 20 65 72 72 6f  appropriate erro
1aef0 72 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  r code...       
1af00 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
1af10 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
1af20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1af30 65 72 65 20 6d 69 67 68 74 20 62 65 20 6f 6e 65  ere might be one
1af40 20 6f 72 20 6d 6f 72 65 20 73 71 6c 69 74 65 33   or more sqlite3
1af50 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 6f 62 6a  _vtab_cursor obj
1af60 65 63 74 73 20 6f 70 65 6e 20 61 6e 64 20 69 6e  ects open and in
1af70 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 75 73  ..        /// us
1af80 65 20 6f 6e 20 74 68 65 20 76 69 72 74 75 61 6c  e on the virtual
1af90 20 74 61 62 6c 65 20 69 6e 73 74 61 6e 63 65 20   table instance 
1afa0 61 6e 64 20 70 65 72 68 61 70 73 20 65 76 65 6e  and perhaps even
1afb0 20 6f 6e 20 74 68 65 20 72 6f 77 20 6f 66 0d 0a   on the row of..
1afc0 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20          /// the 
1afd0 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 77 68  virtual table wh
1afe0 65 6e 20 74 68 65 20 78 55 70 64 61 74 65 20 6d  en the xUpdate m
1aff0 65 74 68 6f 64 20 69 73 20 69 6e 76 6f 6b 65 64  ethod is invoked
1b000 2e 20 54 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  . The..        /
1b010 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  // implementatio
1b020 6e 20 6f 66 20 78 55 70 64 61 74 65 20 6d 75 73  n of xUpdate mus
1b030 74 20 62 65 20 70 72 65 70 61 72 65 64 20 66 6f  t be prepared fo
1b040 72 20 61 74 74 65 6d 70 74 73 20 74 6f 20 64 65  r attempts to de
1b050 6c 65 74 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  lete..        //
1b060 2f 20 6f 72 20 6d 6f 64 69 66 79 20 72 6f 77 73  / or modify rows
1b070 20 6f 66 20 74 68 65 20 74 61 62 6c 65 20 6f 75   of the table ou
1b080 74 20 66 72 6f 6d 20 6f 74 68 65 72 20 65 78 69  t from other exi
1b090 73 74 69 6e 67 20 63 75 72 73 6f 72 73 2e 20 49  sting cursors. I
1b0a0 66 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  f the..        /
1b0b0 2f 2f 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  // virtual table
1b0c0 20 63 61 6e 6e 6f 74 20 61 63 63 6f 6d 6d 6f 64   cannot accommod
1b0d0 61 74 65 20 73 75 63 68 20 63 68 61 6e 67 65 73  ate such changes
1b0e0 2c 20 74 68 65 20 78 55 70 64 61 74 65 20 6d 65  , the xUpdate me
1b0f0 74 68 6f 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  thod..        //
1b100 2f 20 6d 75 73 74 20 72 65 74 75 72 6e 20 61 6e  / must return an
1b110 20 65 72 72 6f 72 20 63 6f 64 65 2e 0d 0a 20 20   error code...  
1b120 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1b130 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1b140 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
1b150 2f 2f 20 54 68 65 20 78 55 70 64 61 74 65 20 6d  // The xUpdate m
1b160 65 74 68 6f 64 20 69 73 20 6f 70 74 69 6f 6e 61  ethod is optiona
1b170 6c 2e 20 49 66 20 74 68 65 20 78 55 70 64 61 74  l. If the xUpdat
1b180 65 20 70 6f 69 6e 74 65 72 20 69 6e 20 74 68 65  e pointer in the
1b190 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71  ..        /// sq
1b1a0 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 66 6f 72  lite3_module for
1b1b0 20 61 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65   a virtual table
1b1c0 20 69 73 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74   is a NULL point
1b1d0 65 72 2c 20 74 68 65 6e 20 74 68 65 0d 0a 20 20  er, then the..  
1b1e0 20 20 20 20 20 20 2f 2f 2f 20 76 69 72 74 75 61        /// virtua
1b1f0 6c 20 74 61 62 6c 65 20 69 73 20 72 65 61 64 2d  l table is read-
1b200 6f 6e 6c 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f  only...        /
1b210 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20  // </para>..    
1b220 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1b230 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1b240 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74  <param name="pVt
1b250 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ab">..        //
1b260 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69  / The native poi
1b270 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69  nter to the sqli
1b280 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64  te3_vtab derived
1b290 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
1b2a0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
1b2b0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1b2c0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 63  param name="argc
1b2d0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
1b2e0 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 6e 65  The number of ne
1b2f0 77 20 6f 72 20 6d 6f 64 69 66 69 65 64 20 63 6f  w or modified co
1b300 6c 75 6d 6e 20 76 61 6c 75 65 73 20 63 6f 6e 74  lumn values cont
1b310 61 69 6e 65 64 20 69 6e 0d 0a 20 20 20 20 20 20  ained in..      
1b320 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 72 65 66 20    /// <paramref 
1b330 6e 61 6d 65 3d 22 61 72 67 76 22 20 2f 3e 2e 0d  name="argv" />..
1b340 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1b350 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
1b360 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1b370 61 72 67 76 22 3e 0d 0a 20 20 20 20 20 20 20 20  argv">..        
1b380 2f 2f 2f 20 54 68 65 20 61 72 72 61 79 20 6f 66  /// The array of
1b390 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 73   native pointers
1b3a0 20 74 6f 20 73 71 6c 69 74 65 33 5f 76 61 6c 75   to sqlite3_valu
1b3b0 65 20 73 74 72 75 63 74 75 72 65 73 20 63 6f 6e  e structures con
1b3c0 74 61 69 6e 69 6e 67 0d 0a 20 20 20 20 20 20 20  taining..       
1b3d0 20 2f 2f 2f 20 74 68 65 20 6e 65 77 20 6f 72 20   /// the new or 
1b3e0 6d 6f 64 69 66 69 65 64 20 63 6f 6c 75 6d 6e 20  modified column 
1b3f0 76 61 6c 75 65 73 2c 20 69 66 20 61 6e 79 2e 0d  values, if any..
1b400 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1b410 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
1b420 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1b430 72 6f 77 49 64 22 3e 0d 0a 20 20 20 20 20 20 20  rowId">..       
1b440 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73   /// Upon succes
1b450 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65  s, this paramete
1b460 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69  r must be modifi
1b470 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68  ed to contain th
1b480 65 20 75 6e 69 71 75 65 0d 0a 20 20 20 20 20 20  e unique..      
1b490 20 20 2f 2f 2f 20 69 6e 74 65 67 65 72 20 72 6f    /// integer ro
1b4a0 77 20 69 64 65 6e 74 69 66 69 65 72 20 66 6f 72  w identifier for
1b4b0 20 74 68 65 20 72 6f 77 20 74 68 61 74 20 77 61   the row that wa
1b4c0 73 20 69 6e 73 65 72 74 65 64 2c 20 69 66 20 61  s inserted, if a
1b4d0 6e 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ny...        ///
1b4e0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1b4f0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
1b500 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20  ..        /// A 
1b510 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20  standard SQLite 
1b520 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20  return code...  
1b530 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
1b540 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51  rns>..        SQ
1b550 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 55  LiteErrorCode xU
1b560 70 64 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20  pdate(..        
1b570 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
1b580 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ,..            i
1b590 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20  nt argc,..      
1b5a0 20 20 20 20 20 20 49 6e 74 50 74 72 20 61 72 67        IntPtr arg
1b5b0 76 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  v,..            
1b5c0 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a  ref long rowId..
1b5d0 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a              );..
1b5e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
1b5f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b630 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
1b640 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
1b650 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a      /// <para>..
1b660 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
1b670 20 6d 65 74 68 6f 64 20 62 65 67 69 6e 73 20 61   method begins a
1b680 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 6f 6e 20   transaction on 
1b690 61 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e  a virtual table.
1b6a0 20 54 68 69 73 20 69 73 20 6d 65 74 68 6f 64 0d   This is method.
1b6b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 73 20  .        /// is 
1b6c0 6f 70 74 69 6f 6e 61 6c 2e 20 54 68 65 20 78 42  optional. The xB
1b6d0 65 67 69 6e 20 70 6f 69 6e 74 65 72 20 6f 66 20  egin pointer of 
1b6e0 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6d  sqlite3_module m
1b6f0 61 79 20 62 65 20 4e 55 4c 4c 2e 0d 0a 20 20 20  ay be NULL...   
1b700 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
1b710 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1b720 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
1b730 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73  / This method is
1b740 20 61 6c 77 61 79 73 20 66 6f 6c 6c 6f 77 65 64   always followed
1b750 20 62 79 20 6f 6e 65 20 63 61 6c 6c 20 74 6f 20   by one call to 
1b760 65 69 74 68 65 72 20 74 68 65 20 78 43 6f 6d 6d  either the xComm
1b770 69 74 20 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f  it or..        /
1b780 2f 2f 20 78 52 6f 6c 6c 62 61 63 6b 20 6d 65 74  // xRollback met
1b790 68 6f 64 2e 20 56 69 72 74 75 61 6c 20 74 61 62  hod. Virtual tab
1b7a0 6c 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 20  le transactions 
1b7b0 64 6f 20 6e 6f 74 20 6e 65 73 74 2c 20 73 6f 20  do not nest, so 
1b7c0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
1b7d0 20 78 42 65 67 69 6e 20 6d 65 74 68 6f 64 20 77   xBegin method w
1b7e0 69 6c 6c 20 6e 6f 74 20 62 65 20 69 6e 76 6f 6b  ill not be invok
1b7f0 65 64 20 6d 6f 72 65 20 74 68 61 6e 20 6f 6e 63  ed more than onc
1b800 65 20 6f 6e 20 61 20 73 69 6e 67 6c 65 0d 0a 20  e on a single.. 
1b810 20 20 20 20 20 20 20 2f 2f 2f 20 76 69 72 74 75         /// virtu
1b820 61 6c 20 74 61 62 6c 65 20 77 69 74 68 6f 75 74  al table without
1b830 20 61 6e 20 69 6e 74 65 72 76 65 6e 69 6e 67 20   an intervening 
1b840 63 61 6c 6c 20 74 6f 20 65 69 74 68 65 72 20 78  call to either x
1b850 43 6f 6d 6d 69 74 20 6f 72 0d 0a 20 20 20 20 20  Commit or..     
1b860 20 20 20 2f 2f 2f 20 78 52 6f 6c 6c 62 61 63 6b     /// xRollback
1b870 2e 20 4d 75 6c 74 69 70 6c 65 20 63 61 6c 6c 73  . Multiple calls
1b880 20 74 6f 20 6f 74 68 65 72 20 6d 65 74 68 6f 64   to other method
1b890 73 20 63 61 6e 20 61 6e 64 20 6c 69 6b 65 6c 79  s can and likely
1b8a0 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f   will..        /
1b8b0 2f 2f 20 6f 63 63 75 72 20 69 6e 20 62 65 74 77  // occur in betw
1b8c0 65 65 6e 20 74 68 65 20 78 42 65 67 69 6e 20 61  een the xBegin a
1b8d0 6e 64 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e  nd the correspon
1b8e0 64 69 6e 67 20 78 43 6f 6d 6d 69 74 20 6f 72 0d  ding xCommit or.
1b8f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 78 52 6f  .        /// xRo
1b900 6c 6c 62 61 63 6b 2e 0d 0a 20 20 20 20 20 20 20  llback...       
1b910 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
1b920 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
1b930 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1b940 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
1b950 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
1b960 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70  /// The native p
1b970 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71  ointer to the sq
1b980 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76  lite3_vtab deriv
1b990 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  ed structure... 
1b9a0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1b9b0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1b9c0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
1b9d0 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61      /// A standa
1b9e0 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e  rd SQLite return
1b9f0 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
1ba00 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
1ba10 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72          SQLiteEr
1ba20 72 6f 72 43 6f 64 65 20 78 42 65 67 69 6e 28 0d  rorCode xBegin(.
1ba30 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
1ba40 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 20  Ptr pVtab..     
1ba50 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20         );....   
1ba60 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1ba70 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a  ////////////....
1bab0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
1bac0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1bad0 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20  // <para>..     
1bae0 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68     /// This meth
1baf0 6f 64 20 73 69 67 6e 61 6c 73 20 74 68 65 20 73  od signals the s
1bb00 74 61 72 74 20 6f 66 20 61 20 74 77 6f 2d 70 68  tart of a two-ph
1bb10 61 73 65 20 63 6f 6d 6d 69 74 20 6f 6e 20 61 20  ase commit on a 
1bb20 76 69 72 74 75 61 6c 0d 0a 20 20 20 20 20 20 20  virtual..       
1bb30 20 2f 2f 2f 20 74 61 62 6c 65 2e 20 54 68 69 73   /// table. This
1bb40 20 69 73 20 6d 65 74 68 6f 64 20 69 73 20 6f 70   is method is op
1bb50 74 69 6f 6e 61 6c 2e 20 54 68 65 20 78 53 79 6e  tional. The xSyn
1bb60 63 20 70 6f 69 6e 74 65 72 20 6f 66 0d 0a 20 20  c pointer of..  
1bb70 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65        /// sqlite
1bb80 33 5f 6d 6f 64 75 6c 65 20 6d 61 79 20 62 65 20  3_module may be 
1bb90 4e 55 4c 4c 2e 0d 0a 20 20 20 20 20 20 20 20 2f  NULL...        /
1bba0 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20  // </para>..    
1bbb0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a      /// <para>..
1bbc0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
1bbd0 20 6d 65 74 68 6f 64 20 69 73 20 6f 6e 6c 79 20   method is only 
1bbe0 69 6e 76 6f 6b 65 64 20 61 66 74 65 72 20 63 61  invoked after ca
1bbf0 6c 6c 20 74 6f 20 74 68 65 20 78 42 65 67 69 6e  ll to the xBegin
1bc00 20 6d 65 74 68 6f 64 20 61 6e 64 0d 0a 20 20 20   method and..   
1bc10 20 20 20 20 20 2f 2f 2f 20 70 72 69 6f 72 20 74       /// prior t
1bc20 6f 20 61 6e 20 78 43 6f 6d 6d 69 74 20 6f 72 20  o an xCommit or 
1bc30 78 52 6f 6c 6c 62 61 63 6b 2e 20 49 6e 20 6f 72  xRollback. In or
1bc40 64 65 72 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74  der to implement
1bc50 20 74 77 6f 2d 70 68 61 73 65 0d 0a 20 20 20 20   two-phase..    
1bc60 20 20 20 20 2f 2f 2f 20 63 6f 6d 6d 69 74 2c 20      /// commit, 
1bc70 74 68 65 20 78 53 79 6e 63 20 6d 65 74 68 6f 64  the xSync method
1bc80 20 6f 6e 20 61 6c 6c 20 76 69 72 74 75 61 6c 20   on all virtual 
1bc90 74 61 62 6c 65 73 20 69 73 20 69 6e 76 6f 6b 65  tables is invoke
1bca0 64 20 70 72 69 6f 72 20 74 6f 0d 0a 20 20 20 20  d prior to..    
1bcb0 20 20 20 20 2f 2f 2f 20 69 6e 76 6f 6b 69 6e 67      /// invoking
1bcc0 20 74 68 65 20 78 43 6f 6d 6d 69 74 20 6d 65 74   the xCommit met
1bcd0 68 6f 64 20 6f 6e 20 61 6e 79 20 76 69 72 74 75  hod on any virtu
1bce0 61 6c 20 74 61 62 6c 65 2e 20 49 66 20 61 6e 79  al table. If any
1bcf0 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20 20 20   of the..       
1bd00 20 2f 2f 2f 20 78 53 79 6e 63 20 6d 65 74 68 6f   /// xSync metho
1bd10 64 73 20 66 61 69 6c 2c 20 74 68 65 20 65 6e 74  ds fail, the ent
1bd20 69 72 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  ire transaction 
1bd30 69 73 20 72 6f 6c 6c 65 64 20 62 61 63 6b 2e 0d  is rolled back..
1bd40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1bd50 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
1bd60 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1bd70 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1bd80 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a   name="pVtab">..
1bd90 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1bda0 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
1bdb0 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74  o the sqlite3_vt
1bdc0 61 62 20 64 65 72 69 76 65 64 20 73 74 72 75 63  ab derived struc
1bdd0 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ture...        /
1bde0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1bdf0 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
1be00 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
1be10 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74  A standard SQLit
1be20 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a  e return code...
1be30 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
1be40 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
1be50 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1be60 78 53 79 6e 63 28 0d 0a 20 20 20 20 20 20 20 20  xSync(..        
1be70 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
1be80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b  ..            );
1be90 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1bea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1beb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bee0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
1bef0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
1bf00 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e        /// <para>
1bf10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1bf20 69 73 20 6d 65 74 68 6f 64 20 63 61 75 73 65 73  is method causes
1bf30 20 61 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65   a virtual table
1bf40 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 74 6f 20   transaction to 
1bf50 63 6f 6d 6d 69 74 2e 20 54 68 69 73 20 69 73 0d  commit. This is.
1bf60 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74  .        /// met
1bf70 68 6f 64 20 69 73 20 6f 70 74 69 6f 6e 61 6c 2e  hod is optional.
1bf80 20 54 68 65 20 78 43 6f 6d 6d 69 74 20 70 6f 69   The xCommit poi
1bf90 6e 74 65 72 20 6f 66 20 73 71 6c 69 74 65 33 5f  nter of sqlite3_
1bfa0 6d 6f 64 75 6c 65 20 6d 61 79 20 62 65 0d 0a 20  module may be.. 
1bfb0 20 20 20 20 20 20 20 2f 2f 2f 20 4e 55 4c 4c 2e         /// NULL.
1bfc0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1bfd0 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
1bfe0 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20  // <para>..     
1bff0 20 20 20 2f 2f 2f 20 41 20 63 61 6c 6c 20 74 6f     /// A call to
1c000 20 74 68 69 73 20 6d 65 74 68 6f 64 20 61 6c 77   this method alw
1c010 61 79 73 20 66 6f 6c 6c 6f 77 73 20 61 20 70 72  ays follows a pr
1c020 69 6f 72 20 63 61 6c 6c 20 74 6f 20 78 42 65 67  ior call to xBeg
1c030 69 6e 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20  in and..        
1c040 2f 2f 2f 20 78 53 79 6e 63 2e 0d 0a 20 20 20 20  /// xSync...    
1c050 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d      /// </para>.
1c060 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
1c070 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1c080 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1c090 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20  ="pVtab">..     
1c0a0 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
1c0b0 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
1c0c0 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65   sqlite3_vtab de
1c0d0 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2e  rived structure.
1c0e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1c0f0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1c100 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
1c110 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61         /// A sta
1c120 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74  ndard SQLite ret
1c130 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  urn code...     
1c140 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
1c150 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  >..        SQLit
1c160 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6f 6d 6d  eErrorCode xComm
1c170 69 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  it(..           
1c180 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20   IntPtr pVtab.. 
1c190 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d             );...
1c1a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1c1b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c1c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c1d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c1e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c1f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
1c200 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1c210 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20     /// <para>.. 
1c220 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
1c230 6d 65 74 68 6f 64 20 63 61 75 73 65 73 20 61 20  method causes a 
1c240 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 74 72  virtual table tr
1c250 61 6e 73 61 63 74 69 6f 6e 20 74 6f 20 72 6f 6c  ansaction to rol
1c260 6c 62 61 63 6b 2e 20 54 68 69 73 20 69 73 0d 0a  lback. This is..
1c270 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68          /// meth
1c280 6f 64 20 69 73 20 6f 70 74 69 6f 6e 61 6c 2e 20  od is optional. 
1c290 54 68 65 20 78 52 6f 6c 6c 62 61 63 6b 20 70 6f  The xRollback po
1c2a0 69 6e 74 65 72 20 6f 66 20 73 71 6c 69 74 65 33  inter of sqlite3
1c2b0 5f 6d 6f 64 75 6c 65 20 6d 61 79 20 62 65 0d 0a  _module may be..
1c2c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 55 4c 4c          /// NULL
1c2d0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1c2e0 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
1c2f0 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
1c300 20 20 20 20 2f 2f 2f 20 41 20 63 61 6c 6c 20 74      /// A call t
1c310 6f 20 74 68 69 73 20 6d 65 74 68 6f 64 20 61 6c  o this method al
1c320 77 61 79 73 20 66 6f 6c 6c 6f 77 73 20 61 20 70  ways follows a p
1c330 72 69 6f 72 20 63 61 6c 6c 20 74 6f 20 78 42 65  rior call to xBe
1c340 67 69 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  gin...        //
1c350 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20  / </para>..     
1c360 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1c370 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1c380 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61  param name="pVta
1c390 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  b">..        ///
1c3a0 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e   The native poin
1c3b0 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74  ter to the sqlit
1c3c0 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 20  e3_vtab derived 
1c3d0 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20  structure...    
1c3e0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1c3f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
1c400 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1c410 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20   /// A standard 
1c420 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f  SQLite return co
1c430 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de...        ///
1c440 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
1c450 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72       SQLiteError
1c460 43 6f 64 65 20 78 52 6f 6c 6c 62 61 63 6b 28 0d  Code xRollback(.
1c470 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
1c480 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 20  Ptr pVtab..     
1c490 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20         );....   
1c4a0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1c4b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c4c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c4d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c4e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1c4f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
1c500 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1c510 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20  // <para>..     
1c520 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68     /// This meth
1c530 6f 64 20 70 72 6f 76 69 64 65 73 20 6e 6f 74 69  od provides noti
1c540 66 69 63 61 74 69 6f 6e 20 74 68 61 74 20 74 68  fication that th
1c550 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 0d  e virtual table.
1c560 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6d 70  .        /// imp
1c570 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 74 68 61 74  lementation that
1c580 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
1c590 6c 65 20 77 69 6c 6c 20 62 65 20 67 69 76 65 6e  le will be given
1c5a0 20 61 20 6e 65 77 20 6e 61 6d 65 2e 20 49 66 0d   a new name. If.
1c5b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 69  .        /// thi
1c5c0 73 20 6d 65 74 68 6f 64 20 72 65 74 75 72 6e 73  s method returns
1c5d0 20 53 51 4c 49 54 45 5f 4f 4b 20 74 68 65 6e 20   SQLITE_OK then 
1c5e0 53 51 4c 69 74 65 20 72 65 6e 61 6d 65 73 20 74  SQLite renames t
1c5f0 68 65 20 74 61 62 6c 65 2e 20 49 66 0d 0a 20 20  he table. If..  
1c600 20 20 20 20 20 20 2f 2f 2f 20 74 68 69 73 20 6d        /// this m
1c610 65 74 68 6f 64 20 72 65 74 75 72 6e 73 20 61 6e  ethod returns an
1c620 20 65 72 72 6f 72 20 63 6f 64 65 20 74 68 65 6e   error code then
1c630 20 74 68 65 20 72 65 6e 61 6d 69 6e 67 20 69 73   the renaming is
1c640 20 70 72 65 76 65 6e 74 65 64 2e 0d 0a 20 20 20   prevented...   
1c650 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
1c660 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1c670 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
1c680 2f 20 54 68 65 20 78 52 65 6e 61 6d 65 20 6d 65  / The xRename me
1c690 74 68 6f 64 20 69 73 20 72 65 71 75 69 72 65 64  thod is required
1c6a0 20 66 6f 72 20 65 76 65 72 79 20 76 69 72 74 75   for every virtu
1c6b0 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20 20 20  al table..      
1c6c0 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74 61    /// implementa
1c6d0 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  tion...        /
1c6e0 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20  // </para>..    
1c6f0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1c700 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1c710 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74  <param name="pVt
1c720 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ab">..        //
1c730 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69  / The native poi
1c740 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69  nter to the sqli
1c750 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64  te3_vtab derived
1c760 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
1c770 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
1c780 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1c790 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 41 72 67  param name="nArg
1c7a0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
1c7b0 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 61 72  The number of ar
1c7c0 67 75 6d 65 6e 74 73 20 74 6f 20 74 68 65 20 66  guments to the f
1c7d0 75 6e 63 74 69 6f 6e 20 62 65 69 6e 67 20 73 6f  unction being so
1c7e0 75 67 68 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ught...        /
1c7f0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1c800 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1c810 6e 61 6d 65 3d 22 7a 4e 61 6d 65 22 3e 0d 0a 20  name="zName">.. 
1c820 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
1c830 61 6d 65 20 6f 66 20 74 68 65 20 66 75 6e 63 74  ame of the funct
1c840 69 6f 6e 20 62 65 69 6e 67 20 73 6f 75 67 68 74  ion being sought
1c850 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1c860 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1c870 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1c880 3d 22 63 61 6c 6c 62 61 63 6b 22 3e 0d 0a 20 20  ="callback">..  
1c890 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73        /// Upon s
1c8a0 75 63 63 65 73 73 2c 20 74 68 69 73 20 70 61 72  uccess, this par
1c8b0 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d  ameter must be m
1c8c0 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74 61  odified to conta
1c8d0 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  in the..        
1c8e0 2f 2f 2f 20 64 65 6c 65 67 61 74 65 20 72 65 73  /// delegate res
1c8f0 70 6f 6e 73 69 62 6c 65 20 66 6f 72 20 69 6d 70  ponsible for imp
1c900 6c 65 6d 65 6e 74 69 6e 67 20 74 68 65 20 73 70  lementing the sp
1c910 65 63 69 66 69 65 64 20 66 75 6e 63 74 69 6f 6e  ecified function
1c920 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1c930 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1c940 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1c950 3d 22 70 43 6c 69 65 6e 74 44 61 74 61 22 3e 0d  ="pClientData">.
1c960 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f  .        /// Upo
1c970 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69 73 20  n success, this 
1c980 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62  parameter must b
1c990 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f  e modified to co
1c9a0 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20 20 20 20  ntain the..     
1c9b0 20 20 20 2f 2f 2f 20 6e 61 74 69 76 65 20 75 73     /// native us
1c9c0 65 72 2d 64 61 74 61 20 70 6f 69 6e 74 65 72 20  er-data pointer 
1c9d0 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 0d  associated with.
1c9e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1c9f0 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 63 61 6c  ramref name="cal
1ca00 6c 62 61 63 6b 22 20 2f 3e 2e 0d 0a 20 20 20 20  lback" />...    
1ca10 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1ca20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
1ca30 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1ca40 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66   /// Non-zero if
1ca50 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 66   the specified f
1ca60 75 6e 63 74 69 6f 6e 20 77 61 73 20 66 6f 75 6e  unction was foun
1ca70 64 3b 20 7a 65 72 6f 20 6f 74 68 65 72 77 69 73  d; zero otherwis
1ca80 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
1ca90 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
1caa0 20 20 20 20 69 6e 74 20 78 46 69 6e 64 46 75 6e      int xFindFun
1cab0 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20  ction(..        
1cac0 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
1cad0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ,..            i
1cae0 6e 74 20 6e 41 72 67 2c 0d 0a 20 20 20 20 20 20  nt nArg,..      
1caf0 20 20 20 20 20 20 49 6e 74 50 74 72 20 7a 4e 61        IntPtr zNa
1cb00 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me,..           
1cb10 20 72 65 66 20 53 51 4c 69 74 65 43 61 6c 6c 62   ref SQLiteCallb
1cb20 61 63 6b 20 63 61 6c 6c 62 61 63 6b 2c 0d 0a 20  ack callback,.. 
1cb30 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 49             ref I
1cb40 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74  ntPtr pClientDat
1cb50 61 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  a..            )
1cb60 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
1cb70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cbb0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1cbc0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1cbd0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1cbe0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1cbf0 68 69 73 20 6d 65 74 68 6f 64 20 70 72 6f 76 69  his method provi
1cc00 64 65 73 20 6e 6f 74 69 66 69 63 61 74 69 6f 6e  des notification
1cc10 20 74 68 61 74 20 74 68 65 20 76 69 72 74 75 61   that the virtua
1cc20 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20 20 20 20  l table..       
1cc30 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74 61 74   /// implementat
1cc40 69 6f 6e 20 74 68 61 74 20 74 68 65 20 76 69 72  ion that the vir
1cc50 74 75 61 6c 20 74 61 62 6c 65 20 77 69 6c 6c 20  tual table will 
1cc60 62 65 20 67 69 76 65 6e 20 61 20 6e 65 77 20 6e  be given a new n
1cc70 61 6d 65 2e 20 49 66 0d 0a 20 20 20 20 20 20 20  ame. If..       
1cc80 20 2f 2f 2f 20 74 68 69 73 20 6d 65 74 68 6f 64   /// this method
1cc90 20 72 65 74 75 72 6e 73 20 53 51 4c 49 54 45 5f   returns SQLITE_
1cca0 4f 4b 20 74 68 65 6e 20 53 51 4c 69 74 65 20 72  OK then SQLite r
1ccb0 65 6e 61 6d 65 73 20 74 68 65 20 74 61 62 6c 65  enames the table
1ccc0 2e 20 49 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f  . If..        //
1ccd0 2f 20 74 68 69 73 20 6d 65 74 68 6f 64 20 72 65  / this method re
1cce0 74 75 72 6e 73 20 61 6e 20 65 72 72 6f 72 20 63  turns an error c
1ccf0 6f 64 65 20 74 68 65 6e 20 74 68 65 20 72 65 6e  ode then the ren
1cd00 61 6d 69 6e 67 20 69 73 20 70 72 65 76 65 6e 74  aming is prevent
1cd10 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
1cd20 20 3c 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20   </para>..      
1cd30 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20    /// <para>..  
1cd40 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 78 52        /// The xR
1cd50 65 6e 61 6d 65 20 6d 65 74 68 6f 64 20 69 73 20  ename method is 
1cd60 72 65 71 75 69 72 65 64 20 66 6f 72 20 65 76 65  required for eve
1cd70 72 79 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  ry virtual table
1cd80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6d  ..        /// im
1cd90 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d 0a 20  plementation... 
1cda0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1cdb0 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
1cdc0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1cdd0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1cde0 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20  ame="pVtab">..  
1cdf0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
1ce00 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
1ce10 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62  the sqlite3_vtab
1ce20 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75   derived structu
1ce30 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
1ce40 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1ce50 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1ce60 6d 65 3d 22 7a 4e 65 77 22 3e 0d 0a 20 20 20 20  me="zNew">..    
1ce70 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
1ce80 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
1ce90 65 20 55 54 46 2d 38 20 65 6e 63 6f 64 65 64 20  e UTF-8 encoded 
1cea0 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e  string containin
1ceb0 67 20 74 68 65 20 6e 65 77 0d 0a 20 20 20 20 20  g the new..     
1cec0 20 20 20 2f 2f 2f 20 6e 61 6d 65 20 66 6f 72 20     /// name for 
1ced0 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c  the virtual tabl
1cee0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
1cef0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
1cf00 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
1cf10 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73  .        /// A s
1cf20 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72  tandard SQLite r
1cf30 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20  eturn code...   
1cf40 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
1cf50 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c  ns>..        SQL
1cf60 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52 65  iteErrorCode xRe
1cf70 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20  name(..         
1cf80 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c     IntPtr pVtab,
1cf90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
1cfa0 74 50 74 72 20 7a 4e 65 77 0d 0a 20 20 20 20 20  tPtr zNew..     
1cfb0 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20         );....   
1cfc0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1cfd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cfe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1d010 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
1d020 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1d030 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20  // <para>..     
1d040 20 20 20 2f 2f 2f 20 54 68 65 73 65 20 6d 65 74     /// These met
1d050 68 6f 64 73 20 70 72 6f 76 69 64 65 20 74 68 65  hods provide the
1d060 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 69   virtual table i
1d070 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 61 6e  mplementation an
1d080 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 70  ..        /// op
1d090 70 6f 72 74 75 6e 69 74 79 20 74 6f 20 69 6d 70  portunity to imp
1d0a0 6c 65 6d 65 6e 74 20 6e 65 73 74 65 64 20 74 72  lement nested tr
1d0b0 61 6e 73 61 63 74 69 6f 6e 73 2e 20 54 68 65 79  ansactions. They
1d0c0 20 61 72 65 20 61 6c 77 61 79 73 0d 0a 20 20 20   are always..   
1d0d0 20 20 20 20 20 2f 2f 2f 20 6f 70 74 69 6f 6e 61       /// optiona
1d0e0 6c 20 61 6e 64 20 77 69 6c 6c 20 6f 6e 6c 79 20  l and will only 
1d0f0 62 65 20 63 61 6c 6c 65 64 20 69 6e 20 53 51 4c  be called in SQL
1d100 69 74 65 20 76 65 72 73 69 6f 6e 20 33 2e 37 2e  ite version 3.7.
1d110 37 20 61 6e 64 20 6c 61 74 65 72 2e 0d 0a 20 20  7 and later...  
1d120 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1d130 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1d140 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
1d150 2f 2f 20 57 68 65 6e 20 78 53 61 76 65 70 6f 69  // When xSavepoi
1d160 6e 74 28 58 2c 4e 29 20 69 73 20 69 6e 76 6f 6b  nt(X,N) is invok
1d170 65 64 2c 20 74 68 61 74 20 69 73 20 61 20 73 69  ed, that is a si
1d180 67 6e 61 6c 20 74 6f 20 74 68 65 20 76 69 72 74  gnal to the virt
1d190 75 61 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ual..        ///
1d1a0 20 74 61 62 6c 65 20 58 20 74 68 61 74 20 69 74   table X that it
1d1b0 20 73 68 6f 75 6c 64 20 73 61 76 65 20 69 74 73   should save its
1d1c0 20 63 75 72 72 65 6e 74 20 73 74 61 74 65 20 61   current state a
1d1d0 73 20 73 61 76 65 70 6f 69 6e 74 20 4e 2e 20 41  s savepoint N. A
1d1e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 75  ..        /// su
1d1f0 62 73 65 71 75 65 6e 74 20 63 61 6c 6c 20 74 6f  bsequent call to
1d200 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 58 2c 52   xRollbackTo(X,R
1d210 29 20 6d 65 61 6e 73 20 74 68 61 74 20 74 68 65  ) means that the
1d220 20 73 74 61 74 65 20 6f 66 20 74 68 65 0d 0a 20   state of the.. 
1d230 20 20 20 20 20 20 20 2f 2f 2f 20 76 69 72 74 75         /// virtu
1d240 61 6c 20 74 61 62 6c 65 20 73 68 6f 75 6c 64 20  al table should 
1d250 72 65 74 75 72 6e 20 74 6f 20 77 68 61 74 20 69  return to what i
1d260 74 20 77 61 73 20 77 68 65 6e 20 78 53 61 76 65  t was when xSave
1d270 70 6f 69 6e 74 28 58 2c 52 29 20 77 61 73 0d 0a  point(X,R) was..
1d280 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 61 73 74          /// last
1d290 20 63 61 6c 6c 65 64 2e 20 54 68 65 20 63 61 6c   called. The cal
1d2a0 6c 20 74 6f 20 78 52 6f 6c 6c 62 61 63 6b 54 6f  l to xRollbackTo
1d2b0 28 58 2c 52 29 20 77 69 6c 6c 20 69 6e 76 61 6c  (X,R) will inval
1d2c0 69 64 61 74 65 20 61 6c 6c 0d 0a 20 20 20 20 20  idate all..     
1d2d0 20 20 20 2f 2f 2f 20 73 61 76 65 70 6f 69 6e 74     /// savepoint
1d2e0 73 20 77 69 74 68 20 4e 3e 52 3b 20 6e 6f 6e 65  s with N>R; none
1d2f0 20 6f 66 20 74 68 65 20 69 6e 76 61 6c 69 64 65   of the invalide
1d300 64 20 73 61 76 65 70 6f 69 6e 74 73 20 77 69 6c  d savepoints wil
1d310 6c 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  l be..        //
1d320 2f 20 72 6f 6c 6c 65 64 20 62 61 63 6b 20 6f 72  / rolled back or
1d330 20 72 65 6c 65 61 73 65 64 20 77 69 74 68 6f 75   released withou
1d340 74 20 66 69 72 73 74 20 62 65 69 6e 67 20 72 65  t first being re
1d350 69 6e 69 74 69 61 6c 69 7a 65 64 20 62 79 20 61  initialized by a
1d360 20 63 61 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f   call..        /
1d370 2f 2f 20 74 6f 20 78 53 61 76 65 70 6f 69 6e 74  // to xSavepoint
1d380 28 29 2e 20 41 20 63 61 6c 6c 20 74 6f 20 78 52  (). A call to xR
1d390 65 6c 65 61 73 65 28 58 2c 4d 29 20 69 6e 76 61  elease(X,M) inva
1d3a0 6c 69 64 61 74 65 73 20 61 6c 6c 20 73 61 76 65  lidates all save
1d3b0 70 6f 69 6e 74 73 0d 0a 20 20 20 20 20 20 20 20  points..        
1d3c0 2f 2f 2f 20 77 68 65 72 65 20 4e 3e 3d 4d 2e 0d  /// where N>=M..
1d3d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1d3e0 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
1d3f0 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20  / <para>..      
1d400 20 20 2f 2f 2f 20 4e 6f 6e 65 20 6f 66 20 74 68    /// None of th
1d410 65 20 78 53 61 76 65 70 6f 69 6e 74 28 29 2c 20  e xSavepoint(), 
1d420 78 52 65 6c 65 61 73 65 28 29 2c 20 6f 72 20 78  xRelease(), or x
1d430 52 6f 6c 6c 62 61 63 6b 54 6f 28 29 20 6d 65 74  RollbackTo() met
1d440 68 6f 64 73 20 77 69 6c 6c 0d 0a 20 20 20 20 20  hods will..     
1d450 20 20 20 2f 2f 2f 20 65 76 65 72 20 62 65 20 63     /// ever be c
1d460 61 6c 6c 65 64 20 65 78 63 65 70 74 20 69 6e 20  alled except in 
1d470 62 65 74 77 65 65 6e 20 63 61 6c 6c 73 20 74 6f  between calls to
1d480 20 78 42 65 67 69 6e 28 29 20 61 6e 64 20 65 69   xBegin() and ei
1d490 74 68 65 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ther..        //
1d4a0 2f 20 78 43 6f 6d 6d 69 74 28 29 20 6f 72 20 78  / xCommit() or x
1d4b0 52 6f 6c 6c 62 61 63 6b 28 29 2e 0d 0a 20 20 20  Rollback()...   
1d4c0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
1d4d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1d4e0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1d4f0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1d500 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20  e="pVtab">..    
1d510 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
1d520 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
1d530 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64  e sqlite3_vtab d
1d540 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65  erived structure
1d550 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1d560 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1d570 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1d580 3d 22 69 53 61 76 65 70 6f 69 6e 74 22 3e 0d 0a  ="iSavepoint">..
1d590 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
1d5a0 20 69 73 20 61 6e 20 69 6e 74 65 67 65 72 20 69   is an integer i
1d5b0 64 65 6e 74 69 66 69 65 72 20 75 6e 64 65 72 20  dentifier under 
1d5c0 77 68 69 63 68 20 74 68 65 20 74 68 65 20 63 75  which the the cu
1d5d0 72 72 65 6e 74 20 73 74 61 74 65 20 6f 66 0d 0a  rrent state of..
1d5e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20          /// the 
1d5f0 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 73 68  virtual table sh
1d600 6f 75 6c 64 20 62 65 20 73 61 76 65 64 2e 0d 0a  ould be saved...
1d610 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1d620 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
1d630 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
1d640 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64       /// A stand
1d650 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72  ard SQLite retur
1d660 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  n code...       
1d670 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
1d680 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45  .        SQLiteE
1d690 72 72 6f 72 43 6f 64 65 20 78 53 61 76 65 70 6f  rrorCode xSavepo
1d6a0 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  int(..          
1d6b0 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d    IntPtr pVtab,.
1d6c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
1d6d0 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20   iSavepoint..   
1d6e0 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20           );.... 
1d6f0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1d700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1d740 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1d750 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1d760 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20   /// <para>..   
1d770 20 20 20 20 20 2f 2f 2f 20 54 68 65 73 65 20 6d       /// These m
1d780 65 74 68 6f 64 73 20 70 72 6f 76 69 64 65 20 74  ethods provide t
1d790 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
1d7a0 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20   implementation 
1d7b0 61 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  an..        /// 
1d7c0 6f 70 70 6f 72 74 75 6e 69 74 79 20 74 6f 20 69  opportunity to i
1d7d0 6d 70 6c 65 6d 65 6e 74 20 6e 65 73 74 65 64 20  mplement nested 
1d7e0 74 72 61 6e 73 61 63 74 69 6f 6e 73 2e 20 54 68  transactions. Th
1d7f0 65 79 20 61 72 65 20 61 6c 77 61 79 73 0d 0a 20  ey are always.. 
1d800 20 20 20 20 20 20 20 2f 2f 2f 20 6f 70 74 69 6f         /// optio
1d810 6e 61 6c 20 61 6e 64 20 77 69 6c 6c 20 6f 6e 6c  nal and will onl
1d820 79 20 62 65 20 63 61 6c 6c 65 64 20 69 6e 20 53  y be called in S
1d830 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 20 33 2e  QLite version 3.
1d840 37 2e 37 20 61 6e 64 20 6c 61 74 65 72 2e 0d 0a  7.7 and later...
1d850 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1d860 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
1d870 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20   <para>..       
1d880 20 2f 2f 2f 20 57 68 65 6e 20 78 53 61 76 65 70   /// When xSavep
1d890 6f 69 6e 74 28 58 2c 4e 29 20 69 73 20 69 6e 76  oint(X,N) is inv
1d8a0 6f 6b 65 64 2c 20 74 68 61 74 20 69 73 20 61 20  oked, that is a 
1d8b0 73 69 67 6e 61 6c 20 74 6f 20 74 68 65 20 76 69  signal to the vi
1d8c0 72 74 75 61 6c 0d 0a 20 20 20 20 20 20 20 20 2f  rtual..        /
1d8d0 2f 2f 20 74 61 62 6c 65 20 58 20 74 68 61 74 20  // table X that 
1d8e0 69 74 20 73 68 6f 75 6c 64 20 73 61 76 65 20 69  it should save i
1d8f0 74 73 20 63 75 72 72 65 6e 74 20 73 74 61 74 65  ts current state
1d900 20 61 73 20 73 61 76 65 70 6f 69 6e 74 20 4e 2e   as savepoint N.
1d910 20 41 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20   A..        /// 
1d920 73 75 62 73 65 71 75 65 6e 74 20 63 61 6c 6c 20  subsequent call 
1d930 74 6f 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 58  to xRollbackTo(X
1d940 2c 52 29 20 6d 65 61 6e 73 20 74 68 61 74 20 74  ,R) means that t
1d950 68 65 20 73 74 61 74 65 20 6f 66 20 74 68 65 0d  he state of the.
1d960 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 69 72  .        /// vir
1d970 74 75 61 6c 20 74 61 62 6c 65 20 73 68 6f 75 6c  tual table shoul
1d980 64 20 72 65 74 75 72 6e 20 74 6f 20 77 68 61 74  d return to what
1d990 20 69 74 20 77 61 73 20 77 68 65 6e 20 78 53 61   it was when xSa
1d9a0 76 65 70 6f 69 6e 74 28 58 2c 52 29 20 77 61 73  vepoint(X,R) was
1d9b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 61  ..        /// la
1d9c0 73 74 20 63 61 6c 6c 65 64 2e 20 54 68 65 20 63  st called. The c
1d9d0 61 6c 6c 20 74 6f 20 78 52 6f 6c 6c 62 61 63 6b  all to xRollback
1d9e0 54 6f 28 58 2c 52 29 20 77 69 6c 6c 20 69 6e 76  To(X,R) will inv
1d9f0 61 6c 69 64 61 74 65 20 61 6c 6c 0d 0a 20 20 20  alidate all..   
1da00 20 20 20 20 20 2f 2f 2f 20 73 61 76 65 70 6f 69       /// savepoi
1da10 6e 74 73 20 77 69 74 68 20 4e 3e 52 3b 20 6e 6f  nts with N>R; no
1da20 6e 65 20 6f 66 20 74 68 65 20 69 6e 76 61 6c 69  ne of the invali
1da30 64 65 64 20 73 61 76 65 70 6f 69 6e 74 73 20 77  ded savepoints w
1da40 69 6c 6c 20 62 65 0d 0a 20 20 20 20 20 20 20 20  ill be..        
1da50 2f 2f 2f 20 72 6f 6c 6c 65 64 20 62 61 63 6b 20  /// rolled back 
1da60 6f 72 20 72 65 6c 65 61 73 65 64 20 77 69 74 68  or released with
1da70 6f 75 74 20 66 69 72 73 74 20 62 65 69 6e 67 20  out first being 
1da80 72 65 69 6e 69 74 69 61 6c 69 7a 65 64 20 62 79  reinitialized by
1da90 20 61 20 63 61 6c 6c 0d 0a 20 20 20 20 20 20 20   a call..       
1daa0 20 2f 2f 2f 20 74 6f 20 78 53 61 76 65 70 6f 69   /// to xSavepoi
1dab0 6e 74 28 29 2e 20 41 20 63 61 6c 6c 20 74 6f 20  nt(). A call to 
1dac0 78 52 65 6c 65 61 73 65 28 58 2c 4d 29 20 69 6e  xRelease(X,M) in
1dad0 76 61 6c 69 64 61 74 65 73 20 61 6c 6c 20 73 61  validates all sa
1dae0 76 65 70 6f 69 6e 74 73 0d 0a 20 20 20 20 20 20  vepoints..      
1daf0 20 20 2f 2f 2f 20 77 68 65 72 65 20 4e 3e 3d 4d    /// where N>=M
1db00 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1db10 2f 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20  /para>..        
1db20 2f 2f 2f 20 3c 70 61 72 61 3e 0d 0a 20 20 20 20  /// <para>..    
1db30 20 20 20 20 2f 2f 2f 20 4e 6f 6e 65 20 6f 66 20      /// None of 
1db40 74 68 65 20 78 53 61 76 65 70 6f 69 6e 74 28 29  the xSavepoint()
1db50 2c 20 78 52 65 6c 65 61 73 65 28 29 2c 20 6f 72  , xRelease(), or
1db60 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 29 20 6d   xRollbackTo() m
1db70 65 74 68 6f 64 73 20 77 69 6c 6c 0d 0a 20 20 20  ethods will..   
1db80 20 20 20 20 20 2f 2f 2f 20 65 76 65 72 20 62 65       /// ever be
1db90 20 63 61 6c 6c 65 64 20 65 78 63 65 70 74 20 69   called except i
1dba0 6e 20 62 65 74 77 65 65 6e 20 63 61 6c 6c 73 20  n between calls 
1dbb0 74 6f 20 78 42 65 67 69 6e 28 29 20 61 6e 64 20  to xBegin() and 
1dbc0 65 69 74 68 65 72 0d 0a 20 20 20 20 20 20 20 20  either..        
1dbd0 2f 2f 2f 20 78 43 6f 6d 6d 69 74 28 29 20 6f 72  /// xCommit() or
1dbe0 20 78 52 6f 6c 6c 62 61 63 6b 28 29 2e 0d 0a 20   xRollback()... 
1dbf0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1dc00 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  a>..        /// 
1dc10 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1dc20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1dc30 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20  ame="pVtab">..  
1dc40 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
1dc50 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
1dc60 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62  the sqlite3_vtab
1dc70 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75   derived structu
1dc80 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
1dc90 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1dca0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1dcb0 6d 65 3d 22 69 53 61 76 65 70 6f 69 6e 74 22 3e  me="iSavepoint">
1dcc0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1dcd0 69 73 20 69 73 20 61 6e 20 69 6e 74 65 67 65 72  is is an integer
1dce0 20 75 73 65 64 20 74 6f 20 69 6e 64 69 63 61 74   used to indicat
1dcf0 65 20 74 68 61 74 20 61 6e 79 20 73 61 76 65 64  e that any saved
1dd00 20 73 74 61 74 65 73 20 77 69 74 68 20 61 6e 0d   states with an.
1dd10 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 64 65  .        /// ide
1dd20 6e 74 69 66 69 65 72 20 67 72 65 61 74 65 72 20  ntifier greater 
1dd30 74 68 61 6e 20 6f 72 20 65 71 75 61 6c 20 74 6f  than or equal to
1dd40 20 74 68 69 73 20 73 68 6f 75 6c 64 20 62 65 20   this should be 
1dd50 64 65 6c 65 74 65 64 20 62 79 20 74 68 65 0d 0a  deleted by the..
1dd60 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 69 72 74          /// virt
1dd70 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
1dd80 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1dd90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
1dda0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1ddb0 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20   /// A standard 
1ddc0 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f  SQLite return co
1ddd0 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de...        ///
1dde0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
1ddf0 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72       SQLiteError
1de00 43 6f 64 65 20 78 52 65 6c 65 61 73 65 28 0d 0a  Code xRelease(..
1de10 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
1de20 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
1de30 20 20 20 20 20 20 20 69 6e 74 20 69 53 61 76 65         int iSave
1de40 70 6f 69 6e 74 0d 0a 20 20 20 20 20 20 20 20 20  point..         
1de50 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20     );....       
1de60 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1de70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1de80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1de90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dea0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1deb0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1dec0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1ded0 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
1dee0 2f 2f 20 54 68 65 73 65 20 6d 65 74 68 6f 64 73  // These methods
1def0 20 70 72 6f 76 69 64 65 20 74 68 65 20 76 69 72   provide the vir
1df00 74 75 61 6c 20 74 61 62 6c 65 20 69 6d 70 6c 65  tual table imple
1df10 6d 65 6e 74 61 74 69 6f 6e 20 61 6e 0d 0a 20 20  mentation an..  
1df20 20 20 20 20 20 20 2f 2f 2f 20 6f 70 70 6f 72 74        /// opport
1df30 75 6e 69 74 79 20 74 6f 20 69 6d 70 6c 65 6d 65  unity to impleme
1df40 6e 74 20 6e 65 73 74 65 64 20 74 72 61 6e 73 61  nt nested transa
1df50 63 74 69 6f 6e 73 2e 20 54 68 65 79 20 61 72 65  ctions. They are
1df60 20 61 6c 77 61 79 73 0d 0a 20 20 20 20 20 20 20   always..       
1df70 20 2f 2f 2f 20 6f 70 74 69 6f 6e 61 6c 20 61 6e   /// optional an
1df80 64 20 77 69 6c 6c 20 6f 6e 6c 79 20 62 65 20 63  d will only be c
1df90 61 6c 6c 65 64 20 69 6e 20 53 51 4c 69 74 65 20  alled in SQLite 
1dfa0 76 65 72 73 69 6f 6e 20 33 2e 37 2e 37 20 61 6e  version 3.7.7 an
1dfb0 64 20 6c 61 74 65 72 2e 0d 0a 20 20 20 20 20 20  d later...      
1dfc0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20    /// </para>.. 
1dfd0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1dfe0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 57  >..        /// W
1dff0 68 65 6e 20 78 53 61 76 65 70 6f 69 6e 74 28 58  hen xSavepoint(X
1e000 2c 4e 29 20 69 73 20 69 6e 76 6f 6b 65 64 2c 20  ,N) is invoked, 
1e010 74 68 61 74 20 69 73 20 61 20 73 69 67 6e 61 6c  that is a signal
1e020 20 74 6f 20 74 68 65 20 76 69 72 74 75 61 6c 0d   to the virtual.
1e030 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 61 62  .        /// tab
1e040 6c 65 20 58 20 74 68 61 74 20 69 74 20 73 68 6f  le X that it sho
1e050 75 6c 64 20 73 61 76 65 20 69 74 73 20 63 75 72  uld save its cur
1e060 72 65 6e 74 20 73 74 61 74 65 20 61 73 20 73 61  rent state as sa
1e070 76 65 70 6f 69 6e 74 20 4e 2e 20 41 0d 0a 20 20  vepoint N. A..  
1e080 20 20 20 20 20 20 2f 2f 2f 20 73 75 62 73 65 71        /// subseq
1e090 75 65 6e 74 20 63 61 6c 6c 20 74 6f 20 78 52 6f  uent call to xRo
1e0a0 6c 6c 62 61 63 6b 54 6f 28 58 2c 52 29 20 6d 65  llbackTo(X,R) me
1e0b0 61 6e 73 20 74 68 61 74 20 74 68 65 20 73 74 61  ans that the sta
1e0c0 74 65 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20  te of the..     
1e0d0 20 20 20 2f 2f 2f 20 76 69 72 74 75 61 6c 20 74     /// virtual t
1e0e0 61 62 6c 65 20 73 68 6f 75 6c 64 20 72 65 74 75  able should retu
1e0f0 72 6e 20 74 6f 20 77 68 61 74 20 69 74 20 77 61  rn to what it wa
1e100 73 20 77 68 65 6e 20 78 53 61 76 65 70 6f 69 6e  s when xSavepoin
1e110 74 28 58 2c 52 29 20 77 61 73 0d 0a 20 20 20 20  t(X,R) was..    
1e120 20 20 20 20 2f 2f 2f 20 6c 61 73 74 20 63 61 6c      /// last cal
1e130 6c 65 64 2e 20 54 68 65 20 63 61 6c 6c 20 74 6f  led. The call to
1e140 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 58 2c 52   xRollbackTo(X,R
1e150 29 20 77 69 6c 6c 20 69 6e 76 61 6c 69 64 61 74  ) will invalidat
1e160 65 20 61 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f  e all..        /
1e170 2f 2f 20 73 61 76 65 70 6f 69 6e 74 73 20 77 69  // savepoints wi
1e180 74 68 20 4e 3e 52 3b 20 6e 6f 6e 65 20 6f 66 20  th N>R; none of 
1e190 74 68 65 20 69 6e 76 61 6c 69 64 65 64 20 73 61  the invalided sa
1e1a0 76 65 70 6f 69 6e 74 73 20 77 69 6c 6c 20 62 65  vepoints will be
1e1b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 72 6f  ..        /// ro
1e1c0 6c 6c 65 64 20 62 61 63 6b 20 6f 72 20 72 65 6c  lled back or rel
1e1d0 65 61 73 65 64 20 77 69 74 68 6f 75 74 20 66 69  eased without fi
1e1e0 72 73 74 20 62 65 69 6e 67 20 72 65 69 6e 69 74  rst being reinit
1e1f0 69 61 6c 69 7a 65 64 20 62 79 20 61 20 63 61 6c  ialized by a cal
1e200 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  l..        /// t
1e210 6f 20 78 53 61 76 65 70 6f 69 6e 74 28 29 2e 20  o xSavepoint(). 
1e220 41 20 63 61 6c 6c 20 74 6f 20 78 52 65 6c 65 61  A call to xRelea
1e230 73 65 28 58 2c 4d 29 20 69 6e 76 61 6c 69 64 61  se(X,M) invalida
1e240 74 65 73 20 61 6c 6c 20 73 61 76 65 70 6f 69 6e  tes all savepoin
1e250 74 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ts..        /// 
1e260 77 68 65 72 65 20 4e 3e 3d 4d 2e 0d 0a 20 20 20  where N>=M...   
1e270 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e       /// </para>
1e280 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1e290 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ara>..        //
1e2a0 2f 20 4e 6f 6e 65 20 6f 66 20 74 68 65 20 78 53  / None of the xS
1e2b0 61 76 65 70 6f 69 6e 74 28 29 2c 20 78 52 65 6c  avepoint(), xRel
1e2c0 65 61 73 65 28 29 2c 20 6f 72 20 78 52 6f 6c 6c  ease(), or xRoll
1e2d0 62 61 63 6b 54 6f 28 29 20 6d 65 74 68 6f 64 73  backTo() methods
1e2e0 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f   will..        /
1e2f0 2f 2f 20 65 76 65 72 20 62 65 20 63 61 6c 6c 65  // ever be calle
1e300 64 20 65 78 63 65 70 74 20 69 6e 20 62 65 74 77  d except in betw
1e310 65 65 6e 20 63 61 6c 6c 73 20 74 6f 20 78 42 65  een calls to xBe
1e320 67 69 6e 28 29 20 61 6e 64 20 65 69 74 68 65 72  gin() and either
1e330 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 78 43  ..        /// xC
1e340 6f 6d 6d 69 74 28 29 20 6f 72 20 78 52 6f 6c 6c  ommit() or xRoll
1e350 62 61 63 6b 28 29 2e 0d 0a 20 20 20 20 20 20 20  back()...       
1e360 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
1e370 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
1e380 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1e390 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
1e3a0 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
1e3b0 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70  /// The native p
1e3c0 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71  ointer to the sq
1e3d0 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76  lite3_vtab deriv
1e3e0 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  ed structure... 
1e3f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1e400 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1e410 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 53   <param name="iS
1e420 61 76 65 70 6f 69 6e 74 22 3e 0d 0a 20 20 20 20  avepoint">..    
1e430 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20      /// This is 
1e440 61 6e 20 69 6e 74 65 67 65 72 20 69 64 65 6e 74  an integer ident
1e450 69 66 69 65 72 20 75 73 65 64 20 74 6f 20 73 70  ifier used to sp
1e460 65 63 69 66 79 20 61 20 73 70 65 63 69 66 69 63  ecify a specific
1e470 20 73 61 76 65 64 0d 0a 20 20 20 20 20 20 20 20   saved..        
1e480 2f 2f 2f 20 73 74 61 74 65 20 66 6f 72 20 74 68  /// state for th
1e490 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  e virtual table 
1e4a0 66 6f 72 20 69 74 20 74 6f 20 72 65 73 74 6f 72  for it to restor
1e4b0 65 20 69 74 73 65 6c 66 20 62 61 63 6b 20 74 6f  e itself back to
1e4c0 2c 20 77 68 69 63 68 0d 0a 20 20 20 20 20 20 20  , which..       
1e4d0 20 2f 2f 2f 20 73 68 6f 75 6c 64 20 61 6c 73 6f   /// should also
1e4e0 20 68 61 76 65 20 74 68 65 20 65 66 66 65 63 74   have the effect
1e4f0 20 6f 66 20 64 65 6c 65 74 69 6e 67 20 61 6c 6c   of deleting all
1e500 20 73 61 76 65 64 20 73 74 61 74 65 73 20 77 69   saved states wi
1e510 74 68 20 61 6e 0d 0a 20 20 20 20 20 20 20 20 2f  th an..        /
1e520 2f 2f 20 69 6e 74 65 67 65 72 20 69 64 65 6e 74  // integer ident
1e530 69 66 69 65 72 20 67 72 65 61 74 65 72 20 74 68  ifier greater th
1e540 61 6e 20 74 68 69 73 20 6f 6e 65 2e 0d 0a 20 20  an this one...  
1e550 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1e560 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
1e570 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
1e580 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72     /// A standar
1e590 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20  d SQLite return 
1e5a0 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  code...        /
1e5b0 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
1e5c0 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72         SQLiteErr
1e5d0 6f 72 43 6f 64 65 20 78 52 6f 6c 6c 62 61 63 6b  orCode xRollback
1e5e0 54 6f 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  To(..           
1e5f0 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
1e600 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
1e610 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20  iSavepoint..    
1e620 20 20 20 20 20 20 20 20 29 3b 0d 0a 20 20 20 20          );..    
1e630 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  }..    #endregio
1e640 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  n....    ///////
1e650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e690 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
1e6a0 69 6f 6e 20 49 53 51 4c 69 74 65 4d 61 6e 61 67  ion ISQLiteManag
1e6b0 65 64 4d 6f 64 75 6c 65 20 49 6e 74 65 72 66 61  edModule Interfa
1e6c0 63 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ce..    /// <sum
1e6d0 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  mary>..    /// T
1e6e0 68 69 73 20 69 6e 74 65 72 66 61 63 65 20 72 65  his interface re
1e6f0 70 72 65 73 65 6e 74 73 20 61 20 76 69 72 74 75  presents a virtu
1e700 61 6c 20 74 61 62 6c 65 20 69 6d 70 6c 65 6d 65  al table impleme
1e710 6e 74 61 74 69 6f 6e 20 77 72 69 74 74 65 6e 20  ntation written 
1e720 69 6e 0d 0a 20 20 20 20 2f 2f 2f 20 6d 61 6e 61  in..    /// mana
1e730 67 65 64 20 63 6f 64 65 2e 0d 0a 20 20 20 20 2f  ged code...    /
1e740 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1e750 20 20 20 70 75 62 6c 69 63 20 69 6e 74 65 72 66     public interf
1e760 61 63 65 20 49 53 51 4c 69 74 65 4d 61 6e 61 67  ace ISQLiteManag
1e770 65 64 4d 6f 64 75 6c 65 0d 0a 20 20 20 20 7b 0d  edModule..    {.
1e780 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
1e790 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1e7a0 2f 2f 2f 20 52 65 74 75 72 6e 73 20 6e 6f 6e 2d  /// Returns non-
1e7b0 7a 65 72 6f 20 69 66 20 74 68 65 20 73 63 68 65  zero if the sche
1e7c0 6d 61 20 66 6f 72 20 74 68 65 20 76 69 72 74 75  ma for the virtu
1e7d0 61 6c 20 74 61 62 6c 65 20 68 61 73 20 62 65 65  al table has bee
1e7e0 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64  n..        /// d
1e7f0 65 63 6c 61 72 65 64 2e 0d 0a 20 20 20 20 20 20  eclared...      
1e800 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1e810 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 44  ..        bool D
1e820 65 63 6c 61 72 65 64 20 7b 20 67 65 74 3b 20 7d  eclared { get; }
1e830 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1e840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e880 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
1e890 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
1e8a0 20 20 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e        /// Return
1e8b0 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68  s the name of th
1e8c0 65 20 6d 6f 64 75 6c 65 20 61 73 20 69 74 20 77  e module as it w
1e8d0 61 73 20 72 65 67 69 73 74 65 72 65 64 20 77 69  as registered wi
1e8e0 74 68 20 74 68 65 20 53 51 4c 69 74 65 0d 0a 20  th the SQLite.. 
1e8f0 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 72 65 20         /// core 
1e900 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20  library...      
1e910 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1e920 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e 67  ..        string
1e930 20 4e 61 6d 65 20 7b 20 67 65 74 3b 20 7d 0d 0a   Name { get; }..
1e940 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
1e950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e990 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
1e9a0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
1e9b0 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74      /// This met
1e9c0 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e  hod is called in
1e9d0 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65   response to the
1e9e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1e9f0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
1ea00 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72  NativeModule.xCr
1ea10 65 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  eate" /> method.
1ea20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1ea30 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1ea40 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1ea50 65 3d 22 63 6f 6e 6e 65 63 74 69 6f 6e 22 3e 0d  e="connection">.
1ea60 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1ea70 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
1ea80 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 22 20 2f 3e  teConnection" />
1ea90 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
1eaa0 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
1eab0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68  ..        /// th
1eac0 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e  e virtual table.
1ead0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1eae0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1eaf0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1eb00 22 70 43 6c 69 65 6e 74 44 61 74 61 22 3e 0d 0a  "pClientData">..
1eb10 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1eb20 6e 61 74 69 76 65 20 75 73 65 72 2d 64 61 74 61  native user-data
1eb30 20 70 6f 69 6e 74 65 72 20 61 73 73 6f 63 69 61   pointer associa
1eb40 74 65 64 20 77 69 74 68 20 74 68 69 73 20 6d 6f  ted with this mo
1eb50 64 75 6c 65 2c 20 61 73 20 69 74 20 77 61 73 0d  dule, as it was.
1eb60 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f  .        /// pro
1eb70 76 69 64 65 64 20 74 6f 20 74 68 65 20 53 51 4c  vided to the SQL
1eb80 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
1eb90 20 77 68 65 6e 20 74 68 65 20 6e 61 74 69 76 65   when the native
1eba0 20 6d 6f 64 75 6c 65 20 69 6e 73 74 61 6e 63 65   module instance
1ebb0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 61  ..        /// wa
1ebc0 73 20 63 72 65 61 74 65 64 2e 0d 0a 20 20 20 20  s created...    
1ebd0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1ebe0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1ebf0 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 75 6d  aram name="argum
1ec00 65 6e 74 73 22 3e 0d 0a 20 20 20 20 20 20 20 20  ents">..        
1ec10 2f 2f 2f 20 54 68 65 20 6d 6f 64 75 6c 65 20 6e  /// The module n
1ec20 61 6d 65 2c 20 64 61 74 61 62 61 73 65 20 6e 61  ame, database na
1ec30 6d 65 2c 20 76 69 72 74 75 61 6c 20 74 61 62 6c  me, virtual tabl
1ec40 65 20 6e 61 6d 65 2c 20 61 6e 64 20 61 6c 6c 20  e name, and all 
1ec50 6f 74 68 65 72 0d 0a 20 20 20 20 20 20 20 20 2f  other..        /
1ec60 2f 2f 20 61 72 67 75 6d 65 6e 74 73 20 70 61 73  // arguments pas
1ec70 73 65 64 20 74 6f 20 74 68 65 20 43 52 45 41 54  sed to the CREAT
1ec80 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45 20  E VIRTUAL TABLE 
1ec90 73 74 61 74 65 6d 65 6e 74 2e 0d 0a 20 20 20 20  statement...    
1eca0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1ecb0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1ecc0 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65  aram name="table
1ecd0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
1ece0 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68  Upon success, th
1ecf0 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73  is parameter mus
1ed00 74 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f  t be modified to
1ed10 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20   contain the..  
1ed20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
1ed30 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75  ref="SQLiteVirtu
1ed40 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65  alTable" /> obje
1ed50 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f  ct instance asso
1ed60 63 69 61 74 65 64 20 77 69 74 68 0d 0a 20 20 20  ciated with..   
1ed70 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 76 69 72       /// the vir
1ed80 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20  tual table...   
1ed90 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
1eda0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1edb0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 65 72 72 6f  param name="erro
1edc0 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  r">..        ///
1edd0 20 55 70 6f 6e 20 66 61 69 6c 75 72 65 2c 20 74   Upon failure, t
1ede0 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d 75  his parameter mu
1edf0 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74  st be modified t
1ee00 6f 20 63 6f 6e 74 61 69 6e 20 61 6e 20 65 72 72  o contain an err
1ee10 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  or..        /// 
1ee20 6d 65 73 73 61 67 65 2e 0d 0a 20 20 20 20 20 20  message...      
1ee30 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
1ee40 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
1ee50 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
1ee60 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51  // A standard SQ
1ee70 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65  Lite return code
1ee80 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1ee90 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
1eea0 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f     SQLiteErrorCo
1eeb0 64 65 20 43 72 65 61 74 65 28 0d 0a 20 20 20 20  de Create(..    
1eec0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f          SQLiteCo
1eed0 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e 65 63 74  nnection connect
1eee0 69 6f 6e 2c 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a  ion,  /* in */..
1eef0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
1ef00 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61 2c 20  tr pClientData, 
1ef10 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20            /* in 
1ef20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
1ef30 73 74 72 69 6e 67 5b 5d 20 61 72 67 75 6d 65 6e  string[] argumen
1ef40 74 73 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2a  ts,           /*
1ef50 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
1ef60 20 20 20 20 72 65 66 20 53 51 4c 69 74 65 56 69      ref SQLiteVi
1ef70 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65  rtualTable table
1ef80 2c 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20  , /* out */..   
1ef90 20 20 20 20 20 20 20 20 20 72 65 66 20 73 74 72           ref str
1efa0 69 6e 67 20 65 72 72 6f 72 20 20 20 20 20 20 20  ing error       
1efb0 20 20 20 20 20 20 20 2f 2a 20 6f 75 74 20 2a 2f         /* out */
1efc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b  ..            );
1efd0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1efe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f020 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
1f030 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
1f040 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d        /// This m
1f050 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20  ethod is called 
1f060 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74  in response to t
1f070 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
1f080 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
1f090 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
1f0a0 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68  Connect" /> meth
1f0b0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  od...        ///
1f0c0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1f0d0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1f0e0 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f 6e  name="connection
1f0f0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
1f100 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
1f110 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 22  QLiteConnection"
1f120 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
1f130 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 20 77  nce associated w
1f140 69 74 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ith..        ///
1f150 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
1f160 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le...        ///
1f170 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1f180 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1f190 6d 65 3d 22 70 43 6c 69 65 6e 74 44 61 74 61 22  me="pClientData"
1f1a0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1f1b0 68 65 20 6e 61 74 69 76 65 20 75 73 65 72 2d 64  he native user-d
1f1c0 61 74 61 20 70 6f 69 6e 74 65 72 20 61 73 73 6f  ata pointer asso
1f1d0 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73  ciated with this
1f1e0 20 6d 6f 64 75 6c 65 2c 20 61 73 20 69 74 20 77   module, as it w
1f1f0 61 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  as..        /// 
1f200 70 72 6f 76 69 64 65 64 20 74 6f 20 74 68 65 20  provided to the 
1f210 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
1f220 61 72 79 20 77 68 65 6e 20 74 68 65 20 6e 61 74  ary when the nat
1f230 69 76 65 20 6d 6f 64 75 6c 65 20 69 6e 73 74 61  ive module insta
1f240 6e 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  nce..        ///
1f250 20 77 61 73 20 63 72 65 61 74 65 64 2e 0d 0a 20   was created... 
1f260 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1f270 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1f280 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72   <param name="ar
1f290 67 75 6d 65 6e 74 73 22 3e 0d 0a 20 20 20 20 20  guments">..     
1f2a0 20 20 20 2f 2f 2f 20 54 68 65 20 6d 6f 64 75 6c     /// The modul
1f2b0 65 20 6e 61 6d 65 2c 20 64 61 74 61 62 61 73 65  e name, database
1f2c0 20 6e 61 6d 65 2c 20 76 69 72 74 75 61 6c 20 74   name, virtual t
1f2d0 61 62 6c 65 20 6e 61 6d 65 2c 20 61 6e 64 20 61  able name, and a
1f2e0 6c 6c 20 6f 74 68 65 72 0d 0a 20 20 20 20 20 20  ll other..      
1f2f0 20 20 2f 2f 2f 20 61 72 67 75 6d 65 6e 74 73 20    /// arguments 
1f300 70 61 73 73 65 64 20 74 6f 20 74 68 65 20 43 52  passed to the CR
1f310 45 41 54 45 20 56 49 52 54 55 41 4c 20 54 41 42  EATE VIRTUAL TAB
1f320 4c 45 20 73 74 61 74 65 6d 65 6e 74 2e 0d 0a 20  LE statement... 
1f330 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1f340 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1f350 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61   <param name="ta
1f360 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ble">..        /
1f370 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c  // Upon success,
1f380 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20   this parameter 
1f390 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64  must be modified
1f3a0 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d   to contain the.
1f3b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
1f3c0 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69  e cref="SQLiteVi
1f3d0 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f  rtualTable" /> o
1f3e0 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61  bject instance a
1f3f0 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 0d 0a  ssociated with..
1f400 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20          /// the 
1f410 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a  virtual table...
1f420 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1f430 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
1f440 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 65  / <param name="e
1f450 72 72 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20  rror">..        
1f460 2f 2f 2f 20 55 70 6f 6e 20 66 61 69 6c 75 72 65  /// Upon failure
1f470 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72  , this parameter
1f480 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65   must be modifie
1f490 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20 61 6e 20  d to contain an 
1f4a0 65 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f  error..        /
1f4b0 2f 2f 20 6d 65 73 73 61 67 65 2e 0d 0a 20 20 20  // message...   
1f4c0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
1f4d0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1f4e0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1f4f0 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64    /// A standard
1f500 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63   SQLite return c
1f510 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode...        //
1f520 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
1f530 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f        SQLiteErro
1f540 72 43 6f 64 65 20 43 6f 6e 6e 65 63 74 28 0d 0a  rCode Connect(..
1f550 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
1f560 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e  teConnection con
1f570 6e 65 63 74 69 6f 6e 2c 20 20 2f 2a 20 69 6e 20  nection,  /* in 
1f580 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
1f590 49 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61  IntPtr pClientDa
1f5a0 74 61 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2a  ta,           /*
1f5b0 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
1f5c0 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 61 72 67      string[] arg
1f5d0 75 6d 65 6e 74 73 2c 20 20 20 20 20 20 20 20 20  uments,         
1f5e0 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
1f5f0 20 20 20 20 20 20 20 20 72 65 66 20 53 51 4c 69          ref SQLi
1f600 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74  teVirtualTable t
1f610 61 62 6c 65 2c 20 2f 2a 20 6f 75 74 20 2a 2f 0d  able, /* out */.
1f620 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66  .            ref
1f630 20 73 74 72 69 6e 67 20 65 72 72 6f 72 20 20 20   string error   
1f640 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 6f 75             /* ou
1f650 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  t */..          
1f660 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    );....        
1f670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f6a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f6b0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1f6c0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1f6d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1f6e0 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c  is method is cal
1f6f0 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20  led in response 
1f700 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
1f710 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
1f720 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
1f730 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 22 20 2f  le.xBestIndex" /
1f740 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
1f750 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1f760 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1f770 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c  param name="tabl
1f780 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
1f790 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
1f7a0 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
1f7b0 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  le" /> object in
1f7c0 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65  stance associate
1f7d0 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77  d..        /// w
1f7e0 69 74 68 20 74 68 69 73 20 76 69 72 74 75 61 6c  ith this virtual
1f7f0 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20   table...       
1f800 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1f810 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1f820 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78 22 3e 0d  m name="index">.
1f830 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1f840 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
1f850 74 65 49 6e 64 65 78 22 20 2f 3e 20 6f 62 6a 65  teIndex" /> obje
1f860 63 74 20 69 6e 73 74 61 6e 63 65 20 63 6f 6e 74  ct instance cont
1f870 61 69 6e 69 6e 67 20 61 6c 6c 20 74 68 65 0d 0a  aining all the..
1f880 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 61 74 61          /// data
1f890 20 66 6f 72 20 74 68 65 20 69 6e 70 75 74 73 20   for the inputs 
1f8a0 61 6e 64 20 6f 75 74 70 75 74 73 20 72 65 6c 61  and outputs rela
1f8b0 74 69 6e 67 20 74 6f 20 69 6e 64 65 78 20 73 65  ting to index se
1f8c0 6c 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  lection...      
1f8d0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
1f8e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
1f8f0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
1f900 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51  // A standard SQ
1f910 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65  Lite return code
1f920 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1f930 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
1f940 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f     SQLiteErrorCo
1f950 64 65 20 42 65 73 74 49 6e 64 65 78 28 0d 0a 20  de BestIndex(.. 
1f960 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
1f970 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61  eVirtualTable ta
1f980 62 6c 65 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  ble, /* in */.. 
1f990 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
1f9a0 65 49 6e 64 65 78 20 69 6e 64 65 78 20 20 20 20  eIndex index    
1f9b0 20 20 20 20 20 2f 2a 20 69 6e 2c 20 6f 75 74 20       /* in, out 
1f9c0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
1f9d0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  );....        //
1f9e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f9f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fa00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fa10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fa20 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1fa30 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1fa40 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
1fa50 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65   method is calle
1fa60 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f  d in response to
1fa70 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
1fa80 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  / <see cref="ISQ
1fa90 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
1faa0 2e 78 44 69 73 63 6f 6e 6e 65 63 74 22 20 2f 3e  .xDisconnect" />
1fab0 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
1fac0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1fad0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1fae0 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65  aram name="table
1faf0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
1fb00 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
1fb10 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
1fb20 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  e" /> object ins
1fb30 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64  tance associated
1fb40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69  ..        /// wi
1fb50 74 68 20 74 68 69 73 20 76 69 72 74 75 61 6c 20  th this virtual 
1fb60 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20  table...        
1fb70 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1fb80 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
1fb90 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
1fba0 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69   A standard SQLi
1fbb0 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d  te return code..
1fbc0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
1fbd0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1fbe0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1fbf0 20 44 69 73 63 6f 6e 6e 65 63 74 28 0d 0a 20 20   Disconnect(..  
1fc00 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
1fc10 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62  VirtualTable tab
1fc20 6c 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20  le /* in */..   
1fc30 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20           );.... 
1fc40 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1fc50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fc60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fc70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fc80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1fc90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1fca0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1fcb0 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64   /// This method
1fcc0 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65   is called in re
1fcd0 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20  sponse to the.. 
1fce0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
1fcf0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
1fd00 69 76 65 4d 6f 64 75 6c 65 2e 78 44 65 73 74 72  iveModule.xDestr
1fd10 6f 79 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  oy" /> method...
1fd20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
1fd30 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1fd40 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1fd50 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20  "table">..      
1fd60 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
1fd70 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75  ref="SQLiteVirtu
1fd80 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65  alTable" /> obje
1fd90 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f  ct instance asso
1fda0 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20  ciated..        
1fdb0 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20 76 69  /// with this vi
1fdc0 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20  rtual table...  
1fdd0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1fde0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
1fdf0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
1fe00 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72     /// A standar
1fe10 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20  d SQLite return 
1fe20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  code...        /
1fe30 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
1fe40 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72         SQLiteErr
1fe50 6f 72 43 6f 64 65 20 44 65 73 74 72 6f 79 28 0d  orCode Destroy(.
1fe60 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
1fe70 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20  iteVirtualTable 
1fe80 74 61 62 6c 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a  table /* in */..
1fe90 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a              );..
1fea0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
1feb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fef0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
1ff00 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
1ff10 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74      /// This met
1ff20 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e  hod is called in
1ff30 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65   response to the
1ff40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1ff50 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
1ff60 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4f 70  NativeModule.xOp
1ff70 65 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  en" /> method...
1ff80 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
1ff90 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1ffa0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1ffb0 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20  "table">..      
1ffc0 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
1ffd0 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75  ref="SQLiteVirtu
1ffe0 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65  alTable" /> obje
1fff0 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f  ct instance asso
20000 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20  ciated..        
20010 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20 76 69  /// with this vi
20020 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20  rtual table...  
20030 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
20040 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
20050 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 75 72  <param name="cur
20060 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  sor">..        /
20070 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c  // Upon success,
20080 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20   this parameter 
20090 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64  must be modified
200a0 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d   to contain the.
200b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
200c0 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69  e cref="SQLiteVi
200d0 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72  rtualTableCursor
200e0 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
200f0 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d  ance associated.
20100 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74  .        /// wit
20110 68 20 74 68 65 20 6e 65 77 6c 79 20 6f 70 65 6e  h the newly open
20120 65 64 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  ed virtual table
20130 20 63 75 72 73 6f 72 2e 0d 0a 20 20 20 20 20 20   cursor...      
20140 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
20150 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
20160 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
20170 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51  // A standard SQ
20180 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65  Lite return code
20190 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
201a0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
201b0 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f     SQLiteErrorCo
201c0 64 65 20 4f 70 65 6e 28 0d 0a 20 20 20 20 20 20  de Open(..      
201d0 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74        SQLiteVirt
201e0 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c 20  ualTable table, 
201f0 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20            /* in 
20200 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
20210 72 65 66 20 53 51 4c 69 74 65 56 69 72 74 75 61  ref SQLiteVirtua
20220 6c 54 61 62 6c 65 43 75 72 73 6f 72 20 63 75 72  lTableCursor cur
20230 73 6f 72 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20  sor /* out */.. 
20240 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d             );...
20250 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
20260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
202a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
202b0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
202c0 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68     /// This meth
202d0 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20  od is called in 
202e0 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d  response to the.
202f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
20300 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
20310 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6c 6f  ativeModule.xClo
20320 73 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  se" /> method...
20330 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
20340 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
20350 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
20360 22 63 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20  "cursor">..     
20370 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
20380 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74  cref="SQLiteVirt
20390 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 22 20  ualTableCursor" 
203a0 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
203b0 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ce..        /// 
203c0 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
203d0 74 68 65 20 70 72 65 76 69 6f 75 73 6c 79 20 6f  the previously o
203e0 70 65 6e 65 64 20 76 69 72 74 75 61 6c 20 74 61  pened virtual ta
203f0 62 6c 65 20 63 75 72 73 6f 72 20 74 6f 20 62 65  ble cursor to be
20400 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 75 73  ..        /// us
20410 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
20420 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
20430 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
20440 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20  ..        /// A 
20450 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20  standard SQLite 
20460 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20  return code...  
20470 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
20480 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51  rns>..        SQ
20490 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 43 6c  LiteErrorCode Cl
204a0 6f 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ose(..          
204b0 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54    SQLiteVirtualT
204c0 61 62 6c 65 43 75 72 73 6f 72 20 63 75 72 73 6f  ableCursor curso
204d0 72 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20  r /* in */..    
204e0 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20          );....  
204f0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
20500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
20540 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
20550 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
20560 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20  /// This method 
20570 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73  is called in res
20580 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20  ponse to the..  
20590 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
205a0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
205b0 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72  veModule.xFilter
205c0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
205d0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
205e0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
205f0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63  / <param name="c
20600 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20  ursor">..       
20610 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
20620 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61  ef="SQLiteVirtua
20630 6c 54 61 62 6c 65 43 75 72 73 6f 72 22 20 2f 3e  lTableCursor" />
20640 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
20650 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 73  ..        /// as
20660 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
20670 65 20 70 72 65 76 69 6f 75 73 6c 79 20 6f 70 65  e previously ope
20680 6e 65 64 20 76 69 72 74 75 61 6c 20 74 61 62 6c  ned virtual tabl
20690 65 20 63 75 72 73 6f 72 20 74 6f 20 62 65 0d 0a  e cursor to be..
206a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 75 73 65 64          /// used
206b0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
206c0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
206d0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
206e0 3d 22 69 6e 64 65 78 4e 75 6d 62 65 72 22 3e 0d  ="indexNumber">.
206f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 75 6d  .        /// Num
20700 62 65 72 20 75 73 65 64 20 74 6f 20 68 65 6c 70  ber used to help
20710 20 69 64 65 6e 74 69 66 79 20 74 68 65 20 73 65   identify the se
20720 6c 65 63 74 65 64 20 69 6e 64 65 78 2e 0d 0a 20  lected index... 
20730 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
20740 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
20750 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e   <param name="in
20760 64 65 78 53 74 72 69 6e 67 22 3e 0d 0a 20 20 20  dexString">..   
20770 20 20 20 20 20 2f 2f 2f 20 53 74 72 69 6e 67 20       /// String 
20780 75 73 65 64 20 74 6f 20 68 65 6c 70 20 69 64 65  used to help ide
20790 6e 74 69 66 79 20 74 68 65 20 73 65 6c 65 63 74  ntify the select
207a0 65 64 20 69 6e 64 65 78 2e 0d 0a 20 20 20 20 20  ed index...     
207b0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
207c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
207d0 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 73  ram name="values
207e0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
207f0 54 68 65 20 76 61 6c 75 65 73 20 63 6f 72 72 65  The values corre
20800 73 70 6f 6e 64 69 6e 67 20 74 6f 20 65 61 63 68  sponding to each
20810 20 63 6f 6c 75 6d 6e 20 69 6e 20 74 68 65 20 73   column in the s
20820 65 6c 65 63 74 65 64 20 69 6e 64 65 78 2e 0d 0a  elected index...
20830 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
20840 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
20850 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
20860 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64       /// A stand
20870 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72  ard SQLite retur
20880 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  n code...       
20890 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
208a0 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45  .        SQLiteE
208b0 72 72 6f 72 43 6f 64 65 20 46 69 6c 74 65 72 28  rrorCode Filter(
208c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
208d0 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
208e0 43 75 72 73 6f 72 20 63 75 72 73 6f 72 2c 20 2f  Cursor cursor, /
208f0 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
20900 20 20 20 20 20 69 6e 74 20 69 6e 64 65 78 4e 75       int indexNu
20910 6d 62 65 72 2c 20 20 20 20 20 20 20 20 20 20 20  mber,           
20920 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a        /* in */..
20930 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
20940 6e 67 20 69 6e 64 65 78 53 74 72 69 6e 67 2c 20  ng indexString, 
20950 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20               /* 
20960 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
20970 20 20 20 53 51 4c 69 74 65 56 61 6c 75 65 5b 5d     SQLiteValue[]
20980 20 76 61 6c 75 65 73 20 20 20 20 20 20 20 20 20   values         
20990 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20      /* in */..  
209a0 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a            );....
209b0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
209c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
209d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
209e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
209f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
20a00 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
20a10 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
20a20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
20a30 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72  d is called in r
20a40 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a  esponse to the..
20a50 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
20a60 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
20a70 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4e 65 78 74  tiveModule.xNext
20a80 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
20a90 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
20aa0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
20ab0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63  / <param name="c
20ac0 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20  ursor">..       
20ad0 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
20ae0 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61  ef="SQLiteVirtua
20af0 6c 54 61 62 6c 65 43 75 72 73 6f 72 22 20 2f 3e  lTableCursor" />
20b00 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
20b10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 73  ..        /// as
20b20 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
20b30 65 20 70 72 65 76 69 6f 75 73 6c 79 20 6f 70 65  e previously ope
20b40 6e 65 64 20 76 69 72 74 75 61 6c 20 74 61 62 6c  ned virtual tabl
20b50 65 20 63 75 72 73 6f 72 20 74 6f 20 62 65 0d 0a  e cursor to be..
20b60 20 20 20 20 20 20 20 20 2f 2f 2f 20 75 73 65 64          /// used
20b70 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
20b80 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
20b90 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
20ba0 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74          /// A st
20bb0 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65  andard SQLite re
20bc0 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20  turn code...    
20bd0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
20be0 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69  s>..        SQLi
20bf0 74 65 45 72 72 6f 72 43 6f 64 65 20 4e 65 78 74  teErrorCode Next
20c00 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
20c10 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
20c20 65 43 75 72 73 6f 72 20 63 75 72 73 6f 72 20 2f  eCursor cursor /
20c30 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
20c40 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20       );....     
20c50 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
20c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
20ca0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
20cb0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
20cc0 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20   This method is 
20cd0 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e  called in respon
20ce0 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20  se to the..     
20cf0 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
20d00 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
20d10 6f 64 75 6c 65 2e 78 45 6f 66 22 20 2f 3e 20 6d  odule.xEof" /> m
20d20 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
20d30 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
20d40 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
20d50 61 6d 20 6e 61 6d 65 3d 22 63 75 72 73 6f 72 22  am name="cursor"
20d60 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
20d70 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
20d80 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
20d90 43 75 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65 63  Cursor" /> objec
20da0 74 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20  t instance..    
20db0 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74      /// associat
20dc0 65 64 20 77 69 74 68 20 74 68 65 20 70 72 65 76  ed with the prev
20dd0 69 6f 75 73 6c 79 20 6f 70 65 6e 65 64 20 76 69  iously opened vi
20de0 72 74 75 61 6c 20 74 61 62 6c 65 20 63 75 72 73  rtual table curs
20df0 6f 72 20 74 6f 20 62 65 0d 0a 20 20 20 20 20 20  or to be..      
20e00 20 20 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20 20 20    /// used...   
20e10 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
20e20 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
20e30 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
20e40 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
20e50 66 20 6e 6f 20 6d 6f 72 65 20 72 6f 77 73 20 61  f no more rows a
20e60 72 65 20 61 76 61 69 6c 61 62 6c 65 3b 20 7a 65  re available; ze
20e70 72 6f 20 6f 74 68 65 72 77 69 73 65 2e 0d 0a 20  ro otherwise... 
20e80 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
20e90 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 62  urns>..        b
20ea0 6f 6f 6c 20 45 6f 66 28 0d 0a 20 20 20 20 20 20  ool Eof(..      
20eb0 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74        SQLiteVirt
20ec0 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 20 63  ualTableCursor c
20ed0 75 72 73 6f 72 20 2f 2a 20 69 6e 20 2a 2f 0d 0a  ursor /* in */..
20ee0 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a              );..
20ef0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
20f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20f40 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
20f50 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
20f60 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74      /// This met
20f70 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e  hod is called in
20f80 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65   response to the
20f90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
20fa0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
20fb0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  NativeModule.xCo
20fc0 6c 75 6d 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  lumn" /> method.
20fd0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
20fe0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
20ff0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
21000 65 3d 22 63 75 72 73 6f 72 22 3e 0d 0a 20 20 20  e="cursor">..   
21010 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
21020 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69  e cref="SQLiteVi
21030 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72  rtualTableCursor
21040 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
21050 61 6e 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ance..        //
21060 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  / associated wit
21070 68 20 74 68 65 20 70 72 65 76 69 6f 75 73 6c 79  h the previously
21080 20 6f 70 65 6e 65 64 20 76 69 72 74 75 61 6c 20   opened virtual 
21090 74 61 62 6c 65 20 63 75 72 73 6f 72 20 74 6f 20  table cursor to 
210a0 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  be..        /// 
210b0 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  used...        /
210c0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
210d0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
210e0 6e 61 6d 65 3d 22 63 6f 6e 74 65 78 74 22 3e 0d  name="context">.
210f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
21100 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
21110 74 65 43 6f 6e 74 65 78 74 22 20 2f 3e 20 6f 62  teContext" /> ob
21120 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 74 6f  ject instance to
21130 20 62 65 20 75 73 65 64 20 66 6f 72 0d 0a 20 20   be used for..  
21140 20 20 20 20 20 20 2f 2f 2f 20 72 65 74 75 72 6e        /// return
21150 69 6e 67 20 74 68 65 20 73 70 65 63 69 66 69 65  ing the specifie
21160 64 20 63 6f 6c 75 6d 6e 20 76 61 6c 75 65 20 74  d column value t
21170 6f 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  o the SQLite cor
21180 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20  e library...    
21190 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
211a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
211b0 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78  aram name="index
211c0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
211d0 54 68 65 20 7a 65 72 6f 2d 62 61 73 65 64 20 69  The zero-based i
211e0 6e 64 65 78 20 63 6f 72 72 65 73 70 6f 6e 64 69  ndex correspondi
211f0 6e 67 20 74 6f 20 74 68 65 20 63 6f 6c 75 6d 6e  ng to the column
21200 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 0d   containing the.
21210 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c  .        /// val
21220 75 65 20 74 6f 20 62 65 20 72 65 74 75 72 6e 65  ue to be returne
21230 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
21240 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
21250 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
21260 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73  .        /// A s
21270 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72  tandard SQLite r
21280 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20  eturn code...   
21290 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
212a0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c  ns>..        SQL
212b0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 43 6f 6c  iteErrorCode Col
212c0 75 6d 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  umn(..          
212d0 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54    SQLiteVirtualT
212e0 61 62 6c 65 43 75 72 73 6f 72 20 63 75 72 73 6f  ableCursor curso
212f0 72 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20  r, /* in */..   
21300 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43           SQLiteC
21310 6f 6e 74 65 78 74 20 63 6f 6e 74 65 78 74 2c 20  ontext context, 
21320 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20            /* in 
21330 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
21340 69 6e 74 20 69 6e 64 65 78 20 20 20 20 20 20 20  int index       
21350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21360 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
21370 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20         );....   
21380 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
21390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
213a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
213b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
213c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
213d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
213e0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
213f0 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69  // This method i
21400 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70  s called in resp
21410 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20  onse to the..   
21420 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
21430 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
21440 65 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 22 20  eModule.xRowId" 
21450 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
21460 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
21470 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
21480 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 75 72  <param name="cur
21490 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  sor">..        /
214a0 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
214b0 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  ="SQLiteVirtualT
214c0 61 62 6c 65 43 75 72 73 6f 72 22 20 2f 3e 20 6f  ableCursor" /> o
214d0 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 0d 0a  bject instance..
214e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f          /// asso
214f0 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20  ciated with the 
21500 70 72 65 76 69 6f 75 73 6c 79 20 6f 70 65 6e 65  previously opene
21510 64 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  d virtual table 
21520 63 75 72 73 6f 72 20 74 6f 20 62 65 0d 0a 20 20  cursor to be..  
21530 20 20 20 20 20 20 2f 2f 2f 20 75 73 65 64 2e 0d        /// used..
21540 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
21550 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
21560 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
21570 72 6f 77 49 64 22 3e 0d 0a 20 20 20 20 20 20 20  rowId">..       
21580 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73   /// Upon succes
21590 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65  s, this paramete
215a0 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69  r must be modifi
215b0 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68  ed to contain th
215c0 65 20 75 6e 69 71 75 65 0d 0a 20 20 20 20 20 20  e unique..      
215d0 20 20 2f 2f 2f 20 69 6e 74 65 67 65 72 20 72 6f    /// integer ro
215e0 77 20 69 64 65 6e 74 69 66 69 65 72 20 66 6f 72  w identifier for
215f0 20 74 68 65 20 63 75 72 72 65 6e 74 20 72 6f 77   the current row
21600 20 66 6f 72 20 74 68 65 20 73 70 65 63 69 66 69   for the specifi
21610 65 64 20 63 75 72 73 6f 72 2e 0d 0a 20 20 20 20  ed cursor...    
21620 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
21630 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
21640 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
21650 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20   /// A standard 
21660 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f  SQLite return co
21670 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de...        ///
21680 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
21690 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72       SQLiteError
216a0 43 6f 64 65 20 52 6f 77 49 64 28 0d 0a 20 20 20  Code RowId(..   
216b0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56           SQLiteV
216c0 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f  irtualTableCurso
216d0 72 20 63 75 72 73 6f 72 2c 20 2f 2a 20 69 6e 20  r cursor, /* in 
216e0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
216f0 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 20 20  ref long rowId  
21700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21710 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20   /* out */..    
21720 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20          );....  
21730 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
21740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
21780 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
21790 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
217a0 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20  /// This method 
217b0 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73  is called in res
217c0 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20  ponse to the..  
217d0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
217e0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
217f0 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65  veModule.xUpdate
21800 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
21810 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
21820 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
21830 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74  / <param name="t
21840 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  able">..        
21850 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
21860 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c  f="SQLiteVirtual
21870 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74  Table" /> object
21880 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69   instance associ
21890 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ated..        //
218a0 2f 20 77 69 74 68 20 74 68 69 73 20 76 69 72 74  / with this virt
218b0 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
218c0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
218d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
218e0 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65  aram name="value
218f0 73 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  s">..        ///
21900 20 54 68 65 20 61 72 72 61 79 20 6f 66 20 3c 73   The array of <s
21910 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56  ee cref="SQLiteV
21920 61 6c 75 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20  alue" /> object 
21930 69 6e 73 74 61 6e 63 65 73 20 63 6f 6e 74 61 69  instances contai
21940 6e 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ning..        //
21950 2f 20 74 68 65 20 6e 65 77 20 6f 72 20 6d 6f 64  / the new or mod
21960 69 66 69 65 64 20 63 6f 6c 75 6d 6e 20 76 61 6c  ified column val
21970 75 65 73 2c 20 69 66 20 61 6e 79 2e 0d 0a 20 20  ues, if any...  
21980 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
21990 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
219a0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 72 6f 77  <param name="row
219b0 49 64 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  Id">..        //
219c0 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20  / Upon success, 
219d0 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d  this parameter m
219e0 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64 20  ust be modified 
219f0 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65 20 75  to contain the u
21a00 6e 69 71 75 65 0d 0a 20 20 20 20 20 20 20 20 2f  nique..        /
21a10 2f 2f 20 69 6e 74 65 67 65 72 20 72 6f 77 20 69  // integer row i
21a20 64 65 6e 74 69 66 69 65 72 20 66 6f 72 20 74 68  dentifier for th
21a30 65 20 72 6f 77 20 74 68 61 74 20 77 61 73 20 69  e row that was i
21a40 6e 73 65 72 74 65 64 2c 20 69 66 20 61 6e 79 2e  nserted, if any.
21a50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
21a60 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
21a70 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
21a80 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61         /// A sta
21a90 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74  ndard SQLite ret
21aa0 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  urn code...     
21ab0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
21ac0 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  >..        SQLit
21ad0 65 45 72 72 6f 72 43 6f 64 65 20 55 70 64 61 74  eErrorCode Updat
21ae0 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
21af0 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
21b00 6c 65 20 74 61 62 6c 65 2c 20 2f 2a 20 69 6e 20  le table, /* in 
21b10 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
21b20 53 51 4c 69 74 65 56 61 6c 75 65 5b 5d 20 76 61  SQLiteValue[] va
21b30 6c 75 65 73 2c 20 20 20 20 20 2f 2a 20 69 6e 20  lues,     /* in 
21b40 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
21b50 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 20 20  ref long rowId  
21b60 20 20 20 20 20 20 20 20 20 20 2f 2a 20 6f 75 74            /* out
21b70 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
21b80 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   );....        /
21b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21bd0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
21be0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
21bf0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
21c00 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c  s method is call
21c10 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74  ed in response t
21c20 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  o the..        /
21c30 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  // <see cref="IS
21c40 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
21c50 65 2e 78 42 65 67 69 6e 22 20 2f 3e 20 6d 65 74  e.xBegin" /> met
21c60 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
21c70 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
21c80 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
21c90 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a   name="table">..
21ca0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
21cb0 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
21cc0 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f  eVirtualTable" /
21cd0 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
21ce0 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20  e associated..  
21cf0 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74        /// with t
21d00 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c  his virtual tabl
21d10 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
21d20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
21d30 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
21d40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73  .        /// A s
21d50 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72  tandard SQLite r
21d60 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20  eturn code...   
21d70 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
21d80 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c  ns>..        SQL
21d90 69 74 65 45 72 72 6f 72 43 6f 64 65 20 42 65 67  iteErrorCode Beg
21da0 69 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  in(..           
21db0 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
21dc0 62 6c 65 20 74 61 62 6c 65 20 2f 2a 20 69 6e 20  ble table /* in 
21dd0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
21de0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  );....        //
21df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21e30 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
21e40 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
21e50 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
21e60 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65   method is calle
21e70 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f  d in response to
21e80 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
21e90 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  / <see cref="ISQ
21ea0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
21eb0 2e 78 53 79 6e 63 22 20 2f 3e 20 6d 65 74 68 6f  .xSync" /> metho
21ec0 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
21ed0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
21ee0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
21ef0 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20  ame="table">..  
21f00 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
21f10 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56  ee cref="SQLiteV
21f20 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20  irtualTable" /> 
21f30 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
21f40 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20  associated..    
21f50 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69      /// with thi
21f60 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e  s virtual table.
21f70 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
21f80 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
21f90 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
21fa0 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61         /// A sta
21fb0 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74  ndard SQLite ret
21fc0 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  urn code...     
21fd0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
21fe0 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  >..        SQLit
21ff0 65 45 72 72 6f 72 43 6f 64 65 20 53 79 6e 63 28  eErrorCode Sync(
22000 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
22010 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
22020 20 74 61 62 6c 65 20 2f 2a 20 69 6e 20 2a 2f 0d   table /* in */.
22030 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d  .            );.
22040 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
22050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22090 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
220a0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
220b0 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65       /// This me
220c0 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69  thod is called i
220d0 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68  n response to th
220e0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
220f0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
22100 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
22110 6f 6d 6d 69 74 22 20 2f 3e 20 6d 65 74 68 6f 64  ommit" /> method
22120 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
22130 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
22140 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
22150 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20  me="table">..   
22160 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
22170 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69  e cref="SQLiteVi
22180 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f  rtualTable" /> o
22190 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61  bject instance a
221a0 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20  ssociated..     
221b0 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73     /// with this
221c0 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d   virtual table..
221d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
221e0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
221f0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
22200 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e        /// A stan
22210 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75  dard SQLite retu
22220 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  rn code...      
22230 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
22240 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65  ..        SQLite
22250 45 72 72 6f 72 43 6f 64 65 20 43 6f 6d 6d 69 74  ErrorCode Commit
22260 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
22270 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
22280 65 20 74 61 62 6c 65 20 2f 2a 20 69 6e 20 2a 2f  e table /* in */
22290 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b  ..            );
222a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
222b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
222c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
222d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
222e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
222f0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
22300 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
22310 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d        /// This m
22320 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20  ethod is called 
22330 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74  in response to t
22340 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
22350 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
22360 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
22370 52 6f 6c 6c 62 61 63 6b 22 20 2f 3e 20 6d 65 74  Rollback" /> met
22380 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
22390 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
223a0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
223b0 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a   name="table">..
223c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
223d0 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
223e0 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f  eVirtualTable" /
223f0 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
22400 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20  e associated..  
22410 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74        /// with t
22420 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c  his virtual tabl
22430 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
22440 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
22450 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
22460 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73  .        /// A s
22470 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72  tandard SQLite r
22480 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20  eturn code...   
22490 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
224a0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c  ns>..        SQL
224b0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 52 6f 6c  iteErrorCode Rol
224c0 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20  lback(..        
224d0 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61      SQLiteVirtua
224e0 6c 54 61 62 6c 65 20 74 61 62 6c 65 20 2f 2a 20  lTable table /* 
224f0 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
22500 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20     );....       
22510 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
22520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22550 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
22560 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
22570 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
22580 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61  his method is ca
22590 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65  lled in response
225a0 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20   to the..       
225b0 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
225c0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
225d0 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f  ule.xFindFunctio
225e0 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  n" /> method... 
225f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
22600 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
22610 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
22620 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20  table">..       
22630 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
22640 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61  ef="SQLiteVirtua
22650 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63  lTable" /> objec
22660 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63  t instance assoc
22670 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f  iated..        /
22680 2f 2f 20 77 69 74 68 20 74 68 69 73 20 76 69 72  // with this vir
22690 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20  tual table...   
226a0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
226b0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
226c0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 75  param name="argu
226d0 6d 65 6e 74 43 6f 75 6e 74 22 3e 0d 0a 20 20 20  mentCount">..   
226e0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d       /// The num
226f0 62 65 72 20 6f 66 20 61 72 67 75 6d 65 6e 74 73  ber of arguments
22700 20 74 6f 20 74 68 65 20 66 75 6e 63 74 69 6f 6e   to the function
22710 20 62 65 69 6e 67 20 73 6f 75 67 68 74 2e 0d 0a   being sought...
22720 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
22730 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
22740 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e  / <param name="n
22750 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ame">..        /
22760 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74  // The name of t
22770 68 65 20 66 75 6e 63 74 69 6f 6e 20 62 65 69 6e  he function bein
22780 67 20 73 6f 75 67 68 74 2e 0d 0a 20 20 20 20 20  g sought...     
22790 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
227a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
227b0 72 61 6d 20 6e 61 6d 65 3d 22 66 75 6e 63 74 69  ram name="functi
227c0 6f 6e 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on">..        //
227d0 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20  / Upon success, 
227e0 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d  this parameter m
227f0 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64 20  ust be modified 
22800 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a  to contain the..
22810 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
22820 20 63 72 65 66 3d 22 53 51 4c 69 74 65 46 75 6e   cref="SQLiteFun
22830 63 74 69 6f 6e 22 20 2f 3e 20 6f 62 6a 65 63 74  ction" /> object
22840 20 69 6e 73 74 61 6e 63 65 20 72 65 73 70 6f 6e   instance respon
22850 73 69 62 6c 65 20 66 6f 72 0d 0a 20 20 20 20 20  sible for..     
22860 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74     /// implement
22870 69 6e 67 20 74 68 65 20 73 70 65 63 69 66 69 65  ing the specifie
22880 64 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20  d function...   
22890 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
228a0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
228b0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 6c 69  param name="pCli
228c0 65 6e 74 44 61 74 61 22 3e 0d 0a 20 20 20 20 20  entData">..     
228d0 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63     /// Upon succ
228e0 65 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65  ess, this parame
228f0 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69  ter must be modi
22900 66 69 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20  fied to contain 
22910 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
22920 20 6e 61 74 69 76 65 20 75 73 65 72 2d 64 61 74   native user-dat
22930 61 20 70 6f 69 6e 74 65 72 20 61 73 73 6f 63 69  a pointer associ
22940 61 74 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20  ated with..     
22950 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 72 65 66     /// <paramref
22960 20 6e 61 6d 65 3d 22 66 75 6e 63 74 69 6f 6e 22   name="function"
22970 20 2f 3e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f   />...        //
22980 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
22990 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
229a0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
229b0 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 73  on-zero if the s
229c0 70 65 63 69 66 69 65 64 20 66 75 6e 63 74 69 6f  pecified functio
229d0 6e 20 77 61 73 20 66 6f 75 6e 64 3b 20 7a 65 72  n was found; zer
229e0 6f 20 6f 74 68 65 72 77 69 73 65 2e 0d 0a 20 20  o otherwise...  
229f0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
22a00 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 62 6f  rns>..        bo
22a10 6f 6c 20 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28  ol FindFunction(
22a20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
22a30 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
22a40 20 74 61 62 6c 65 2c 20 20 20 20 2f 2a 20 69 6e   table,    /* in
22a50 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
22a60 20 69 6e 74 20 61 72 67 75 6d 65 6e 74 43 6f 75   int argumentCou
22a70 6e 74 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2a  nt,           /*
22a80 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
22a90 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 2c      string name,
22aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22ab0 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
22ac0 20 20 20 20 20 20 20 72 65 66 20 53 51 4c 69 74         ref SQLit
22ad0 65 46 75 6e 63 74 69 6f 6e 20 66 75 6e 63 74 69  eFunction functi
22ae0 6f 6e 2c 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20  on, /* out */.. 
22af0 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 49             ref I
22b00 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74  ntPtr pClientDat
22b10 61 20 20 20 20 20 20 20 2f 2a 20 6f 75 74 20 2a  a       /* out *
22b20 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  /..            )
22b30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
22b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22b80 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
22b90 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
22ba0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
22bb0 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64  method is called
22bc0 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20   in response to 
22bd0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
22be0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
22bf0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
22c00 78 52 65 6e 61 6d 65 22 20 2f 3e 20 6d 65 74 68  xRename" /> meth
22c10 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  od...        ///
22c20 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
22c30 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
22c40 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20  name="table">.. 
22c50 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
22c60 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
22c70 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e  VirtualTable" />
22c80 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
22c90 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20   associated..   
22ca0 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68       /// with th
22cb0 69 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  is virtual table
22cc0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
22cd0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
22ce0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
22cf0 3d 22 6e 65 77 4e 61 6d 65 22 3e 0d 0a 20 20 20  ="newName">..   
22d00 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65 77       /// The new
22d10 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 76 69   name for the vi
22d20 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20  rtual table...  
22d30 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
22d40 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
22d50 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
22d60 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72     /// A standar
22d70 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20  d SQLite return 
22d80 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  code...        /
22d90 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
22da0 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72         SQLiteErr
22db0 6f 72 43 6f 64 65 20 52 65 6e 61 6d 65 28 0d 0a  orCode Rename(..
22dc0 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
22dd0 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74  teVirtualTable t
22de0 61 62 6c 65 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a  able, /* in */..
22df0 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
22e00 6e 67 20 6e 65 77 4e 61 6d 65 20 20 20 20 20 20  ng newName      
22e10 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a        /* in */..
22e20 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a              );..
22e30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
22e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22e80 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
22e90 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
22ea0 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74      /// This met
22eb0 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e  hod is called in
22ec0 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65   response to the
22ed0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
22ee0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
22ef0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53 61  NativeModule.xSa
22f00 76 65 70 6f 69 6e 74 22 20 2f 3e 20 6d 65 74 68  vepoint" /> meth
22f10 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  od...        ///
22f20 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
22f30 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
22f40 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20  name="table">.. 
22f50 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
22f60 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
22f70 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e  VirtualTable" />
22f80 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
22f90 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20   associated..   
22fa0 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68       /// with th
22fb0 69 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  is virtual table
22fc0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
22fd0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
22fe0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
22ff0 3d 22 73 61 76 65 70 6f 69 6e 74 22 3e 0d 0a 20  ="savepoint">.. 
23000 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
23010 69 73 20 61 6e 20 69 6e 74 65 67 65 72 20 69 64  is an integer id
23020 65 6e 74 69 66 69 65 72 20 75 6e 64 65 72 20 77  entifier under w
23030 68 69 63 68 20 74 68 65 20 74 68 65 20 63 75 72  hich the the cur
23040 72 65 6e 74 20 73 74 61 74 65 20 6f 66 0d 0a 20  rent state of.. 
23050 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 76         /// the v
23060 69 72 74 75 61 6c 20 74 61 62 6c 65 20 73 68 6f  irtual table sho
23070 75 6c 64 20 62 65 20 73 61 76 65 64 2e 0d 0a 20  uld be saved... 
23080 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
23090 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
230a0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
230b0 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61      /// A standa
230c0 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e  rd SQLite return
230d0 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
230e0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
230f0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72          SQLiteEr
23100 72 6f 72 43 6f 64 65 20 53 61 76 65 70 6f 69 6e  rorCode Savepoin
23110 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
23120 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
23130 6c 65 20 74 61 62 6c 65 2c 20 2f 2a 20 69 6e 20  le table, /* in 
23140 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
23150 69 6e 74 20 73 61 76 65 70 6f 69 6e 74 20 20 20  int savepoint   
23160 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20            /* in 
23170 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
23180 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  );....        //
23190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
231a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
231b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
231c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
231d0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
231e0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
231f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
23200 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65   method is calle
23210 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f  d in response to
23220 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
23230 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  / <see cref="ISQ
23240 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
23250 2e 78 52 65 6c 65 61 73 65 22 20 2f 3e 20 6d 65  .xRelease" /> me
23260 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  thod...        /
23270 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
23280 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
23290 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d  m name="table">.
232a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
232b0 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
232c0 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20  teVirtualTable" 
232d0 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
232e0 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20  ce associated.. 
232f0 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20         /// with 
23300 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62  this virtual tab
23310 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le...        ///
23320 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
23330 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
23340 6d 65 3d 22 73 61 76 65 70 6f 69 6e 74 22 3e 0d  me="savepoint">.
23350 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
23360 73 20 69 73 20 61 6e 20 69 6e 74 65 67 65 72 20  s is an integer 
23370 75 73 65 64 20 74 6f 20 69 6e 64 69 63 61 74 65  used to indicate
23380 20 74 68 61 74 20 61 6e 79 20 73 61 76 65 64 20   that any saved 
23390 73 74 61 74 65 73 20 77 69 74 68 20 61 6e 0d 0a  states with an..
233a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 64 65 6e          /// iden
233b0 74 69 66 69 65 72 20 67 72 65 61 74 65 72 20 74  tifier greater t
233c0 68 61 6e 20 6f 72 20 65 71 75 61 6c 20 74 6f 20  han or equal to 
233d0 74 68 69 73 20 73 68 6f 75 6c 64 20 62 65 20 64  this should be d
233e0 65 6c 65 74 65 64 20 62 79 20 74 68 65 0d 0a 20  eleted by the.. 
233f0 20 20 20 20 20 20 20 2f 2f 2f 20 76 69 72 74 75         /// virtu
23400 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20  al table...     
23410 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
23420 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
23430 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
23440 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53  /// A standard S
23450 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64  QLite return cod
23460 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
23470 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
23480 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43      SQLiteErrorC
23490 6f 64 65 20 52 65 6c 65 61 73 65 28 0d 0a 20 20  ode Release(..  
234a0 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
234b0 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62  VirtualTable tab
234c0 6c 65 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20  le, /* in */..  
234d0 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 73 61            int sa
234e0 76 65 70 6f 69 6e 74 20 20 20 20 20 20 20 20 20  vepoint         
234f0 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20      /* in */..  
23500 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a            );....
23510 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
23560 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
23570 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
23580 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
23590 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72  d is called in r
235a0 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a  esponse to the..
235b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
235c0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
235d0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c  tiveModule.xRoll
235e0 62 61 63 6b 54 6f 22 20 2f 3e 20 6d 65 74 68 6f  backTo" /> metho
235f0 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
23600 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
23610 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
23620 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20  ame="table">..  
23630 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
23640 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56  ee cref="SQLiteV
23650 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20  irtualTable" /> 
23660 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
23670 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20  associated..    
23680 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69      /// with thi
23690 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e  s virtual table.
236a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
236b0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
236c0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
236d0 22 73 61 76 65 70 6f 69 6e 74 22 3e 0d 0a 20 20  "savepoint">..  
236e0 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69        /// This i
236f0 73 20 61 6e 20 69 6e 74 65 67 65 72 20 69 64 65  s an integer ide
23700 6e 74 69 66 69 65 72 20 75 73 65 64 20 74 6f 20  ntifier used to 
23710 73 70 65 63 69 66 79 20 61 20 73 70 65 63 69 66  specify a specif
23720 69 63 20 73 61 76 65 64 0d 0a 20 20 20 20 20 20  ic saved..      
23730 20 20 2f 2f 2f 20 73 74 61 74 65 20 66 6f 72 20    /// state for 
23740 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c  the virtual tabl
23750 65 20 66 6f 72 20 69 74 20 74 6f 20 72 65 73 74  e for it to rest
23760 6f 72 65 20 69 74 73 65 6c 66 20 62 61 63 6b 20  ore itself back 
23770 74 6f 2c 20 77 68 69 63 68 0d 0a 20 20 20 20 20  to, which..     
23780 20 20 20 2f 2f 2f 20 73 68 6f 75 6c 64 20 61 6c     /// should al
23790 73 6f 20 68 61 76 65 20 74 68 65 20 65 66 66 65  so have the effe
237a0 63 74 20 6f 66 20 64 65 6c 65 74 69 6e 67 20 61  ct of deleting a
237b0 6c 6c 20 73 61 76 65 64 20 73 74 61 74 65 73 20  ll saved states 
237c0 77 69 74 68 20 61 6e 0d 0a 20 20 20 20 20 20 20  with an..       
237d0 20 2f 2f 2f 20 69 6e 74 65 67 65 72 20 69 64 65   /// integer ide
237e0 6e 74 69 66 69 65 72 20 67 72 65 61 74 65 72 20  ntifier greater 
237f0 74 68 61 6e 20 74 68 69 73 20 6f 6e 65 2e 0d 0a  than this one...
23800 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
23810 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
23820 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
23830 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64       /// A stand
23840 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72  ard SQLite retur
23850 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  n code...       
23860 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
23870 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45  .        SQLiteE
23880 72 72 6f 72 43 6f 64 65 20 52 6f 6c 6c 62 61 63  rrorCode Rollbac
23890 6b 54 6f 28 0d 0a 20 20 20 20 20 20 20 20 20 20  kTo(..          
238a0 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54    SQLiteVirtualT
238b0 61 62 6c 65 20 74 61 62 6c 65 2c 20 2f 2a 20 69  able table, /* i
238c0 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
238d0 20 20 69 6e 74 20 73 61 76 65 70 6f 69 6e 74 20    int savepoint 
238e0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69              /* i
238f0 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
23900 20 20 29 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 20    );..    }..   
23910 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
23920 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
23930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
23970 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51  ..    #region SQ
23980 4c 69 74 65 4d 65 6d 6f 72 79 20 53 74 61 74 69  LiteMemory Stati
23990 63 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f  c Class..    ///
239a0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
239b0 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20 63  /// This class c
239c0 6f 6e 74 61 69 6e 73 20 73 74 61 74 69 63 20 6d  ontains static m
239d0 65 74 68 6f 64 73 20 74 68 61 74 20 61 72 65 20  ethods that are 
239e0 75 73 65 64 20 74 6f 20 61 6c 6c 6f 63 61 74 65  used to allocate
239f0 2c 0d 0a 20 20 20 20 2f 2f 2f 20 6d 61 6e 69 70  ,..    /// manip
23a00 75 6c 61 74 65 2c 20 61 6e 64 20 66 72 65 65 20  ulate, and free 
23a10 6e 61 74 69 76 65 20 6d 65 6d 6f 72 79 20 70 72  native memory pr
23a20 6f 76 69 64 65 64 20 62 79 20 74 68 65 20 53 51  ovided by the SQ
23a30 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
23a40 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  y...    /// </su
23a50 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65  mmary>..    inte
23a60 72 6e 61 6c 20 73 74 61 74 69 63 20 63 6c 61 73  rnal static clas
23a70 73 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 0d 0a  s SQLiteMemory..
23a80 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23      {..        #
23a90 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44  region Private D
23aa0 61 74 61 0d 0a 23 69 66 20 54 52 41 43 4b 5f 4d  ata..#if TRACK_M
23ab0 45 4d 4f 52 59 5f 42 59 54 45 53 0d 0a 20 20 20  EMORY_BYTES..   
23ac0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
23ad0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
23ae0 54 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74  This object inst
23af0 61 6e 63 65 20 69 73 20 75 73 65 64 20 74 6f 20  ance is used to 
23b00 73 79 6e 63 68 72 6f 6e 69 7a 65 20 61 63 63 65  synchronize acce
23b10 73 73 20 74 6f 20 74 68 65 20 6f 74 68 65 72 0d  ss to the other.
23b20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 61  .        /// sta
23b30 74 69 63 20 66 69 65 6c 64 73 20 6f 66 20 74 68  tic fields of th
23b40 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20  is class...     
23b50 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
23b60 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
23b70 74 65 20 73 74 61 74 69 63 20 6f 62 6a 65 63 74  te static object
23b80 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20   syncRoot = new 
23b90 6f 62 6a 65 63 74 28 29 3b 0d 0a 0d 0a 20 20 20  object();....   
23ba0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
23bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
23bf0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
23c00 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
23c10 2f 2f 20 54 68 65 20 74 6f 74 61 6c 20 6e 75 6d  // The total num
23c20 62 65 72 20 6f 66 20 6f 75 74 73 74 61 6e 64 69  ber of outstandi
23c30 6e 67 20 6d 65 6d 6f 72 79 20 62 79 74 65 73 20  ng memory bytes 
23c40 61 6c 6c 6f 63 61 74 65 64 20 62 79 20 74 68 69  allocated by thi
23c50 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  s..        /// c
23c60 6c 61 73 73 20 75 73 69 6e 67 20 74 68 65 20 53  lass using the S
23c70 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
23c80 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry...        ///
23c90 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
23ca0 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
23cb0 74 69 63 20 69 6e 74 20 62 79 74 65 73 41 6c 6c  tic int bytesAll
23cc0 6f 63 61 74 65 64 3b 0d 0a 0d 0a 20 20 20 20 20  ocated;....     
23cd0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
23ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
23d20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
23d30 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
23d40 20 54 68 65 20 6d 61 78 69 6d 75 6d 20 6e 75 6d   The maximum num
23d50 62 65 72 20 6f 66 20 6f 75 74 73 74 61 6e 64 69  ber of outstandi
23d60 6e 67 20 6d 65 6d 6f 72 79 20 62 79 74 65 73 20  ng memory bytes 
23d70 65 76 65 72 20 61 6c 6c 6f 63 61 74 65 64 20 62  ever allocated b
23d80 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  y..        /// t
23d90 68 69 73 20 63 6c 61 73 73 20 75 73 69 6e 67 20  his class using 
23da0 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
23db0 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20  library...      
23dc0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
23dd0 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
23de0 65 20 73 74 61 74 69 63 20 69 6e 74 20 6d 61 78  e static int max
23df0 69 6d 75 6d 42 79 74 65 73 41 6c 6c 6f 63 61 74  imumBytesAllocat
23e00 65 64 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ed;..#endif..   
23e10 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
23e20 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
23e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23e70 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
23e80 65 67 69 6f 6e 20 4d 65 6d 6f 72 79 20 41 6c 6c  egion Memory All
23e90 6f 63 61 74 69 6f 6e 20 48 65 6c 70 65 72 20 4d  ocation Helper M
23ea0 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
23eb0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
23ec0 20 20 20 20 20 20 20 2f 2f 2f 20 41 6c 6c 6f 63         /// Alloc
23ed0 61 74 65 73 20 61 74 20 6c 65 61 73 74 20 74 68  ates at least th
23ee0 65 20 73 70 65 63 69 66 69 65 64 20 6e 75 6d 62  e specified numb
23ef0 65 72 20 6f 66 20 62 79 74 65 73 20 6f 66 20 6e  er of bytes of n
23f00 61 74 69 76 65 20 6d 65 6d 6f 72 79 0d 0a 20 20  ative memory..  
23f10 20 20 20 20 20 20 2f 2f 2f 20 76 69 61 20 74 68        /// via th
23f20 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69  e SQLite core li
23f30 62 72 61 72 79 20 73 71 6c 69 74 65 33 5f 6d 61  brary sqlite3_ma
23f40 6c 6c 6f 63 28 29 20 66 75 6e 63 74 69 6f 6e 20  lloc() function 
23f50 61 6e 64 20 72 65 74 75 72 6e 73 0d 0a 20 20 20  and returns..   
23f60 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 72 65 73       /// the res
23f70 75 6c 74 69 6e 67 20 6e 61 74 69 76 65 20 70 6f  ulting native po
23f80 69 6e 74 65 72 2e 0d 0a 20 20 20 20 20 20 20 20  inter...        
23f90 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
23fa0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
23fb0 61 6d 20 6e 61 6d 65 3d 22 73 69 7a 65 22 3e 0d  am name="size">.
23fc0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
23fd0 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73   number of bytes
23fe0 20 74 6f 20 61 6c 6c 6f 63 61 74 65 2e 0d 0a 20   to allocate... 
23ff0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
24000 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
24010 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
24020 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
24030 76 65 20 70 6f 69 6e 74 65 72 20 74 68 61 74 20  ve pointer that 
24040 70 6f 69 6e 74 73 20 74 6f 20 61 20 62 6c 6f 63  points to a bloc
24050 6b 20 6f 66 20 6d 65 6d 6f 72 79 20 6f 66 20 61  k of memory of a
24060 74 20 6c 65 61 73 74 20 74 68 65 0d 0a 20 20 20  t least the..   
24070 20 20 20 20 20 2f 2f 2f 20 73 70 65 63 69 66 69       /// specifi
24080 65 64 20 73 69 7a 65 20 2d 4f 52 2d 20 3c 73 65  ed size -OR- <se
24090 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 2e 5a  e cref="IntPtr.Z
240a0 65 72 6f 22 20 2f 3e 20 69 66 20 74 68 65 20 6d  ero" /> if the m
240b0 65 6d 6f 72 79 20 63 6f 75 6c 64 0d 0a 20 20 20  emory could..   
240c0 20 20 20 20 20 2f 2f 2f 20 6e 6f 74 20 62 65 20       /// not be 
240d0 61 6c 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20  allocated...    
240e0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
240f0 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  s>..        publ
24100 69 63 20 73 74 61 74 69 63 20 49 6e 74 50 74 72  ic static IntPtr
24110 20 41 6c 6c 6f 63 61 74 65 28 69 6e 74 20 73 69   Allocate(int si
24120 7a 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ze)..        {..
24130 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
24140 74 72 20 70 4d 65 6d 6f 72 79 20 3d 20 55 6e 73  tr pMemory = Uns
24150 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
24160 2e 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28  .sqlite3_malloc(
24170 73 69 7a 65 29 3b 0d 0a 0d 0a 23 69 66 20 54 52  size);....#if TR
24180 41 43 4b 5f 4d 45 4d 4f 52 59 5f 42 59 54 45 53  ACK_MEMORY_BYTES
24190 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
241a0 20 28 70 4d 65 6d 6f 72 79 20 21 3d 20 49 6e 74   (pMemory != Int
241b0 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
241c0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
241d0 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 62 6c            int bl
241e0 6f 63 6b 53 69 7a 65 20 3d 20 53 69 7a 65 28 70  ockSize = Size(p
241f0 4d 65 6d 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20  Memory);....    
24200 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
24210 62 6c 6f 63 6b 53 69 7a 65 20 3e 20 30 29 0d 0a  blockSize > 0)..
24220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24230 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
24240 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e         lock (syn
24250 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
24260 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
24270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24280 20 20 20 20 20 20 20 62 79 74 65 73 41 6c 6c 6f         bytesAllo
24290 63 61 74 65 64 20 2b 3d 20 62 6c 6f 63 6b 53 69  cated += blockSi
242a0 7a 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ze;....         
242b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
242c0 66 20 28 62 79 74 65 73 41 6c 6c 6f 63 61 74 65  f (bytesAllocate
242d0 64 20 3e 20 6d 61 78 69 6d 75 6d 42 79 74 65 73  d > maximumBytes
242e0 41 6c 6c 6f 63 61 74 65 64 29 0d 0a 20 20 20 20  Allocated)..    
242f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24300 20 20 20 20 20 20 20 20 6d 61 78 69 6d 75 6d 42          maximumB
24310 79 74 65 73 41 6c 6c 6f 63 61 74 65 64 20 3d 20  ytesAllocated = 
24320 62 79 74 65 73 41 6c 6c 6f 63 61 74 65 64 3b 0d  bytesAllocated;.
24330 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24340 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
24350 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
24360 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
24370 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
24380 72 65 74 75 72 6e 20 70 4d 65 6d 6f 72 79 3b 0d  return pMemory;.
24390 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
243a0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
243b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
243c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d  /////////////...
243f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
24400 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
24410 2f 2f 2f 20 47 65 74 73 20 61 6e 64 20 72 65 74  /// Gets and ret
24420 75 72 6e 73 20 74 68 65 20 61 63 74 75 61 6c 20  urns the actual 
24430 73 69 7a 65 20 6f 66 20 74 68 65 20 73 70 65 63  size of the spec
24440 69 66 69 65 64 20 6d 65 6d 6f 72 79 20 62 6c 6f  ified memory blo
24450 63 6b 20 74 68 61 74 0d 0a 20 20 20 20 20 20 20  ck that..       
24460 20 2f 2f 2f 20 77 61 73 20 70 72 65 76 69 6f 75   /// was previou
24470 73 6c 79 20 6f 62 74 61 69 6e 65 64 20 66 72 6f  sly obtained fro
24480 6d 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  m the <see cref=
24490 22 41 6c 6c 6f 63 61 74 65 22 20 2f 3e 20 6d 65  "Allocate" /> me
244a0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  thod...        /
244b0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
244c0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
244d0 6d 20 6e 61 6d 65 3d 22 70 4d 65 6d 6f 72 79 22  m name="pMemory"
244e0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
244f0 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
24500 72 20 74 6f 20 74 68 65 20 6d 65 6d 6f 72 79 20  r to the memory 
24510 62 6c 6f 63 6b 20 70 72 65 76 69 6f 75 73 6c 79  block previously
24520 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 74   obtained from t
24530 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
24540 3c 73 65 65 20 63 72 65 66 3d 22 41 6c 6c 6f 63  <see cref="Alloc
24550 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ate" /> method..
24560 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
24570 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
24580 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
24590 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 63        /// The ac
245a0 74 75 61 6c 20 73 69 7a 65 2c 20 69 6e 20 62 79  tual size, in by
245b0 74 65 73 2c 20 6f 66 20 74 68 65 20 6d 65 6d 6f  tes, of the memo
245c0 72 79 20 62 6c 6f 63 6b 20 73 70 65 63 69 66 69  ry block specifi
245d0 65 64 20 76 69 61 20 74 68 65 0d 0a 20 20 20 20  ed via the..    
245e0 20 20 20 20 2f 2f 2f 20 6e 61 74 69 76 65 20 70      /// native p
245f0 6f 69 6e 74 65 72 2e 0d 0a 20 20 20 20 20 20 20  ointer...       
24600 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
24610 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
24620 73 74 61 74 69 63 20 69 6e 74 20 53 69 7a 65 28  static int Size(
24630 49 6e 74 50 74 72 20 70 4d 65 6d 6f 72 79 29 0d  IntPtr pMemory).
24640 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
24650 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44  !SQLITE_STANDARD
24660 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
24670 74 75 72 6e 20 55 6e 73 61 66 65 4e 61 74 69 76  turn UnsafeNativ
24680 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
24690 5f 6d 61 6c 6c 6f 63 5f 73 69 7a 65 5f 69 6e 74  _malloc_size_int
246a0 65 72 6f 70 28 70 4d 65 6d 6f 72 79 29 3b 0d 0a  erop(pMemory);..
246b0 23 65 6c 69 66 20 54 52 41 43 4b 5f 4d 45 4d 4f  #elif TRACK_MEMO
246c0 52 59 5f 42 59 54 45 53 0d 0a 20 20 20 20 20 20  RY_BYTES..      
246d0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
246e0 20 20 20 20 20 20 2f 2f 20 48 41 43 4b 3a 20 4f        // HACK: O
246f0 6b 2c 20 77 65 20 63 61 6e 6e 6f 74 20 64 65 74  k, we cannot det
24700 65 72 6d 69 6e 65 20 74 68 65 20 73 69 7a 65 20  ermine the size 
24710 6f 66 20 74 68 65 20 6d 65 6d 6f 72 79 20 62 6c  of the memory bl
24720 6f 63 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ock;..          
24730 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 72 65    //       there
24740 66 6f 72 65 2c 20 6a 75 73 74 20 74 72 61 63 6b  fore, just track
24750 20 6e 75 6d 62 65 72 20 6f 66 20 61 6c 6c 6f 63   number of alloc
24760 61 74 69 6f 6e 73 20 69 6e 73 74 65 61 64 2e 0d  ations instead..
24770 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  .            //.
24780 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
24790 75 72 6e 20 28 70 4d 65 6d 6f 72 79 20 21 3d 20  urn (pMemory != 
247a0 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20 3f 20 31  IntPtr.Zero) ? 1
247b0 20 3a 20 30 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20   : 0;..#else..  
247c0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
247d0 20 30 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20   0;..#endif..   
247e0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
247f0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
24800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24830 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
24840 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
24850 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
24860 46 72 65 65 73 20 61 20 6d 65 6d 6f 72 79 20 62  Frees a memory b
24870 6c 6f 63 6b 20 70 72 65 76 69 6f 75 73 6c 79 20  lock previously 
24880 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 74 68  obtained from th
24890 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
248a0 73 65 65 20 63 72 65 66 3d 22 41 6c 6c 6f 63 61  see cref="Alloca
248b0 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  te" /> method...
248c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
248d0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
248e0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
248f0 22 70 4d 65 6d 6f 72 79 22 3e 0d 0a 20 20 20 20  "pMemory">..    
24900 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
24910 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
24920 65 20 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b 20 70  e memory block p
24930 72 65 76 69 6f 75 73 6c 79 20 6f 62 74 61 69 6e  reviously obtain
24940 65 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20  ed from the..   
24950 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
24960 65 66 3d 22 41 6c 6c 6f 63 61 74 65 22 20 2f 3e  ef="Allocate" />
24970 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
24980 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
24990 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
249a0 74 61 74 69 63 20 76 6f 69 64 20 46 72 65 65 28  tatic void Free(
249b0 49 6e 74 50 74 72 20 70 4d 65 6d 6f 72 79 29 0d  IntPtr pMemory).
249c0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
249d0 54 52 41 43 4b 5f 4d 45 4d 4f 52 59 5f 42 59 54  TRACK_MEMORY_BYT
249e0 45 53 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ES..            
249f0 69 66 20 28 70 4d 65 6d 6f 72 79 20 21 3d 20 49  if (pMemory != I
24a00 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
24a10 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
24a20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
24a30 62 6c 6f 63 6b 53 69 7a 65 20 3d 20 53 69 7a 65  blockSize = Size
24a40 28 70 4d 65 6d 6f 72 79 29 3b 0d 0a 0d 0a 20 20  (pMemory);....  
24a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
24a60 20 28 62 6c 6f 63 6b 53 69 7a 65 20 3e 20 30 29   (blockSize > 0)
24a70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24a80 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
24a90 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73           lock (s
24aa0 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
24ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
24ac0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24ad0 20 20 20 20 20 20 20 20 20 62 79 74 65 73 41 6c           bytesAl
24ae0 6c 6f 63 61 74 65 64 20 2d 3d 20 62 6c 6f 63 6b  located -= block
24af0 53 69 7a 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  Size;..         
24b00 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
24b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
24b20 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
24b30 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
24b40 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69        UnsafeNati
24b50 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
24b60 33 5f 66 72 65 65 28 70 4d 65 6d 6f 72 79 29 3b  3_free(pMemory);
24b70 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
24b80 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
24b90 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64  .    }..    #end
24ba0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
24bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
24c00 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 53   #region SQLiteS
24c10 74 72 69 6e 67 20 53 74 61 74 69 63 20 43 6c 61  tring Static Cla
24c20 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ss..    /// <sum
24c30 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  mary>..    /// T
24c40 68 69 73 20 63 6c 61 73 73 20 63 6f 6e 74 61 69  his class contai
24c50 6e 73 20 73 74 61 74 69 63 20 6d 65 74 68 6f 64  ns static method
24c60 73 20 74 68 61 74 20 61 72 65 20 75 73 65 64 20  s that are used 
24c70 74 6f 20 64 65 61 6c 20 77 69 74 68 20 6e 61 74  to deal with nat
24c80 69 76 65 0d 0a 20 20 20 20 2f 2f 2f 20 55 54 46  ive..    /// UTF
24c90 2d 38 20 73 74 72 69 6e 67 20 70 6f 69 6e 74 65  -8 string pointe
24ca0 72 73 20 74 6f 20 62 65 20 75 73 65 64 20 77 69  rs to be used wi
24cb0 74 68 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  th the SQLite co
24cc0 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  re library...   
24cd0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
24ce0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
24cf0 61 74 69 63 20 63 6c 61 73 73 20 53 51 4c 69 74  atic class SQLit
24d00 65 53 74 72 69 6e 67 0d 0a 20 20 20 20 7b 0d 0a  eString..    {..
24d10 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
24d20 50 72 69 76 61 74 65 20 43 6f 6e 73 74 61 6e 74  Private Constant
24d30 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
24d40 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
24d50 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68    /// This is th
24d60 65 20 6d 61 78 69 6d 75 6d 20 70 6f 73 73 69 62  e maximum possib
24d70 6c 65 20 6c 65 6e 67 74 68 20 66 6f 72 20 74 68  le length for th
24d80 65 20 6e 61 74 69 76 65 20 55 54 46 2d 38 20 65  e native UTF-8 e
24d90 6e 63 6f 64 65 64 0d 0a 20 20 20 20 20 20 20 20  ncoded..        
24da0 2f 2f 2f 20 73 74 72 69 6e 67 73 20 75 73 65 64  /// strings used
24db0 20 77 69 74 68 20 74 68 65 20 53 51 4c 69 74 65   with the SQLite
24dc0 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a   core library...
24dd0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
24de0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
24df0 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 69  private static i
24e00 6e 74 20 54 68 69 72 74 79 42 69 74 73 20 3d 20  nt ThirtyBits = 
24e10 30 78 33 66 66 66 66 66 66 66 3b 0d 0a 0d 0a 20  0x3fffffff;.... 
24e20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
24e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
24e70 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
24e80 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
24e90 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65   /// This is the
24ea0 20 3c 73 65 65 20 63 72 65 66 3d 22 45 6e 63 6f   <see cref="Enco
24eb0 64 69 6e 67 22 20 2f 3e 20 6f 62 6a 65 63 74 20  ding" /> object 
24ec0 69 6e 73 74 61 6e 63 65 20 75 73 65 64 20 74 6f  instance used to
24ed0 20 68 61 6e 64 6c 65 0d 0a 20 20 20 20 20 20 20   handle..       
24ee0 20 2f 2f 2f 20 63 6f 6e 76 65 72 73 69 6f 6e 73   /// conversions
24ef0 20 66 72 6f 6d 2f 74 6f 20 55 54 46 2d 38 2e 0d   from/to UTF-8..
24f00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
24f10 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
24f20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
24f30 72 65 61 64 6f 6e 6c 79 20 45 6e 63 6f 64 69 6e  readonly Encodin
24f40 67 20 55 74 66 38 45 6e 63 6f 64 69 6e 67 20 3d  g Utf8Encoding =
24f50 20 45 6e 63 6f 64 69 6e 67 2e 55 54 46 38 3b 0d   Encoding.UTF8;.
24f60 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
24f70 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
24f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24fc0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
24fd0 20 20 23 72 65 67 69 6f 6e 20 55 54 46 2d 38 20    #region UTF-8 
24fe0 45 6e 63 6f 64 69 6e 67 20 48 65 6c 70 65 72 20  Encoding Helper 
24ff0 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20  Methods..       
25000 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
25010 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76          /// Conv
25020 65 72 74 73 20 74 68 65 20 73 70 65 63 69 66 69  erts the specifi
25030 65 64 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e  ed managed strin
25040 67 20 69 6e 74 6f 20 74 68 65 20 55 54 46 2d 38  g into the UTF-8
25050 20 65 6e 63 6f 64 69 6e 67 20 61 6e 64 0d 0a 20   encoding and.. 
25060 20 20 20 20 20 20 20 2f 2f 2f 20 72 65 74 75 72         /// retur
25070 6e 73 20 74 68 65 20 61 72 72 61 79 20 6f 66 20  ns the array of 
25080 62 79 74 65 73 20 63 6f 6e 74 61 69 6e 69 6e 67  bytes containing
25090 20 69 74 73 20 72 65 70 72 65 73 65 6e 74 61 74   its representat
250a0 69 6f 6e 20 69 6e 20 74 68 61 74 0d 0a 20 20 20  ion in that..   
250b0 20 20 20 20 20 2f 2f 2f 20 65 6e 63 6f 64 69 6e       /// encodin
250c0 67 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  g...        /// 
250d0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
250e0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
250f0 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20  ame="value">..  
25100 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61        /// The ma
25110 6e 61 67 65 64 20 73 74 72 69 6e 67 20 74 6f 20  naged string to 
25120 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20  convert...      
25130 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
25140 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
25150 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
25160 2f 2f 20 54 68 65 20 61 72 72 61 79 20 6f 66 20  // The array of 
25170 62 79 74 65 73 20 63 6f 6e 74 61 69 6e 69 6e 67  bytes containing
25180 20 74 68 65 20 72 65 70 72 65 73 65 6e 74 61 74   the representat
25190 69 6f 6e 20 6f 66 20 74 68 65 20 6d 61 6e 61 67  ion of the manag
251a0 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
251b0 73 74 72 69 6e 67 20 69 6e 20 74 68 65 20 55 54  string in the UT
251c0 46 2d 38 20 65 6e 63 6f 64 69 6e 67 20 6f 72 20  F-8 encoding or 
251d0 6e 75 6c 6c 20 75 70 6f 6e 20 66 61 69 6c 75 72  null upon failur
251e0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
251f0 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
25200 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
25210 63 20 62 79 74 65 5b 5d 20 47 65 74 55 74 66 38  c byte[] GetUtf8
25220 42 79 74 65 73 46 72 6f 6d 53 74 72 69 6e 67 28  BytesFromString(
25230 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74  ..            st
25240 72 69 6e 67 20 76 61 6c 75 65 0d 0a 20 20 20 20  ring value..    
25250 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
25260 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
25270 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e    if (value == n
25280 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
25290 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
252a0 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  l;....          
252b0 20 20 72 65 74 75 72 6e 20 55 74 66 38 45 6e 63    return Utf8Enc
252c0 6f 64 69 6e 67 2e 47 65 74 42 79 74 65 73 28 76  oding.GetBytes(v
252d0 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  alue);..        
252e0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
252f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25330 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
25340 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
25350 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65         /// Conve
25360 72 74 73 20 74 68 65 20 73 70 65 63 69 66 69 65  rts the specifie
25370 64 20 61 72 72 61 79 20 6f 66 20 62 79 74 65 73  d array of bytes
25380 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 61 20   representing a 
25390 73 74 72 69 6e 67 20 69 6e 20 74 68 65 0d 0a 20  string in the.. 
253a0 20 20 20 20 20 20 20 2f 2f 2f 20 55 54 46 2d 38         /// UTF-8
253b0 20 65 6e 63 6f 64 69 6e 67 20 61 6e 64 20 72 65   encoding and re
253c0 74 75 72 6e 73 20 61 20 6d 61 6e 61 67 65 64 20  turns a managed 
253d0 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  string...       
253e0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
253f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
25400 72 61 6d 20 6e 61 6d 65 3d 22 62 79 74 65 73 22  ram name="bytes"
25410 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
25420 68 65 20 61 72 72 61 79 20 6f 66 20 62 79 74 65  he array of byte
25430 73 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20  s to convert... 
25440 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
25450 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
25460 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
25470 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61      /// The mana
25480 67 65 64 20 73 74 72 69 6e 67 20 6f 72 20 6e 75  ged string or nu
25490 6c 6c 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e  ll upon failure.
254a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
254b0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
254c0 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
254d0 73 74 72 69 6e 67 20 47 65 74 53 74 72 69 6e 67  string GetString
254e0 46 72 6f 6d 55 74 66 38 42 79 74 65 73 28 0d 0a  FromUtf8Bytes(..
254f0 20 20 20 20 20 20 20 20 20 20 20 20 62 79 74 65              byte
25500 5b 5d 20 62 79 74 65 73 0d 0a 20 20 20 20 20 20  [] bytes..      
25510 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
25520 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
25530 69 66 20 28 62 79 74 65 73 20 3d 3d 20 6e 75 6c  if (bytes == nul
25540 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
25550 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
25560 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
25570 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
25580 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
25590 72 65 74 75 72 6e 20 55 74 66 38 45 6e 63 6f 64  return Utf8Encod
255a0 69 6e 67 2e 47 65 74 53 74 72 69 6e 67 28 62 79  ing.GetString(by
255b0 74 65 73 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  tes);..#else..  
255c0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
255d0 20 55 74 66 38 45 6e 63 6f 64 69 6e 67 2e 47 65   Utf8Encoding.Ge
255e0 74 53 74 72 69 6e 67 28 62 79 74 65 73 2c 20 30  tString(bytes, 0
255f0 2c 20 62 79 74 65 73 2e 4c 65 6e 67 74 68 29 3b  , bytes.Length);
25600 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
25610 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
25620 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
25630 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
25640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
25680 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 55 54        #region UT
25690 46 2d 38 20 53 74 72 69 6e 67 20 48 65 6c 70 65  F-8 String Helpe
256a0 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20  r Methods..     
256b0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
256c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 50 72  ..        /// Pr
256d0 6f 62 65 73 20 61 20 6e 61 74 69 76 65 20 70 6f  obes a native po
256e0 69 6e 74 65 72 20 74 6f 20 61 20 73 74 72 69 6e  inter to a strin
256f0 67 20 69 6e 20 74 68 65 20 55 54 46 2d 38 20 65  g in the UTF-8 e
25700 6e 63 6f 64 69 6e 67 20 66 6f 72 20 69 74 73 0d  ncoding for its.
25710 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 65 72  .        /// ter
25720 6d 69 6e 61 74 69 6e 67 20 4e 55 4c 20 63 68 61  minating NUL cha
25730 72 61 63 74 65 72 2c 20 77 69 74 68 69 6e 20 74  racter, within t
25740 68 65 20 73 70 65 63 69 66 69 65 64 20 6c 65 6e  he specified len
25750 67 74 68 20 6c 69 6d 69 74 2e 0d 0a 20 20 20 20  gth limit...    
25760 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
25770 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
25780 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 61  <param name="pVa
25790 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  lue">..        /
257a0 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 4e 55  // The native NU
257b0 4c 2d 74 65 72 6d 69 6e 61 74 65 64 20 73 74 72  L-terminated str
257c0 69 6e 67 20 70 6f 69 6e 74 65 72 2e 0d 0a 20 20  ing pointer...  
257d0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
257e0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
257f0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c 69 6d  <param name="lim
25800 69 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  it">..        //
25810 2f 20 54 68 65 20 6d 61 78 69 6d 75 6d 20 6c 65  / The maximum le
25820 6e 67 74 68 20 6f 66 20 74 68 65 20 6e 61 74 69  ngth of the nati
25830 76 65 20 73 74 72 69 6e 67 2c 20 69 6e 20 62 79  ve string, in by
25840 74 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tes...        //
25850 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
25860 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
25870 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
25880 68 65 20 6c 65 6e 67 74 68 20 6f 66 20 74 68 65  he length of the
25890 20 6e 61 74 69 76 65 20 73 74 72 69 6e 67 2c 20   native string, 
258a0 69 6e 20 62 79 74 65 73 20 2d 4f 52 2d 20 7a 65  in bytes -OR- ze
258b0 72 6f 20 69 66 20 74 68 65 20 6c 65 6e 67 74 68  ro if the length
258c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f  ..        /// co
258d0 75 6c 64 20 6e 6f 74 20 62 65 20 64 65 74 65 72  uld not be deter
258e0 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 20 20  mined...        
258f0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
25900 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
25910 74 61 74 69 63 20 69 6e 74 20 50 72 6f 62 65 46  tatic int ProbeF
25920 6f 72 55 74 66 38 42 79 74 65 4c 65 6e 67 74 68  orUtf8ByteLength
25930 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  (..            I
25940 6e 74 50 74 72 20 70 56 61 6c 75 65 2c 0d 0a 20  ntPtr pValue,.. 
25950 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6c             int l
25960 69 6d 69 74 0d 0a 20 20 20 20 20 20 20 20 20 20  imit..          
25970 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
25980 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
25990 6c 65 6e 67 74 68 20 3d 20 30 3b 0d 0a 0d 0a 20  length = 0;.... 
259a0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28             if ((
259b0 70 56 61 6c 75 65 20 21 3d 20 49 6e 74 50 74 72  pValue != IntPtr
259c0 2e 5a 65 72 6f 29 20 26 26 20 28 6c 69 6d 69 74  .Zero) && (limit
259d0 20 3e 20 30 29 29 0d 0a 20 20 20 20 20 20 20 20   > 0))..        
259e0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
259f0 20 20 20 20 20 20 20 64 6f 0d 0a 20 20 20 20 20         do..     
25a00 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
25a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25a20 20 20 69 66 20 28 4d 61 72 73 68 61 6c 2e 52 65    if (Marshal.Re
25a30 61 64 42 79 74 65 28 70 56 61 6c 75 65 2c 20 6c  adByte(pValue, l
25a40 65 6e 67 74 68 29 20 3d 3d 20 30 29 0d 0a 20 20  ength) == 0)..  
25a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25a60 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 0d 0a        break;....
25a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25a80 20 20 20 20 69 66 20 28 6c 65 6e 67 74 68 20 3e      if (length >
25a90 3d 20 6c 69 6d 69 74 29 0d 0a 20 20 20 20 20 20  = limit)..      
25aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25ab0 20 20 62 72 65 61 6b 3b 0d 0a 0d 0a 20 20 20 20    break;....    
25ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25ad0 6c 65 6e 67 74 68 2b 2b 3b 0d 0a 20 20 20 20 20  length++;..     
25ae0 20 20 20 20 20 20 20 20 20 20 20 7d 20 77 68 69             } whi
25af0 6c 65 20 28 74 72 75 65 29 3b 0d 0a 20 20 20 20  le (true);..    
25b00 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
25b10 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
25b20 6c 65 6e 67 74 68 3b 0d 0a 20 20 20 20 20 20 20  length;..       
25b30 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
25b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25b80 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
25b90 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
25ba0 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76          /// Conv
25bb0 65 72 74 73 20 74 68 65 20 73 70 65 63 69 66 69  erts the specifi
25bc0 65 64 20 6e 61 74 69 76 65 20 4e 55 4c 2d 74 65  ed native NUL-te
25bd0 72 6d 69 6e 61 74 65 64 20 55 54 46 2d 38 20 73  rminated UTF-8 s
25be0 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 0d 0a 20  tring pointer.. 
25bf0 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74 6f 20         /// into 
25c00 61 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67  a managed string
25c10 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
25c20 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
25c30 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
25c40 6d 65 3d 22 70 56 61 6c 75 65 22 3e 0d 0a 20 20  me="pValue">..  
25c50 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
25c60 74 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69 6e 61  tive NUL-termina
25c70 74 65 64 20 55 54 46 2d 38 20 73 74 72 69 6e 67  ted UTF-8 string
25c80 20 70 6f 69 6e 74 65 72 2e 0d 0a 20 20 20 20 20   pointer...     
25c90 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
25ca0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
25cb0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
25cc0 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20  /// The managed 
25cd0 73 74 72 69 6e 67 20 6f 72 20 6e 75 6c 6c 20 75  string or null u
25ce0 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20  pon failure...  
25cf0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
25d00 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  rns>..        pu
25d10 62 6c 69 63 20 73 74 61 74 69 63 20 73 74 72 69  blic static stri
25d20 6e 67 20 53 74 72 69 6e 67 46 72 6f 6d 55 74 66  ng StringFromUtf
25d30 38 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20  8IntPtr(..      
25d40 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 61        IntPtr pVa
25d50 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lue..           
25d60 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
25d70 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
25d80 6e 20 53 74 72 69 6e 67 46 72 6f 6d 55 74 66 38  n StringFromUtf8
25d90 49 6e 74 50 74 72 28 70 56 61 6c 75 65 2c 0d 0a  IntPtr(pValue,..
25da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25db0 50 72 6f 62 65 46 6f 72 55 74 66 38 42 79 74 65  ProbeForUtf8Byte
25dc0 4c 65 6e 67 74 68 28 70 56 61 6c 75 65 2c 20 54  Length(pValue, T
25dd0 68 69 72 74 79 42 69 74 73 29 29 3b 0d 0a 20 20  hirtyBits));..  
25de0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
25df0 20 20 20 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 2f 2f 2f 2f 2f  ////////////////
25e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
25e40 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
25e50 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
25e60 20 43 6f 6e 76 65 72 74 73 20 74 68 65 20 73 70   Converts the sp
25e70 65 63 69 66 69 65 64 20 6e 61 74 69 76 65 20 55  ecified native U
25e80 54 46 2d 38 20 73 74 72 69 6e 67 20 70 6f 69 6e  TF-8 string poin
25e90 74 65 72 20 6f 66 20 74 68 65 20 73 70 65 63 69  ter of the speci
25ea0 66 69 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  fied..        //
25eb0 2f 20 6c 65 6e 67 74 68 20 69 6e 74 6f 20 61 20  / length into a 
25ec0 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67 2e 0d  managed string..
25ed0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
25ee0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
25ef0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
25f00 3d 22 70 56 61 6c 75 65 22 3e 0d 0a 20 20 20 20  ="pValue">..    
25f10 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
25f20 76 65 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20  ve UTF-8 string 
25f30 70 6f 69 6e 74 65 72 2e 0d 0a 20 20 20 20 20 20  pointer...      
25f40 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
25f50 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
25f60 61 6d 20 6e 61 6d 65 3d 22 6c 65 6e 67 74 68 22  am name="length"
25f70 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
25f80 68 65 20 6c 65 6e 67 74 68 20 6f 66 20 74 68 65  he length of the
25f90 20 6e 61 74 69 76 65 20 73 74 72 69 6e 67 2c 20   native string, 
25fa0 69 6e 20 62 79 74 65 73 2e 0d 0a 20 20 20 20 20  in bytes...     
25fb0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
25fc0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
25fd0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
25fe0 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20  /// The managed 
25ff0 73 74 72 69 6e 67 20 6f 72 20 6e 75 6c 6c 20 75  string or null u
26000 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20  pon failure...  
26010 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
26020 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  rns>..        pu
26030 62 6c 69 63 20 73 74 61 74 69 63 20 73 74 72 69  blic static stri
26040 6e 67 20 53 74 72 69 6e 67 46 72 6f 6d 55 74 66  ng StringFromUtf
26050 38 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20  8IntPtr(..      
26060 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 61        IntPtr pVa
26070 6c 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  lue,..          
26080 20 20 69 6e 74 20 6c 65 6e 67 74 68 0d 0a 20 20    int length..  
26090 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
260a0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
260b0 20 20 20 20 69 66 20 28 70 56 61 6c 75 65 20 3d      if (pValue =
260c0 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
260d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
260e0 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a  return null;....
260f0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
26100 6c 65 6e 67 74 68 20 3e 20 30 29 0d 0a 20 20 20  length > 0)..   
26110 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
26120 20 20 20 20 20 20 20 20 20 20 20 20 62 79 74 65              byte
26130 5b 5d 20 62 79 74 65 73 20 3d 20 6e 65 77 20 62  [] bytes = new b
26140 79 74 65 5b 6c 65 6e 67 74 68 5d 3b 0d 0a 0d 0a  yte[length];....
26150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26160 4d 61 72 73 68 61 6c 2e 43 6f 70 79 28 70 56 61  Marshal.Copy(pVa
26170 6c 75 65 2c 20 62 79 74 65 73 2c 20 30 2c 20 6c  lue, bytes, 0, l
26180 65 6e 67 74 68 29 3b 0d 0a 0d 0a 20 20 20 20 20  ength);....     
26190 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
261a0 6e 20 47 65 74 53 74 72 69 6e 67 46 72 6f 6d 55  n GetStringFromU
261b0 74 66 38 42 79 74 65 73 28 62 79 74 65 73 29 3b  tf8Bytes(bytes);
261c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
261d0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
261e0 65 74 75 72 6e 20 53 74 72 69 6e 67 2e 45 6d 70  eturn String.Emp
261f0 74 79 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ty;..        }..
26200 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
26210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26250 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
26260 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
26270 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73      /// Converts
26280 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6d   the specified m
26290 61 6e 61 67 65 64 20 73 74 72 69 6e 67 20 69 6e  anaged string in
262a0 74 6f 20 61 20 6e 61 74 69 76 65 20 4e 55 4c 2d  to a native NUL-
262b0 74 65 72 6d 69 6e 61 74 65 64 0d 0a 20 20 20 20  terminated..    
262c0 20 20 20 20 2f 2f 2f 20 55 54 46 2d 38 20 73 74      /// UTF-8 st
262d0 72 69 6e 67 20 70 6f 69 6e 74 65 72 20 75 73 69  ring pointer usi
262e0 6e 67 20 6d 65 6d 6f 72 79 20 6f 62 74 61 69 6e  ng memory obtain
262f0 65 64 20 66 72 6f 6d 20 74 68 65 20 53 51 4c 69  ed from the SQLi
26300 74 65 20 63 6f 72 65 0d 0a 20 20 20 20 20 20 20  te core..       
26310 20 2f 2f 2f 20 6c 69 62 72 61 72 79 2e 0d 0a 20   /// library... 
26320 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
26330 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
26340 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
26350 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20  value">..       
26360 20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64   /// The managed
26370 20 73 74 72 69 6e 67 20 74 6f 20 63 6f 6e 76 65   string to conve
26380 72 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  rt...        ///
26390 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
263a0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
263b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
263c0 65 20 6e 61 74 69 76 65 20 4e 55 4c 2d 74 65 72  e native NUL-ter
263d0 6d 69 6e 61 74 65 64 20 55 54 46 2d 38 20 73 74  minated UTF-8 st
263e0 72 69 6e 67 20 70 6f 69 6e 74 65 72 20 6f 72 0d  ring pointer or.
263f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
26400 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 2e 5a  e cref="IntPtr.Z
26410 65 72 6f 22 20 2f 3e 20 75 70 6f 6e 20 66 61 69  ero" /> upon fai
26420 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  lure...        /
26430 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
26440 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
26450 61 74 69 63 20 49 6e 74 50 74 72 20 55 74 66 38  atic IntPtr Utf8
26460 49 6e 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67  IntPtrFromString
26470 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  (..            s
26480 74 72 69 6e 67 20 76 61 6c 75 65 0d 0a 20 20 20  tring value..   
26490 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
264a0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
264b0 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20     if (value == 
264c0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
264d0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e         return In
264e0 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20  tPtr.Zero;....  
264f0 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
26500 20 72 65 73 75 6c 74 20 3d 20 49 6e 74 50 74 72   result = IntPtr
26510 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20  .Zero;..        
26520 20 20 20 20 62 79 74 65 5b 5d 20 62 79 74 65 73      byte[] bytes
26530 20 3d 20 47 65 74 55 74 66 38 42 79 74 65 73 46   = GetUtf8BytesF
26540 72 6f 6d 53 74 72 69 6e 67 28 76 61 6c 75 65 29  romString(value)
26550 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
26560 20 69 66 20 28 62 79 74 65 73 20 3d 3d 20 6e 75   if (bytes == nu
26570 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
26580 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50       return IntP
26590 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20  tr.Zero;....    
265a0 20 20 20 20 20 20 20 20 69 6e 74 20 6c 65 6e 67          int leng
265b0 74 68 20 3d 20 62 79 74 65 73 2e 4c 65 6e 67 74  th = bytes.Lengt
265c0 68 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  h;....          
265d0 20 20 72 65 73 75 6c 74 20 3d 20 53 51 4c 69 74    result = SQLit
265e0 65 4d 65 6d 6f 72 79 2e 41 6c 6c 6f 63 61 74 65  eMemory.Allocate
265f0 28 6c 65 6e 67 74 68 20 2b 20 31 29 3b 0d 0a 0d  (length + 1);...
26600 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
26610 28 72 65 73 75 6c 74 20 3d 3d 20 49 6e 74 50 74  (result == IntPt
26620 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
26630 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
26640 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a  IntPtr.Zero;....
26650 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73              Mars
26660 68 61 6c 2e 43 6f 70 79 28 62 79 74 65 73 2c 20  hal.Copy(bytes, 
26670 30 2c 20 72 65 73 75 6c 74 2c 20 6c 65 6e 67 74  0, result, lengt
26680 68 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  h);..           
26690 20 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 42 79   Marshal.WriteBy
266a0 74 65 28 72 65 73 75 6c 74 2c 20 6c 65 6e 67 74  te(result, lengt
266b0 68 2c 20 30 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  h, 0);....      
266c0 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73        return res
266d0 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ult;..        }.
266e0 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
266f0 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
26700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26740 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
26750 20 20 23 72 65 67 69 6f 6e 20 55 54 46 2d 38 20    #region UTF-8 
26760 53 74 72 69 6e 67 20 41 72 72 61 79 20 48 65 6c  String Array Hel
26770 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20  per Methods..   
26780 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
26790 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
267a0 43 6f 6e 76 65 72 74 73 20 61 20 6c 6f 67 69 63  Converts a logic
267b0 61 6c 20 61 72 72 61 79 20 6f 66 20 6e 61 74 69  al array of nati
267c0 76 65 20 4e 55 4c 2d 74 65 72 6d 69 6e 61 74 65  ve NUL-terminate
267d0 64 20 55 54 46 2d 38 20 73 74 72 69 6e 67 0d 0a  d UTF-8 string..
267e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 6f 69 6e          /// poin
267f0 74 65 72 73 20 69 6e 74 6f 20 61 6e 20 61 72 72  ters into an arr
26800 61 79 20 6f 66 20 6d 61 6e 61 67 65 64 20 73 74  ay of managed st
26810 72 69 6e 67 73 2e 0d 0a 20 20 20 20 20 20 20 20  rings...        
26820 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
26830 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
26840 61 6d 20 6e 61 6d 65 3d 22 61 72 67 63 22 3e 0d  am name="argc">.
26850 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
26860 20 6e 75 6d 62 65 72 20 6f 66 20 65 6c 65 6d 65   number of eleme
26870 6e 74 73 20 69 6e 20 74 68 65 20 6c 6f 67 69 63  nts in the logic
26880 61 6c 20 61 72 72 61 79 20 6f 66 20 6e 61 74 69  al array of nati
26890 76 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ve..        /// 
268a0 4e 55 4c 2d 74 65 72 6d 69 6e 61 74 65 64 20 55  NUL-terminated U
268b0 54 46 2d 38 20 73 74 72 69 6e 67 20 70 6f 69 6e  TF-8 string poin
268c0 74 65 72 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ters...        /
268d0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
268e0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
268f0 6e 61 6d 65 3d 22 61 72 67 76 22 3e 0d 0a 20 20  name="argv">..  
26900 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
26910 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
26920 74 68 65 20 6c 6f 67 69 63 61 6c 20 61 72 72 61  the logical arra
26930 79 20 6f 66 20 6e 61 74 69 76 65 20 4e 55 4c 2d  y of native NUL-
26940 74 65 72 6d 69 6e 61 74 65 64 0d 0a 20 20 20 20  terminated..    
26950 20 20 20 20 2f 2f 2f 20 55 54 46 2d 38 20 73 74      /// UTF-8 st
26960 72 69 6e 67 20 70 6f 69 6e 74 65 72 73 20 74 6f  ring pointers to
26970 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20   convert...     
26980 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
26990 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
269a0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
269b0 2f 2f 2f 20 54 68 65 20 61 72 72 61 79 20 6f 66  /// The array of
269c0 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67 73   managed strings
269d0 20 6f 72 20 6e 75 6c 6c 20 75 70 6f 6e 20 66 61   or null upon fa
269e0 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  ilure...        
269f0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
26a00 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
26a10 74 61 74 69 63 20 73 74 72 69 6e 67 5b 5d 20 53  tatic string[] S
26a20 74 72 69 6e 67 41 72 72 61 79 46 72 6f 6d 55 74  tringArrayFromUt
26a30 66 38 53 69 7a 65 41 6e 64 49 6e 74 50 74 72 28  f8SizeAndIntPtr(
26a40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
26a50 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20  t argc,..       
26a60 20 20 20 20 20 49 6e 74 50 74 72 20 61 72 67 76       IntPtr argv
26a70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
26a80 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
26a90 20 20 20 20 20 20 20 20 69 66 20 28 61 72 67 63          if (argc
26aa0 20 3c 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20   < 0)..         
26ab0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
26ac0 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ll;....         
26ad0 20 20 20 69 66 20 28 61 72 67 76 20 3d 3d 20 49     if (argv == I
26ae0 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
26af0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
26b00 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  urn null;....   
26b10 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b           string[
26b20 5d 20 72 65 73 75 6c 74 20 3d 20 6e 65 77 20 73  ] result = new s
26b30 74 72 69 6e 67 5b 61 72 67 63 5d 3b 0d 0a 0d 0a  tring[argc];....
26b40 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20              for 
26b50 28 69 6e 74 20 69 6e 64 65 78 20 3d 20 30 2c 20  (int index = 0, 
26b60 6f 66 66 73 65 74 20 3d 20 30 3b 0d 0a 20 20 20  offset = 0;..   
26b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26b80 20 69 6e 64 65 78 20 3c 20 72 65 73 75 6c 74 2e   index < result.
26b90 4c 65 6e 67 74 68 3b 0d 0a 20 20 20 20 20 20 20  Length;..       
26ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 64               ind
26bb0 65 78 2b 2b 2c 20 6f 66 66 73 65 74 20 2b 3d 20  ex++, offset += 
26bc0 49 6e 74 50 74 72 2e 53 69 7a 65 29 0d 0a 20 20  IntPtr.Size)..  
26bd0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
26be0 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
26bf0 50 74 72 20 70 41 72 67 20 3d 20 53 51 4c 69 74  Ptr pArg = SQLit
26c00 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74  eMarshal.ReadInt
26c10 50 74 72 28 61 72 67 76 2c 20 6f 66 66 73 65 74  Ptr(argv, offset
26c20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
26c30 20 20 20 20 20 20 72 65 73 75 6c 74 5b 69 6e 64        result[ind
26c40 65 78 5d 20 3d 20 28 70 41 72 67 20 21 3d 20 49  ex] = (pArg != I
26c50 6e 74 50 74 72 2e 5a 65 72 6f 29 20 3f 0d 0a 20  ntPtr.Zero) ?.. 
26c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26c70 20 20 20 53 74 72 69 6e 67 46 72 6f 6d 55 74 66     StringFromUtf
26c80 38 49 6e 74 50 74 72 28 70 41 72 67 29 20 3a 20  8IntPtr(pArg) : 
26c90 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20  null;..         
26ca0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
26cb0 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c      return resul
26cc0 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  t;..        }...
26cd0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
26ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26d20 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
26d30 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
26d40 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20     /// Converts 
26d50 61 6e 20 61 72 72 61 79 20 6f 66 20 6d 61 6e 61  an array of mana
26d60 67 65 64 20 73 74 72 69 6e 67 73 20 69 6e 74 6f  ged strings into
26d70 20 61 6e 20 61 72 72 61 79 20 6f 66 20 6e 61 74   an array of nat
26d80 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ive..        ///
26d90 20 4e 55 4c 2d 74 65 72 6d 69 6e 61 74 65 64 20   NUL-terminated 
26da0 55 54 46 2d 38 20 73 74 72 69 6e 67 20 70 6f 69  UTF-8 string poi
26db0 6e 74 65 72 73 2e 0d 0a 20 20 20 20 20 20 20 20  nters...        
26dc0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
26dd0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
26de0 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 73 22  am name="values"
26df0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
26e00 68 65 20 61 72 72 61 79 20 6f 66 20 6d 61 6e 61  he array of mana
26e10 67 65 64 20 73 74 72 69 6e 67 73 20 74 6f 20 63  ged strings to c
26e20 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 20  onvert...       
26e30 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
26e40 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
26e50 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
26e60 2f 20 54 68 65 20 61 72 72 61 79 20 6f 66 20 6e  / The array of n
26e70 61 74 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69 6e  ative NUL-termin
26e80 61 74 65 64 20 55 54 46 2d 38 20 73 74 72 69 6e  ated UTF-8 strin
26e90 67 20 70 6f 69 6e 74 65 72 73 20 6f 72 20 6e 75  g pointers or nu
26ea0 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ll..        /// 
26eb0 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20  upon failure... 
26ec0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
26ed0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
26ee0 75 62 6c 69 63 20 73 74 61 74 69 63 20 49 6e 74  ublic static Int
26ef0 50 74 72 5b 5d 20 55 74 66 38 49 6e 74 50 74 72  Ptr[] Utf8IntPtr
26f00 41 72 72 61 79 46 72 6f 6d 53 74 72 69 6e 67 41  ArrayFromStringA
26f10 72 72 61 79 28 0d 0a 20 20 20 20 20 20 20 20 20  rray(..         
26f20 20 20 20 73 74 72 69 6e 67 5b 5d 20 76 61 6c 75     string[] valu
26f30 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  es..            
26f40 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
26f50 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61            if (va
26f60 6c 75 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  lues == null).. 
26f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
26f80 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  eturn null;.... 
26f90 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
26fa0 72 5b 5d 20 72 65 73 75 6c 74 20 3d 20 6e 65 77  r[] result = new
26fb0 20 49 6e 74 50 74 72 5b 76 61 6c 75 65 73 2e 4c   IntPtr[values.L
26fc0 65 6e 67 74 68 5d 3b 0d 0a 0d 0a 20 20 20 20 20  ength];....     
26fd0 20 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74 20         for (int 
26fe0 69 6e 64 65 78 20 3d 20 30 3b 20 69 6e 64 65 78  index = 0; index
26ff0 20 3c 20 72 65 73 75 6c 74 2e 4c 65 6e 67 74 68   < result.Length
27000 3b 20 69 6e 64 65 78 2b 2b 29 0d 0a 20 20 20 20  ; index++)..    
27010 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75              resu
27020 6c 74 5b 69 6e 64 65 78 5d 20 3d 20 55 74 66 38  lt[index] = Utf8
27030 49 6e 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67  IntPtrFromString
27040 28 76 61 6c 75 65 73 5b 69 6e 64 65 78 5d 29 3b  (values[index]);
27050 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
27060 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a  return result;..
27070 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
27080 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20     #endregion.. 
27090 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65     }..    #endre
270a0 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  gion....    ////
270b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
270c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
270d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
270e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
270f0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23  ///////....    #
27100 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 42 79 74  region SQLiteByt
27110 65 73 20 53 74 61 74 69 63 20 43 6c 61 73 73 0d  es Static Class.
27120 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
27130 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73  y>..    /// This
27140 20 63 6c 61 73 73 20 63 6f 6e 74 61 69 6e 73 20   class contains 
27150 73 74 61 74 69 63 20 6d 65 74 68 6f 64 73 20 74  static methods t
27160 68 61 74 20 61 72 65 20 75 73 65 64 20 74 6f 20  hat are used to 
27170 64 65 61 6c 20 77 69 74 68 20 6e 61 74 69 76 65  deal with native
27180 0d 0a 20 20 20 20 2f 2f 2f 20 70 6f 69 6e 74 65  ..    /// pointe
27190 72 73 20 74 6f 20 6d 65 6d 6f 72 79 20 62 6c 6f  rs to memory blo
271a0 63 6b 73 20 74 68 61 74 20 6c 6f 67 69 63 61 6c  cks that logical
271b0 6c 79 20 63 6f 6e 74 61 69 6e 20 61 72 72 61 79  ly contain array
271c0 73 20 6f 66 20 62 79 74 65 73 20 74 6f 20 62 65  s of bytes to be
271d0 0d 0a 20 20 20 20 2f 2f 2f 20 75 73 65 64 20 77  ..    /// used w
271e0 69 74 68 20 74 68 65 20 53 51 4c 69 74 65 20 63  ith the SQLite c
271f0 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ore library...  
27200 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
27210 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
27220 74 61 74 69 63 20 63 6c 61 73 73 20 53 51 4c 69  tatic class SQLi
27230 74 65 42 79 74 65 73 0d 0a 20 20 20 20 7b 0d 0a  teBytes..    {..
27240 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
27250 42 79 74 65 20 41 72 72 61 79 20 48 65 6c 70 65  Byte Array Helpe
27260 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20  r Methods..     
27270 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
27280 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f  ..        /// Co
27290 6e 76 65 72 74 73 20 61 20 6e 61 74 69 76 65 20  nverts a native 
272a0 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6c 6f 67  pointer to a log
272b0 69 63 61 6c 20 61 72 72 61 79 20 6f 66 20 62 79  ical array of by
272c0 74 65 73 20 6f 66 20 74 68 65 0d 0a 20 20 20 20  tes of the..    
272d0 20 20 20 20 2f 2f 2f 20 73 70 65 63 69 66 69 65      /// specifie
272e0 64 20 6c 65 6e 67 74 68 20 69 6e 74 6f 20 61 20  d length into a 
272f0 6d 61 6e 61 67 65 64 20 62 79 74 65 20 61 72 72  managed byte arr
27300 61 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ay...        ///
27310 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
27320 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
27330 6e 61 6d 65 3d 22 70 56 61 6c 75 65 22 3e 0d 0a  name="pValue">..
27340 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
27350 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
27360 6f 20 74 68 65 20 6c 6f 67 69 63 61 6c 20 61 72  o the logical ar
27370 72 61 79 20 6f 66 20 62 79 74 65 73 20 74 6f 20  ray of bytes to 
27380 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20  convert...      
27390 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
273a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
273b0 61 6d 20 6e 61 6d 65 3d 22 6c 65 6e 67 74 68 22  am name="length"
273c0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
273d0 68 65 20 6c 65 6e 67 74 68 2c 20 69 6e 20 62 79  he length, in by
273e0 74 65 73 2c 20 6f 66 20 74 68 65 20 6c 6f 67 69  tes, of the logi
273f0 63 61 6c 20 61 72 72 61 79 20 6f 66 20 62 79 74  cal array of byt
27400 65 73 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a  es to convert...
27410 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
27420 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
27430 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
27440 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61 6e       /// The man
27450 61 67 65 64 20 62 79 74 65 20 61 72 72 61 79 20  aged byte array 
27460 6f 72 20 6e 75 6c 6c 20 75 70 6f 6e 20 66 61 69  or null upon fai
27470 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  lure...        /
27480 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
27490 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
274a0 61 74 69 63 20 62 79 74 65 5b 5d 20 46 72 6f 6d  atic byte[] From
274b0 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20  IntPtr(..       
274c0 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 61 6c       IntPtr pVal
274d0 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue,..           
274e0 20 69 6e 74 20 6c 65 6e 67 74 68 0d 0a 20 20 20   int length..   
274f0 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
27500 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
27510 20 20 20 69 66 20 28 70 56 61 6c 75 65 20 3d 3d     if (pValue ==
27520 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
27530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
27540 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  eturn null;.... 
27550 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c             if (l
27560 65 6e 67 74 68 20 3d 3d 20 30 29 0d 0a 20 20 20  ength == 0)..   
27570 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
27580 75 72 6e 20 6e 65 77 20 62 79 74 65 5b 30 5d 3b  urn new byte[0];
27590 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
275a0 62 79 74 65 5b 5d 20 72 65 73 75 6c 74 20 3d 20  byte[] result = 
275b0 6e 65 77 20 62 79 74 65 5b 6c 65 6e 67 74 68 5d  new byte[length]
275c0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
275d0 20 4d 61 72 73 68 61 6c 2e 43 6f 70 79 28 70 56   Marshal.Copy(pV
275e0 61 6c 75 65 2c 20 72 65 73 75 6c 74 2c 20 30 2c  alue, result, 0,
275f0 20 6c 65 6e 67 74 68 29 3b 0d 0a 0d 0a 20 20 20   length);....   
27600 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
27610 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20  result;..       
27620 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f  ////////////////
27650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27670 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
27680 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
27690 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76          /// Conv
276a0 65 72 74 73 20 61 20 6d 61 6e 61 67 65 64 20 62  erts a managed b
276b0 79 74 65 20 61 72 72 61 79 20 69 6e 74 6f 20 61  yte array into a
276c0 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
276d0 74 6f 20 61 20 6c 6f 67 69 63 61 6c 0d 0a 20 20  to a logical..  
276e0 20 20 20 20 20 20 2f 2f 2f 20 61 72 72 61 79 20        /// array 
276f0 6f 66 20 62 79 74 65 73 2e 0d 0a 20 20 20 20 20  of bytes...     
27700 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
27710 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
27720 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75  param name="valu
27730 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
27740 20 54 68 65 20 6d 61 6e 61 67 65 64 20 62 79 74   The managed byt
27750 65 20 61 72 72 61 79 20 74 6f 20 63 6f 6e 76 65  e array to conve
27760 72 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  rt...        ///
27770 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
27780 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
27790 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
277a0 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
277b0 20 74 6f 20 61 20 6c 6f 67 69 63 61 6c 20 62 79   to a logical by
277c0 74 65 20 61 72 72 61 79 20 6f 72 20 6e 75 6c 6c  te array or null
277d0 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a   upon failure...
277e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
277f0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
27800 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 49 6e  public static In
27810 74 50 74 72 20 54 6f 49 6e 74 50 74 72 28 0d 0a  tPtr ToIntPtr(..
27820 20 20 20 20 20 20 20 20 20 20 20 20 62 79 74 65              byte
27830 5b 5d 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20  [] value..      
27840 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
27850 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
27860 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c  if (value == nul
27870 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
27880 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74      return IntPt
27890 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20  r.Zero;....     
278a0 20 20 20 20 20 20 20 69 6e 74 20 6c 65 6e 67 74         int lengt
278b0 68 20 3d 20 76 61 6c 75 65 2e 4c 65 6e 67 74 68  h = value.Length
278c0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
278d0 20 69 66 20 28 6c 65 6e 67 74 68 20 3d 3d 20 30   if (length == 0
278e0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
278f0 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72     return IntPtr
27900 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20  .Zero;....      
27910 20 20 20 20 20 20 49 6e 74 50 74 72 20 72 65 73        IntPtr res
27920 75 6c 74 20 3d 20 53 51 4c 69 74 65 4d 65 6d 6f  ult = SQLiteMemo
27930 72 79 2e 41 6c 6c 6f 63 61 74 65 28 6c 65 6e 67  ry.Allocate(leng
27940 74 68 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  th);....        
27950 20 20 20 20 69 66 20 28 72 65 73 75 6c 74 20 3d      if (result =
27960 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
27970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27980 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65  return IntPtr.Ze
27990 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ro;....         
279a0 20 20 20 4d 61 72 73 68 61 6c 2e 43 6f 70 79 28     Marshal.Copy(
279b0 76 61 6c 75 65 2c 20 30 2c 20 72 65 73 75 6c 74  value, 0, result
279c0 2c 20 6c 65 6e 67 74 68 29 3b 0d 0a 0d 0a 20 20  , length);....  
279d0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
279e0 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20   result;..      
279f0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
27a00 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a  dregion..    }..
27a10 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
27a20 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
27a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27a70 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
27a80 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 20 53   SQLiteMarshal S
27a90 74 61 74 69 63 20 43 6c 61 73 73 0d 0a 20 20 20  tatic Class..   
27aa0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
27ab0 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61      /// This cla
27ac0 73 73 20 63 6f 6e 74 61 69 6e 73 20 73 74 61 74  ss contains stat
27ad0 69 63 20 6d 65 74 68 6f 64 73 20 74 68 61 74 20  ic methods that 
27ae0 61 72 65 20 75 73 65 64 20 74 6f 20 70 65 72 66  are used to perf
27af0 6f 72 6d 20 73 65 76 65 72 61 6c 0d 0a 20 20 20  orm several..   
27b00 20 2f 2f 2f 20 6c 6f 77 2d 6c 65 76 65 6c 20 64   /// low-level d
27b10 61 74 61 20 6d 61 72 73 68 61 6c 6c 69 6e 67 20  ata marshalling 
27b20 74 61 73 6b 73 20 62 65 74 77 65 65 6e 20 6e 61  tasks between na
27b30 74 69 76 65 20 61 6e 64 20 6d 61 6e 61 67 65 64  tive and managed
27b40 20 63 6f 64 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20   code...    /// 
27b50 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
27b60 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
27b70 63 6c 61 73 73 20 53 51 4c 69 74 65 4d 61 72 73  class SQLiteMars
27b80 68 61 6c 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  hal..    {..    
27b90 20 20 20 20 23 72 65 67 69 6f 6e 20 49 6e 74 50      #region IntP
27ba0 74 72 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64  tr Helper Method
27bb0 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
27bc0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
27bd0 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 61 20    /// Returns a 
27be0 6e 65 77 20 3c 73 65 65 20 63 72 65 66 3d 22 49  new <see cref="I
27bf0 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74  ntPtr" /> object
27c00 20 69 6e 73 74 61 6e 63 65 20 62 61 73 65 64 20   instance based 
27c10 6f 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  on the..        
27c20 2f 2f 2f 20 73 70 65 63 69 66 69 65 64 20 3c 73  /// specified <s
27c30 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22  ee cref="IntPtr"
27c40 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
27c50 6e 63 65 20 61 6e 64 20 61 6e 20 69 6e 74 65 67  nce and an integ
27c60 65 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  er..        /// 
27c70 6f 66 66 73 65 74 2e 0d 0a 20 20 20 20 20 20 20  offset...       
27c80 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
27c90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
27ca0 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74 65  ram name="pointe
27cb0 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  r">..        ///
27cc0 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
27cd0 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63  IntPtr" /> objec
27ce0 74 20 69 6e 73 74 61 6e 63 65 20 72 65 70 72 65  t instance repre
27cf0 73 65 6e 74 69 6e 67 20 74 68 65 20 62 61 73 65  senting the base
27d00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65  ..        /// me
27d10 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a  mory location...
27d20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
27d30 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
27d40 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f  / <param name="o
27d50 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20 20  ffset">..       
27d60 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67 65 72   /// The integer
27d70 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68 65   offset from the
27d80 20 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f 63   base memory loc
27d90 61 74 69 6f 6e 20 74 68 61 74 20 74 68 65 20 6e  ation that the n
27da0 65 77 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ew..        /// 
27db0 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74  <see cref="IntPt
27dc0 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  r" /> object ins
27dd0 74 61 6e 63 65 20 73 68 6f 75 6c 64 20 70 6f 69  tance should poi
27de0 6e 74 20 74 6f 2e 0d 0a 20 20 20 20 20 20 20 20  nt to...        
27df0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
27e00 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
27e10 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
27e20 20 54 68 65 20 6e 65 77 20 3c 73 65 65 20 63 72   The new <see cr
27e30 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f  ef="IntPtr" /> o
27e40 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d  bject instance..
27e50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
27e60 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
27e70 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 49   public static I
27e80 6e 74 50 74 72 20 49 6e 74 50 74 72 46 6f 72 4f  ntPtr IntPtrForO
27e90 66 66 73 65 74 28 0d 0a 20 20 20 20 20 20 20 20  ffset(..        
27ea0 20 20 20 20 49 6e 74 50 74 72 20 70 6f 69 6e 74      IntPtr point
27eb0 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  er,..           
27ec0 20 69 6e 74 20 6f 66 66 73 65 74 0d 0a 20 20 20   int offset..   
27ed0 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
27ee0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
27ef0 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20 49 6e     return new In
27f00 74 50 74 72 28 70 6f 69 6e 74 65 72 2e 54 6f 49  tPtr(pointer.ToI
27f10 6e 74 36 34 28 29 20 2b 20 6f 66 66 73 65 74 29  nt64() + offset)
27f20 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
27f30 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
27f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
27f80 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
27f90 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
27fa0 20 20 2f 2f 2f 20 52 6f 75 6e 64 73 20 75 70 20    /// Rounds up 
27fb0 61 6e 20 69 6e 74 65 67 65 72 20 73 69 7a 65 20  an integer size 
27fc0 74 6f 20 74 68 65 20 6e 65 78 74 20 6d 75 6c 74  to the next mult
27fd0 69 70 6c 65 20 6f 66 20 74 68 65 20 61 6c 69 67  iple of the alig
27fe0 6e 6d 65 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20  nment...        
27ff0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
28000 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
28010 61 6d 20 6e 61 6d 65 3d 22 73 69 7a 65 22 3e 0d  am name="size">.
28020 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
28030 20 73 69 7a 65 2c 20 69 6e 20 62 79 74 65 73 2c   size, in bytes,
28040 20 74 6f 20 62 65 20 72 6f 75 6e 64 65 64 20 75   to be rounded u
28050 70 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  p...        /// 
28060 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
28070 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
28080 65 3d 22 61 6c 69 67 6e 6d 65 6e 74 22 3e 0d 0a  e="alignment">..
28090 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
280a0 72 65 71 75 69 72 65 64 20 61 6c 69 67 6e 6d 65  required alignme
280b0 6e 74 20 66 6f 72 20 74 68 65 20 72 65 74 75 72  nt for the retur
280c0 6e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20  n value...      
280d0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
280e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
280f0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
28100 2f 2f 20 54 68 65 20 73 69 7a 65 2c 20 69 6e 20  // The size, in 
28110 62 79 74 65 73 2c 20 72 6f 75 6e 64 65 64 20 75  bytes, rounded u
28120 70 20 74 6f 20 74 68 65 20 6e 65 78 74 20 6d 75  p to the next mu
28130 6c 74 69 70 6c 65 20 6f 66 20 74 68 65 0d 0a 20  ltiple of the.. 
28140 20 20 20 20 20 20 20 2f 2f 2f 20 61 6c 69 67 6e         /// align
28150 6d 65 6e 74 2e 20 20 54 68 69 73 20 76 61 6c 75  ment.  This valu
28160 65 20 6d 61 79 20 65 6e 64 20 75 70 20 62 65 69  e may end up bei
28170 6e 67 20 74 68 65 20 73 61 6d 65 20 61 73 20 74  ng the same as t
28180 68 65 20 6f 72 69 67 69 6e 61 6c 0d 0a 20 20 20  he original..   
28190 20 20 20 20 20 2f 2f 2f 20 73 69 7a 65 2e 0d 0a       /// size...
281a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
281b0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
281c0 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6e  public static in
281d0 74 20 52 6f 75 6e 64 55 70 28 0d 0a 20 20 20 20  t RoundUp(..    
281e0 20 20 20 20 20 20 20 20 69 6e 74 20 73 69 7a 65          int size
281f0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ,..            i
28200 6e 74 20 61 6c 69 67 6e 6d 65 6e 74 0d 0a 20 20  nt alignment..  
28210 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
28220 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
28230 20 20 20 20 69 6e 74 20 61 6c 69 67 6e 6d 65 6e      int alignmen
28240 74 4d 69 6e 75 73 4f 6e 65 20 3d 20 61 6c 69 67  tMinusOne = alig
28250 6e 6d 65 6e 74 20 2d 20 31 3b 0d 0a 20 20 20 20  nment - 1;..    
28260 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
28270 28 73 69 7a 65 20 2b 20 61 6c 69 67 6e 6d 65 6e  (size + alignmen
28280 74 4d 69 6e 75 73 4f 6e 65 29 20 26 20 7e 61 6c  tMinusOne) & ~al
28290 69 67 6e 6d 65 6e 74 4d 69 6e 75 73 4f 6e 65 29  ignmentMinusOne)
282a0 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
282b0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
282c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
282d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
282e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
282f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
28300 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
28310 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
28320 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73    /// Determines
28330 20 74 68 65 20 6f 66 66 73 65 74 2c 20 69 6e 20   the offset, in 
28340 62 79 74 65 73 2c 20 6f 66 20 74 68 65 20 6e 65  bytes, of the ne
28350 78 74 20 73 74 72 75 63 74 75 72 65 20 6d 65 6d  xt structure mem
28360 62 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ber...        //
28370 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
28380 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
28390 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d   name="offset">.
283a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
283b0 20 6f 66 66 73 65 74 2c 20 69 6e 20 62 79 74 65   offset, in byte
283c0 73 2c 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e  s, of the curren
283d0 74 20 73 74 72 75 63 74 75 72 65 20 6d 65 6d 62  t structure memb
283e0 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  er...        ///
283f0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
28400 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
28410 6d 65 3d 22 73 69 7a 65 22 3e 0d 0a 20 20 20 20  me="size">..    
28420 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 69 7a 65      /// The size
28430 2c 20 69 6e 20 62 79 74 65 73 2c 20 6f 66 20 74  , in bytes, of t
28440 68 65 20 63 75 72 72 65 6e 74 20 73 74 72 75 63  he current struc
28450 74 75 72 65 20 6d 65 6d 62 65 72 2e 0d 0a 20 20  ture member...  
28460 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
28470 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
28480 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 6c 69  <param name="ali
28490 67 6e 6d 65 6e 74 22 3e 0d 0a 20 20 20 20 20 20  gnment">..      
284a0 20 20 2f 2f 2f 20 54 68 65 20 61 6c 69 67 6e 6d    /// The alignm
284b0 65 6e 74 2c 20 69 6e 20 62 79 74 65 73 2c 20 6f  ent, in bytes, o
284c0 66 20 74 68 65 20 6e 65 78 74 20 73 74 72 75 63  f the next struc
284d0 74 75 72 65 20 6d 65 6d 62 65 72 2e 0d 0a 20 20  ture member...  
284e0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
284f0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
28500 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
28510 20 20 20 2f 2f 2f 20 54 68 65 20 6f 66 66 73 65     /// The offse
28520 74 2c 20 69 6e 20 62 79 74 65 73 2c 20 6f 66 20  t, in bytes, of 
28530 74 68 65 20 6e 65 78 74 20 73 74 72 75 63 74 75  the next structu
28540 72 65 20 6d 65 6d 62 65 72 2e 0d 0a 20 20 20 20  re member...    
28550 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
28560 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  s>..        publ
28570 69 63 20 73 74 61 74 69 63 20 69 6e 74 20 4e 65  ic static int Ne
28580 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20  xtOffsetOf(..   
28590 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66           int off
285a0 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  set,..          
285b0 20 20 69 6e 74 20 73 69 7a 65 2c 0d 0a 20 20 20    int size,..   
285c0 20 20 20 20 20 20 20 20 20 69 6e 74 20 61 6c 69           int ali
285d0 67 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20 20  gnment..        
285e0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
285f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
28600 74 75 72 6e 20 52 6f 75 6e 64 55 70 28 6f 66 66  turn RoundUp(off
28610 73 65 74 20 2b 20 73 69 7a 65 2c 20 61 6c 69 67  set + size, alig
28620 6e 6d 65 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20  nment);..       
28630 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
28640 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
28650 20 20 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 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
286a0 20 20 20 20 20 23 72 65 67 69 6f 6e 20 4d 61 72       #region Mar
286b0 73 68 61 6c 20 52 65 61 64 20 48 65 6c 70 65 72  shal Read Helper
286c0 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
286d0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
286e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65 61  .        /// Rea
286f0 64 73 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22  ds a <see cref="
28700 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75 65 20  Int32" /> value 
28710 66 72 6f 6d 20 74 68 65 20 73 70 65 63 69 66 69  from the specifi
28720 65 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20  ed memory..     
28730 20 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e     /// location.
28740 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
28750 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
28760 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
28770 65 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20  e="pointer">..  
28780 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
28790 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22  ee cref="IntPtr"
287a0 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
287b0 6e 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e 67  nce representing
287c0 20 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20   the base..     
287d0 20 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f     /// memory lo
287e0 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  cation...       
287f0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
28800 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
28810 6d 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e  m name="offset">
28820 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
28830 65 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65 74  e integer offset
28840 20 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20 6d   from the base m
28850 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77  emory location w
28860 68 65 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20  here the..      
28870 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
28880 22 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75 65  "Int32" /> value
28890 20 74 6f 20 62 65 20 72 65 61 64 20 69 73 20 6c   to be read is l
288a0 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20 20 20 20  ocated...       
288b0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
288c0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
288d0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
288e0 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
288f0 22 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75 65  "Int32" /> value
28900 20 61 74 20 74 68 65 20 73 70 65 63 69 66 69 65   at the specifie
28910 64 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f  d memory locatio
28920 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  n...        /// 
28930 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
28940 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
28950 63 20 69 6e 74 20 52 65 61 64 49 6e 74 33 32 28  c int ReadInt32(
28960 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
28970 74 50 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a 20  tPtr pointer,.. 
28980 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f             int o
28990 66 66 73 65 74 0d 0a 20 20 20 20 20 20 20 20 20  ffset..         
289a0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
289b0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
289c0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
289d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
289e0 75 72 6e 20 4d 61 72 73 68 61 6c 2e 52 65 61 64  urn Marshal.Read
289f0 49 6e 74 33 32 28 70 6f 69 6e 74 65 72 2c 20 6f  Int32(pointer, o
28a00 66 66 73 65 74 29 3b 0d 0a 23 65 6c 73 65 0d 0a  ffset);..#else..
28a10 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
28a20 72 6e 20 4d 61 72 73 68 61 6c 2e 52 65 61 64 49  rn Marshal.ReadI
28a30 6e 74 33 32 28 49 6e 74 50 74 72 46 6f 72 4f 66  nt32(IntPtrForOf
28a40 66 73 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f 66  fset(pointer, of
28a50 66 73 65 74 29 29 3b 0d 0a 23 65 6e 64 69 66 0d  fset));..#endif.
28a60 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
28a70 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
28a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
28ac0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
28ad0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
28ae0 2f 2f 2f 20 52 65 61 64 73 20 61 20 3c 73 65 65  /// Reads a <see
28af0 20 63 72 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f   cref="Double" /
28b00 3e 20 76 61 6c 75 65 20 66 72 6f 6d 20 74 68 65  > value from the
28b10 20 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72   specified memor
28b20 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c  y..        /// l
28b30 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ocation...      
28b40 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
28b50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
28b60 61 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74  aram name="point
28b70 65 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  er">..        //
28b80 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
28b90 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65  "IntPtr" /> obje
28ba0 63 74 20 69 6e 73 74 61 6e 63 65 20 72 65 70 72  ct instance repr
28bb0 65 73 65 6e 74 69 6e 67 20 74 68 65 20 62 61 73  esenting the bas
28bc0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d  e..        /// m
28bd0 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d  emory location..
28be0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
28bf0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
28c00 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
28c10 6f 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20  offset">..      
28c20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67 65    /// The intege
28c30 72 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68  r offset from th
28c40 65 20 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f  e base memory lo
28c50 63 61 74 69 6f 6e 20 77 68 65 72 65 20 74 68 65  cation where the
28c60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
28c70 65 65 20 63 72 65 66 3d 22 44 6f 75 62 6c 65 22  ee cref="Double"
28c80 20 2f 3e 20 74 6f 20 62 65 20 72 65 61 64 20 69   /> to be read i
28c90 73 20 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20  s located...    
28ca0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
28cb0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
28cc0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
28cd0 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
28ce0 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f 3e 20 76  ef="Double" /> v
28cf0 61 6c 75 65 20 61 74 20 74 68 65 20 73 70 65 63  alue at the spec
28d00 69 66 69 65 64 20 6d 65 6d 6f 72 79 20 6c 6f 63  ified memory loc
28d10 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ation...        
28d20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
28d30 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
28d40 74 61 74 69 63 20 64 6f 75 62 6c 65 20 52 65 61  tatic double Rea
28d50 64 44 6f 75 62 6c 65 28 0d 0a 20 20 20 20 20 20  dDouble(..      
28d60 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 6f 69        IntPtr poi
28d70 6e 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20  nter,..         
28d80 20 20 20 69 6e 74 20 6f 66 66 73 65 74 0d 0a 20     int offset.. 
28d90 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
28da0 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c        {..#if !PL
28db0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
28dc0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
28dd0 20 20 20 20 20 72 65 74 75 72 6e 20 42 69 74 43       return BitC
28de0 6f 6e 76 65 72 74 65 72 2e 49 6e 74 36 34 42 69  onverter.Int64Bi
28df0 74 73 54 6f 44 6f 75 62 6c 65 28 4d 61 72 73 68  tsToDouble(Marsh
28e00 61 6c 2e 52 65 61 64 49 6e 74 36 34 28 0d 0a 20  al.ReadInt64(.. 
28e10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
28e20 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 29  ointer, offset))
28e30 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
28e40 20 20 20 20 20 20 72 65 74 75 72 6e 20 42 69 74        return Bit
28e50 43 6f 6e 76 65 72 74 65 72 2e 54 6f 44 6f 75 62  Converter.ToDoub
28e60 6c 65 28 42 69 74 43 6f 6e 76 65 72 74 65 72 2e  le(BitConverter.
28e70 47 65 74 42 79 74 65 73 28 0d 0a 20 20 20 20 20  GetBytes(..     
28e80 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68             Marsh
28e90 61 6c 2e 52 65 61 64 49 6e 74 36 34 28 49 6e 74  al.ReadInt64(Int
28ea0 50 74 72 46 6f 72 4f 66 66 73 65 74 28 70 6f 69  PtrForOffset(poi
28eb0 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 29 29 2c  nter, offset))),
28ec0 20 30 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20   0);..#endif..  
28ed0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
28ee0 20 20 20 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 2f 2f 2f 2f 2f 2f 2f  ////////////////
28f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
28f30 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
28f40 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
28f50 20 52 65 61 64 73 20 61 6e 20 3c 73 65 65 20 63   Reads an <see c
28f60 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20  ref="IntPtr" /> 
28f70 76 61 6c 75 65 20 66 72 6f 6d 20 74 68 65 20 73  value from the s
28f80 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72 79 0d  pecified memory.
28f90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 6f 63  .        /// loc
28fa0 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ation...        
28fb0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
28fc0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
28fd0 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74 65 72  am name="pointer
28fe0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
28ff0 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  The <see cref="I
29000 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74  ntPtr" /> object
29010 20 69 6e 73 74 61 6e 63 65 20 72 65 70 72 65 73   instance repres
29020 65 6e 74 69 6e 67 20 74 68 65 20 62 61 73 65 0d  enting the base.
29030 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 6d  .        /// mem
29040 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20  ory location... 
29050 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
29060 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
29070 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 66   <param name="of
29080 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20 20 20  fset">..        
29090 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67 65 72 20  /// The integer 
290a0 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68 65 20  offset from the 
290b0 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f 63 61  base memory loca
290c0 74 69 6f 6e 20 77 68 65 72 65 20 74 68 65 0d 0a  tion where the..
290d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
290e0 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f   cref="IntPtr" /
290f0 3e 20 76 61 6c 75 65 20 74 6f 20 62 65 20 72 65  > value to be re
29100 61 64 20 69 73 20 6c 6f 63 61 74 65 64 2e 0d 0a  ad is located...
29110 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
29120 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
29130 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
29140 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
29150 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20  e cref="IntPtr" 
29160 2f 3e 20 76 61 6c 75 65 20 61 74 20 74 68 65 20  /> value at the 
29170 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72 79  specified memory
29180 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20   location...    
29190 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
291a0 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  s>..        publ
291b0 69 63 20 73 74 61 74 69 63 20 49 6e 74 50 74 72  ic static IntPtr
291c0 20 52 65 61 64 49 6e 74 50 74 72 28 0d 0a 20 20   ReadIntPtr(..  
291d0 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
291e0 20 70 6f 69 6e 74 65 72 2c 0d 0a 20 20 20 20 20   pointer,..     
291f0 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66 73 65         int offse
29200 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  t..            )
29210 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
29220 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
29230 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
29240 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
29250 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 50  Marshal.ReadIntP
29260 74 72 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73  tr(pointer, offs
29270 65 74 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  et);..#else..   
29280 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
29290 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 50  Marshal.ReadIntP
292a0 74 72 28 49 6e 74 50 74 72 46 6f 72 4f 66 66 73  tr(IntPtrForOffs
292b0 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73  et(pointer, offs
292c0 65 74 29 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  et));..#endif.. 
292d0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
292e0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
292f0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
29300 2f 2f 2f 2f 2f 2f 2f 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 0d  ///////////////.
29340 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
29350 6f 6e 20 4d 61 72 73 68 61 6c 20 57 72 69 74 65  on Marshal Write
29360 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d   Helper Methods.
29370 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
29380 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
29390 2f 2f 2f 20 57 72 69 74 65 73 20 61 6e 20 3c 73  /// Writes an <s
293a0 65 65 20 63 72 65 66 3d 22 49 6e 74 33 32 22 20  ee cref="Int32" 
293b0 2f 3e 20 76 61 6c 75 65 20 74 6f 20 74 68 65 20  /> value to the 
293c0 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72 79  specified memory
293d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 6f  ..        /// lo
293e0 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  cation...       
293f0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
29400 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
29410 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74 65  ram name="pointe
29420 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  r">..        ///
29430 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
29440 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63  IntPtr" /> objec
29450 74 20 69 6e 73 74 61 6e 63 65 20 72 65 70 72 65  t instance repre
29460 73 65 6e 74 69 6e 67 20 74 68 65 20 62 61 73 65  senting the base
29470 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65  ..        /// me
29480 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a  mory location...
29490 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
294a0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
294b0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f  / <param name="o
294c0 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20 20  ffset">..       
294d0 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67 65 72   /// The integer
294e0 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68 65   offset from the
294f0 20 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f 63   base memory loc
29500 61 74 69 6f 6e 20 77 68 65 72 65 20 74 68 65 0d  ation where the.
29510 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
29520 65 20 63 72 65 66 3d 22 49 6e 74 33 32 22 20 2f  e cref="Int32" /
29530 3e 20 76 61 6c 75 65 20 74 6f 20 62 65 20 77 72  > value to be wr
29540 69 74 74 65 6e 20 69 73 20 6c 6f 63 61 74 65 64  itten is located
29550 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
29560 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
29570 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
29580 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20  ="value">..     
29590 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
295a0 63 72 65 66 3d 22 49 6e 74 33 32 22 20 2f 3e 20  cref="Int32" /> 
295b0 76 61 6c 75 65 20 74 6f 20 77 72 69 74 65 2e 0d  value to write..
295c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
295d0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70  aram>..        p
295e0 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69  ublic static voi
295f0 64 20 57 72 69 74 65 49 6e 74 33 32 28 0d 0a 20  d WriteInt32(.. 
29600 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
29610 72 20 70 6f 69 6e 74 65 72 2c 0d 0a 20 20 20 20  r pointer,..    
29620 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66 73          int offs
29630 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  et,..           
29640 20 69 6e 74 20 76 61 6c 75 65 0d 0a 20 20 20 20   int value..    
29650 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
29660 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46     {..#if !PLATF
29670 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
29680 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
29690 20 20 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49    Marshal.WriteI
296a0 6e 74 33 32 28 70 6f 69 6e 74 65 72 2c 20 6f 66  nt32(pointer, of
296b0 66 73 65 74 2c 20 76 61 6c 75 65 29 3b 0d 0a 23  fset, value);..#
296c0 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
296d0 20 20 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49    Marshal.WriteI
296e0 6e 74 33 32 28 49 6e 74 50 74 72 46 6f 72 4f 66  nt32(IntPtrForOf
296f0 66 73 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f 66  fset(pointer, of
29700 66 73 65 74 29 2c 20 76 61 6c 75 65 29 3b 0d 0a  fset), value);..
29710 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
29720 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29770 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
29780 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
29790 20 20 20 20 20 20 20 2f 2f 2f 20 57 72 69 74 65         /// Write
297a0 73 20 61 6e 20 3c 73 65 65 20 63 72 65 66 3d 22  s an <see cref="
297b0 49 6e 74 36 34 22 20 2f 3e 20 76 61 6c 75 65 20  Int64" /> value 
297c0 74 6f 20 74 68 65 20 73 70 65 63 69 66 69 65 64  to the specified
297d0 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20 20   memory..       
297e0 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a   /// location...
297f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
29800 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
29810 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
29820 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20 20 20  "pointer">..    
29830 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
29840 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f   cref="IntPtr" /
29850 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
29860 65 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 74  e representing t
29870 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20 20  he base..       
29880 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63 61   /// memory loca
29890 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  tion...        /
298a0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
298b0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
298c0 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d 0a  name="offset">..
298d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
298e0 69 6e 74 65 67 65 72 20 6f 66 66 73 65 74 20 66  integer offset f
298f0 72 6f 6d 20 74 68 65 20 62 61 73 65 20 6d 65 6d  rom the base mem
29900 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77 68 65  ory location whe
29910 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  re the..        
29920 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
29930 6e 74 36 34 22 20 2f 3e 20 76 61 6c 75 65 20 74  nt64" /> value t
29940 6f 20 62 65 20 77 72 69 74 74 65 6e 20 69 73 20  o be written is 
29950 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20 20 20  located...      
29960 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
29970 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
29980 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e  am name="value">
29990 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
299a0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74  e <see cref="Int
299b0 36 34 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20  64" /> value to 
299c0 77 72 69 74 65 2e 0d 0a 20 20 20 20 20 20 20 20  write...        
299d0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
299e0 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
299f0 74 69 63 20 76 6f 69 64 20 57 72 69 74 65 49 6e  tic void WriteIn
29a00 74 36 34 28 0d 0a 20 20 20 20 20 20 20 20 20 20  t64(..          
29a10 20 20 49 6e 74 50 74 72 20 70 6f 69 6e 74 65 72    IntPtr pointer
29a20 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ,..            i
29a30 6e 74 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20  nt offset,..    
29a40 20 20 20 20 20 20 20 20 6c 6f 6e 67 20 76 61 6c          long val
29a50 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ue..            
29a60 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
29a70 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
29a80 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
29a90 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61            Marsha
29aa0 6c 2e 57 72 69 74 65 49 6e 74 36 34 28 70 6f 69  l.WriteInt64(poi
29ab0 6e 74 65 72 2c 20 6f 66 66 73 65 74 2c 20 76 61  nter, offset, va
29ac0 6c 75 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  lue);..#else..  
29ad0 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61            Marsha
29ae0 6c 2e 57 72 69 74 65 49 6e 74 36 34 28 49 6e 74  l.WriteInt64(Int
29af0 50 74 72 46 6f 72 4f 66 66 73 65 74 28 70 6f 69  PtrForOffset(poi
29b00 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 2c 20 76  nter, offset), v
29b10 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  alue);..#endif..
29b20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
29b30 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
29b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
29b80 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
29b90 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
29ba0 2f 2f 20 57 72 69 74 65 73 20 61 20 3c 73 65 65  // Writes a <see
29bb0 20 63 72 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f   cref="Double" /
29bc0 3e 20 76 61 6c 75 65 20 74 6f 20 74 68 65 20 73  > value to the s
29bd0 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72 79 0d  pecified memory.
29be0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 6f 63  .        /// loc
29bf0 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ation...        
29c00 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
29c10 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
29c20 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74 65 72  am name="pointer
29c30 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
29c40 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  The <see cref="I
29c50 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74  ntPtr" /> object
29c60 20 69 6e 73 74 61 6e 63 65 20 72 65 70 72 65 73   instance repres
29c70 65 6e 74 69 6e 67 20 74 68 65 20 62 61 73 65 0d  enting the base.
29c80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 6d  .        /// mem
29c90 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20  ory location... 
29ca0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
29cb0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
29cc0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 66   <param name="of
29cd0 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20 20 20  fset">..        
29ce0 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67 65 72 20  /// The integer 
29cf0 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68 65 20  offset from the 
29d00 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f 63 61  base memory loca
29d10 74 69 6f 6e 20 77 68 65 72 65 20 74 68 65 0d 0a  tion where the..
29d20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
29d30 20 63 72 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f   cref="Double" /
29d40 3e 20 76 61 6c 75 65 20 74 6f 20 62 65 20 77 72  > value to be wr
29d50 69 74 74 65 6e 20 69 73 20 6c 6f 63 61 74 65 64  itten is located
29d60 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
29d70 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
29d80 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
29d90 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20  ="value">..     
29da0 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
29db0 63 72 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f 3e  cref="Double" />
29dc0 20 76 61 6c 75 65 20 74 6f 20 77 72 69 74 65 2e   value to write.
29dd0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
29de0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
29df0 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f  public static vo
29e00 69 64 20 57 72 69 74 65 44 6f 75 62 6c 65 28 0d  id WriteDouble(.
29e10 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
29e20 50 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a 20 20  Ptr pointer,..  
29e30 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66            int of
29e40 66 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  fset,..         
29e50 20 20 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 0d     double value.
29e60 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
29e70 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
29e80 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
29e90 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
29ea0 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 57         Marshal.W
29eb0 72 69 74 65 49 6e 74 36 34 28 70 6f 69 6e 74 65  riteInt64(pointe
29ec0 72 2c 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20  r, offset,..    
29ed0 20 20 20 20 20 20 20 20 20 20 20 20 42 69 74 43              BitC
29ee0 6f 6e 76 65 72 74 65 72 2e 44 6f 75 62 6c 65 54  onverter.DoubleT
29ef0 6f 49 6e 74 36 34 42 69 74 73 28 76 61 6c 75 65  oInt64Bits(value
29f00 29 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  ));..#else..    
29f10 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e          Marshal.
29f20 57 72 69 74 65 49 6e 74 36 34 28 49 6e 74 50 74  WriteInt64(IntPt
29f30 72 46 6f 72 4f 66 66 73 65 74 28 70 6f 69 6e 74  rForOffset(point
29f40 65 72 2c 20 6f 66 66 73 65 74 29 2c 0d 0a 20 20  er, offset),..  
29f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 69                Bi
29f60 74 43 6f 6e 76 65 72 74 65 72 2e 54 6f 49 6e 74  tConverter.ToInt
29f70 36 34 28 42 69 74 43 6f 6e 76 65 72 74 65 72 2e  64(BitConverter.
29f80 47 65 74 42 79 74 65 73 28 76 61 6c 75 65 29 2c  GetBytes(value),
29f90 20 30 29 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20   0));..#endif.. 
29fa0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
29fb0 20 20 20 20 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 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2a000 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
2a010 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
2a020 2f 20 57 72 69 74 65 73 20 61 20 3c 73 65 65 20  / Writes a <see 
2a030 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e  cref="IntPtr" />
2a040 20 76 61 6c 75 65 20 74 6f 20 74 68 65 20 73 70   value to the sp
2a050 65 63 69 66 69 65 64 20 6d 65 6d 6f 72 79 0d 0a  ecified memory..
2a060 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 6f 63 61          /// loca
2a070 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  tion...        /
2a080 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2a090 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
2a0a0 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74 65 72 22  m name="pointer"
2a0b0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
2a0c0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  he <see cref="In
2a0d0 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20  tPtr" /> object 
2a0e0 69 6e 73 74 61 6e 63 65 20 72 65 70 72 65 73 65  instance represe
2a0f0 6e 74 69 6e 67 20 74 68 65 20 62 61 73 65 0d 0a  nting the base..
2a100 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 6d 6f          /// memo
2a110 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20  ry location...  
2a120 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
2a130 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
2a140 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 66 66  <param name="off
2a150 73 65 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  set">..        /
2a160 2f 2f 20 54 68 65 20 69 6e 74 65 67 65 72 20 6f  // The integer o
2a170 66 66 73 65 74 20 66 72 6f 6d 20 74 68 65 20 62  ffset from the b
2a180 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74  ase memory locat
2a190 69 6f 6e 20 77 68 65 72 65 20 74 68 65 0d 0a 20  ion where the.. 
2a1a0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
2a1b0 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e  cref="IntPtr" />
2a1c0 20 76 61 6c 75 65 20 74 6f 20 62 65 20 77 72 69   value to be wri
2a1d0 74 74 65 6e 20 69 73 20 6c 6f 63 61 74 65 64 2e  tten is located.
2a1e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
2a1f0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
2a200 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
2a210 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20  "value">..      
2a220 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
2a230 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20  ref="IntPtr" /> 
2a240 76 61 6c 75 65 20 74 6f 20 77 72 69 74 65 2e 0d  value to write..
2a250 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
2a260 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70  aram>..        p
2a270 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69  ublic static voi
2a280 64 20 57 72 69 74 65 49 6e 74 50 74 72 28 0d 0a  d WriteIntPtr(..
2a290 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
2a2a0 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a 20 20 20  tr pointer,..   
2a2b0 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66           int off
2a2c0 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  set,..          
2a2d0 20 20 49 6e 74 50 74 72 20 76 61 6c 75 65 0d 0a    IntPtr value..
2a2e0 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
2a2f0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50         {..#if !P
2a300 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
2a310 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
2a320 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 57 72        Marshal.Wr
2a330 69 74 65 49 6e 74 50 74 72 28 70 6f 69 6e 74 65  iteIntPtr(pointe
2a340 72 2c 20 6f 66 66 73 65 74 2c 20 76 61 6c 75 65  r, offset, value
2a350 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  );..#else..     
2a360 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 57         Marshal.W
2a370 72 69 74 65 49 6e 74 50 74 72 28 49 6e 74 50 74  riteIntPtr(IntPt
2a380 72 46 6f 72 4f 66 66 73 65 74 28 70 6f 69 6e 74  rForOffset(point
2a390 65 72 2c 20 6f 66 66 73 65 74 29 2c 20 76 61 6c  er, offset), val
2a3a0 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ue);..#endif..  
2a3b0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2a3c0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
2a3d0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2a3e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a3f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2a420 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
2a430 6e 20 4f 62 6a 65 63 74 20 48 65 6c 70 65 72 20  n Object Helper 
2a440 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20  Methods..       
2a450 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
2a460 20 20 20 20 20 20 20 20 2f 2f 2f 20 47 65 6e 65          /// Gene
2a470 72 61 74 65 73 20 61 20 68 61 73 68 20 63 6f 64  rates a hash cod
2a480 65 20 76 61 6c 75 65 20 66 6f 72 20 74 68 65 20  e value for the 
2a490 6f 62 6a 65 63 74 2e 0d 0a 20 20 20 20 20 20 20  object...       
2a4a0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2a4b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
2a4c0 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22  ram name="value"
2a4d0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
2a4e0 68 65 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  he object instan
2a4f0 63 65 20 75 73 65 64 20 74 6f 20 63 61 6c 63 75  ce used to calcu
2a500 6c 61 74 65 20 74 68 65 20 68 61 73 68 20 63 6f  late the hash co
2a510 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de...        ///
2a520 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
2a530 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2a540 6d 65 3d 22 69 64 65 6e 74 69 74 79 22 3e 0d 0a  me="identity">..
2a550 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d          /// Non-
2a560 7a 65 72 6f 20 69 66 20 64 69 66 66 65 72 65 6e  zero if differen
2a570 74 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  t object instanc
2a580 65 73 20 77 69 74 68 20 74 68 65 20 73 61 6d 65  es with the same
2a590 20 76 61 6c 75 65 20 73 68 6f 75 6c 64 0d 0a 20   value should.. 
2a5a0 20 20 20 20 20 20 20 2f 2f 2f 20 67 65 6e 65 72         /// gener
2a5b0 61 74 65 20 64 69 66 66 65 72 65 6e 74 20 68 61  ate different ha
2a5c0 73 68 20 63 6f 64 65 73 2c 20 77 68 65 72 65 20  sh codes, where 
2a5d0 61 70 70 6c 69 63 61 62 6c 65 2e 20 20 54 68 69  applicable.  Thi
2a5e0 73 20 70 61 72 61 6d 65 74 65 72 0d 0a 20 20 20  s parameter..   
2a5f0 20 20 20 20 20 2f 2f 2f 20 68 61 73 20 6e 6f 20       /// has no 
2a600 65 66 66 65 63 74 20 6f 6e 20 74 68 65 20 2e 4e  effect on the .N
2a610 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65  ET Compact Frame
2a620 77 6f 72 6b 2e 0d 0a 20 20 20 20 20 20 20 20 2f  work...        /
2a630 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
2a640 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
2a650 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
2a660 54 68 65 20 68 61 73 68 20 63 6f 64 65 20 76 61  The hash code va
2a670 6c 75 65 20 2d 4f 52 2d 20 7a 65 72 6f 20 69 66  lue -OR- zero if
2a680 20 74 68 65 20 6f 62 6a 65 63 74 20 69 73 20 6e   the object is n
2a690 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ull...        //
2a6a0 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
2a6b0 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
2a6c0 74 69 63 20 69 6e 74 20 47 65 74 48 61 73 68 43  tic int GetHashC
2a6d0 6f 64 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ode(..          
2a6e0 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 2c 0d    object value,.
2a6f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f  .            boo
2a700 6c 20 69 64 65 6e 74 69 74 79 0d 0a 20 20 20 20  l identity..    
2a710 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
2a720 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46     {..#if !PLATF
2a730 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
2a740 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
2a750 20 20 69 66 20 28 69 64 65 6e 74 69 74 79 29 0d    if (identity).
2a760 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a770 20 72 65 74 75 72 6e 20 52 75 6e 74 69 6d 65 48   return RuntimeH
2a780 65 6c 70 65 72 73 2e 47 65 74 48 61 73 68 43 6f  elpers.GetHashCo
2a790 64 65 28 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64  de(value);..#end
2a7a0 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  if....          
2a7b0 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e    if (value == n
2a7c0 75 6c 6c 29 20 72 65 74 75 72 6e 20 30 3b 0d 0a  ull) return 0;..
2a7d0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2a7e0 72 6e 20 76 61 6c 75 65 2e 47 65 74 48 61 73 68  rn value.GetHash
2a7f0 43 6f 64 65 28 29 3b 0d 0a 20 20 20 20 20 20 20  Code();..       
2a800 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
2a810 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20  region..    }.. 
2a820 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
2a830 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
2a840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a880 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
2a890 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20 42 61 73  SQLiteModule Bas
2a8a0 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f  e Class..    ///
2a8b0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2a8c0 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20 72  /// This class r
2a8d0 65 70 72 65 73 65 6e 74 73 20 61 20 6d 61 6e 61  epresents a mana
2a8e0 67 65 64 20 76 69 72 74 75 61 6c 20 74 61 62 6c  ged virtual tabl
2a8f0 65 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65 6d 65  e module impleme
2a900 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f  ntation...    //
2a910 2f 20 49 74 20 69 73 20 6e 6f 74 20 73 65 61 6c  / It is not seal
2a920 65 64 20 61 6e 64 20 6d 75 73 74 20 62 65 20 75  ed and must be u
2a930 73 65 64 20 61 73 20 74 68 65 20 62 61 73 65 20  sed as the base 
2a940 63 6c 61 73 73 20 66 6f 72 20 61 6e 79 0d 0a 20  class for any.. 
2a950 20 20 20 2f 2f 2f 20 75 73 65 72 2d 64 65 66 69     /// user-defi
2a960 6e 65 64 20 76 69 72 74 75 61 6c 20 74 61 62 6c  ned virtual tabl
2a970 65 20 6d 6f 64 75 6c 65 20 63 6c 61 73 73 65 73  e module classes
2a980 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 69 6e 20   implemented in 
2a990 6d 61 6e 61 67 65 64 20 63 6f 64 65 2e 0d 0a 20  managed code... 
2a9a0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
2a9b0 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 61 62  >..    public ab
2a9c0 73 74 72 61 63 74 20 63 6c 61 73 73 20 53 51 4c  stract class SQL
2a9d0 69 74 65 4d 6f 64 75 6c 65 20 3a 0d 0a 20 20 20  iteModule :..   
2a9e0 20 20 20 20 20 20 20 20 20 49 53 51 4c 69 74 65           ISQLite
2a9f0 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2c 20 2f  ManagedModule, /
2aa00 2a 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  *ISQLiteNativeMo
2aa10 64 75 6c 65 2c 2a 2f 0d 0a 20 20 20 20 20 20 20  dule,*/..       
2aa20 20 20 20 20 20 49 44 69 73 70 6f 73 61 62 6c 65       IDisposable
2aa30 20 2f 2a 20 4e 4f 54 20 53 45 41 4c 45 44 20 2a   /* NOT SEALED *
2aa40 2f 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  /..    {..      
2aa50 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65    #region SQLite
2aa60 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20 50 72 69  NativeModule Pri
2aa70 76 61 74 65 20 43 6c 61 73 73 0d 0a 20 20 20 20  vate Class..    
2aa80 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2aa90 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
2aaa0 68 69 73 20 63 6c 61 73 73 20 69 6d 70 6c 65 6d  his class implem
2aab0 65 6e 74 73 20 74 68 65 20 3c 73 65 65 20 63 72  ents the <see cr
2aac0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
2aad0 65 4d 6f 64 75 6c 65 22 20 2f 3e 0d 0a 20 20 20  eModule" />..   
2aae0 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65 72 66 61       /// interfa
2aaf0 63 65 20 62 79 20 66 6f 72 77 61 72 64 69 6e 67  ce by forwarding
2ab00 20 74 68 6f 73 65 20 6d 65 74 68 6f 64 20 63 61   those method ca
2ab10 6c 6c 73 20 74 6f 20 74 68 65 0d 0a 20 20 20 20  lls to the..    
2ab20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
2ab30 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22  f="SQLiteModule"
2ab40 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
2ab50 6e 63 65 20 69 74 20 63 6f 6e 74 61 69 6e 73 2e  nce it contains.
2ab60 20 20 49 66 20 74 68 65 0d 0a 20 20 20 20 20 20    If the..      
2ab70 20 20 2f 2f 2f 20 63 6f 6e 74 61 69 6e 65 64 20    /// contained 
2ab80 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
2ab90 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65  eModule" /> obje
2aba0 63 74 20 69 6e 73 74 61 6e 63 65 20 69 73 20 6e  ct instance is n
2abb0 75 6c 6c 2c 20 61 6c 6c 0d 0a 20 20 20 20 20 20  ull, all..      
2abc0 20 20 2f 2f 2f 20 74 68 65 20 3c 73 65 65 20 63    /// the <see c
2abd0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
2abe0 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6d 65 74  veModule" /> met
2abf0 68 6f 64 73 20 73 69 6d 70 6c 79 20 67 65 6e 65  hods simply gene
2ac00 72 61 74 65 20 61 6e 0d 0a 20 20 20 20 20 20 20  rate an..       
2ac10 20 2f 2f 2f 20 65 72 72 6f 72 2e 0d 0a 20 20 20   /// error...   
2ac20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
2ac30 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
2ac40 76 61 74 65 20 73 65 61 6c 65 64 20 63 6c 61 73  vate sealed clas
2ac50 73 20 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  s SQLiteNativeMo
2ac60 64 75 6c 65 20 3a 0d 0a 20 20 20 20 20 20 20 20  dule :..        
2ac70 20 20 20 20 20 20 20 20 49 53 51 4c 69 74 65 4e          ISQLiteN
2ac80 61 74 69 76 65 4d 6f 64 75 6c 65 2c 20 49 44 69  ativeModule, IDi
2ac90 73 70 6f 73 61 62 6c 65 0d 0a 20 20 20 20 20 20  sposable..      
2aca0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2acb0 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65   #region Private
2acc0 20 43 6f 6e 73 74 61 6e 74 73 0d 0a 20 20 20 20   Constants..    
2acd0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
2ace0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
2acf0 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74     /// This is t
2ad00 68 65 20 76 61 6c 75 65 20 74 68 61 74 20 69 73  he value that is
2ad10 20 61 6c 77 61 79 73 20 75 73 65 64 20 66 6f 72   always used for
2ad20 20 74 68 65 20 22 6c 6f 67 45 72 72 6f 72 73 22   the "logErrors"
2ad30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2ad40 2f 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 74  / parameter to t
2ad50 68 65 20 76 61 72 69 6f 75 73 20 73 74 61 74 69  he various stati
2ad60 63 20 65 72 72 6f 72 20 68 61 6e 64 6c 69 6e 67  c error handling
2ad70 20 6d 65 74 68 6f 64 73 20 70 72 6f 76 69 64 65   methods provide
2ad80 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  d..            /
2ad90 2f 2f 20 62 79 20 74 68 65 20 3c 73 65 65 20 63  // by the <see c
2ada0 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c  ref="SQLiteModul
2adb0 65 22 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20 20  e" /> class...  
2adc0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2add0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2ade0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f        private co
2adf0 6e 73 74 20 62 6f 6f 6c 20 44 65 66 61 75 6c 74  nst bool Default
2ae00 4c 6f 67 45 72 72 6f 72 73 20 3d 20 74 72 75 65  LogErrors = true
2ae10 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2ae20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2ae30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ae40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ae50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ae60 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2ae70 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2ae80 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2ae90 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20 76  // This is the v
2aea0 61 6c 75 65 20 74 68 61 74 20 69 73 20 61 6c 77  alue that is alw
2aeb0 61 79 73 20 75 73 65 64 20 66 6f 72 20 74 68 65  ays used for the
2aec0 20 22 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73 22   "logExceptions"
2aed0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2aee0 2f 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 74  / parameter to t
2aef0 68 65 20 76 61 72 69 6f 75 73 20 73 74 61 74 69  he various stati
2af00 63 20 65 72 72 6f 72 20 68 61 6e 64 6c 69 6e 67  c error handling
2af10 20 6d 65 74 68 6f 64 73 20 70 72 6f 76 69 64 65   methods provide
2af20 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  d..            /
2af30 2f 2f 20 62 79 20 74 68 65 20 3c 73 65 65 20 63  // by the <see c
2af40 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c  ref="SQLiteModul
2af50 65 22 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20 20  e" /> class...  
2af60 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2af70 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2af80 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f        private co
2af90 6e 73 74 20 62 6f 6f 6c 20 44 65 66 61 75 6c 74  nst bool Default
2afa0 4c 6f 67 45 78 63 65 70 74 69 6f 6e 73 20 3d 20  LogExceptions = 
2afb0 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  true;....       
2afc0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2afd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2afe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b000 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2b010 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
2b020 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
2b030 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74     /// This is t
2b040 68 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65  he error message
2b050 20 74 65 78 74 20 75 73 65 64 20 77 68 65 6e 20   text used when 
2b060 74 68 65 20 63 6f 6e 74 61 69 6e 65 64 0d 0a 20  the contained.. 
2b070 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2b080 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
2b090 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63  Module" /> objec
2b0a0 74 20 69 6e 73 74 61 6e 63 65 20 69 73 20 6e 6f  t instance is no
2b0b0 74 20 61 76 61 69 6c 61 62 6c 65 0d 0a 20 20 20  t available..   
2b0c0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 66 6f 72           /// for
2b0d0 20 61 6e 79 20 72 65 61 73 6f 6e 2e 0d 0a 20 20   any reason...  
2b0e0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2b0f0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2b100 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f        private co
2b110 6e 73 74 20 73 74 72 69 6e 67 20 4d 6f 64 75 6c  nst string Modul
2b120 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 45 72 72  eNotAvailableErr
2b130 6f 72 4d 65 73 73 61 67 65 20 3d 0d 0a 20 20 20  orMessage =..   
2b140 20 20 20 20 20 20 20 20 20 20 20 20 20 22 6e 61               "na
2b150 74 69 76 65 20 6d 6f 64 75 6c 65 20 69 6d 70 6c  tive module impl
2b160 65 6d 65 6e 74 61 74 69 6f 6e 20 6e 6f 74 20 61  ementation not a
2b170 76 61 69 6c 61 62 6c 65 22 3b 0d 0a 20 20 20 20  vailable";..    
2b180 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
2b190 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  on....          
2b1a0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2b1b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b1c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b1d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b1e0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2b1f0 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69       #region Pri
2b200 76 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20 20  vate Data..     
2b210 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
2b220 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
2b230 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
2b240 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c  ref="SQLiteModul
2b250 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  e" /> object ins
2b260 74 61 6e 63 65 20 75 73 65 64 20 74 6f 20 70 72  tance used to pr
2b270 6f 76 69 64 65 0d 0a 20 20 20 20 20 20 20 20 20  ovide..         
2b280 20 20 20 2f 2f 2f 20 61 6e 20 69 6d 70 6c 65 6d     /// an implem
2b290 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20  entation of the 
2b2a0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
2b2b0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20  teNativeModule" 
2b2c0 2f 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  />..            
2b2d0 2f 2f 2f 20 69 6e 74 65 72 66 61 63 65 2e 0d 0a  /// interface...
2b2e0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2b2f0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
2b300 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
2b310 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20 6d 6f 64  SQLiteModule mod
2b320 75 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ule;..          
2b330 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
2b340 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
2b350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2b390 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ...            #
2b3a0 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 43 6f  region Public Co
2b3b0 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20  nstructors..    
2b3c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
2b3d0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
2b3e0 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74     /// Construct
2b3f0 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66  s an instance of
2b400 20 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20   this class...  
2b410 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2b420 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2b430 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
2b440 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d   name="module">.
2b450 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2b460 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
2b470 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e  SQLiteModule" />
2b480 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
2b490 20 75 73 65 64 20 74 6f 20 70 72 6f 76 69 64 65   used to provide
2b4a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2b4b0 2f 20 61 6e 20 69 6d 70 6c 65 6d 65 6e 74 61 74  / an implementat
2b4c0 69 6f 6e 20 6f 66 20 74 68 65 20 3c 73 65 65 20  ion of the <see 
2b4d0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
2b4e0 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 0d 0a 20  iveModule" />.. 
2b4f0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 69             /// i
2b500 6e 74 65 72 66 61 63 65 2e 0d 0a 20 20 20 20 20  nterface...     
2b510 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
2b520 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
2b530 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 4e 61   public SQLiteNa
2b540 74 69 76 65 4d 6f 64 75 6c 65 28 0d 0a 20 20 20  tiveModule(..   
2b550 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
2b560 69 74 65 4d 6f 64 75 6c 65 20 6d 6f 64 75 6c 65  iteModule module
2b570 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b580 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
2b590 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2b5a0 20 20 20 20 74 68 69 73 2e 6d 6f 64 75 6c 65 20      this.module 
2b5b0 3d 20 6d 6f 64 75 6c 65 3b 0d 0a 20 20 20 20 20  = module;..     
2b5c0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2b5d0 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
2b5e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2b5f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b630 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
2b640 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
2b650 74 65 20 53 74 61 74 69 63 20 4d 65 74 68 6f 64  te Static Method
2b660 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  s..            /
2b670 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
2b680 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2b690 74 73 20 74 68 65 20 74 61 62 6c 65 20 65 72 72  ts the table err
2b6a0 6f 72 20 6d 65 73 73 61 67 65 20 74 6f 20 6f 6e  or message to on
2b6b0 65 20 74 68 61 74 20 69 6e 64 69 63 61 74 65 73  e that indicates
2b6c0 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20   the native..   
2b6d0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 6f 64           /// mod
2b6e0 75 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  ule implementati
2b6f0 6f 6e 20 69 73 20 6e 6f 74 20 61 76 61 69 6c 61  on is not availa
2b700 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ble...          
2b710 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2b720 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2b730 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
2b740 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
2b750 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
2b760 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
2b770 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64  e sqlite3_vtab d
2b780 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65  erived structure
2b790 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2b7a0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
2b7b0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65           /// <re
2b7c0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
2b7d0 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75      /// The valu
2b7e0 65 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22  e of <see cref="
2b7f0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e  SQLiteErrorCode.
2b800 45 72 72 6f 72 22 20 2f 3e 2e 0d 0a 20 20 20 20  Error" />...    
2b810 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
2b820 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
2b830 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
2b840 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  ic SQLiteErrorCo
2b850 64 65 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69  de ModuleNotAvai
2b860 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72 28  lableTableError(
2b870 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b880 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a    IntPtr pVtab..
2b890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b8a0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
2b8b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b8c0 20 20 53 65 74 54 61 62 6c 65 45 72 72 6f 72 28    SetTableError(
2b8d0 6e 75 6c 6c 2c 20 70 56 74 61 62 2c 20 44 65 66  null, pVtab, Def
2b8e0 61 75 6c 74 4c 6f 67 45 72 72 6f 72 73 2c 0d 0a  aultLogErrors,..
2b8f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b900 20 20 20 20 44 65 66 61 75 6c 74 4c 6f 67 45 78      DefaultLogEx
2b910 63 65 70 74 69 6f 6e 73 2c 20 4d 6f 64 75 6c 65  ceptions, Module
2b920 4e 6f 74 41 76 61 69 6c 61 62 6c 65 45 72 72 6f  NotAvailableErro
2b930 72 4d 65 73 73 61 67 65 29 3b 0d 0a 0d 0a 20 20  rMessage);....  
2b940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2b950 74 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  turn SQLiteError
2b960 43 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20  Code.Error;..   
2b970 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
2b980 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
2b990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b9a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b9b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b9c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2b9d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2b9e0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2b9f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 74 73          /// Sets
2ba00 20 74 68 65 20 74 61 62 6c 65 20 65 72 72 6f 72   the table error
2ba10 20 6d 65 73 73 61 67 65 20 74 6f 20 6f 6e 65 20   message to one 
2ba20 74 68 61 74 20 69 6e 64 69 63 61 74 65 73 20 74  that indicates t
2ba30 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20  he native..     
2ba40 20 20 20 20 20 20 20 2f 2f 2f 20 6d 6f 64 75 6c         /// modul
2ba50 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e implementation
2ba60 20 69 73 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c   is not availabl
2ba70 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
2ba80 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
2ba90 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2baa0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75  <param name="pCu
2bab0 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20  rsor">..        
2bac0 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
2bad0 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
2bae0 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63  e sqlite3_vtab_c
2baf0 75 72 73 6f 72 20 64 65 72 69 76 65 64 0d 0a 20  ursor derived.. 
2bb00 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 73             /// s
2bb10 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20  tructure...     
2bb20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
2bb30 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
2bb40 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
2bb50 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2bb60 54 68 65 20 76 61 6c 75 65 20 6f 66 20 3c 73 65  The value of <se
2bb70 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 45 72  e cref="SQLiteEr
2bb80 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 22 20 2f  rorCode.Error" /
2bb90 3e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  >...            
2bba0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
2bbb0 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
2bbc0 61 74 65 20 73 74 61 74 69 63 20 53 51 4c 69 74  ate static SQLit
2bbd0 65 45 72 72 6f 72 43 6f 64 65 20 4d 6f 64 75 6c  eErrorCode Modul
2bbe0 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43 75 72  eNotAvailableCur
2bbf0 73 6f 72 45 72 72 6f 72 28 0d 0a 20 20 20 20 20  sorError(..     
2bc00 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
2bc10 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 20  r pCursor..     
2bc20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
2bc30 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2bc40 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74               Set
2bc50 43 75 72 73 6f 72 45 72 72 6f 72 28 6e 75 6c 6c  CursorError(null
2bc60 2c 20 70 43 75 72 73 6f 72 2c 20 44 65 66 61 75  , pCursor, Defau
2bc70 6c 74 4c 6f 67 45 72 72 6f 72 73 2c 0d 0a 20 20  ltLogErrors,..  
2bc80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bc90 20 20 44 65 66 61 75 6c 74 4c 6f 67 45 78 63 65    DefaultLogExce
2bca0 70 74 69 6f 6e 73 2c 20 4d 6f 64 75 6c 65 4e 6f  ptions, ModuleNo
2bcb0 74 41 76 61 69 6c 61 62 6c 65 45 72 72 6f 72 4d  tAvailableErrorM
2bcc0 65 73 73 61 67 65 29 3b 0d 0a 0d 0a 20 20 20 20  essage);....    
2bcd0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2bce0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
2bcf0 64 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20 20 20  de.Error;..     
2bd00 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2bd10 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
2bd20 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2bd30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bd40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bd50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bd60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bd70 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
2bd80 20 20 20 23 72 65 67 69 6f 6e 20 49 53 51 4c 69     #region ISQLi
2bd90 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20 4d  teNativeModule M
2bda0 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20  embers..        
2bdb0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2bdc0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2bdd0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
2bde0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
2bdf0 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74  iveModule.xCreat
2be00 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
2be10 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2be20 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
2be30 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
2be40 6d 20 6e 61 6d 65 3d 22 70 44 62 22 3e 0d 0a 20  m name="pDb">.. 
2be50 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
2be60 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
2be70 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
2be80 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 22 20 2f  odule.xCreate" /
2be90 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
2bea0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
2beb0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
2bec0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2bed0 3d 22 70 41 75 78 22 3e 0d 0a 20 20 20 20 20 20  ="pAux">..      
2bee0 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
2bef0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
2bf00 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2bf10 2e 78 43 72 65 61 74 65 22 20 2f 3e 20 6d 65 74  .xCreate" /> met
2bf20 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
2bf30 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2bf40 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2bf50 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67  <param name="arg
2bf60 63 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  c">..           
2bf70 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
2bf80 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
2bf90 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65  ativeModule.xCre
2bfa0 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ate" /> method..
2bfb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2bfc0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
2bfd0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
2bfe0 6d 20 6e 61 6d 65 3d 22 61 72 67 76 22 3e 0d 0a  m name="argv">..
2bff0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2c000 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
2c010 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
2c020 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 22 20  Module.xCreate" 
2c030 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2c040 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
2c050 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
2c060 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2c070 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20  e="pVtab">..    
2c080 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
2c090 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
2c0a0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2c0b0 6c 65 2e 78 43 72 65 61 74 65 22 20 2f 3e 20 6d  le.xCreate" /> m
2c0c0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2c0d0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2c0e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2c0f0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
2c100 45 72 72 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20  Error">..       
2c110 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2c120 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2c130 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2c140 78 43 72 65 61 74 65 22 20 2f 3e 20 6d 65 74 68  xCreate" /> meth
2c150 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
2c160 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
2c170 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2c180 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
2c190 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
2c1a0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
2c1b0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2c1c0 2e 78 43 72 65 61 74 65 22 20 2f 3e 20 6d 65 74  .xCreate" /> met
2c1d0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
2c1e0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
2c1f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
2c200 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72  blic SQLiteError
2c210 43 6f 64 65 20 78 43 72 65 61 74 65 28 0d 0a 20  Code xCreate(.. 
2c220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
2c230 6e 74 50 74 72 20 70 44 62 2c 0d 0a 20 20 20 20  ntPtr pDb,..    
2c240 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
2c250 74 72 20 70 41 75 78 2c 0d 0a 20 20 20 20 20 20  tr pAux,..      
2c260 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 61 72            int ar
2c270 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  gc,..           
2c280 20 20 20 20 20 49 6e 74 50 74 72 20 61 72 67 76       IntPtr argv
2c290 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2c2a0 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 56     ref IntPtr pV
2c2b0 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  tab,..          
2c2c0 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72        ref IntPtr
2c2d0 20 70 45 72 72 6f 72 0d 0a 20 20 20 20 20 20 20   pError..       
2c2e0 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
2c2f0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2c300 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
2c310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2c320 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62  / NOTE: Called b
2c330 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a  y native code...
2c340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c350 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
2c360 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70      // CheckDisp
2c370 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50  osed(); /* EXEMP
2c380 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  T */....        
2c390 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75          if (modu
2c3a0 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  le == null)..   
2c3b0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
2c3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c3d0 20 20 20 20 70 45 72 72 6f 72 20 3d 20 53 51 4c      pError = SQL
2c3e0 69 74 65 53 74 72 69 6e 67 2e 55 74 66 38 49 6e  iteString.Utf8In
2c3f0 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28 0d  tPtrFromString(.
2c400 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c410 20 20 20 20 20 20 20 20 20 4d 6f 64 75 6c 65 4e           ModuleN
2c420 6f 74 41 76 61 69 6c 61 62 6c 65 45 72 72 6f 72  otAvailableError
2c430 4d 65 73 73 61 67 65 29 3b 0d 0a 0d 0a 20 20 20  Message);....   
2c440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c450 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65 45 72   return SQLiteEr
2c460 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a  rorCode.Error;..
2c470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c480 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
2c490 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75       return modu
2c4a0 6c 65 2e 78 43 72 65 61 74 65 28 0d 0a 20 20 20  le.xCreate(..   
2c4b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c4c0 20 70 44 62 2c 20 70 41 75 78 2c 20 61 72 67 63   pDb, pAux, argc
2c4d0 2c 20 61 72 67 76 2c 20 72 65 66 20 70 56 74 61  , argv, ref pVta
2c4e0 62 2c 20 72 65 66 20 70 45 72 72 6f 72 29 3b 0d  b, ref pError);.
2c4f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2c500 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2c510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c550 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
2c560 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
2c570 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2c580 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
2c590 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
2c5a0 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 22  Module.xConnect"
2c5b0 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
2c5c0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73           /// </s
2c5d0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2c5e0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
2c5f0 6e 61 6d 65 3d 22 70 44 62 22 3e 0d 0a 20 20 20  name="pDb">..   
2c600 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
2c610 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
2c620 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2c630 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 22 20 2f 3e  ule.xConnect" />
2c640 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
2c650 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
2c660 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
2c670 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
2c680 22 70 41 75 78 22 3e 0d 0a 20 20 20 20 20 20 20  "pAux">..       
2c690 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2c6a0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2c6b0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2c6c0 78 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74  xConnect" /> met
2c6d0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
2c6e0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2c6f0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2c700 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67  <param name="arg
2c710 63 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  c">..           
2c720 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
2c730 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
2c740 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e  ativeModule.xCon
2c750 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  nect" /> method.
2c760 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2c770 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
2c780 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
2c790 61 6d 20 6e 61 6d 65 3d 22 61 72 67 76 22 3e 0d  am name="argv">.
2c7a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2c7b0 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
2c7c0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
2c7d0 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74  eModule.xConnect
2c7e0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
2c7f0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2c800 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
2c810 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
2c820 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20  ame="pVtab">..  
2c830 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2c840 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
2c850 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2c860 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 22 20 2f  dule.xConnect" /
2c870 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
2c880 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
2c890 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
2c8a0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2c8b0 3d 22 70 45 72 72 6f 72 22 3e 0d 0a 20 20 20 20  ="pError">..    
2c8c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
2c8d0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
2c8e0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2c8f0 6c 65 2e 78 43 6f 6e 6e 65 63 74 22 20 2f 3e 20  le.xConnect" /> 
2c900 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2c910 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2c920 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2c930 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
2c940 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2c950 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
2c960 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2c970 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 22 20 2f  dule.xConnect" /
2c980 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
2c990 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
2c9a0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
2c9b0 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
2c9c0 45 72 72 6f 72 43 6f 64 65 20 78 43 6f 6e 6e 65  ErrorCode xConne
2c9d0 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ct(..           
2c9e0 20 20 20 20 20 49 6e 74 50 74 72 20 70 44 62 2c       IntPtr pDb,
2c9f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ca00 20 20 49 6e 74 50 74 72 20 70 41 75 78 2c 0d 0a    IntPtr pAux,..
2ca10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ca20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20  int argc,..     
2ca30 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
2ca40 72 20 61 72 67 76 2c 0d 0a 20 20 20 20 20 20 20  r argv,..       
2ca50 20 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74           ref Int
2ca60 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
2ca70 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
2ca80 49 6e 74 50 74 72 20 70 45 72 72 6f 72 0d 0a 20  IntPtr pError.. 
2ca90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
2caa0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2cab0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2cac0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
2cad0 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61       // NOTE: Ca
2cae0 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63  lled by native c
2caf0 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ode...          
2cb00 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
2cb10 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65            // Che
2cb20 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a  ckDisposed(); /*
2cb30 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20   EXEMPT */....  
2cb40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
2cb50 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c   (module == null
2cb60 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2cb70 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2cb80 20 20 20 20 20 20 20 20 20 20 70 45 72 72 6f 72            pError
2cb90 20 3d 20 53 51 4c 69 74 65 53 74 72 69 6e 67 2e   = SQLiteString.
2cba0 55 74 66 38 49 6e 74 50 74 72 46 72 6f 6d 53 74  Utf8IntPtrFromSt
2cbb0 72 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20 20  ring(..         
2cbc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d                 M
2cbd0 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c  oduleNotAvailabl
2cbe0 65 45 72 72 6f 72 4d 65 73 73 61 67 65 29 3b 0d  eErrorMessage);.
2cbf0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2cc00 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 51         return SQ
2cc10 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 45 72  LiteErrorCode.Er
2cc20 72 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ror;..          
2cc30 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2cc40 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2cc50 6e 20 6d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63  n module.xConnec
2cc60 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
2cc70 20 20 20 20 20 20 20 20 70 44 62 2c 20 70 41 75          pDb, pAu
2cc80 78 2c 20 61 72 67 63 2c 20 61 72 67 76 2c 20 72  x, argc, argv, r
2cc90 65 66 20 70 56 74 61 62 2c 20 72 65 66 20 70 45  ef pVtab, ref pE
2cca0 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20  rror);..        
2ccb0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2ccc0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2ccd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ccf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cd00 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2cd10 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
2cd20 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
2cd30 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2cd40 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2cd50 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42  eNativeModule.xB
2cd60 65 73 74 49 6e 64 65 78 22 20 2f 3e 20 6d 65 74  estIndex" /> met
2cd70 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
2cd80 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2cd90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2cda0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
2cdb0 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
2cdc0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
2cdd0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
2cde0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
2cdf0 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 20 6d 65  BestIndex" /> me
2ce00 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2ce10 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
2ce20 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2ce30 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 49   <param name="pI
2ce40 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20 20 20 20  ndex">..        
2ce50 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
2ce60 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
2ce70 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
2ce80 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 20 6d 65  BestIndex" /> me
2ce90 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2cea0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
2ceb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2cec0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
2ced0 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
2cee0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
2cef0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2cf00 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 22 20 2f  le.xBestIndex" /
2cf10 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
2cf20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
2cf30 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
2cf40 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
2cf50 45 72 72 6f 72 43 6f 64 65 20 78 42 65 73 74 49  ErrorCode xBestI
2cf60 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20 20 20  ndex(..         
2cf70 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
2cf80 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  tab,..          
2cf90 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 49 6e        IntPtr pIn
2cfa0 64 65 78 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dex..           
2cfb0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
2cfc0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2cfd0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
2cfe0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
2cff0 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61  TE: Called by na
2d000 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20  tive code...    
2d010 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
2d020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d030 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64  // CheckDisposed
2d040 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f  (); /* EXEMPT */
2d050 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2d060 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d      if (module =
2d070 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
2d080 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2d090 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61  urn ModuleNotAva
2d0a0 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72  ilableTableError
2d0b0 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20  (pVtab);....    
2d0c0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2d0d0 72 6e 20 6d 6f 64 75 6c 65 2e 78 42 65 73 74 49  rn module.xBestI
2d0e0 6e 64 65 78 28 70 56 74 61 62 2c 20 70 49 6e 64  ndex(pVtab, pInd
2d0f0 65 78 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ex);..          
2d100 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
2d110 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2d120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d150 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2d160 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
2d170 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
2d180 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
2d190 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
2d1a0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 69 73  ativeModule.xDis
2d1b0 63 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68  connect" /> meth
2d1c0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
2d1d0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2d1e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2d1f0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
2d200 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  tab">..         
2d210 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2d220 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2d230 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44  eNativeModule.xD
2d240 69 73 63 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65  isconnect" /> me
2d250 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2d260 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
2d270 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2d280 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
2d290 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
2d2a0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
2d2b0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2d2c0 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 22 20  le.xDisconnect" 
2d2d0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2d2e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
2d2f0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
2d300 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
2d310 65 45 72 72 6f 72 43 6f 64 65 20 78 44 69 73 63  eErrorCode xDisc
2d320 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20  onnect(..       
2d330 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
2d340 70 56 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20  pVtab..         
2d350 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
2d360 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2d370 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
2d380 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2d390 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20  NOTE: Called by 
2d3a0 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20  native code...  
2d3b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2d3c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d3d0 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73    // CheckDispos
2d3e0 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20  ed(); /* EXEMPT 
2d3f0 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  */....          
2d400 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65        if (module
2d410 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
2d420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2d430 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41  eturn ModuleNotA
2d440 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72  vailableTableErr
2d450 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20  or(pVtab);....  
2d460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2d470 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 44 69 73  turn module.xDis
2d480 63 6f 6e 6e 65 63 74 28 70 56 74 61 62 29 3b 0d  connect(pVtab);.
2d490 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2d4a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2d4b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d4c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d4d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d4e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d4f0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
2d500 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
2d510 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2d520 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
2d530 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
2d540 4d 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f 79 22  Module.xDestroy"
2d550 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
2d560 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73           /// </s
2d570 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2d580 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
2d590 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20  name="pVtab">.. 
2d5a0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
2d5b0 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
2d5c0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
2d5d0 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f 79 22 20  odule.xDestroy" 
2d5e0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2d5f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
2d600 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
2d610 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
2d620 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2d630 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
2d640 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
2d650 65 4d 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f 79  eModule.xDestroy
2d660 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
2d670 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2d680 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
2d690 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c        public SQL
2d6a0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 44 65  iteErrorCode xDe
2d6b0 73 74 72 6f 79 28 0d 0a 20 20 20 20 20 20 20 20  stroy(..        
2d6c0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
2d6d0 56 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20  Vtab..          
2d6e0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
2d6f0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2d700 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
2d710 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
2d720 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e  OTE: Called by n
2d730 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20  ative code...   
2d740 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
2d750 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d760 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65   // CheckDispose
2d770 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a  d(); /* EXEMPT *
2d780 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
2d790 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20       if (module 
2d7a0 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
2d7b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2d7c0 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76  turn ModuleNotAv
2d7d0 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f  ailableTableErro
2d7e0 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20  r(pVtab);....   
2d7f0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2d800 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 44 65 73 74  urn module.xDest
2d810 72 6f 79 28 70 56 74 61 62 29 3b 0d 0a 20 20 20  roy(pVtab);..   
2d820 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
2d830 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
2d840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2d880 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2d890 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2d8a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
2d8b0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
2d8c0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2d8d0 6c 65 2e 78 4f 70 65 6e 22 20 2f 3e 20 6d 65 74  le.xOpen" /> met
2d8e0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
2d8f0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2d900 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2d910 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
2d920 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
2d930 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
2d940 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
2d950 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
2d960 4f 70 65 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  Open" /> method.
2d970 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2d980 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
2d990 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
2d9a0 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72  am name="pCursor
2d9b0 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
2d9c0 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
2d9d0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
2d9e0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e  tiveModule.xOpen
2d9f0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
2da00 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2da10 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
2da20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
2da30 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2da40 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
2da50 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
2da60 69 76 65 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e 22  iveModule.xOpen"
2da70 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
2da80 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72           /// </r
2da90 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
2daa0 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69       public SQLi
2dab0 74 65 45 72 72 6f 72 43 6f 64 65 20 78 4f 70 65  teErrorCode xOpe
2dac0 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n(..            
2dad0 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
2dae0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2daf0 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 43     ref IntPtr pC
2db00 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20  ursor..         
2db10 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
2db20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2db30 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
2db40 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2db50 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20  NOTE: Called by 
2db60 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20  native code...  
2db70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2db80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2db90 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73    // CheckDispos
2dba0 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20  ed(); /* EXEMPT 
2dbb0 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  */....          
2dbc0 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65        if (module
2dbd0 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
2dbe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2dbf0 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41  eturn ModuleNotA
2dc00 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72  vailableTableErr
2dc10 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20  or(pVtab);....  
2dc20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2dc30 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 4f 70 65  turn module.xOpe
2dc40 6e 28 70 56 74 61 62 2c 20 72 65 66 20 70 43 75  n(pVtab, ref pCu
2dc50 72 73 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20  rsor);..        
2dc60 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2dc70 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2dc80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dc90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dcb0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2dcc0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
2dcd0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
2dce0 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2dcf0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2dd00 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
2dd10 6c 6f 73 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  lose" /> method.
2dd20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2dd30 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2dd40 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
2dd50 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73  aram name="pCurs
2dd60 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  or">..          
2dd70 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
2dd80 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2dd90 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6c  NativeModule.xCl
2dda0 6f 73 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ose" /> method..
2ddb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2ddc0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
2ddd0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
2dde0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
2ddf0 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
2de00 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2de10 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6c  NativeModule.xCl
2de20 6f 73 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ose" /> method..
2de30 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2de40 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
2de50 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
2de60 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
2de70 78 43 6c 6f 73 65 28 0d 0a 20 20 20 20 20 20 20  xClose(..       
2de80 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
2de90 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20  pCursor..       
2dea0 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
2deb0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2dec0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
2ded0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2dee0 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62  / NOTE: Called b
2def0 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a  y native code...
2df00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2df10 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
2df20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70      // CheckDisp
2df30 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50  osed(); /* EXEMP
2df40 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  T */....        
2df50 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75          if (modu
2df60 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  le == null)..   
2df70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2df80 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f   return ModuleNo
2df90 74 41 76 61 69 6c 61 62 6c 65 43 75 72 73 6f 72  tAvailableCursor
2dfa0 45 72 72 6f 72 28 70 43 75 72 73 6f 72 29 3b 0d  Error(pCursor);.
2dfb0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2dfc0 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65     return module
2dfd0 2e 78 43 6c 6f 73 65 28 70 43 75 72 73 6f 72 29  .xClose(pCursor)
2dfe0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
2dff0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2e000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e040 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
2e050 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2e060 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2e070 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
2e080 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
2e090 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72  veModule.xFilter
2e0a0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
2e0b0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2e0c0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2e0d0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
2e0e0 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e   name="pCursor">
2e0f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2e100 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
2e110 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
2e120 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72  veModule.xFilter
2e130 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
2e140 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2e150 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
2e160 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
2e170 61 6d 65 3d 22 69 64 78 4e 75 6d 22 3e 0d 0a 20  ame="idxNum">.. 
2e180 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
2e190 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
2e1a0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
2e1b0 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 22 20 2f  odule.xFilter" /
2e1c0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
2e1d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
2e1e0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
2e1f0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2e200 3d 22 69 64 78 53 74 72 22 3e 0d 0a 20 20 20 20  ="idxStr">..    
2e210 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
2e220 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
2e230 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2e240 6c 65 2e 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d  le.xFilter" /> m
2e250 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2e260 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2e270 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2e280 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61  / <param name="a
2e290 72 67 63 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  rgc">..         
2e2a0 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2e2b0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2e2c0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46  eNativeModule.xF
2e2d0 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64  ilter" /> method
2e2e0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2e2f0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
2e300 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
2e310 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 76 22 3e  ram name="argv">
2e320 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2e330 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
2e340 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
2e350 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72  veModule.xFilter
2e360 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
2e370 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2e380 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
2e390 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
2e3a0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2e3b0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
2e3c0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
2e3d0 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65  iveModule.xFilte
2e3e0 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  r" /> method... 
2e3f0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2e400 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
2e410 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51         public SQ
2e420 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 46  LiteErrorCode xF
2e430 69 6c 74 65 72 28 0d 0a 20 20 20 20 20 20 20 20  ilter(..        
2e440 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
2e450 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20  Cursor,..       
2e460 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 64 78           int idx
2e470 4e 75 6d 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  Num,..          
2e480 20 20 20 20 20 20 49 6e 74 50 74 72 20 69 64 78        IntPtr idx
2e490 53 74 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  Str,..          
2e4a0 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d        int argc,.
2e4b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e4c0 20 49 6e 74 50 74 72 20 61 72 67 76 0d 0a 20 20   IntPtr argv..  
2e4d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
2e4e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
2e4f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e500 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
2e510 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c      // NOTE: Cal
2e520 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f  led by native co
2e530 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  de...           
2e540 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
2e550 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63           // Chec
2e560 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20  kDisposed(); /* 
2e570 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20  EXEMPT */....   
2e580 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2e590 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29  (module == null)
2e5a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e5b0 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64        return Mod
2e5c0 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43  uleNotAvailableC
2e5d0 75 72 73 6f 72 45 72 72 6f 72 28 70 43 75 72 73  ursorError(pCurs
2e5e0 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  or);....        
2e5f0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d          return m
2e600 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 28 70 43  odule.xFilter(pC
2e610 75 72 73 6f 72 2c 20 69 64 78 4e 75 6d 2c 20 69  ursor, idxNum, i
2e620 64 78 53 74 72 2c 20 61 72 67 63 2c 20 61 72 67  dxStr, argc, arg
2e630 76 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  v);..           
2e640 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
2e650 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2e660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e690 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2e6a0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
2e6b0 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
2e6c0 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
2e6d0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
2e6e0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4e 65 78 74  tiveModule.xNext
2e6f0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
2e700 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2e710 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2e720 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
2e730 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e   name="pCursor">
2e740 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2e750 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
2e760 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
2e770 76 65 4d 6f 64 75 6c 65 2e 78 4e 65 78 74 22 20  veModule.xNext" 
2e780 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2e790 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
2e7a0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
2e7b0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
2e7c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2e7d0 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
2e7e0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
2e7f0 65 4d 6f 64 75 6c 65 2e 78 4e 65 78 74 22 20 2f  eModule.xNext" /
2e800 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
2e810 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
2e820 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
2e830 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
2e840 45 72 72 6f 72 43 6f 64 65 20 78 4e 65 78 74 28  ErrorCode xNext(
2e850 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e860 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72    IntPtr pCursor
2e870 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e880 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
2e890 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2e8a0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
2e8b0 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
2e8c0 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76   Called by nativ
2e8d0 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  e code...       
2e8e0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
2e8f0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2e900 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
2e910 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d   /* EXEMPT */...
2e920 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e930 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e   if (module == n
2e940 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
2e950 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2e960 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61   ModuleNotAvaila
2e970 62 6c 65 43 75 72 73 6f 72 45 72 72 6f 72 28 70  bleCursorError(p
2e980 43 75 72 73 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20  Cursor);....    
2e990 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2e9a0 72 6e 20 6d 6f 64 75 6c 65 2e 78 4e 65 78 74 28  rn module.xNext(
2e9b0 70 43 75 72 73 6f 72 29 3b 0d 0a 20 20 20 20 20  pCursor);..     
2e9c0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2e9d0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2e9e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e9f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ea00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ea10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2ea20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2ea30 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2ea40 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
2ea50 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
2ea60 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2ea70 2e 78 45 6f 66 22 20 2f 3e 20 6d 65 74 68 6f 64  .xEof" /> method
2ea80 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2ea90 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2eaa0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2eab0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72  param name="pCur
2eac0 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  sor">..         
2ead0 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2eae0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2eaf0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 45  eNativeModule.xE
2eb00 6f 66 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  of" /> method...
2eb10 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2eb20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
2eb30 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
2eb40 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
2eb50 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
2eb60 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
2eb70 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 45 6f 66  ativeModule.xEof
2eb80 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
2eb90 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2eba0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
2ebb0 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
2ebc0 20 78 45 6f 66 28 0d 0a 20 20 20 20 20 20 20 20   xEof(..        
2ebd0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
2ebe0 43 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20 20  Cursor..        
2ebf0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
2ec00 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2ec10 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
2ec20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2ec30 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79   NOTE: Called by
2ec40 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20   native code... 
2ec50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2ec60 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
2ec70 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f     // CheckDispo
2ec80 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54  sed(); /* EXEMPT
2ec90 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   */....         
2eca0 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c         if (modul
2ecb0 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
2ecc0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2ecd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ece0 20 20 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69     ModuleNotAvai
2ecf0 6c 61 62 6c 65 43 75 72 73 6f 72 45 72 72 6f 72  lableCursorError
2ed00 28 70 43 75 72 73 6f 72 29 3b 0d 0a 20 20 20 20  (pCursor);..    
2ed10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ed20 72 65 74 75 72 6e 20 31 3b 0d 0a 20 20 20 20 20  return 1;..     
2ed30 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
2ed40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ed50 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 45  return module.xE
2ed60 6f 66 28 70 43 75 72 73 6f 72 29 3b 0d 0a 20 20  of(pCursor);..  
2ed70 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
2ed80 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
2ed90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eda0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2edb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2edc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2edd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2ede0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
2edf0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
2ee00 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
2ee10 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2ee20 75 6c 65 2e 78 43 6f 6c 75 6d 6e 22 20 2f 3e 20  ule.xColumn" /> 
2ee30 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2ee40 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
2ee50 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
2ee60 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2ee70 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20  ="pCursor">..   
2ee80 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
2ee90 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
2eea0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2eeb0 75 6c 65 2e 78 43 6f 6c 75 6d 6e 22 20 2f 3e 20  ule.xColumn" /> 
2eec0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2eed0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2eee0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2eef0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
2ef00 70 43 6f 6e 74 65 78 74 22 3e 0d 0a 20 20 20 20  pContext">..    
2ef10 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
2ef20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
2ef30 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2ef40 6c 65 2e 78 43 6f 6c 75 6d 6e 22 20 2f 3e 20 6d  le.xColumn" /> m
2ef50 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2ef60 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2ef70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2ef80 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69  / <param name="i
2ef90 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20 20 20 20  ndex">..        
2efa0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
2efb0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
2efc0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
2efd0 43 6f 6c 75 6d 6e 22 20 2f 3e 20 6d 65 74 68 6f  Column" /> metho
2efe0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
2eff0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
2f000 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72            /// <r
2f010 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
2f020 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2f030 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2f040 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2f050 78 43 6f 6c 75 6d 6e 22 20 2f 3e 20 6d 65 74 68  xColumn" /> meth
2f060 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
2f070 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
2f080 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
2f090 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43  lic SQLiteErrorC
2f0a0 6f 64 65 20 78 43 6f 6c 75 6d 6e 28 0d 0a 20 20  ode xColumn(..  
2f0b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
2f0c0 74 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20  tPtr pCursor,.. 
2f0d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
2f0e0 6e 74 50 74 72 20 70 43 6f 6e 74 65 78 74 2c 0d  ntPtr pContext,.
2f0f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f100 20 69 6e 74 20 69 6e 64 65 78 0d 0a 20 20 20 20   int index..    
2f110 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
2f120 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2f130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2f140 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f150 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65    // NOTE: Calle
2f160 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65  d by native code
2f170 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2f180 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
2f190 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44         // CheckD
2f1a0 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58  isposed(); /* EX
2f1b0 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20  EMPT */....     
2f1c0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d             if (m
2f1d0 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  odule == null)..
2f1e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f1f0 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c      return Modul
2f200 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43 75 72  eNotAvailableCur
2f210 73 6f 72 45 72 72 6f 72 28 70 43 75 72 73 6f 72  sorError(pCursor
2f220 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2f230 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64        return mod
2f240 75 6c 65 2e 78 43 6f 6c 75 6d 6e 28 70 43 75 72  ule.xColumn(pCur
2f250 73 6f 72 2c 20 70 43 6f 6e 74 65 78 74 2c 20 69  sor, pContext, i
2f260 6e 64 65 78 29 3b 0d 0a 20 20 20 20 20 20 20 20  ndex);..        
2f270 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2f280 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2f290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f2a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f2b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f2c0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2f2d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
2f2e0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
2f2f0 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2f300 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2f310 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52  eNativeModule.xR
2f320 6f 77 49 64 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  owId" /> method.
2f330 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2f340 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2f350 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
2f360 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73  aram name="pCurs
2f370 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  or">..          
2f380 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
2f390 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2f3a0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f  NativeModule.xRo
2f3b0 77 49 64 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  wId" /> method..
2f3c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2f3d0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
2f3e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
2f3f0 6d 20 6e 61 6d 65 3d 22 72 6f 77 49 64 22 3e 0d  m name="rowId">.
2f400 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2f410 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
2f420 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
2f430 65 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 22 20  eModule.xRowId" 
2f440 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2f450 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
2f460 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
2f470 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
2f480 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2f490 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
2f4a0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
2f4b0 65 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 22 20  eModule.xRowId" 
2f4c0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2f4d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
2f4e0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
2f4f0 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
2f500 65 45 72 72 6f 72 43 6f 64 65 20 78 52 6f 77 49  eErrorCode xRowI
2f510 64 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d(..            
2f520 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73      IntPtr pCurs
2f530 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  or,..           
2f540 20 20 20 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f       ref long ro
2f550 77 49 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  wId..           
2f560 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
2f570 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2f580 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
2f590 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
2f5a0 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61  TE: Called by na
2f5b0 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20  tive code...    
2f5c0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
2f5d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f5e0 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64  // CheckDisposed
2f5f0 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f  (); /* EXEMPT */
2f600 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2f610 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d      if (module =
2f620 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
2f630 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2f640 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61  urn ModuleNotAva
2f650 69 6c 61 62 6c 65 43 75 72 73 6f 72 45 72 72 6f  ilableCursorErro
2f660 72 28 70 43 75 72 73 6f 72 29 3b 0d 0a 0d 0a 20  r(pCursor);.... 
2f670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2f680 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 52 6f  eturn module.xRo
2f690 77 49 64 28 70 43 75 72 73 6f 72 2c 20 72 65 66  wId(pCursor, ref
2f6a0 20 72 6f 77 49 64 29 3b 0d 0a 20 20 20 20 20 20   rowId);..      
2f6b0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2f6c0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2f6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f6e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f6f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2f710 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73            /// <s
2f720 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2f730 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2f740 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2f750 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2f760 78 55 70 64 61 74 65 22 20 2f 3e 20 6d 65 74 68  xUpdate" /> meth
2f770 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
2f780 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2f790 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2f7a0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
2f7b0 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  tab">..         
2f7c0 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2f7d0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2f7e0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 55  eNativeModule.xU
2f7f0 70 64 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64  pdate" /> method
2f800 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2f810 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
2f820 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
2f830 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 63 22 3e  ram name="argc">
2f840 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2f850 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
2f860 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
2f870 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65  veModule.xUpdate
2f880 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
2f890 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2f8a0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
2f8b0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
2f8c0 61 6d 65 3d 22 61 72 67 76 22 3e 0d 0a 20 20 20  ame="argv">..   
2f8d0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
2f8e0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
2f8f0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2f900 75 6c 65 2e 78 55 70 64 61 74 65 22 20 2f 3e 20  ule.xUpdate" /> 
2f910 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2f920 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2f930 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2f940 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
2f950 72 6f 77 49 64 22 3e 0d 0a 20 20 20 20 20 20 20  rowId">..       
2f960 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
2f970 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
2f980 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
2f990 78 55 70 64 61 74 65 22 20 2f 3e 20 6d 65 74 68  xUpdate" /> meth
2f9a0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
2f9b0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
2f9c0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2f9d0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
2f9e0 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
2f9f0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
2fa00 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2fa10 2e 78 55 70 64 61 74 65 22 20 2f 3e 20 6d 65 74  .xUpdate" /> met
2fa20 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
2fa30 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
2fa40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
2fa50 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72  blic SQLiteError
2fa60 43 6f 64 65 20 78 55 70 64 61 74 65 28 0d 0a 20  Code xUpdate(.. 
2fa70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
2fa80 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
2fa90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
2faa0 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20  t argc,..       
2fab0 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
2fac0 61 72 67 76 2c 0d 0a 20 20 20 20 20 20 20 20 20  argv,..         
2fad0 20 20 20 20 20 20 20 72 65 66 20 6c 6f 6e 67 20         ref long 
2fae0 72 6f 77 49 64 0d 0a 20 20 20 20 20 20 20 20 20  rowId..         
2faf0 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
2fb00 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2fb10 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
2fb20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2fb30 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20  NOTE: Called by 
2fb40 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20  native code...  
2fb50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2fb60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2fb70 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73    // CheckDispos
2fb80 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20  ed(); /* EXEMPT 
2fb90 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  */....          
2fba0 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65        if (module
2fbb0 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
2fbc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2fbd0 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41  eturn ModuleNotA
2fbe0 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72  vailableTableErr
2fbf0 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20  or(pVtab);....  
2fc00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2fc10 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 55 70 64  turn module.xUpd
2fc20 61 74 65 28 70 56 74 61 62 2c 20 61 72 67 63 2c  ate(pVtab, argc,
2fc30 20 61 72 67 76 2c 20 72 65 66 20 72 6f 77 49 64   argv, ref rowId
2fc40 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2fc50 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
2fc60 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2fc70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fc80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fc90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fca0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2fcb0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2fcc0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2fcd0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
2fce0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
2fcf0 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 67 69 6e  iveModule.xBegin
2fd00 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
2fd10 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2fd20 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2fd30 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
2fd40 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a   name="pVtab">..
2fd50 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2fd60 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
2fd70 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
2fd80 4d 6f 64 75 6c 65 2e 78 42 65 67 69 6e 22 20 2f  Module.xBegin" /
2fd90 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
2fda0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
2fdb0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
2fdc0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
2fdd0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2fde0 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
2fdf0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
2fe00 4d 6f 64 75 6c 65 2e 78 42 65 67 69 6e 22 20 2f  Module.xBegin" /
2fe10 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
2fe20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
2fe30 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
2fe40 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
2fe50 45 72 72 6f 72 43 6f 64 65 20 78 42 65 67 69 6e  ErrorCode xBegin
2fe60 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2fe70 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d     IntPtr pVtab.
2fe80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2fe90 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
2fea0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2feb0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
2fec0 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
2fed0 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65  Called by native
2fee0 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
2fef0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
2ff00 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43              // C
2ff10 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20  heckDisposed(); 
2ff20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a  /* EXEMPT */....
2ff30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ff40 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75  if (module == nu
2ff50 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
2ff60 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2ff70 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62  ModuleNotAvailab
2ff80 6c 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74  leTableError(pVt
2ff90 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ab);....        
2ffa0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d          return m
2ffb0 6f 64 75 6c 65 2e 78 42 65 67 69 6e 28 70 56 74  odule.xBegin(pVt
2ffc0 61 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ab);..          
2ffd0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
2ffe0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2fff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30020 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
30030 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
30040 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
30050 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
30060 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
30070 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53 79 6e  ativeModule.xSyn
30080 63 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  c" /> method... 
30090 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
300a0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
300b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
300c0 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d  m name="pVtab">.
300d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
300e0 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
300f0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
30100 65 4d 6f 64 75 6c 65 2e 78 53 79 6e 63 22 20 2f  eModule.xSync" /
30110 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
30120 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
30130 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
30140 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
30150 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
30160 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
30170 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
30180 4d 6f 64 75 6c 65 2e 78 53 79 6e 63 22 20 2f 3e  Module.xSync" />
30190 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
301a0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
301b0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
301c0 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45    public SQLiteE
301d0 72 72 6f 72 43 6f 64 65 20 78 53 79 6e 63 28 0d  rrorCode xSync(.
301e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
301f0 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20   IntPtr pVtab.. 
30200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
30210 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
30220 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30230 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
30240 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61       // NOTE: Ca
30250 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63  lled by native c
30260 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ode...          
30270 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
30280 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65            // Che
30290 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a  ckDisposed(); /*
302a0 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20   EXEMPT */....  
302b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
302c0 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c   (module == null
302d0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
302e0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f         return Mo
302f0 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65  duleNotAvailable
30300 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62  TableError(pVtab
30310 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
30320 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64        return mod
30330 75 6c 65 2e 78 53 79 6e 63 28 70 56 74 61 62 29  ule.xSync(pVtab)
30340 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
30350 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
30360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
303a0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
303b0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
303c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
303d0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
303e0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
303f0 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74  veModule.xCommit
30400 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
30410 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
30420 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
30430 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
30440 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a   name="pVtab">..
30450 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
30460 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
30470 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
30480 4d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 22 20  Module.xCommit" 
30490 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
304a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
304b0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
304c0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
304d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
304e0 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
304f0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
30500 65 4d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 22  eModule.xCommit"
30510 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
30520 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72           /// </r
30530 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
30540 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69       public SQLi
30550 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6f 6d  teErrorCode xCom
30560 6d 69 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mit(..          
30570 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
30580 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ab..            
30590 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
305a0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
305b0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
305c0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
305d0 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74  E: Called by nat
305e0 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  ive code...     
305f0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
30600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
30610 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  / CheckDisposed(
30620 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d  ); /* EXEMPT */.
30630 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
30640 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d     if (module ==
30650 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
30660 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
30670 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69  rn ModuleNotAvai
30680 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72 28  lableTableError(
30690 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20  pVtab);....     
306a0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
306b0 6e 20 6d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74  n module.xCommit
306c0 28 70 56 74 61 62 29 3b 0d 0a 20 20 20 20 20 20  (pVtab);..      
306d0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
306e0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
306f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
30730 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73            /// <s
30740 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
30750 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
30760 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
30770 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
30780 78 52 6f 6c 6c 62 61 63 6b 22 20 2f 3e 20 6d 65  xRollback" /> me
30790 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
307a0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
307b0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
307c0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
307d0 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20  pVtab">..       
307e0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
307f0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
30800 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
30810 78 52 6f 6c 6c 62 61 63 6b 22 20 2f 3e 20 6d 65  xRollback" /> me
30820 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
30830 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
30840 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
30850 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
30860 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
30870 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
30880 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
30890 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 22 20 2f 3e  le.xRollback" />
308a0 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
308b0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
308c0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
308d0 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45    public SQLiteE
308e0 72 72 6f 72 43 6f 64 65 20 78 52 6f 6c 6c 62 61  rrorCode xRollba
308f0 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ck(..           
30900 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
30910 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  b..             
30920 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
30930 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
30940 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
30950 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
30960 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69  : Called by nati
30970 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  ve code...      
30980 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
30990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
309a0 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
309b0 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a  ; /* EXEMPT */..
309c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
309d0 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20    if (module == 
309e0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
309f0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
30a00 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c  n ModuleNotAvail
30a10 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72 28 70  ableTableError(p
30a20 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Vtab);....      
30a30 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
30a40 20 6d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63   module.xRollbac
30a50 6b 28 70 56 74 61 62 29 3b 0d 0a 20 20 20 20 20  k(pVtab);..     
30a60 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
30a70 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
30a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
30ac0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
30ad0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
30ae0 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
30af0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
30b00 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
30b10 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20  .xFindFunction" 
30b20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
30b30 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
30b40 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
30b50 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
30b60 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20  ame="pVtab">..  
30b70 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
30b80 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
30b90 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
30ba0 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74 69  dule.xFindFuncti
30bb0 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  on" /> method...
30bc0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
30bd0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
30be0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
30bf0 20 6e 61 6d 65 3d 22 6e 41 72 67 22 3e 0d 0a 20   name="nArg">.. 
30c00 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
30c10 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
30c20 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
30c30 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74  odule.xFindFunct
30c40 69 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ion" /> method..
30c50 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
30c60 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
30c70 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
30c80 6d 20 6e 61 6d 65 3d 22 7a 4e 61 6d 65 22 3e 0d  m name="zName">.
30c90 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
30ca0 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
30cb0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
30cc0 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e  eModule.xFindFun
30cd0 63 74 69 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64  ction" /> method
30ce0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
30cf0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
30d00 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
30d10 72 61 6d 20 6e 61 6d 65 3d 22 63 61 6c 6c 62 61  ram name="callba
30d20 63 6b 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ck">..          
30d30 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
30d40 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
30d50 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69  NativeModule.xFi
30d60 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6d  ndFunction" /> m
30d70 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
30d80 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
30d90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
30da0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
30db0 43 6c 69 65 6e 74 44 61 74 61 22 3e 0d 0a 20 20  ClientData">..  
30dc0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
30dd0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
30de0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
30df0 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74 69  dule.xFindFuncti
30e00 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  on" /> method...
30e10 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
30e20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
30e30 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
30e40 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
30e50 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
30e60 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
30e70 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e  ativeModule.xFin
30e80 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6d 65  dFunction" /> me
30e90 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
30ea0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
30eb0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
30ec0 75 62 6c 69 63 20 69 6e 74 20 78 46 69 6e 64 46  ublic int xFindF
30ed0 75 6e 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20  unction(..      
30ee0 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
30ef0 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20   pVtab,..       
30f00 20 20 20 20 20 20 20 20 20 69 6e 74 20 6e 41 72           int nAr
30f10 67 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g,..            
30f20 20 20 20 20 49 6e 74 50 74 72 20 7a 4e 61 6d 65      IntPtr zName
30f30 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
30f40 20 20 20 72 65 66 20 53 51 4c 69 74 65 43 61 6c     ref SQLiteCal
30f50 6c 62 61 63 6b 20 63 61 6c 6c 62 61 63 6b 2c 0d  lback callback,.
30f60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30f70 20 72 65 66 20 49 6e 74 50 74 72 20 70 43 6c 69   ref IntPtr pCli
30f80 65 6e 74 44 61 74 61 0d 0a 20 20 20 20 20 20 20  entData..       
30f90 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
30fa0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
30fb0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
30fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
30fd0 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62  / NOTE: Called b
30fe0 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a  y native code...
30ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31000 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
31010 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70      // CheckDisp
31020 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50  osed(); /* EXEMP
31030 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  T */....        
31040 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75          if (modu
31050 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  le == null)..   
31060 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
31070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31080 20 20 20 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61      ModuleNotAva
31090 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72  ilableTableError
310a0 28 70 56 74 61 62 29 3b 0d 0a 20 20 20 20 20 20  (pVtab);..      
310b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
310c0 74 75 72 6e 20 30 3b 0d 0a 20 20 20 20 20 20 20  turn 0;..       
310d0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
310e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
310f0 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 46 69 6e  turn module.xFin
31100 64 46 75 6e 63 74 69 6f 6e 28 0d 0a 20 20 20 20  dFunction(..    
31110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31120 70 56 74 61 62 2c 20 6e 41 72 67 2c 20 7a 4e 61  pVtab, nArg, zNa
31130 6d 65 2c 20 72 65 66 20 63 61 6c 6c 62 61 63 6b  me, ref callback
31140 2c 20 72 65 66 20 70 43 6c 69 65 6e 74 44 61 74  , ref pClientDat
31150 61 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  a);..           
31160 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
31170 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
31180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
311a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
311b0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
311c0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
311d0 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
311e0 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
311f0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
31200 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6e 61  tiveModule.xRena
31210 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  me" /> method...
31220 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
31230 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
31240 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
31250 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e  am name="pVtab">
31260 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
31270 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
31280 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
31290 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65  veModule.xRename
312a0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
312b0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
312c0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
312d0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
312e0 61 6d 65 3d 22 7a 4e 65 77 22 3e 0d 0a 20 20 20  ame="zNew">..   
312f0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
31300 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
31310 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
31320 75 6c 65 2e 78 52 65 6e 61 6d 65 22 20 2f 3e 20  ule.xRename" /> 
31330 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
31340 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
31350 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
31360 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
31370 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
31380 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
31390 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
313a0 64 75 6c 65 2e 78 52 65 6e 61 6d 65 22 20 2f 3e  dule.xRename" />
313b0 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
313c0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
313d0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
313e0 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45    public SQLiteE
313f0 72 72 6f 72 43 6f 64 65 20 78 52 65 6e 61 6d 65  rrorCode xRename
31400 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
31410 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c     IntPtr pVtab,
31420 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31430 20 20 49 6e 74 50 74 72 20 7a 4e 65 77 0d 0a 20    IntPtr zNew.. 
31440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
31450 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
31460 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31470 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
31480 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61       // NOTE: Ca
31490 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63  lled by native c
314a0 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ode...          
314b0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
314c0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65            // Che
314d0 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a  ckDisposed(); /*
314e0 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20   EXEMPT */....  
314f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
31500 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c   (module == null
31510 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
31520 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f         return Mo
31530 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65  duleNotAvailable
31540 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62  TableError(pVtab
31550 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
31560 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64        return mod
31570 75 6c 65 2e 78 52 65 6e 61 6d 65 28 70 56 74 61  ule.xRename(pVta
31580 62 2c 20 7a 4e 65 77 29 3b 0d 0a 20 20 20 20 20  b, zNew);..     
31590 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
315a0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
315b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
315c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
315d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
315e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
315f0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
31600 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
31610 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
31620 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
31630 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
31640 2e 78 53 61 76 65 70 6f 69 6e 74 22 20 2f 3e 20  .xSavepoint" /> 
31650 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
31660 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
31670 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
31680 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
31690 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20  ="pVtab">..     
316a0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
316b0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
316c0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
316d0 65 2e 78 53 61 76 65 70 6f 69 6e 74 22 20 2f 3e  e.xSavepoint" />
316e0 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
316f0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
31700 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
31710 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
31720 22 69 53 61 76 65 70 6f 69 6e 74 22 3e 0d 0a 20  "iSavepoint">.. 
31730 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
31740 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
31750 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
31760 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74  odule.xSavepoint
31770 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
31780 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
31790 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
317a0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
317b0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
317c0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
317d0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
317e0 69 76 65 4d 6f 64 75 6c 65 2e 78 53 61 76 65 70  iveModule.xSavep
317f0 6f 69 6e 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  oint" /> method.
31800 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
31810 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
31820 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
31830 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
31840 20 78 53 61 76 65 70 6f 69 6e 74 28 0d 0a 20 20   xSavepoint(..  
31850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
31860 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
31870 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74               int
31880 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20   iSavepoint..   
31890 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
318a0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
318b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
318c0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
318d0 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c     // NOTE: Call
318e0 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64  ed by native cod
318f0 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
31900 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
31910 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b          // Check
31920 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45  Disposed(); /* E
31930 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20  XEMPT */....    
31940 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
31950 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d  module == null).
31960 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31970 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75       return Modu
31980 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61  leNotAvailableTa
31990 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b  bleError(pVtab);
319a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
319b0 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c      return modul
319c0 65 2e 78 53 61 76 65 70 6f 69 6e 74 28 70 56 74  e.xSavepoint(pVt
319d0 61 62 2c 20 69 53 61 76 65 70 6f 69 6e 74 29 3b  ab, iSavepoint);
319e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
319f0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
31a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31a40 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
31a50 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
31a60 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
31a70 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
31a80 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
31a90 65 4d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73 65  eModule.xRelease
31aa0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
31ab0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
31ac0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
31ad0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
31ae0 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a   name="pVtab">..
31af0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
31b00 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
31b10 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
31b20 4d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73 65 22  Module.xRelease"
31b30 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
31b40 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
31b50 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
31b60 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
31b70 6d 65 3d 22 69 53 61 76 65 70 6f 69 6e 74 22 3e  me="iSavepoint">
31b80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
31b90 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
31ba0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
31bb0 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73  veModule.xReleas
31bc0 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
31bd0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
31be0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
31bf0 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
31c00 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
31c10 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
31c20 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
31c30 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6c 65  tiveModule.xRele
31c40 61 73 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ase" /> method..
31c50 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
31c60 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
31c70 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
31c80 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
31c90 78 52 65 6c 65 61 73 65 28 0d 0a 20 20 20 20 20  xRelease(..     
31ca0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
31cb0 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20  r pVtab,..      
31cc0 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 53            int iS
31cd0 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20 20 20  avepoint..      
31ce0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
31cf0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
31d00 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
31d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31d20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20  // NOTE: Called 
31d30 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d  by native code..
31d40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31d50 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
31d60 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73       // CheckDis
31d70 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d  posed(); /* EXEM
31d80 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  PT */....       
31d90 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64           if (mod
31da0 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ule == null)..  
31db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31dc0 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e    return ModuleN
31dd0 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65  otAvailableTable
31de0 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d  Error(pVtab);...
31df0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31e00 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78   return module.x
31e10 52 65 6c 65 61 73 65 28 70 56 74 61 62 2c 20 69  Release(pVtab, i
31e20 53 61 76 65 70 6f 69 6e 74 29 3b 0d 0a 20 20 20  Savepoint);..   
31e30 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
31e40 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
31e50 2f 2f 2f 2f 2f 2f 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 0d 0a 0d  /////////////...
31e90 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
31ea0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
31eb0 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
31ec0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
31ed0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
31ee0 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 22 20  le.xRollbackTo" 
31ef0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
31f00 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
31f10 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
31f20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
31f30 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20  ame="pVtab">..  
31f40 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
31f50 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
31f60 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
31f70 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f  dule.xRollbackTo
31f80 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
31f90 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
31fa0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
31fb0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
31fc0 61 6d 65 3d 22 69 53 61 76 65 70 6f 69 6e 74 22  ame="iSavepoint"
31fd0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
31fe0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
31ff0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
32000 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62  iveModule.xRollb
32010 61 63 6b 54 6f 22 20 2f 3e 20 6d 65 74 68 6f 64  ackTo" /> method
32020 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
32030 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
32040 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65           /// <re
32050 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
32060 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
32070 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
32080 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
32090 52 6f 6c 6c 62 61 63 6b 54 6f 22 20 2f 3e 20 6d  RollbackTo" /> m
320a0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
320b0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
320c0 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
320d0 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72  public SQLiteErr
320e0 6f 72 43 6f 64 65 20 78 52 6f 6c 6c 62 61 63 6b  orCode xRollback
320f0 54 6f 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  To(..           
32100 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
32110 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  b,..            
32120 20 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69      int iSavepoi
32130 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  nt..            
32140 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
32150 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
32160 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
32170 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
32180 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74  E: Called by nat
32190 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  ive code...     
321a0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
321b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
321c0 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  / CheckDisposed(
321d0 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d  ); /* EXEMPT */.
321e0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
321f0 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d     if (module ==
32200 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
32210 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
32220 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69  rn ModuleNotAvai
32230 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72 28  lableTableError(
32240 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20  pVtab);....     
32250 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
32260 6e 20 6d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61  n module.xRollba
32270 63 6b 54 6f 28 70 56 74 61 62 2c 20 69 53 61 76  ckTo(pVtab, iSav
32280 65 70 6f 69 6e 74 29 3b 0d 0a 20 20 20 20 20 20  epoint);..      
32290 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
322a0 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
322b0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
322c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
322d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
322e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
322f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32300 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
32310 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73 70 6f    #region IDispo
32320 73 61 62 6c 65 20 4d 65 6d 62 65 72 73 0d 0a 20  sable Members.. 
32330 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
32340 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
32350 20 20 20 20 20 20 2f 2f 2f 20 44 69 73 70 6f 73        /// Dispos
32360 65 73 20 6f 66 20 74 68 69 73 20 6f 62 6a 65 63  es of this objec
32370 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  t instance...   
32380 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73           /// </s
32390 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
323a0 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64       public void
323b0 20 44 69 73 70 6f 73 65 28 29 0d 0a 20 20 20 20   Dispose()..    
323c0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
323d0 20 20 20 20 20 20 20 20 20 20 20 44 69 73 70 6f             Dispo
323e0 73 65 28 74 72 75 65 29 3b 0d 0a 20 20 20 20 20  se(true);..     
323f0 20 20 20 20 20 20 20 20 20 20 20 47 43 2e 53 75             GC.Su
32400 70 70 72 65 73 73 46 69 6e 61 6c 69 7a 65 28 74  ppressFinalize(t
32410 68 69 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  his);..         
32420 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
32430 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
32440 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
32490 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ...            #
324a0 72 65 67 69 6f 6e 20 49 44 69 73 70 6f 73 61 62  region IDisposab
324b0 6c 65 20 22 50 61 74 74 65 72 6e 22 20 4d 65 6d  le "Pattern" Mem
324c0 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 20 20  bers..          
324d0 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 64    private bool d
324e0 69 73 70 6f 73 65 64 3b 0d 0a 20 20 20 20 20 20  isposed;..      
324f0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
32500 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
32510 20 2f 2f 2f 20 54 68 72 6f 77 73 20 61 6e 20 3c   /// Throws an <
32520 73 65 65 20 63 72 65 66 3d 22 4f 62 6a 65 63 74  see cref="Object
32530 44 69 73 70 6f 73 65 64 45 78 63 65 70 74 69 6f  DisposedExceptio
32540 6e 22 20 2f 3e 20 69 66 20 74 68 69 73 20 6f 62  n" /> if this ob
32550 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20 20 20  ject..          
32560 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 20 68    /// instance h
32570 61 73 20 62 65 65 6e 20 64 69 73 70 6f 73 65 64  as been disposed
32580 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
32590 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
325a0 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
325b0 74 65 20 76 6f 69 64 20 43 68 65 63 6b 44 69 73  te void CheckDis
325c0 70 6f 73 65 64 28 29 20 2f 2a 20 74 68 72 6f 77  posed() /* throw
325d0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
325e0 20 7b 0d 0a 23 69 66 20 54 48 52 4f 57 5f 4f 4e   {..#if THROW_ON
325f0 5f 44 49 53 50 4f 53 45 44 0d 0a 20 20 20 20 20  _DISPOSED..     
32600 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64             if (d
32610 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20 20 20  isposed)..      
32620 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
32630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32640 20 74 68 72 6f 77 20 6e 65 77 20 4f 62 6a 65 63   throw new Objec
32650 74 44 69 73 70 6f 73 65 64 45 78 63 65 70 74 69  tDisposedExcepti
32660 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on(..           
32670 20 20 20 20 20 20 20 20 20 20 20 20 20 74 79 70               typ
32680 65 6f 66 28 53 51 4c 69 74 65 4e 61 74 69 76 65  eof(SQLiteNative
32690 4d 6f 64 75 6c 65 29 2e 4e 61 6d 65 29 3b 0d 0a  Module).Name);..
326a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
326b0 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  }..#endif..     
326c0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
326d0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
326e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
326f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
32720 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
32730 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
32740 20 20 20 20 20 20 2f 2f 2f 20 44 69 73 70 6f 73        /// Dispos
32750 65 73 20 6f 66 20 74 68 69 73 20 6f 62 6a 65 63  es of this objec
32760 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  t instance...   
32770 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73           /// </s
32780 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
32790 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
327a0 6e 61 6d 65 3d 22 64 69 73 70 6f 73 69 6e 67 22  name="disposing"
327b0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
327c0 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74  // Non-zero if t
327d0 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 62 65  his method is be
327e0 69 6e 67 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20  ing called from 
327f0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  the..           
32800 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
32810 44 69 73 70 6f 73 65 28 29 22 20 2f 3e 20 6d 65  Dispose()" /> me
32820 74 68 6f 64 2e 20 20 5a 65 72 6f 20 69 66 20 74  thod.  Zero if t
32830 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 62 65  his method is be
32840 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ing..           
32850 20 2f 2f 2f 20 63 61 6c 6c 65 64 20 66 72 6f 6d   /// called from
32860 20 74 68 65 20 66 69 6e 61 6c 69 7a 65 72 2e 0d   the finalizer..
32870 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
32880 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
32890 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 2f         private /
328a0 2a 20 70 72 6f 74 65 63 74 65 64 20 76 69 72 74  * protected virt
328b0 75 61 6c 20 2a 2f 20 76 6f 69 64 20 44 69 73 70  ual */ void Disp
328c0 6f 73 65 28 62 6f 6f 6c 20 64 69 73 70 6f 73 69  ose(bool disposi
328d0 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng)..           
328e0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
328f0 20 20 20 20 69 66 20 28 21 64 69 73 70 6f 73 65      if (!dispose
32900 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d)..            
32910 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
32920 20 20 20 20 20 20 20 20 20 20 20 2f 2f 69 66 20             //if 
32930 28 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20  (disposing)..   
32940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32950 20 2f 2f 7b 0d 0a 20 20 20 20 20 20 20 20 20 20   //{..          
32960 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
32970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32990 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  ////..          
329a0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
329b0 2f 2f 20 64 69 73 70 6f 73 65 20 6d 61 6e 61 67  // dispose manag
329c0 65 64 20 72 65 73 6f 75 72 63 65 73 20 68 65 72  ed resources her
329d0 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  e.....          
329e0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
329f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32a10 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  ////..          
32a20 20 20 20 20 20 20 20 20 20 20 2f 2f 7d 0d 0a 0d            //}...
32a30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32a40 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
32a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
32a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32a80 20 2f 2f 20 72 65 6c 65 61 73 65 20 75 6e 6d 61   // release unma
32a90 6e 61 67 65 64 20 72 65 73 6f 75 72 63 65 73 20  naged resources 
32aa0 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20  here.....       
32ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f               ///
32ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32ae0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
32af0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
32b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32b10 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20     // NOTE: The 
32b20 6d 6f 64 75 6c 65 20 69 73 20 6e 6f 74 20 6f 77  module is not ow
32b30 6e 65 64 20 62 79 20 75 73 3b 20 74 68 65 72 65  ned by us; there
32b40 66 6f 72 65 2c 20 64 6f 20 6e 6f 74 0d 0a 20 20  fore, do not..  
32b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32b60 20 20 2f 2f 20 20 20 20 20 20 20 64 69 73 70 6f    //       dispo
32b70 73 65 20 69 74 2e 0d 0a 20 20 20 20 20 20 20 20  se it...        
32b80 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
32b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32ba0 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 21      if (module !
32bb0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
32bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32bd0 20 6d 6f 64 75 6c 65 20 3d 20 6e 75 6c 6c 3b 0d   module = null;.
32be0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
32bf0 20 20 20 20 20 20 20 64 69 73 70 6f 73 65 64 20         disposed 
32c00 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  = true;..       
32c10 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
32c20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
32c30 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
32c40 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n....           
32c50 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
32c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32c90 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
32ca0 20 20 20 20 23 72 65 67 69 6f 6e 20 44 65 73 74      #region Dest
32cb0 72 75 63 74 6f 72 0d 0a 20 20 20 20 20 20 20 20  ructor..        
32cc0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
32cd0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
32ce0 2f 2f 20 46 69 6e 61 6c 69 7a 65 73 20 74 68 69  // Finalizes thi
32cf0 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  s object instanc
32d00 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
32d10 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
32d20 20 20 20 20 20 20 20 20 20 20 20 20 7e 53 51 4c              ~SQL
32d30 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 28  iteNativeModule(
32d40 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
32d50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
32d60 20 20 44 69 73 70 6f 73 65 28 66 61 6c 73 65 29    Dispose(false)
32d70 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
32d80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65  ..            #e
32d90 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 20 20  ndregion..      
32da0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
32db0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
32dc0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
32dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
32e10 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
32e20 69 76 61 74 65 20 43 6f 6e 73 74 61 6e 74 73 0d  ivate Constants.
32e30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
32e40 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
32e50 2f 2f 2f 20 54 68 65 20 64 65 66 61 75 6c 74 20  /// The default 
32e60 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 6e  version of the n
32e70 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 6d 6f  ative sqlite3_mo
32e80 64 75 6c 65 20 73 74 72 75 63 74 75 72 65 20 69  dule structure i
32e90 6e 20 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20  n use...        
32ea0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
32eb0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
32ec0 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20  static readonly 
32ed0 69 6e 74 20 44 65 66 61 75 6c 74 4d 6f 64 75 6c  int DefaultModul
32ee0 65 56 65 72 73 69 6f 6e 20 3d 20 32 3b 0d 0a 20  eVersion = 2;.. 
32ef0 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
32f00 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
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 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
32f60 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
32f70 44 61 74 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f  Data..        //
32f80 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
32f90 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 66 69       /// This fi
32fa0 65 6c 64 20 69 73 20 75 73 65 64 20 74 6f 20 73  eld is used to s
32fb0 74 6f 72 65 20 74 68 65 20 6e 61 74 69 76 65 20  tore the native 
32fc0 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 73  sqlite3_module s
32fd0 74 72 75 63 74 75 72 65 0d 0a 20 20 20 20 20 20  tructure..      
32fe0 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64    /// associated
32ff0 20 77 69 74 68 20 74 68 69 73 20 6f 62 6a 65 63   with this objec
33000 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  t instance...   
33010 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
33020 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
33030 76 61 74 65 20 55 6e 73 61 66 65 4e 61 74 69 76  vate UnsafeNativ
33040 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
33050 5f 6d 6f 64 75 6c 65 20 6e 61 74 69 76 65 4d 6f  _module nativeMo
33060 64 75 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  dule;....       
33070 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
33080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
330a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
330b0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
330c0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
330d0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
330e0 68 69 73 20 66 69 65 6c 64 20 69 73 20 75 73 65  his field is use
330f0 64 20 74 6f 20 73 74 6f 72 65 20 74 68 65 20 64  d to store the d
33100 65 73 74 72 75 63 74 6f 72 20 64 65 6c 65 67 61  estructor delega
33110 74 65 20 74 6f 20 62 65 20 70 61 73 73 65 64 20  te to be passed 
33120 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  to..        /// 
33130 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
33140 6c 69 62 72 61 72 79 20 76 69 61 20 74 68 65 20  library via the 
33150 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 64  sqlite3_create_d
33160 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65  isposable_module
33170 28 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ()..        /// 
33180 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  function...     
33190 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
331a0 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
331b0 74 65 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  te UnsafeNativeM
331c0 65 74 68 6f 64 73 2e 78 44 65 73 74 72 6f 79 4d  ethods.xDestroyM
331d0 6f 64 75 6c 65 20 64 65 73 74 72 6f 79 4d 6f 64  odule destroyMod
331e0 75 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ule;....        
331f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33230 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
33240 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
33250 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
33260 69 73 20 66 69 65 6c 64 20 69 73 20 75 73 65 64  is field is used
33270 20 74 6f 20 73 74 6f 72 65 20 61 20 70 6f 69 6e   to store a poin
33280 74 65 72 20 74 6f 20 74 68 65 20 6e 61 74 69 76  ter to the nativ
33290 65 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65  e sqlite3_module
332a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74  ..        /// st
332b0 72 75 63 74 75 72 65 20 72 65 74 75 72 6e 65 64  ructure returned
332c0 20 62 79 20 74 68 65 20 73 71 6c 69 74 65 33 5f   by the sqlite3_
332d0 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61 62 6c  create_disposabl
332e0 65 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20 20  e_module..      
332f0 20 20 2f 2f 2f 20 66 75 6e 63 74 69 6f 6e 2e 0d    /// function..
33300 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
33310 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
33320 20 70 72 69 76 61 74 65 20 49 6e 74 50 74 72 20   private IntPtr 
33330 64 69 73 70 6f 73 61 62 6c 65 4d 6f 64 75 6c 65  disposableModule
33340 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
33350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33390 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41 54  ////....#if PLAT
333a0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
333b0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 2f  EWORK..        /
333c0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
333d0 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 66        /// This f
333e0 69 65 6c 64 20 69 73 20 75 73 65 64 20 74 6f 20  ield is used to 
333f0 68 6f 6c 64 20 74 68 65 20 62 6c 6f 63 6b 20 6f  hold the block o
33400 66 20 6e 61 74 69 76 65 20 6d 65 6d 6f 72 79 20  f native memory 
33410 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 0d 0a 20  that contains.. 
33420 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 6e         /// the n
33430 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 6d 6f  ative sqlite3_mo
33440 64 75 6c 65 20 73 74 72 75 63 74 75 72 65 20 61  dule structure a
33450 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
33460 68 69 73 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20  his object..    
33470 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63 65      /// instance
33480 20 77 68 65 6e 20 72 75 6e 6e 69 6e 67 20 6f 6e   when running on
33490 20 74 68 65 20 2e 4e 45 54 20 43 6f 6d 70 61 63   the .NET Compac
334a0 74 20 46 72 61 6d 65 77 6f 72 6b 2e 0d 0a 20 20  t Framework...  
334b0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
334c0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  ary>..        pr
334d0 69 76 61 74 65 20 49 6e 74 50 74 72 20 70 4e 61  ivate IntPtr pNa
334e0 74 69 76 65 4d 6f 64 75 6c 65 3b 0d 0a 23 65 6e  tiveModule;..#en
334f0 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  dif....        /
33500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33540 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
33550 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
33560 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
33570 73 20 66 69 65 6c 64 20 69 73 20 75 73 65 64 20  s field is used 
33580 74 6f 20 73 74 6f 72 65 20 74 68 65 20 76 69 72  to store the vir
33590 74 75 61 6c 20 74 61 62 6c 65 20 69 6e 73 74 61  tual table insta
335a0 6e 63 65 73 20 61 73 73 6f 63 69 61 74 65 64 0d  nces associated.
335b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74  .        /// wit
335c0 68 20 74 68 69 73 20 6d 6f 64 75 6c 65 2e 20 20  h this module.  
335d0 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  The native point
335e0 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65  er to the sqlite
335f0 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 0d 0a  3_vtab derived..
33600 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75          /// stru
33610 63 74 75 72 65 20 69 73 20 75 73 65 64 20 74 6f  cture is used to
33620 20 6b 65 79 20 69 6e 74 6f 20 74 68 69 73 20 63   key into this c
33630 6f 6c 6c 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20  ollection...    
33640 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
33650 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  y>..        priv
33660 61 74 65 20 44 69 63 74 69 6f 6e 61 72 79 3c 49  ate Dictionary<I
33670 6e 74 50 74 72 2c 20 53 51 4c 69 74 65 56 69 72  ntPtr, SQLiteVir
33680 74 75 61 6c 54 61 62 6c 65 3e 20 74 61 62 6c 65  tualTable> table
33690 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  s;....        //
336a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
336b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
336c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
336d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
336e0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
336f0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
33700 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
33710 20 66 69 65 6c 64 20 69 73 20 75 73 65 64 20 74   field is used t
33720 6f 20 73 74 6f 72 65 20 74 68 65 20 76 69 72 74  o store the virt
33730 75 61 6c 20 74 61 62 6c 65 20 63 75 72 73 6f 72  ual table cursor
33740 20 69 6e 73 74 61 6e 63 65 73 0d 0a 20 20 20 20   instances..    
33750 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74      /// associat
33760 65 64 20 77 69 74 68 20 74 68 69 73 20 6d 6f 64  ed with this mod
33770 75 6c 65 2e 20 20 54 68 65 20 6e 61 74 69 76 65  ule.  The native
33780 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 0d   pointer to the.
33790 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c  .        /// sql
337a0 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72  ite3_vtab_cursor
337b0 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75   derived structu
337c0 72 65 20 69 73 20 75 73 65 64 20 74 6f 20 6b 65  re is used to ke
337d0 79 20 69 6e 74 6f 20 74 68 69 73 0d 0a 20 20 20  y into this..   
337e0 20 20 20 20 20 2f 2f 2f 20 63 6f 6c 6c 65 63 74       /// collect
337f0 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ion...        //
33800 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
33810 20 20 20 20 20 20 70 72 69 76 61 74 65 20 44 69        private Di
33820 63 74 69 6f 6e 61 72 79 3c 49 6e 74 50 74 72 2c  ctionary<IntPtr,
33830 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
33840 62 6c 65 43 75 72 73 6f 72 3e 20 63 75 72 73 6f  bleCursor> curso
33850 72 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  rs;....        /
33860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
338a0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
338b0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
338c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
338d0 73 20 66 69 65 6c 64 20 69 73 20 75 73 65 64 20  s field is used 
338e0 74 6f 20 73 74 6f 72 65 20 74 68 65 20 76 69 72  to store the vir
338f0 74 75 61 6c 20 74 61 62 6c 65 20 66 75 6e 63 74  tual table funct
33900 69 6f 6e 20 69 6e 73 74 61 6e 63 65 73 0d 0a 20  ion instances.. 
33910 20 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63         /// assoc
33920 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20  iated with this 
33930 6d 6f 64 75 6c 65 2e 20 20 54 68 65 20 63 61 73  module.  The cas
33940 65 2d 69 6e 73 65 6e 73 69 74 69 76 65 20 66 75  e-insensitive fu
33950 6e 63 74 69 6f 6e 20 6e 61 6d 65 0d 0a 20 20 20  nction name..   
33960 20 20 20 20 20 2f 2f 2f 20 61 6e 64 20 74 68 65       /// and the
33970 20 6e 75 6d 62 65 72 20 6f 66 20 61 72 67 75 6d   number of argum
33980 65 6e 74 73 20 28 77 69 74 68 20 2d 31 20 6d 65  ents (with -1 me
33990 61 6e 69 6e 67 20 22 61 6e 79 22 29 20 61 72 65  aning "any") are
339a0 20 75 73 65 64 20 74 6f 0d 0a 20 20 20 20 20 20   used to..      
339b0 20 20 2f 2f 2f 20 63 6f 6e 73 74 72 75 63 74 20    /// construct 
339c0 74 68 65 20 73 74 72 69 6e 67 20 74 68 61 74 20  the string that 
339d0 69 73 20 75 73 65 64 20 74 6f 20 6b 65 79 20 69  is used to key i
339e0 6e 74 6f 20 74 68 69 73 20 63 6f 6c 6c 65 63 74  nto this collect
339f0 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ion...        //
33a00 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
33a10 20 20 20 20 20 20 70 72 69 76 61 74 65 20 44 69        private Di
33a20 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c  ctionary<string,
33a30 20 53 51 4c 69 74 65 46 75 6e 63 74 69 6f 6e 3e   SQLiteFunction>
33a40 20 66 75 6e 63 74 69 6f 6e 73 3b 0d 0a 20 20 20   functions;..   
33a50 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
33a60 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
33a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ab0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
33ac0 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 43 6f 6e  egion Public Con
33ad0 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20  structors..     
33ae0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
33af0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f  ..        /// Co
33b00 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74  nstructs an inst
33b10 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61  ance of this cla
33b20 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ss...        ///
33b30 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
33b40 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
33b50 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20  name="name">..  
33b60 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
33b70 6d 65 20 6f 66 20 74 68 65 20 6d 6f 64 75 6c 65  me of the module
33b80 2e 20 20 54 68 69 73 20 70 61 72 61 6d 65 74 65  .  This paramete
33b90 72 20 63 61 6e 6e 6f 74 20 62 65 20 6e 75 6c 6c  r cannot be null
33ba0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
33bb0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
33bc0 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 4d 6f   public SQLiteMo
33bd0 64 75 6c 65 28 73 74 72 69 6e 67 20 6e 61 6d 65  dule(string name
33be0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
33bf0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 61            if (na
33c00 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  me == null)..   
33c10 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72               thr
33c20 6f 77 20 6e 65 77 20 41 72 67 75 6d 65 6e 74 4e  ow new ArgumentN
33c30 75 6c 6c 45 78 63 65 70 74 69 6f 6e 28 22 6e 61  ullException("na
33c40 6d 65 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  me");....       
33c50 20 20 20 20 20 74 68 69 73 2e 6e 61 6d 65 20 3d       this.name =
33c60 20 6e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20   name;..        
33c70 20 20 20 20 74 68 69 73 2e 74 61 62 6c 65 73 20      this.tables 
33c80 3d 20 6e 65 77 20 44 69 63 74 69 6f 6e 61 72 79  = new Dictionary
33c90 3c 49 6e 74 50 74 72 2c 20 53 51 4c 69 74 65 56  <IntPtr, SQLiteV
33ca0 69 72 74 75 61 6c 54 61 62 6c 65 3e 28 29 3b 0d  irtualTable>();.
33cb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
33cc0 73 2e 63 75 72 73 6f 72 73 20 3d 20 6e 65 77 20  s.cursors = new 
33cd0 44 69 63 74 69 6f 6e 61 72 79 3c 49 6e 74 50 74  Dictionary<IntPt
33ce0 72 2c 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c  r, SQLiteVirtual
33cf0 54 61 62 6c 65 43 75 72 73 6f 72 3e 28 29 3b 0d  TableCursor>();.
33d00 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
33d10 73 2e 66 75 6e 63 74 69 6f 6e 73 20 3d 20 6e 65  s.functions = ne
33d20 77 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72  w Dictionary<str
33d30 69 6e 67 2c 20 53 51 4c 69 74 65 46 75 6e 63 74  ing, SQLiteFunct
33d40 69 6f 6e 3e 28 29 3b 0d 0a 20 20 20 20 20 20 20  ion>();..       
33d50 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
33d60 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
33d70 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
33d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
33dc0 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 6e 74       #region Int
33dd0 65 72 6e 61 6c 20 4d 65 74 68 6f 64 73 0d 0a 20  ernal Methods.. 
33de0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
33df0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
33e00 2f 20 43 61 6c 6c 73 20 74 68 65 20 6e 61 74 69  / Calls the nati
33e10 76 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c  ve SQLite core l
33e20 69 62 72 61 72 79 20 69 6e 20 6f 72 64 65 72 20  ibrary in order 
33e30 74 6f 20 63 72 65 61 74 65 20 61 20 6e 65 77 0d  to create a new.
33e40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 69 73  .        /// dis
33e50 70 6f 73 61 62 6c 65 20 6d 6f 64 75 6c 65 20 63  posable module c
33e60 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 69 6d  ontaining the im
33e70 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20  plementation of 
33e80 61 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e  a virtual table.
33e90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
33ea0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
33eb0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
33ec0 65 3d 22 70 44 62 22 3e 0d 0a 20 20 20 20 20 20  e="pDb">..      
33ed0 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
33ee0 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
33ef0 74 69 6f 6e 20 70 6f 69 6e 74 65 72 20 74 6f 20  tion pointer to 
33f00 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  use...        //
33f10 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
33f20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
33f30 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
33f40 6f 6e 2d 7a 65 72 6f 20 75 70 6f 6e 20 73 75 63  on-zero upon suc
33f50 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  cess...        /
33f60 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
33f70 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20         internal 
33f80 62 6f 6f 6c 20 43 72 65 61 74 65 44 69 73 70 6f  bool CreateDispo
33f90 73 61 62 6c 65 4d 6f 64 75 6c 65 28 0d 0a 20 20  sableModule(..  
33fa0 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
33fb0 20 70 44 62 0d 0a 20 20 20 20 20 20 20 20 20 20   pDb..          
33fc0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
33fd0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
33fe0 64 69 73 70 6f 73 61 62 6c 65 4d 6f 64 75 6c 65  disposableModule
33ff0 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
34000 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
34010 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
34020 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
34030 74 50 74 72 20 70 4e 61 6d 65 20 3d 20 49 6e 74  tPtr pName = Int
34040 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20  Ptr.Zero;....   
34050 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
34060 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
34070 20 20 20 20 20 20 20 20 20 20 20 20 20 70 4e 61               pNa
34080 6d 65 20 3d 20 53 51 4c 69 74 65 53 74 72 69 6e  me = SQLiteStrin
34090 67 2e 55 74 66 38 49 6e 74 50 74 72 46 72 6f 6d  g.Utf8IntPtrFrom
340a0 53 74 72 69 6e 67 28 6e 61 6d 65 29 3b 0d 0a 0d  String(name);...
340b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
340c0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
340d0 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64  hods.sqlite3_mod
340e0 75 6c 65 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65  ule nativeModule
340f0 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   =..            
34100 20 20 20 20 20 20 20 20 41 6c 6c 6f 63 61 74 65          Allocate
34110 4e 61 74 69 76 65 4d 6f 64 75 6c 65 28 29 3b 0d  NativeModule();.
34120 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
34130 20 20 20 64 65 73 74 72 6f 79 4d 6f 64 75 6c 65     destroyModule
34140 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
34150 69 76 65 4d 65 74 68 6f 64 73 2e 78 44 65 73 74  iveMethods.xDest
34160 72 6f 79 4d 6f 64 75 6c 65 28 0d 0a 20 20 20 20  royModule(..    
34170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34180 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 29 3b  xDestroyModule);
34190 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
341a0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
341b0 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
341c0 20 20 20 20 64 69 73 70 6f 73 61 62 6c 65 4d 6f      disposableMo
341d0 64 75 6c 65 20 3d 0d 0a 20 20 20 20 20 20 20 20  dule =..        
341e0 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
341f0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
34200 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 64  sqlite3_create_d
34210 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65  isposable_module
34220 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
34230 20 20 20 20 20 20 20 20 20 20 20 70 44 62 2c 20             pDb, 
34240 70 4e 61 6d 65 2c 20 72 65 66 20 6e 61 74 69 76  pName, ref nativ
34250 65 4d 6f 64 75 6c 65 2c 20 49 6e 74 50 74 72 2e  eModule, IntPtr.
34260 5a 65 72 6f 2c 20 64 65 73 74 72 6f 79 4d 6f 64  Zero, destroyMod
34270 75 6c 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ule);....       
34280 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
34290 28 64 69 73 70 6f 73 61 62 6c 65 4d 6f 64 75 6c  (disposableModul
342a0 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e != IntPtr.Zero
342b0 29 3b 0d 0a 23 65 6c 69 66 20 21 53 51 4c 49 54  );..#elif !SQLIT
342c0 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20  E_STANDARD..    
342d0 20 20 20 20 20 20 20 20 20 20 20 20 64 69 73 70              disp
342e0 6f 73 61 62 6c 65 4d 6f 64 75 6c 65 20 3d 0d 0a  osableModule =..
342f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34300 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65      UnsafeNative
34310 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
34320 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61 62 6c  create_disposabl
34330 65 5f 6d 6f 64 75 6c 65 5f 69 6e 74 65 72 6f 70  e_module_interop
34340 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
34350 20 20 20 20 20 20 20 20 20 20 70 44 62 2c 20 70            pDb, p
34360 4e 61 6d 65 2c 20 41 6c 6c 6f 63 61 74 65 4e 61  Name, AllocateNa
34370 74 69 76 65 4d 6f 64 75 6c 65 49 6e 74 65 72 6f  tiveModuleIntero
34380 70 28 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  p(),..          
34390 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
343a0 69 76 65 4d 6f 64 75 6c 65 2e 69 56 65 72 73 69  iveModule.iVersi
343b0 6f 6e 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65  on, nativeModule
343c0 2e 78 43 72 65 61 74 65 2c 0d 0a 20 20 20 20 20  .xCreate,..     
343d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
343e0 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
343f0 43 6f 6e 6e 65 63 74 2c 20 6e 61 74 69 76 65 4d  Connect, nativeM
34400 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78  odule.xBestIndex
34410 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
34420 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
34430 4d 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65  Module.xDisconne
34440 63 74 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65  ct, nativeModule
34450 2e 78 44 65 73 74 72 6f 79 2c 0d 0a 20 20 20 20  .xDestroy,..    
34460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34470 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
34480 78 4f 70 65 6e 2c 20 6e 61 74 69 76 65 4d 6f 64  xOpen, nativeMod
34490 75 6c 65 2e 78 43 6c 6f 73 65 2c 0d 0a 20 20 20  ule.xClose,..   
344a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
344b0 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
344c0 2e 78 46 69 6c 74 65 72 2c 20 6e 61 74 69 76 65  .xFilter, native
344d0 4d 6f 64 75 6c 65 2e 78 4e 65 78 74 2c 0d 0a 20  Module.xNext,.. 
344e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
344f0 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
34500 6c 65 2e 78 45 6f 66 2c 20 6e 61 74 69 76 65 4d  le.xEof, nativeM
34510 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 2c 0d 0a  odule.xColumn,..
34520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34530 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
34540 75 6c 65 2e 78 52 6f 77 49 64 2c 20 6e 61 74 69  ule.xRowId, nati
34550 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65  veModule.xUpdate
34560 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
34570 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
34580 4d 6f 64 75 6c 65 2e 78 42 65 67 69 6e 2c 20 6e  Module.xBegin, n
34590 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53 79 6e  ativeModule.xSyn
345a0 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  c,..            
345b0 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
345c0 65 4d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 2c  eModule.xCommit,
345d0 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52   nativeModule.xR
345e0 6f 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20  ollback,..      
345f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34600 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46   nativeModule.xF
34610 69 6e 64 46 75 6e 63 74 69 6f 6e 2c 20 6e 61 74  indFunction, nat
34620 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d  iveModule.xRenam
34630 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
34640 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
34650 65 4d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69  eModule.xSavepoi
34660 6e 74 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65  nt, nativeModule
34670 2e 78 52 65 6c 65 61 73 65 2c 0d 0a 20 20 20 20  .xRelease,..    
34680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34690 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
346a0 78 52 6f 6c 6c 62 61 63 6b 54 6f 2c 20 49 6e 74  xRollbackTo, Int
346b0 50 74 72 2e 5a 65 72 6f 2c 20 64 65 73 74 72 6f  Ptr.Zero, destro
346c0 79 4d 6f 64 75 6c 65 29 3b 0d 0a 0d 0a 20 20 20  yModule);....   
346d0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
346e0 75 72 6e 20 28 64 69 73 70 6f 73 61 62 6c 65 4d  urn (disposableM
346f0 6f 64 75 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e  odule != IntPtr.
34700 5a 65 72 6f 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20  Zero);..#else.. 
34710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
34720 68 72 6f 77 20 6e 65 77 20 4e 6f 74 49 6d 70 6c  hrow new NotImpl
34730 65 6d 65 6e 74 65 64 45 78 63 65 70 74 69 6f 6e  ementedException
34740 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ();..#endif..   
34750 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
34760 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d          finally.
34770 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
34780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34790 69 66 20 28 70 4e 61 6d 65 20 21 3d 20 49 6e 74  if (pName != Int
347a0 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
347b0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
347c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
347d0 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46    SQLiteMemory.F
347e0 72 65 65 28 70 4e 61 6d 65 29 3b 0d 0a 20 20 20  ree(pName);..   
347f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34800 20 70 4e 61 6d 65 20 3d 20 49 6e 74 50 74 72 2e   pName = IntPtr.
34810 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20  Zero;..         
34820 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
34830 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
34840 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
34850 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
34860 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
34870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
348a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
348b0 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69       #region Pri
348c0 76 61 74 65 20 4d 65 74 68 6f 64 73 0d 0a 20 20  vate Methods..  
348d0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
348e0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
348f0 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20   This method is 
34900 63 61 6c 6c 65 64 20 62 79 20 74 68 65 20 53 51  called by the SQ
34910 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
34920 79 20 77 68 65 6e 20 74 68 65 20 6e 61 74 69 76  y when the nativ
34930 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d  e..        /// m
34940 6f 64 75 6c 65 20 61 73 73 6f 63 69 61 74 65 64  odule associated
34950 20 77 69 74 68 20 74 68 69 73 20 6f 62 6a 65 63   with this objec
34960 74 20 69 6e 73 74 61 6e 63 65 20 69 73 20 62 65  t instance is be
34970 69 6e 67 20 64 65 73 74 72 6f 79 65 64 20 64 75  ing destroyed du
34980 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  e..        /// t
34990 6f 20 69 74 73 20 70 61 72 65 6e 74 20 63 6f 6e  o its parent con
349a0 6e 65 63 74 69 6f 6e 20 62 65 69 6e 67 20 63 6c  nection being cl
349b0 6f 73 65 64 2e 20 20 49 74 20 6d 61 79 20 61 6c  osed.  It may al
349c0 73 6f 20 62 65 20 63 61 6c 6c 65 64 20 62 79 0d  so be called by.
349d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  .        /// the
349e0 20 22 76 74 73 68 69 6d 22 20 6d 6f 64 75 6c 65   "vtshim" module
349f0 20 69 66 2f 77 68 65 6e 20 74 68 65 20 73 71 6c   if/when the sql
34a00 69 74 65 33 5f 64 69 73 70 6f 73 65 5f 6d 6f 64  ite3_dispose_mod
34a10 75 6c 65 28 29 20 66 75 6e 63 74 69 6f 6e 0d 0a  ule() function..
34a20 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 73 20 63          /// is c
34a30 61 6c 6c 65 64 2e 0d 0a 20 20 20 20 20 20 20 20  alled...        
34a40 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
34a50 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
34a60 61 6d 20 6e 61 6d 65 3d 22 70 43 6c 69 65 6e 74  am name="pClient
34a70 44 61 74 61 22 3e 0d 0a 20 20 20 20 20 20 20 20  Data">..        
34a80 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 75  /// The native u
34a90 73 65 72 2d 64 61 74 61 20 70 6f 69 6e 74 65 72  ser-data pointer
34aa0 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
34ab0 20 74 68 69 73 20 6d 6f 64 75 6c 65 2c 20 61 73   this module, as
34ac0 20 69 74 20 77 61 73 0d 0a 20 20 20 20 20 20 20   it was..       
34ad0 20 2f 2f 2f 20 70 72 6f 76 69 64 65 64 20 74 6f   /// provided to
34ae0 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
34af0 20 6c 69 62 72 61 72 79 20 77 68 65 6e 20 74 68   library when th
34b00 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20  e native module 
34b10 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20 20 20  instance..      
34b20 20 20 2f 2f 2f 20 77 61 73 20 63 72 65 61 74 65    /// was create
34b30 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
34b40 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
34b50 20 20 70 72 69 76 61 74 65 20 76 6f 69 64 20 78    private void x
34b60 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 28 0d 0a  DestroyModule(..
34b70 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
34b80 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61 20 2f  tr pClientData /
34b90 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20  * NOT USED */.. 
34ba0 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
34bb0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
34bc0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
34bd0 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 74       // NOTE: At
34be0 20 74 68 69 73 20 70 6f 69 6e 74 2c 20 6a 75 73   this point, jus
34bf0 74 20 6d 61 6b 65 20 73 75 72 65 20 74 68 61 74  t make sure that
34c00 20 74 68 69 73 20 6e 61 74 69 76 65 20 6d 6f 64   this native mod
34c10 75 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ule..           
34c20 20 2f 2f 20 20 20 20 20 20 20 68 61 6e 64 6c 65   //       handle
34c30 20 69 73 20 6e 6f 74 20 72 65 75 73 65 64 2c 20   is not reused, 
34c40 6e 6f 72 20 70 61 73 73 65 64 20 69 6e 74 6f 20  nor passed into 
34c50 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20  the native..    
34c60 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
34c70 20 73 71 6c 69 74 65 33 5f 64 69 73 70 6f 73 65   sqlite3_dispose
34c80 5f 6d 6f 64 75 6c 65 28 29 20 66 75 6e 63 74 69  _module() functi
34c90 6f 6e 20 6c 61 74 65 72 20 28 69 2e 65 2e 20 69  on later (i.e. i
34ca0 66 2f 77 68 65 6e 0d 0a 20 20 20 20 20 20 20 20  f/when..        
34cb0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65      //       the
34cc0 20 44 69 73 70 6f 73 65 28 29 20 6d 65 74 68 6f   Dispose() metho
34cd0 64 20 6f 66 20 74 68 69 73 20 6f 62 6a 65 63 74  d of this object
34ce0 20 69 6e 73 74 61 6e 63 65 20 69 73 20 63 61 6c   instance is cal
34cf0 6c 65 64 29 2e 0d 0a 20 20 20 20 20 20 20 20 20  led)...         
34d00 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
34d10 20 20 20 64 69 73 70 6f 73 61 62 6c 65 4d 6f 64     disposableMod
34d20 75 6c 65 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72  ule = IntPtr.Zer
34d30 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  o;..        }...
34d40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
34d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34d90 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
34da0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
34db0 20 20 20 2f 2f 2f 20 43 72 65 61 74 65 73 20 61     /// Creates a
34dc0 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 6e  nd returns the n
34dd0 61 74 69 76 65 20 73 71 6c 69 74 65 5f 6d 6f 64  ative sqlite_mod
34de0 75 6c 65 20 73 74 72 75 63 74 75 72 65 20 75 73  ule structure us
34df0 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ing the..       
34e00 20 2f 2f 2f 20 63 6f 6e 66 69 67 75 72 65 64 20   /// configured 
34e10 28 6f 72 20 64 65 66 61 75 6c 74 29 20 3c 73 65  (or default) <se
34e20 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
34e30 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 0d  ativeModule" />.
34e40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74  .        /// int
34e50 65 72 66 61 63 65 20 69 6d 70 6c 65 6d 65 6e 74  erface implement
34e60 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ation...        
34e70 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
34e80 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
34e90 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
34ea0 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 73 71  // The native sq
34eb0 6c 69 74 65 5f 6d 6f 64 75 6c 65 20 73 74 72 75  lite_module stru
34ec0 63 74 75 72 65 20 75 73 69 6e 67 20 74 68 65 20  cture using the 
34ed0 63 6f 6e 66 69 67 75 72 65 64 20 28 6f 72 0d 0a  configured (or..
34ee0 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 65 66 61          /// defa
34ef0 75 6c 74 29 20 3c 73 65 65 20 63 72 65 66 3d 22  ult) <see cref="
34f00 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
34f10 75 6c 65 22 20 2f 3e 20 69 6e 74 65 72 66 61 63  ule" /> interfac
34f20 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  e..        /// i
34f30 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d 0a  mplementation...
34f40 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
34f50 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
34f60 70 72 69 76 61 74 65 20 55 6e 73 61 66 65 4e 61  private UnsafeNa
34f70 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
34f80 74 65 33 5f 6d 6f 64 75 6c 65 20 41 6c 6c 6f 63  te3_module Alloc
34f90 61 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 28  ateNativeModule(
34fa0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
34fb0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
34fc0 20 41 6c 6c 6f 63 61 74 65 4e 61 74 69 76 65 4d   AllocateNativeM
34fd0 6f 64 75 6c 65 28 47 65 74 4e 61 74 69 76 65 4d  odule(GetNativeM
34fe0 6f 64 75 6c 65 49 6d 70 6c 28 29 29 3b 0d 0a 20  oduleImpl());.. 
34ff0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
35000 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
35010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
35050 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
35060 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
35070 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
35080 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
35090 20 43 72 65 61 74 65 73 20 61 6e 64 20 72 65 74   Creates and ret
350a0 75 72 6e 73 20 61 20 6d 65 6d 6f 72 79 20 62 6c  urns a memory bl
350b0 6f 63 6b 20 6f 62 74 61 69 6e 65 64 20 66 72 6f  ock obtained fro
350c0 6d 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  m the SQLite cor
350d0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c  e..        /// l
350e0 69 62 72 61 72 79 20 75 73 65 64 20 74 6f 20 73  ibrary used to s
350f0 74 6f 72 65 20 74 68 65 20 6e 61 74 69 76 65 20  tore the native 
35100 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 73  sqlite3_module s
35110 74 72 75 63 74 75 72 65 20 66 6f 72 20 74 68 69  tructure for thi
35120 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f  s..        /// o
35130 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 77  bject instance w
35140 68 65 6e 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 74  hen running on t
35150 68 65 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20  he .NET Compact 
35160 46 72 61 6d 65 77 6f 72 6b 2e 0d 0a 20 20 20 20  Framework...    
35170 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
35180 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
35190 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
351a0 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
351b0 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
351c0 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f   native sqlite3_
351d0 6d 6f 64 75 6c 65 20 73 74 72 75 63 74 75 72 65  module structure
351e0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
351f0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
35200 20 20 20 70 72 69 76 61 74 65 20 49 6e 74 50 74     private IntPt
35210 72 20 41 6c 6c 6f 63 61 74 65 4e 61 74 69 76 65  r AllocateNative
35220 4d 6f 64 75 6c 65 49 6e 74 65 72 6f 70 28 29 0d  ModuleInterop().
35230 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
35240 20 20 20 20 20 20 20 20 69 66 20 28 70 4e 61 74          if (pNat
35250 69 76 65 4d 6f 64 75 6c 65 20 3d 3d 20 49 6e 74  iveModule == Int
35260 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
35270 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
35280 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
35290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
352a0 20 48 41 43 4b 3a 20 4e 6f 20 65 61 73 79 20 77   HACK: No easy w
352b0 61 79 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20  ay to determine 
352c0 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20  the size of the 
352d0 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20  native..        
352e0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
352f0 20 73 71 6c 69 74 65 5f 6d 6f 64 75 6c 65 20 73   sqlite_module s
35300 74 72 75 63 74 75 72 65 20 77 68 65 6e 20 72 75  tructure when ru
35310 6e 6e 69 6e 67 20 6f 6e 20 74 68 65 20 2e 4e 45  nning on the .NE
35320 54 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  T..             
35330 20 20 20 2f 2f 20 20 20 20 20 20 20 43 6f 6d 70     //       Comp
35340 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 3b 20 74  act Framework; t
35350 68 65 72 65 66 6f 72 65 2c 20 6a 75 73 74 20 62  herefore, just b
35360 61 73 65 20 74 68 65 20 73 69 7a 65 0d 0a 20 20  ase the size..  
35370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
35380 20 20 20 20 20 20 20 6f 6e 20 77 68 61 74 20 77         on what w
35390 65 20 6b 6e 6f 77 3a 0d 0a 20 20 20 20 20 20 20  e know:..       
353a0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
353b0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
353c0 20 20 20 20 20 20 54 68 65 72 65 20 69 73 20 6f        There is o
353d0 6e 65 20 69 6e 74 65 67 65 72 20 6d 65 6d 62 65  ne integer membe
353e0 72 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r...            
353f0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 54 68 65      //       The
35400 72 65 20 61 72 65 20 32 32 20 66 75 6e 63 74 69  re are 22 functi
35410 6f 6e 20 70 6f 69 6e 74 65 72 20 6d 65 6d 62 65  on pointer membe
35420 72 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  rs...           
35430 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
35440 20 20 20 20 20 20 20 20 20 70 4e 61 74 69 76 65           pNative
35450 4d 6f 64 75 6c 65 20 3d 20 53 51 4c 69 74 65 4d  Module = SQLiteM
35460 65 6d 6f 72 79 2e 41 6c 6c 6f 63 61 74 65 28 32  emory.Allocate(2
35470 33 20 2a 20 49 6e 74 50 74 72 2e 53 69 7a 65 29  3 * IntPtr.Size)
35480 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
35490 20 20 20 20 20 69 66 20 28 70 4e 61 74 69 76 65       if (pNative
354a0 4d 6f 64 75 6c 65 20 3d 3d 20 49 6e 74 50 74 72  Module == IntPtr
354b0 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
354c0 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
354d0 77 20 6e 65 77 20 4f 75 74 4f 66 4d 65 6d 6f 72  w new OutOfMemor
354e0 79 45 78 63 65 70 74 69 6f 6e 28 22 73 71 6c 69  yException("sqli
354f0 74 65 33 5f 6d 6f 64 75 6c 65 22 29 3b 0d 0a 20  te3_module");.. 
35500 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
35510 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
35520 72 6e 20 70 4e 61 74 69 76 65 4d 6f 64 75 6c 65  rn pNativeModule
35530 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65  ;..        }..#e
35540 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
35550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35590 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
355a0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
355b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 72  ..        /// Cr
355c0 65 61 74 65 73 20 61 6e 64 20 72 65 74 75 72 6e  eates and return
355d0 73 20 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c  s the native sql
355e0 69 74 65 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63  ite_module struc
355f0 74 75 72 65 20 75 73 69 6e 67 20 74 68 65 0d 0a  ture using the..
35600 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 70 65 63          /// spec
35610 69 66 69 65 64 20 3c 73 65 65 20 63 72 65 66 3d  ified <see cref=
35620 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
35630 64 75 6c 65 22 20 2f 3e 20 69 6e 74 65 72 66 61  dule" /> interfa
35640 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ce..        /// 
35650 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d  implementation..
35660 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
35670 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
35680 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
35690 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20 20 20  ="module">..    
356a0 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
356b0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
356c0 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 69  tiveModule" /> i
356d0 6e 74 65 72 66 61 63 65 20 69 6d 70 6c 65 6d 65  nterface impleme
356e0 6e 74 61 74 69 6f 6e 20 74 6f 0d 0a 20 20 20 20  ntation to..    
356f0 20 20 20 20 2f 2f 2f 20 75 73 65 2e 0d 0a 20 20      /// use...  
35700 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
35710 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
35720 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
35730 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
35740 65 20 73 71 6c 69 74 65 5f 6d 6f 64 75 6c 65 20  e sqlite_module 
35750 73 74 72 75 63 74 75 72 65 20 75 73 69 6e 67 20  structure using 
35760 74 68 65 20 73 70 65 63 69 66 69 65 64 0d 0a 20  the specified.. 
35770 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
35780 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
35790 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 69 6e  iveModule" /> in
357a0 74 65 72 66 61 63 65 20 69 6d 70 6c 65 6d 65 6e  terface implemen
357b0 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  tation...       
357c0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
357d0 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
357e0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
357f0 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64  hods.sqlite3_mod
35800 75 6c 65 20 41 6c 6c 6f 63 61 74 65 4e 61 74 69  ule AllocateNati
35810 76 65 4d 6f 64 75 6c 65 28 0d 0a 20 20 20 20 20  veModule(..     
35820 20 20 20 20 20 20 20 49 53 51 4c 69 74 65 4e 61         ISQLiteNa
35830 74 69 76 65 4d 6f 64 75 6c 65 20 6d 6f 64 75 6c  tiveModule modul
35840 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  e..            )
35850 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
35860 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
35870 6f 64 75 6c 65 20 3d 20 6e 65 77 20 55 6e 73 61  odule = new Unsa
35880 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
35890 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 28 29  sqlite3_module()
358a0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ;..            n
358b0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 69 56 65 72  ativeModule.iVer
358c0 73 69 6f 6e 20 3d 20 44 65 66 61 75 6c 74 4d 6f  sion = DefaultMo
358d0 64 75 6c 65 56 65 72 73 69 6f 6e 3b 0d 0a 0d 0a  duleVersion;....
358e0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
358f0 6d 6f 64 75 6c 65 20 21 3d 20 6e 75 6c 6c 29 0d  module != null).
35900 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
35910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35920 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72  nativeModule.xCr
35930 65 61 74 65 20 3d 20 6e 65 77 20 55 6e 73 61 66  eate = new Unsaf
35940 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
35950 43 72 65 61 74 65 28 0d 0a 20 20 20 20 20 20 20  Create(..       
35960 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75              modu
35970 6c 65 2e 78 43 72 65 61 74 65 29 3b 0d 0a 0d 0a  le.xCreate);....
35980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35990 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  nativeModule.xCo
359a0 6e 6e 65 63 74 20 3d 20 6e 65 77 20 55 6e 73 61  nnect = new Unsa
359b0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
359c0 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20  xConnect(..     
359d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d                 m
359e0 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 29 3b  odule.xConnect);
359f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
35a00 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
35a10 2e 78 42 65 73 74 49 6e 64 65 78 20 3d 20 6e 65  .xBestIndex = ne
35a20 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
35a30 74 68 6f 64 73 2e 78 42 65 73 74 49 6e 64 65 78  thods.xBestIndex
35a40 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
35a50 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 42         module.xB
35a60 65 73 74 49 6e 64 65 78 29 3b 0d 0a 0d 0a 20 20  estIndex);....  
35a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
35a80 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 69 73 63  tiveModule.xDisc
35a90 6f 6e 6e 65 63 74 20 3d 20 6e 65 77 20 55 6e 73  onnect = new Uns
35aa0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
35ab0 2e 78 44 69 73 63 6f 6e 6e 65 63 74 28 0d 0a 20  .xDisconnect(.. 
35ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35ad0 20 20 20 6d 6f 64 75 6c 65 2e 78 44 69 73 63 6f     module.xDisco
35ae0 6e 6e 65 63 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  nnect);....     
35af0 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
35b00 65 4d 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f 79  eModule.xDestroy
35b10 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
35b20 69 76 65 4d 65 74 68 6f 64 73 2e 78 44 65 73 74  iveMethods.xDest
35b30 72 6f 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  roy(..          
35b40 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65            module
35b50 2e 78 44 65 73 74 72 6f 79 29 3b 0d 0a 0d 0a 20  .xDestroy);.... 
35b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
35b70 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4f 70 65  ativeModule.xOpe
35b80 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  n = new UnsafeNa
35b90 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 4f 70 65  tiveMethods.xOpe
35ba0 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n(..            
35bb0 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78          module.x
35bc0 4f 70 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Open);....      
35bd0 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
35be0 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 20 3d 20  Module.xClose = 
35bf0 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
35c00 4d 65 74 68 6f 64 73 2e 78 43 6c 6f 73 65 28 0d  Methods.xClose(.
35c10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
35c20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 43 6c 6f       module.xClo
35c30 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  se);....        
35c40 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
35c50 64 75 6c 65 2e 78 46 69 6c 74 65 72 20 3d 20 6e  dule.xFilter = n
35c60 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
35c70 65 74 68 6f 64 73 2e 78 46 69 6c 74 65 72 28 0d  ethods.xFilter(.
35c80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
35c90 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 46 69 6c       module.xFil
35ca0 74 65 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ter);....       
35cb0 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
35cc0 6f 64 75 6c 65 2e 78 4e 65 78 74 20 3d 20 6e 65  odule.xNext = ne
35cd0 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
35ce0 74 68 6f 64 73 2e 78 4e 65 78 74 28 0d 0a 20 20  thods.xNext(..  
35cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35d00 20 20 6d 6f 64 75 6c 65 2e 78 4e 65 78 74 29 3b    module.xNext);
35d10 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
35d20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
35d30 2e 78 45 6f 66 20 3d 20 6e 65 77 20 55 6e 73 61  .xEof = new Unsa
35d40 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
35d50 78 45 6f 66 28 6d 6f 64 75 6c 65 2e 78 45 6f 66  xEof(module.xEof
35d60 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
35d70 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
35d80 6c 65 2e 78 43 6f 6c 75 6d 6e 20 3d 20 6e 65 77  le.xColumn = new
35d90 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
35da0 68 6f 64 73 2e 78 43 6f 6c 75 6d 6e 28 0d 0a 20  hods.xColumn(.. 
35db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35dc0 20 20 20 6d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d     module.xColum
35dd0 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  n);....         
35de0 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
35df0 75 6c 65 2e 78 52 6f 77 49 64 20 3d 20 6e 65 77  ule.xRowId = new
35e00 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
35e10 68 6f 64 73 2e 78 52 6f 77 49 64 28 0d 0a 20 20  hods.xRowId(..  
35e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35e30 20 20 6d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 29    module.xRowId)
35e40 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
35e50 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
35e60 65 2e 78 55 70 64 61 74 65 20 3d 20 6e 65 77 20  e.xUpdate = new 
35e70 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
35e80 6f 64 73 2e 78 55 70 64 61 74 65 28 0d 0a 20 20  ods.xUpdate(..  
35e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35ea0 20 20 6d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65    module.xUpdate
35eb0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
35ec0 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
35ed0 6c 65 2e 78 42 65 67 69 6e 20 3d 20 6e 65 77 20  le.xBegin = new 
35ee0 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
35ef0 6f 64 73 2e 78 42 65 67 69 6e 28 0d 0a 20 20 20  ods.xBegin(..   
35f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35f10 20 6d 6f 64 75 6c 65 2e 78 42 65 67 69 6e 29 3b   module.xBegin);
35f20 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
35f30 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
35f40 2e 78 53 79 6e 63 20 3d 20 6e 65 77 20 55 6e 73  .xSync = new Uns
35f50 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
35f60 2e 78 53 79 6e 63 28 0d 0a 20 20 20 20 20 20 20  .xSync(..       
35f70 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64               mod
35f80 75 6c 65 2e 78 53 79 6e 63 29 3b 0d 0a 0d 0a 20  ule.xSync);.... 
35f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
35fa0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6d  ativeModule.xCom
35fb0 6d 69 74 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  mit = new Unsafe
35fc0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 43  NativeMethods.xC
35fd0 6f 6d 6d 69 74 28 0d 0a 20 20 20 20 20 20 20 20  ommit(..        
35fe0 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75              modu
35ff0 6c 65 2e 78 43 6f 6d 6d 69 74 29 3b 0d 0a 0d 0a  le.xCommit);....
36000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36010 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f  nativeModule.xRo
36020 6c 6c 62 61 63 6b 20 3d 20 6e 65 77 20 55 6e 73  llback = new Uns
36030 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
36040 2e 78 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20 20  .xRollback(..   
36050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36060 20 6d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63   module.xRollbac
36070 6b 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  k);....         
36080 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
36090 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f  ule.xFindFunctio
360a0 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  n = new UnsafeNa
360b0 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 46 69 6e  tiveMethods.xFin
360c0 64 46 75 6e 63 74 69 6f 6e 28 0d 0a 20 20 20 20  dFunction(..    
360d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
360e0 6d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63  module.xFindFunc
360f0 74 69 6f 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  tion);....      
36100 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
36110 4d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65 20 3d  Module.xRename =
36120 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
36130 65 4d 65 74 68 6f 64 73 2e 78 52 65 6e 61 6d 65  eMethods.xRename
36140 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
36150 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 52         module.xR
36160 65 6e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  ename);....     
36170 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
36180 65 4d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69  eModule.xSavepoi
36190 6e 74 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  nt = new UnsafeN
361a0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 53 61  ativeMethods.xSa
361b0 76 65 70 6f 69 6e 74 28 0d 0a 20 20 20 20 20 20  vepoint(..      
361c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f                mo
361d0 64 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74 29  dule.xSavepoint)
361e0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
361f0 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
36200 65 2e 78 52 65 6c 65 61 73 65 20 3d 20 6e 65 77  e.xRelease = new
36210 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
36220 68 6f 64 73 2e 78 52 65 6c 65 61 73 65 28 0d 0a  hods.xRelease(..
36230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36240 20 20 20 20 6d 6f 64 75 6c 65 2e 78 52 65 6c 65      module.xRele
36250 61 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ase);....       
36260 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
36270 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54  odule.xRollbackT
36280 6f 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  o = new UnsafeNa
36290 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 6f 6c  tiveMethods.xRol
362a0 6c 62 61 63 6b 54 6f 28 0d 0a 20 20 20 20 20 20  lbackTo(..      
362b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f                mo
362c0 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f  dule.xRollbackTo
362d0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
362e0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65  }..            e
362f0 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
36300 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
36310 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
36320 2e 78 43 72 65 61 74 65 20 3d 20 6e 65 77 20 55  .xCreate = new U
36330 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
36340 64 73 2e 78 43 72 65 61 74 65 28 0d 0a 20 20 20  ds.xCreate(..   
36350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36360 20 78 43 72 65 61 74 65 29 3b 0d 0a 0d 0a 20 20   xCreate);....  
36370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
36380 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e  tiveModule.xConn
36390 65 63 74 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  ect = new Unsafe
363a0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 43  NativeMethods.xC
363b0 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20  onnect(..       
363c0 20 20 20 20 20 20 20 20 20 20 20 20 20 78 43 6f               xCo
363d0 6e 6e 65 63 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  nnect);....     
363e0 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
363f0 65 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64  eModule.xBestInd
36400 65 78 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  ex = new UnsafeN
36410 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 42 65  ativeMethods.xBe
36420 73 74 49 6e 64 65 78 28 0d 0a 20 20 20 20 20 20  stIndex(..      
36430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 42                xB
36440 65 73 74 49 6e 64 65 78 29 3b 0d 0a 0d 0a 20 20  estIndex);....  
36450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
36460 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 69 73 63  tiveModule.xDisc
36470 6f 6e 6e 65 63 74 20 3d 20 6e 65 77 20 55 6e 73  onnect = new Uns
36480 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
36490 2e 78 44 69 73 63 6f 6e 6e 65 63 74 28 0d 0a 20  .xDisconnect(.. 
364a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
364b0 20 20 20 78 44 69 73 63 6f 6e 6e 65 63 74 29 3b     xDisconnect);
364c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
364d0 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
364e0 2e 78 44 65 73 74 72 6f 79 20 3d 20 6e 65 77 20  .xDestroy = new 
364f0 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
36500 6f 64 73 2e 78 44 65 73 74 72 6f 79 28 0d 0a 20  ods.xDestroy(.. 
36510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36520 20 20 20 78 44 65 73 74 72 6f 79 29 3b 0d 0a 0d     xDestroy);...
36530 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
36540 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4f   nativeModule.xO
36550 70 65 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  pen = new Unsafe
36560 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 4f  NativeMethods.xO
36570 70 65 6e 28 78 4f 70 65 6e 29 3b 0d 0a 20 20 20  pen(xOpen);..   
36580 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
36590 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65  iveModule.xClose
365a0 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
365b0 69 76 65 4d 65 74 68 6f 64 73 2e 78 43 6c 6f 73  iveMethods.xClos
365c0 65 28 78 43 6c 6f 73 65 29 3b 0d 0a 0d 0a 20 20  e(xClose);....  
365d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
365e0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74  tiveModule.xFilt
365f0 65 72 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  er = new UnsafeN
36600 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 46 69  ativeMethods.xFi
36610 6c 74 65 72 28 0d 0a 20 20 20 20 20 20 20 20 20  lter(..         
36620 20 20 20 20 20 20 20 20 20 20 20 78 46 69 6c 74             xFilt
36630 65 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  er);....        
36640 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
36650 64 75 6c 65 2e 78 4e 65 78 74 20 3d 20 6e 65 77  dule.xNext = new
36660 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
36670 68 6f 64 73 2e 78 4e 65 78 74 28 78 4e 65 78 74  hods.xNext(xNext
36680 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
36690 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
366a0 2e 78 45 6f 66 20 3d 20 6e 65 77 20 55 6e 73 61  .xEof = new Unsa
366b0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
366c0 78 45 6f 66 28 78 45 6f 66 29 3b 0d 0a 0d 0a 20  xEof(xEof);.... 
366d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
366e0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c  ativeModule.xCol
366f0 75 6d 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  umn = new Unsafe
36700 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 43  NativeMethods.xC
36710 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20 20 20 20 20  olumn(..        
36720 20 20 20 20 20 20 20 20 20 20 20 20 78 43 6f 6c              xCol
36730 75 6d 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  umn);....       
36740 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
36750 6f 64 75 6c 65 2e 78 52 6f 77 49 64 20 3d 20 6e  odule.xRowId = n
36760 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
36770 65 74 68 6f 64 73 2e 78 52 6f 77 49 64 28 78 52  ethods.xRowId(xR
36780 6f 77 49 64 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  owId);....      
36790 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
367a0 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 20 3d  Module.xUpdate =
367b0 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
367c0 65 4d 65 74 68 6f 64 73 2e 78 55 70 64 61 74 65  eMethods.xUpdate
367d0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
367e0 20 20 20 20 20 20 20 78 55 70 64 61 74 65 29 3b         xUpdate);
367f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
36800 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
36810 2e 78 42 65 67 69 6e 20 3d 20 6e 65 77 20 55 6e  .xBegin = new Un
36820 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
36830 73 2e 78 42 65 67 69 6e 28 78 42 65 67 69 6e 29  s.xBegin(xBegin)
36840 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
36850 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
36860 78 53 79 6e 63 20 3d 20 6e 65 77 20 55 6e 73 61  xSync = new Unsa
36870 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
36880 78 53 79 6e 63 28 78 53 79 6e 63 29 3b 0d 0a 0d  xSync(xSync);...
36890 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
368a0 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43   nativeModule.xC
368b0 6f 6d 6d 69 74 20 3d 20 6e 65 77 20 55 6e 73 61  ommit = new Unsa
368c0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
368d0 78 43 6f 6d 6d 69 74 28 0d 0a 20 20 20 20 20 20  xCommit(..      
368e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 43                xC
368f0 6f 6d 6d 69 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  ommit);....     
36900 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
36910 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63  eModule.xRollbac
36920 6b 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  k = new UnsafeNa
36930 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 6f 6c  tiveMethods.xRol
36940 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20  lback(..        
36950 20 20 20 20 20 20 20 20 20 20 20 20 78 52 6f 6c              xRol
36960 6c 62 61 63 6b 29 3b 0d 0a 0d 0a 20 20 20 20 20  lback);....     
36970 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
36980 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e  eModule.xFindFun
36990 63 74 69 6f 6e 20 3d 20 6e 65 77 20 55 6e 73 61  ction = new Unsa
369a0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
369b0 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28 0d 0a  xFindFunction(..
369c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
369d0 20 20 20 20 78 46 69 6e 64 46 75 6e 63 74 69 6f      xFindFunctio
369e0 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  n);....         
369f0 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
36a00 75 6c 65 2e 78 52 65 6e 61 6d 65 20 3d 20 6e 65  ule.xRename = ne
36a10 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
36a20 74 68 6f 64 73 2e 78 52 65 6e 61 6d 65 28 0d 0a  thods.xRename(..
36a30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36a40 20 20 20 20 78 52 65 6e 61 6d 65 29 3b 0d 0a 0d      xRename);...
36a50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
36a60 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53   nativeModule.xS
36a70 61 76 65 70 6f 69 6e 74 20 3d 20 6e 65 77 20 55  avepoint = new U
36a80 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
36a90 64 73 2e 78 53 61 76 65 70 6f 69 6e 74 28 0d 0a  ds.xSavepoint(..
36aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36ab0 20 20 20 20 78 53 61 76 65 70 6f 69 6e 74 29 3b      xSavepoint);
36ac0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
36ad0 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
36ae0 2e 78 52 65 6c 65 61 73 65 20 3d 20 6e 65 77 20  .xRelease = new 
36af0 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
36b00 6f 64 73 2e 78 52 65 6c 65 61 73 65 28 0d 0a 20  ods.xRelease(.. 
36b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36b20 20 20 20 78 52 65 6c 65 61 73 65 29 3b 0d 0a 0d     xRelease);...
36b30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
36b40 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52   nativeModule.xR
36b50 6f 6c 6c 62 61 63 6b 54 6f 20 3d 20 6e 65 77 20  ollbackTo = new 
36b60 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
36b70 6f 64 73 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 28  ods.xRollbackTo(
36b80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
36b90 20 20 20 20 20 20 78 52 6f 6c 6c 62 61 63 6b 54        xRollbackT
36ba0 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  o);..           
36bb0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
36bc0 20 20 72 65 74 75 72 6e 20 6e 61 74 69 76 65 4d    return nativeM
36bd0 6f 64 75 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20  odule;..        
36be0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
36bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36c30 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
36c40 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
36c50 20 20 20 20 20 20 20 2f 2f 2f 20 43 72 65 61 74         /// Creat
36c60 65 73 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65  es a copy of the
36c70 20 73 70 65 63 69 66 69 65 64 0d 0a 20 20 20 20   specified..    
36c80 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
36c90 66 3d 22 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  f="UnsafeNativeM
36ca0 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d  ethods.sqlite3_m
36cb0 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74  odule" /> object
36cc0 20 69 6e 73 74 61 6e 63 65 2c 0d 0a 20 20 20 20   instance,..    
36cd0 20 20 20 20 2f 2f 2f 20 75 73 69 6e 67 20 64 65      /// using de
36ce0 66 61 75 6c 74 20 69 6d 70 6c 65 6d 65 6e 74 61  fault implementa
36cf0 74 69 6f 6e 73 20 66 6f 72 20 74 68 65 20 63 6f  tions for the co
36d00 6e 74 61 69 6e 65 64 20 64 65 6c 65 67 61 74 65  ntained delegate
36d10 73 20 77 68 65 6e 0d 0a 20 20 20 20 20 20 20 20  s when..        
36d20 2f 2f 2f 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a  /// necessary...
36d30 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
36d40 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
36d50 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
36d60 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20 20 20 20  "module">..     
36d70 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
36d80 63 72 65 66 3d 22 55 6e 73 61 66 65 4e 61 74 69  cref="UnsafeNati
36d90 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
36da0 33 5f 6d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a  3_module" /> obj
36db0 65 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ect..        ///
36dc0 20 69 6e 73 74 61 6e 63 65 20 74 6f 20 63 6f 70   instance to cop
36dd0 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y...        /// 
36de0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
36df0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
36e00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
36e10 20 6e 65 77 20 3c 73 65 65 20 63 72 65 66 3d 22   new <see cref="
36e20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
36e30 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75  ods.sqlite3_modu
36e40 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 0d 0a 20  le" /> object.. 
36e50 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61         /// insta
36e60 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nce...        //
36e70 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
36e80 20 20 20 20 20 20 70 72 69 76 61 74 65 20 55 6e        private Un
36e90 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
36ea0 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65  s.sqlite3_module
36eb0 20 43 6f 70 79 4e 61 74 69 76 65 4d 6f 64 75 6c   CopyNativeModul
36ec0 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
36ed0 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
36ee0 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75  ods.sqlite3_modu
36ef0 6c 65 20 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20  le module..     
36f00 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
36f10 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
36f20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
36f30 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64  hods.sqlite3_mod
36f40 75 6c 65 20 6e 65 77 4d 6f 64 75 6c 65 20 3d 0d  ule newModule =.
36f50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
36f60 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
36f70 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
36f80 5f 6d 6f 64 75 6c 65 28 29 3b 0d 0a 0d 0a 20 20  _module();....  
36f90 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64            newMod
36fa0 75 6c 65 2e 69 56 65 72 73 69 6f 6e 20 3d 20 6d  ule.iVersion = m
36fb0 6f 64 75 6c 65 2e 69 56 65 72 73 69 6f 6e 3b 0d  odule.iVersion;.
36fc0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ...            n
36fd0 65 77 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65  ewModule.xCreate
36fe0 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
36ff0 69 76 65 4d 65 74 68 6f 64 73 2e 78 43 72 65 61  iveMethods.xCrea
37000 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  te(..           
37010 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 43 72       (module.xCr
37020 65 61 74 65 20 21 3d 20 6e 75 6c 6c 29 20 3f 20  eate != null) ? 
37030 6d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 20 3a  module.xCreate :
37040 20 78 43 72 65 61 74 65 29 3b 0d 0a 0d 0a 20 20   xCreate);....  
37050 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64            newMod
37060 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 20 3d 20 6e  ule.xConnect = n
37070 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
37080 65 74 68 6f 64 73 2e 78 43 6f 6e 6e 65 63 74 28  ethods.xConnect(
37090 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
370a0 20 20 28 6d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65    (module.xConne
370b0 63 74 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f  ct != null) ? mo
370c0 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 20 3a 20  dule.xConnect : 
370d0 78 43 6f 6e 6e 65 63 74 29 3b 0d 0a 0d 0a 20 20  xConnect);....  
370e0 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64            newMod
370f0 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 20 3d  ule.xBestIndex =
37100 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
37110 65 4d 65 74 68 6f 64 73 2e 78 42 65 73 74 49 6e  eMethods.xBestIn
37120 64 65 78 28 0d 0a 20 20 20 20 20 20 20 20 20 20  dex(..          
37130 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 42        (module.xB
37140 65 73 74 49 6e 64 65 78 20 21 3d 20 6e 75 6c 6c  estIndex != null
37150 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 42 65 73 74  ) ? module.xBest
37160 49 6e 64 65 78 20 3a 20 78 42 65 73 74 49 6e 64  Index : xBestInd
37170 65 78 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ex);....        
37180 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 44      newModule.xD
37190 69 73 63 6f 6e 6e 65 63 74 20 3d 20 6e 65 77 20  isconnect = new 
371a0 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
371b0 6f 64 73 2e 78 44 69 73 63 6f 6e 6e 65 63 74 28  ods.xDisconnect(
371c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
371d0 20 20 28 6d 6f 64 75 6c 65 2e 78 44 69 73 63 6f    (module.xDisco
371e0 6e 6e 65 63 74 20 21 3d 20 6e 75 6c 6c 29 20 3f  nnect != null) ?
371f0 20 6d 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e   module.xDisconn
37200 65 63 74 20 3a 0d 0a 20 20 20 20 20 20 20 20 20  ect :..         
37210 20 20 20 20 20 20 20 78 44 69 73 63 6f 6e 6e 65         xDisconne
37220 63 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ct);....        
37230 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 44      newModule.xD
37240 65 73 74 72 6f 79 20 3d 20 6e 65 77 20 55 6e 73  estroy = new Uns
37250 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
37260 2e 78 44 65 73 74 72 6f 79 28 0d 0a 20 20 20 20  .xDestroy(..    
37270 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64              (mod
37280 75 6c 65 2e 78 44 65 73 74 72 6f 79 20 21 3d 20  ule.xDestroy != 
37290 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78  null) ? module.x
372a0 44 65 73 74 72 6f 79 20 3a 20 78 44 65 73 74 72  Destroy : xDestr
372b0 6f 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  oy);....        
372c0 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 4f      newModule.xO
372d0 70 65 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  pen = new Unsafe
372e0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 4f  NativeMethods.xO
372f0 70 65 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  pen(..          
37300 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 4f        (module.xO
37310 70 65 6e 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d  pen != null) ? m
37320 6f 64 75 6c 65 2e 78 4f 70 65 6e 20 3a 20 78 4f  odule.xOpen : xO
37330 70 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  pen);....       
37340 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78       newModule.x
37350 43 6c 6f 73 65 20 3d 20 6e 65 77 20 55 6e 73 61  Close = new Unsa
37360 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
37370 78 43 6c 6f 73 65 28 0d 0a 20 20 20 20 20 20 20  xClose(..       
37380 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65           (module
37390 2e 78 43 6c 6f 73 65 20 21 3d 20 6e 75 6c 6c 29  .xClose != null)
373a0 20 3f 20 6d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65   ? module.xClose
373b0 20 3a 20 78 43 6c 6f 73 65 29 3b 0d 0a 0d 0a 20   : xClose);.... 
373c0 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f             newMo
373d0 64 75 6c 65 2e 78 46 69 6c 74 65 72 20 3d 20 6e  dule.xFilter = n
373e0 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
373f0 65 74 68 6f 64 73 2e 78 46 69 6c 74 65 72 28 0d  ethods.xFilter(.
37400 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
37410 20 28 6d 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72   (module.xFilter
37420 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75   != null) ? modu
37430 6c 65 2e 78 46 69 6c 74 65 72 20 3a 20 78 46 69  le.xFilter : xFi
37440 6c 74 65 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  lter);....      
37450 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e        newModule.
37460 78 4e 65 78 74 20 3d 20 6e 65 77 20 55 6e 73 61  xNext = new Unsa
37470 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
37480 78 4e 65 78 74 28 0d 0a 20 20 20 20 20 20 20 20  xNext(..        
37490 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e          (module.
374a0 78 4e 65 78 74 20 21 3d 20 6e 75 6c 6c 29 20 3f  xNext != null) ?
374b0 20 6d 6f 64 75 6c 65 2e 78 4e 65 78 74 20 3a 20   module.xNext : 
374c0 78 4e 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  xNext);....     
374d0 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65         newModule
374e0 2e 78 45 6f 66 20 3d 20 6e 65 77 20 55 6e 73 61  .xEof = new Unsa
374f0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
37500 78 45 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 20  xEof(..         
37510 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78         (module.x
37520 45 6f 66 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d  Eof != null) ? m
37530 6f 64 75 6c 65 2e 78 45 6f 66 20 3a 20 78 45 6f  odule.xEof : xEo
37540 66 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  f);....         
37550 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 43 6f     newModule.xCo
37560 6c 75 6d 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66  lumn = new Unsaf
37570 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
37580 43 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20 20 20 20  Column(..       
37590 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65           (module
375a0 2e 78 43 6f 6c 75 6d 6e 20 21 3d 20 6e 75 6c 6c  .xColumn != null
375b0 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 43 6f 6c 75  ) ? module.xColu
375c0 6d 6e 20 3a 20 78 43 6f 6c 75 6d 6e 29 3b 0d 0a  mn : xColumn);..
375d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
375e0 77 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 20 3d  wModule.xRowId =
375f0 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
37600 65 4d 65 74 68 6f 64 73 2e 78 52 6f 77 49 64 28  eMethods.xRowId(
37610 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
37620 20 20 28 6d 6f 64 75 6c 65 2e 78 52 6f 77 49 64    (module.xRowId
37630 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75   != null) ? modu
37640 6c 65 2e 78 52 6f 77 49 64 20 3a 20 78 52 6f 77  le.xRowId : xRow
37650 49 64 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  Id);....        
37660 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 55      newModule.xU
37670 70 64 61 74 65 20 3d 20 6e 65 77 20 55 6e 73 61  pdate = new Unsa
37680 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
37690 78 55 70 64 61 74 65 28 0d 0a 20 20 20 20 20 20  xUpdate(..      
376a0 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c            (modul
376b0 65 2e 78 55 70 64 61 74 65 20 21 3d 20 6e 75 6c  e.xUpdate != nul
376c0 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 55 70 64  l) ? module.xUpd
376d0 61 74 65 20 3a 20 78 55 70 64 61 74 65 29 3b 0d  ate : xUpdate);.
376e0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ...            n
376f0 65 77 4d 6f 64 75 6c 65 2e 78 42 65 67 69 6e 20  ewModule.xBegin 
37700 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
37710 76 65 4d 65 74 68 6f 64 73 2e 78 42 65 67 69 6e  veMethods.xBegin
37720 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
37730 20 20 20 28 6d 6f 64 75 6c 65 2e 78 42 65 67 69     (module.xBegi
37740 6e 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64  n != null) ? mod
37750 75 6c 65 2e 78 42 65 67 69 6e 20 3a 20 78 42 65  ule.xBegin : xBe
37760 67 69 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  gin);....       
37770 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78       newModule.x
37780 53 79 6e 63 20 3d 20 6e 65 77 20 55 6e 73 61 66  Sync = new Unsaf
37790 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
377a0 53 79 6e 63 28 0d 0a 20 20 20 20 20 20 20 20 20  Sync(..         
377b0 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78         (module.x
377c0 53 79 6e 63 20 21 3d 20 6e 75 6c 6c 29 20 3f 20  Sync != null) ? 
377d0 6d 6f 64 75 6c 65 2e 78 53 79 6e 63 20 3a 20 78  module.xSync : x
377e0 53 79 6e 63 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Sync);....      
377f0 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e        newModule.
37800 78 43 6f 6d 6d 69 74 20 3d 20 6e 65 77 20 55 6e  xCommit = new Un
37810 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
37820 73 2e 78 43 6f 6d 6d 69 74 28 0d 0a 20 20 20 20  s.xCommit(..    
37830 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64              (mod
37840 75 6c 65 2e 78 43 6f 6d 6d 69 74 20 21 3d 20 6e  ule.xCommit != n
37850 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 43  ull) ? module.xC
37860 6f 6d 6d 69 74 20 3a 20 78 43 6f 6d 6d 69 74 29  ommit : xCommit)
37870 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
37880 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c   newModule.xRoll
37890 62 61 63 6b 20 3d 20 6e 65 77 20 55 6e 73 61 66  back = new Unsaf
378a0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
378b0 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20  Rollback(..     
378c0 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75             (modu
378d0 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 20 21 3d 20  le.xRollback != 
378e0 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78  null) ? module.x
378f0 52 6f 6c 6c 62 61 63 6b 20 3a 20 78 52 6f 6c 6c  Rollback : xRoll
37900 62 61 63 6b 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  back);....      
37910 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e        newModule.
37920 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 20 3d 20  xFindFunction = 
37930 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
37940 4d 65 74 68 6f 64 73 2e 78 46 69 6e 64 46 75 6e  Methods.xFindFun
37950 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20  ction(..        
37960 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e          (module.
37970 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 20 21 3d  xFindFunction !=
37980 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e   null) ? module.
37990 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 20 3a 0d  xFindFunction :.
379a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
379b0 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 29 3b   xFindFunction);
379c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
379d0 6e 65 77 4d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d  newModule.xRenam
379e0 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  e = new UnsafeNa
379f0 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 65 6e  tiveMethods.xRen
37a00 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ame(..          
37a10 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 52        (module.xR
37a20 65 6e 61 6d 65 20 21 3d 20 6e 75 6c 6c 29 20 3f  ename != null) ?
37a30 20 6d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65 20   module.xRename 
37a40 3a 20 78 52 65 6e 61 6d 65 29 3b 0d 0a 0d 0a 20  : xRename);.... 
37a50 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f             newMo
37a60 64 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74 20  dule.xSavepoint 
37a70 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
37a80 76 65 4d 65 74 68 6f 64 73 2e 78 53 61 76 65 70  veMethods.xSavep
37a90 6f 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20  oint(..         
37aa0 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78         (module.x
37ab0 53 61 76 65 70 6f 69 6e 74 20 21 3d 20 6e 75 6c  Savepoint != nul
37ac0 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 53 61 76  l) ? module.xSav
37ad0 65 70 6f 69 6e 74 20 3a 20 78 53 61 76 65 70 6f  epoint : xSavepo
37ae0 69 6e 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  int);....       
37af0 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78       newModule.x
37b00 52 65 6c 65 61 73 65 20 3d 20 6e 65 77 20 55 6e  Release = new Un
37b10 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
37b20 73 2e 78 52 65 6c 65 61 73 65 28 0d 0a 20 20 20  s.xRelease(..   
37b30 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f               (mo
37b40 64 75 6c 65 2e 78 52 65 6c 65 61 73 65 20 21 3d  dule.xRelease !=
37b50 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e   null) ? module.
37b60 78 52 65 6c 65 61 73 65 20 3a 20 78 52 65 6c 65  xRelease : xRele
37b70 61 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ase);....       
37b80 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78       newModule.x
37b90 52 6f 6c 6c 62 61 63 6b 54 6f 20 3d 20 6e 65 77  RollbackTo = new
37ba0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
37bb0 68 6f 64 73 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f  hods.xRollbackTo
37bc0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
37bd0 20 20 20 28 6d 6f 64 75 6c 65 2e 78 52 6f 6c 6c     (module.xRoll
37be0 62 61 63 6b 54 6f 20 21 3d 20 6e 75 6c 6c 29 20  backTo != null) 
37bf0 3f 20 6d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61  ? module.xRollba
37c00 63 6b 54 6f 20 3a 0d 0a 20 20 20 20 20 20 20 20  ckTo :..        
37c10 20 20 20 20 20 20 20 20 78 52 6f 6c 6c 62 61 63          xRollbac
37c20 6b 54 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  kTo);....       
37c30 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 4d       return newM
37c40 6f 64 75 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20  odule;..        
37c50 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
37c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37ca0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
37cb0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
37cc0 20 20 20 20 20 20 20 2f 2f 2f 20 43 61 6c 6c 73         /// Calls
37cd0 20 6f 6e 65 20 6f 66 20 74 68 65 20 76 69 72 74   one of the virt
37ce0 75 61 6c 20 74 61 62 6c 65 20 69 6e 69 74 69 61  ual table initia
37cf0 6c 69 7a 61 74 69 6f 6e 20 6d 65 74 68 6f 64 73  lization methods
37d00 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
37d10 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
37d20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
37d30 6d 65 3d 22 63 72 65 61 74 65 22 3e 0d 0a 20 20  me="create">..  
37d40 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65        /// Non-ze
37d50 72 6f 20 74 6f 20 63 61 6c 6c 20 74 68 65 20 3c  ro to call the <
37d60 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
37d70 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43  eManagedModule.C
37d80 72 65 61 74 65 22 20 2f 3e 0d 0a 20 20